missing import
[sfa.git] / sfa / plc / plaggregate.py
index db79418..a7e30b9 100644 (file)
@@ -1,6 +1,7 @@
 #!/usr/bin/python
-from sfa.util.xrn import hrn_to_urn, urn_to_hrn, urn_to_sliver_id
+from sfa.util.xrn import Xrn, hrn_to_urn, urn_to_hrn, urn_to_sliver_id
 from sfa.util.sfatime import epochparse
+from sfa.util.sfalogging import logger
 
 from sfa.rspecs.rspec import RSpec
 from sfa.rspecs.elements.hardware_type import HardwareType
@@ -21,13 +22,10 @@ from sfa.plc.topology import Topology
 
 class PlAggregate:
 
-    api = None
-    #panos new user options variable
-    user_options = {}
-
     def __init__(self, driver):
         self.driver = driver
-    
+        self.user_options = {}
     def get_sites(self, filter={}):
         sites = {}
         for site in self.driver.GetSites(filter):
@@ -184,7 +182,7 @@ class PlAggregate:
             site=sites_dict[site_id]
             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.driver.hrn
+            rspec_node['component_manager_id'] = Xrn(self.driver.hrn, 'authority+cm').get_urn()
             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'
@@ -206,6 +204,9 @@ class PlAggregate:
                 interface['ipv4'] = interface['ip']
                 interface['component_id'] = PlXrn(auth=self.driver.hrn, 
                                                   interface='node%s:eth%s' % (node['node_id'], if_count)).get_urn()
+                # interfaces in the manifest need a client id
+                if slice:
+                    interface['client_id'] = "%s:%s" % (node['node_id'], if_id)            
                 rspec_node['interfaces'].append(interface)
                 if_count+=1
 
@@ -245,10 +246,12 @@ class PlAggregate:
         rspec.version.add_links(links)
         
         # add sliver defaults
-        default_sliver_attribs = slivers.get(None, [])
-        for sliver_attrib in default_sliver_attribs:
-            rspec.version.add_default_sliver_attribute(sliver_attrib['name'], sliver_attrib['value'])  
-        
+        default_sliver = slivers.get(None, [])
+        if default_sliver:
+            default_sliver_attribs = default_sliver.get('tags', [])
+            for attrib in default_sliver_attribs:
+                logger.info(attrib)
+                rspec.version.add_default_sliver_attribute(attrib['tagname'], attrib['value'])
         return rspec.toxml()