build (plc.)Aggregate from a driver and not from an api
authorThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Thu, 1 Dec 2011 13:16:14 +0000 (14:16 +0100)
committerThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Thu, 1 Dec 2011 13:16:14 +0000 (14:16 +0100)
drop self.policy in plc.Slices that is unused

sfa/generic/__init__.py
sfa/managers/aggregate_manager.py
sfa/managers/aggregate_manager_eucalyptus.py
sfa/plc/aggregate.py
sfa/plc/slices.py
sfa/util/storage.py

index 363f3dd..6ea2e89 100644 (file)
@@ -75,7 +75,7 @@ class Generic:
 
     def make_manager (self, interface):
         """
-        interface expected in ['registry', 'aggregate', 'slice', 'component']
+        interface expected in ['registry', 'aggregate', 'slicemgr', 'component']
         flavour is e.g. 'pl' or 'max' or whatever
         """
         flavour = self.flavour
@@ -83,9 +83,12 @@ class Generic:
         
         classname = "%s_manager_class"%interface
         try:
-            module = getattr(self,classname)()
-            logger.debug("%s : %s"%(message,module))
-            return module
+            module_or_class = getattr(self,classname)()
+            logger.debug("%s : %s"%(message,module_or_class))
+            # this gets passed to ManagerWrapper that will call the class constructor 
+            # if it's a class, or use the module as is if it's a module
+            # so bottom line is, don't try the constructor here
+            return module_or_class
         except:
             logger.log_exc_critical(message)
         
index c412e17..b9a91e6 100644 (file)
@@ -56,7 +56,7 @@ class AggregateManager:
         """
         hrn, _ = urn_to_hrn(slice_xrn)
     
-        hrn_auth = get_authority(hrn)
+        #hrn_auth = get_authority(hrn)
     
         # Build up objects that an SFA registry would return if SFA
         # could contact the slice's registry directly
@@ -168,7 +168,7 @@ class AggregateManager:
         call_id = options.get('call_id')
         if Callids().already_handled(call_id): return ""
     
-        aggregate = Aggregate(api)
+        aggregate = Aggregate(self.driver)
         slices = Slices(api)
         (hrn, _) = urn_to_hrn(slice_xrn)
         peer = slices.get_peer(hrn)
@@ -321,7 +321,7 @@ class AggregateManager:
     
         #panos: passing user-defined options
         #print "manager options = ",options
-        aggregate = Aggregate(api)
+        aggregate = Aggregate(self.driver)
         rspec =  aggregate.get_rspec(slice_xrn=xrn, version=rspec_version, options=options)
     
         # cache the result
index 55e14ce..444ceb4 100644 (file)
@@ -23,13 +23,14 @@ from sfa.util.callids import Callids
 #from sfa.util.sfalogging import logger
 from sfa.util.version import version_core
 from sfa.trust.credential import Credential
-from sfa.server.sfaapi import SfaApi
 from sfa.plc.aggregate import Aggregate
 from sfa.plc.slices import Slice, Slices
 from sfa.rspecs.version_manager import VersionManager
 from sfa.rspecs.rspec import RSpec
 # not sure what this used to be nor where it is now defined
 #from sfa.rspecs.sfa_rspec import sfa_rspec_version
+# most likely this should now be
+#from sfa.rspecs.version_manager import VersionManager
 
 ##
 # Meta data of an instance.
@@ -548,7 +549,7 @@ class AggregateManagerEucalyptus:
         logger = logging.getLogger('EucaAggregate')
         logger.debug("In CreateSliver")
     
-        aggregate = Aggregate(api)
+        aggregate = Aggregate(self.driver)
         slices = Slices(api)
         (hrn, type) = urn_to_hrn(slice_xrn)
         peer = slices.get_peer(hrn)
index afdc656..15665b5 100644 (file)
@@ -25,18 +25,18 @@ class Aggregate:
     #panos new user options variable
     user_options = {}
 
-    def __init__(self, api):
-        self.api = api
+    def __init__(self, driver):
+        self.driver = driver
     
     def get_sites(self, filter={}):
         sites = {}
-        for site in self.api.driver.GetSites(filter):
+        for site in self.driver.GetSites(filter):
             sites[site['site_id']] = site
         return sites
 
     def get_interfaces(self, filter={}):
         interfaces = {}
-        for interface in self.api.driver.GetInterfaces(filter):
+        for interface in self.driver.GetInterfaces(filter):
             iface = Interface()
             if interface['bwlimit']:
                 interface['bwlimit'] = str(int(interface['bwlimit'])/1000)
@@ -56,8 +56,8 @@ class Aggregate:
             site1 = sites[site_id1]
             site2 = sites[site_id2]
             # get hrns
-            site1_hrn = self.api.driver.hrn + '.' + site1['login_base']
-            site2_hrn = self.api.driver.hrn + '.' + site2['login_base']
+            site1_hrn = self.driver.hrn + '.' + site1['login_base']
+            site2_hrn = self.driver.hrn + '.' + site2['login_base']
 
             for s1_node_id in site1['node_ids']:
                 for s2_node_id in site2['node_ids']:
@@ -67,9 +67,9 @@ class Aggregate:
                     node2 = nodes[s2_node_id]
                     # set interfaces
                     # just get first interface of the first node
-                    if1_xrn = PlXrn(auth=self.api.driver.hrn, interface='node%s:eth0' % (node1['node_id']))
+                    if1_xrn = PlXrn(auth=self.driver.hrn, interface='node%s:eth0' % (node1['node_id']))
                     if1_ipv4 = interfaces[node1['interface_ids'][0]]['ip']
-                    if2_xrn = PlXrn(auth=self.api.driver.hrn, interface='node%s:eth0' % (node2['node_id']))
+                    if2_xrn = PlXrn(auth=self.driver.hrn, interface='node%s:eth0' % (node2['node_id']))
                     if2_ipv4 = interfaces[node2['interface_ids'][0]]['ip']
 
                     if1 = Interface({'component_id': if1_xrn.urn, 'ipv4': if1_ipv4} )
@@ -80,22 +80,22 @@ class Aggregate:
                     link['interface1'] = if1
                     link['interface2'] = if2
                     link['component_name'] = "%s:%s" % (site1['login_base'], site2['login_base'])
-                    link['component_id'] = PlXrn(auth=self.api.driver.hrn, interface=link['component_name']).get_urn()
-                    link['component_manager_id'] =  hrn_to_urn(self.api.driver.hrn, 'authority+am')
+                    link['component_id'] = PlXrn(auth=self.driver.hrn, interface=link['component_name']).get_urn()
+                    link['component_manager_id'] =  hrn_to_urn(self.driver.hrn, 'authority+am')
                     links.append(link)
 
         return links
 
     def get_node_tags(self, filter={}):
         node_tags = {}
-        for node_tag in self.api.driver.GetNodeTags(filter):
+        for node_tag in self.driver.GetNodeTags(filter):
             node_tags[node_tag['node_tag_id']] = node_tag
         return node_tags
 
     def get_pl_initscripts(self, filter={}):
         pl_initscripts = {}
         filter.update({'enabled': True})
-        for initscript in self.api.driver.GetInitScripts(filter):
+        for initscript in self.driver.GetInitScripts(filter):
             pl_initscripts[initscript['initscript_id']] = initscript
         return pl_initscripts
 
@@ -111,7 +111,7 @@ class Aggregate:
         slice_urn = hrn_to_urn(slice_xrn, 'slice')
         slice_hrn, _ = urn_to_hrn(slice_xrn)
         slice_name = hrn_to_pl_slicename(slice_hrn)
-        slices = self.api.driver.GetSlices(slice_name)
+        slices = self.driver.GetSlices(slice_name)
         if not slices:
             return (slice, slivers)
         slice = slices[0]
@@ -125,7 +125,7 @@ class Aggregate:
             slivers[node_id]= sliver
 
         # sort sliver attributes by node id    
-        tags = self.api.driver.GetSliceTags({'slice_tag_id': slice['slice_tag_ids']})
+        tags = self.driver.GetSliceTags({'slice_tag_id': slice['slice_tag_ids']})
         for tag in tags:
             # most likely a default/global sliver attribute (node_id == None)
             if tag['node_id'] not in slivers:
@@ -149,7 +149,7 @@ class Aggregate:
             filter['boot_state'] = 'boot'     
         
         filter.update({'peer_id': None})
-        nodes = self.api.driver.GetNodes(filter)
+        nodes = self.driver.GetNodes(filter)
        
         site_ids = []
         interface_ids = []
@@ -182,10 +182,10 @@ class Aggregate:
             # xxx how to retrieve site['login_base']
             site_id=node['site_id']
             site=sites_dict[site_id]
-            rspec_node['component_id'] = hostname_to_urn(self.api.driver.hrn, site['login_base'], node['hostname'])
+            rspec_node['component_id'] = hostname_to_urn(self.driver.hrn, site['login_base'], node['hostname'])
             rspec_node['component_name'] = node['hostname']
-            rspec_node['component_manager_id'] = self.api.driver.hrn
-            rspec_node['authority_id'] = hrn_to_urn(PlXrn.site_hrn(self.api.driver.hrn, site['login_base']), 'authority+sa')
+            rspec_node['component_manager_id'] = self.driver.hrn
+            rspec_node['authority_id'] = hrn_to_urn(PlXrn.site_hrn(self.driver.hrn, site['login_base']), 'authority+sa')
             rspec_node['boot_state'] = node['boot_state']
             rspec_node['exclusive'] = 'False'
             rspec_node['hardware_types']= [HardwareType({'name': 'plab-pc'}),
@@ -204,7 +204,7 @@ class Aggregate:
             for if_id in node['interface_ids']:
                 interface = Interface(interfaces[if_id]) 
                 interface['ipv4'] = interface['ip']
-                interface['component_id'] = PlXrn(auth=self.api.driver.hrn, 
+                interface['component_id'] = PlXrn(auth=self.driver.hrn, 
                                                   interface='node%s:eth%s' % (node['node_id'], if_count)).get_urn()
                 rspec_node['interfaces'].append(interface)
                 if_count+=1
index 9e188d7..bf91219 100644 (file)
@@ -17,7 +17,7 @@ class Slices:
     def __init__(self, api, ttl = .5, origin_hrn=None):
         self.api = api
         #filepath = path + os.sep + filename
-        self.policy = Policy(self.api)    
+#        self.policy = Policy(self.api)    
         self.origin_hrn = origin_hrn
         self.registry = api.registries[api.hrn]
         self.credential = api.getCredential()
index ee2e41b..793a38e 100644 (file)
@@ -1,5 +1,6 @@
 import os
 from sfa.util.xml import XML
+
 class SimpleStorage(dict):
     """
     Handles storing and loading python dictionaries. The storage file created