review the comment about normalizing input records in register/update
[sfa.git] / sfa / managers / v2_to_v3_adapter.py
index ebbefc0..8b0ce61 100644 (file)
@@ -7,30 +7,21 @@ from sfa.util.xrn import Xrn, urn_to_hrn, hrn_to_urn, get_leaf, get_authority
 from sfa.util.cache import Cache
 from sfa.rspecs.rspec import RSpec
 from sfa.storage.model import SliverAllocation
-from sfa.storage.alchemy import dbsession
 
 class V2ToV3Adapter:
 
-    def __init__ (self, config):
+    def __init__ (self, api):
+        config = api.config
         flavour = config.SFA_GENERIC_FLAVOUR
         # to be cleaned
-        if flavour == "pl":
-            from sfa.planetlab.pldriver import PlDriver
-            self.driver = PlDriver(config)
-        elif flavour == "nitos":
+        if flavour == "nitos":
             from sfa.nitos.nitosdriver import NitosDriver
-            self.driver = NitosDriver(config)
+            self.driver = NitosDriver(api)
         elif flavour == "fd":
             from sfa.federica.fddriver import FdDriver
-            self.driver = FdDriver(config)
-        elif flavour == "dummy":
-            from sfa.dummy.dummydriver import DummyDriver
-            self.driver = DummyDriver(config)
-        elif flavour == "slab":
-            from sfa.senslab.slabdriver import SlabDriver
-            self.driver = SlabDriver(config)
+            self.driver = FdDriver(api)
         else:
-          logger.info("DriverV2Adapter unknown flavour !!!\n supported flavours: pl, nitos, fd, dummy, slab")
+          logger.error("V2ToV3Adapter: Unknown Flavour !!!\n Supported Flavours: nitos, fd")
          
         # Caching 
         if config.SFA_AGGREGATE_CACHING:
@@ -62,7 +53,7 @@ class V2ToV3Adapter:
                 else:
                     constraint = SliverAllocation.sliver_id.in_(urns)
  
-                sliver_allocations = dbsession.query (SliverAllocation).filter        (constraint)
+                sliver_allocations = self.driver.api.dbsession().query (SliverAllocation).filter        (constraint)
                 sliver_status = getattr(self.driver, "sliver_status")(slice_urn, slice_hrn)               
                 if 'geni_expires' in sliver_status.keys():
                     geni_expires = sliver_status['geni_expires']
@@ -91,7 +82,7 @@ class V2ToV3Adapter:
                 (slice_urn, rspec_string, expiration, options) = args
                 slice_hrn, type = urn_to_hrn(slice_urn)
                 creds = []
-                users = options.get('geni_users', [])
+                users = options.get('sfa_users', [])
                 manifest_string = getattr(self.driver, "create_sliver")(slice_urn, slice_hrn, creds, rspec_string, users, options)
                 
                 # slivers allocation
@@ -114,7 +105,7 @@ class V2ToV3Adapter:
                                       slice_urn = slice_urn,
                                       allocation_state='geni_allocated')    
      
-                     record.sync()
+                     record.sync(self.driver.api.dbsession())
 
                
                 # return manifest
@@ -130,6 +121,7 @@ class V2ToV3Adapter:
                 else:
                    constraint = SliverAllocation.sliver_id.in_(urns)
                 
+                dbsession = self.driver.api.dbsession()
                 sliver_allocations = dbsession.query (SliverAllocation).filter(constraint)
                 for sliver_allocation in sliver_allocations:
                      sliver_allocation.allocation_state = 'geni_provisioned'
@@ -165,9 +157,10 @@ class V2ToV3Adapter:
              
                 #SliverAllocation
                 constraints = SliverAllocation.slice_urn.in_(urns)
+                dbsession = self.driver.api.dbsession()
                 sliver_allocations = dbsession.query(SliverAllocation).filter(constraints)
                 sliver_ids = [sliver_allocation.sliver_id for sliver_allocation in sliver_allocations]
-                SliverAllocation.delete_allocations(sliver_ids)
+                SliverAllocation.delete_allocations(sliver_ids, dbsession)
                 
 
             elif name == "renew":