X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fnitos%2Fnitosdriver.py;h=40db2a701b94ee14ba86a947d0d88c349dcc8026;hb=866350aac4c72675b8dd6c0b8b5b0673470d1dea;hp=d69c3d6a41be61bc47c410bd01e6216d6aedec0e;hpb=0fb8ffd94f597f5de9c40c2d852a94124f6d4ada;p=sfa.git diff --git a/sfa/nitos/nitosdriver.py b/sfa/nitos/nitosdriver.py index d69c3d6a..40db2a70 100644 --- a/sfa/nitos/nitosdriver.py +++ b/sfa/nitos/nitosdriver.py @@ -11,7 +11,6 @@ from sfa.util.xrn import Xrn, hrn_to_urn, get_leaf, urn_to_hrn from sfa.util.cache import Cache # one would think the driver should not need to mess with the SFA db, but.. -from sfa.storage.alchemy import dbsession from sfa.storage.model import RegRecord # used to be used in get_ticket @@ -46,8 +45,9 @@ class NitosDriver (Driver): # the cache instance is a class member so it survives across incoming requests cache = None - def __init__ (self, config): - Driver.__init__ (self, config) + def __init__ (self, api): + Driver.__init__ (self, api) + config = api.config self.shell = NitosShell (config) self.cache=None self.testbedInfo = self.shell.getTestbedInfo() @@ -367,7 +367,7 @@ class NitosDriver (Driver): # get the registry records user_list, users = [], {} - user_list = dbsession.query(RegRecord).filter(RegRecord.pointer.in_(user_ids)).all() + user_list = self.api.dbsession().query(RegRecord).filter(RegRecord.pointer.in_(user_ids)).all() # create a hrns keyed on the sfa record's pointer. # Its possible for multiple records to have the same pointer so # the dict's value will be a list of hrns. @@ -612,8 +612,17 @@ class NitosDriver (Driver): # add/remove leases (nodes and channels) # a lease in Nitos RSpec case is a reservation of nodes and channels grouped by (slice,timeslot) - rspec_requested_nodes, rspec_requested_channels = rspec.version.get_leases() - + rspec_requested_leases = rspec.version.get_leases() + rspec_requested_nodes = [] + rspec_requested_channels = [] + for lease in rspec_requested_leases: + if lease['type'] == 'node': + lease.pop('type', None) + rspec_requested_nodes.append(lease) + else: + lease.pop('type', None) + rspec_requested_channels.append(lease) + nodes = slices.verify_slice_leases_nodes(slice, rspec_requested_nodes) channels = slices.verify_slice_leases_channels(slice, rspec_requested_channels) @@ -634,7 +643,6 @@ class NitosDriver (Driver): # release all reserved nodes and channels for that slice try: - print "Nodes: %s\nChannels: %s" %(slice_reserved_nodes_ids, slice_reserved_channels_ids) released_nodes = self.shell.releaseNodes({'reservation_ids': slice_reserved_nodes_ids}) released_channels = self.shell.releaseChannels({'reservation_ids': slice_reserved_channels_ids}) except: