2to3 -f raise
[sfa.git] / sfa / nitos / nitosdriver.py
index bdcbf3f..8e3da34 100644 (file)
@@ -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.
@@ -608,12 +608,21 @@ class NitosDriver (Driver):
         # ensure slice record exists
         slice = slices.verify_slice(slice_hrn, slice_record, sfa_peer, options=options)
         # ensure user records exists
-        #users = slices.verify_users(slice_hrn, slice, users, sfa_peer, options=options)
+        users = slices.verify_users(slice_hrn, slice, users, sfa_peer, options=options)
         
         # 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:
@@ -660,7 +668,7 @@ class NitosDriver (Driver):
     # xxx this code is quite old and has not run for ages
     # it is obviously totally broken and needs a rewrite
     def get_ticket (self, slice_urn, slice_hrn, creds, rspec_string, options):
-        raise SfaNotImplemented,"NitosDriver.get_ticket needs a rewrite"
+        raise SfaNotImplemented("NitosDriver.get_ticket needs a rewrite")
 # please keep this code for future reference
 #        slices = PlSlices(self)
 #        peer = slices.get_peer(slice_hrn)