Merge branch 'master' of ssh://bakers@git.planet-lab.org/git/sfa
authorsmbaker <smbaker@fc8clean.lan>
Tue, 29 Nov 2011 02:35:05 +0000 (18:35 -0800)
committersmbaker <smbaker@fc8clean.lan>
Tue, 29 Nov 2011 02:35:05 +0000 (18:35 -0800)
sfa/client/sfi.py [changed mode: 0755->0644]
sfa/rspecs/elements/versions/sfav1Node.py
sfa/rspecs/versions/pgv2.py
sfa/rspecs/versions/sfav1.py

old mode 100755 (executable)
new mode 100644 (file)
index bf09305..753192d 100644 (file)
@@ -92,7 +92,7 @@ class SFAv1Node:
         for hostname in hostnames:
             nodes = SFAv1Node.get_nodes(xml, {'component_id': '*%s*' % hostname})
             for node in nodes:
-                slivers = SFAv1Slivers.get_slivers(node.element)
+                slivers = SFAv1Sliver.get_slivers(node.element)
                 for sliver in slivers:
                     node.element.remove(sliver.element)
         
@@ -137,9 +137,11 @@ class SFAv1Node:
             # get tags
             node['tags'] =  SFAv1PLTag.get_pl_tags(node_elem, ignore=Node.fields)
 
-            parent = node_elem.getparent()
-            if (parent != None) and (parent.tag=="network") and ("name" in parent.attrib):
-                node['network_name'] = parent.attrib['name']
+            # temporary... play nice with old slice manager rspec
+            if not node['component_name']:
+                hostname_elem = node_elem.find("hostname")
+                if hostname_elem != None:
+                    node['component_name'] = hostname_elem.text
 
             nodes.append(node)
         return nodes            
index fba1a26..c6a030b 100644 (file)
@@ -19,16 +19,23 @@ class PGv2(BaseVersion):
     }
     namespaces = dict(extensions.items() + [('default', namespace)])
 
-    # Networks    
+    # Networks
     def get_networks(self):
-        networks = set()
-        nodes = self.xml.xpath('//default:node[@component_manager_id] | //node:[@component_manager_id]', namespaces=self.namespaces)
-        for node in nodes: 
-            if 'component_manager_id' in node:
-                network_urn  = node.get('component_manager_id')
-                network_hrn = Xrn(network_urn).get_hrn()[0]
-                networks.add({'name': network_hrn})
-        return list(networks)
+        network_names = set()
+        nodes = self.xml.xpath('//default:node[@component_manager_id] | //node[@component_manager_id]', namespaces=self.namespaces)
+        for node in nodes:
+            if 'component_manager_id' in node.attrib:
+                network_urn = node.get('component_manager_id')
+                if network_urn.startswith("urn:"):
+                    network_hrn = Xrn(network_urn).get_hrn()[0]
+                else:
+                    # some component_manager_ids are hrns instead of urns??
+                    network_hrn = network_urn
+                network_names.add(network_hrn)
+                print "PPP", network_names, network_hrn, network_urn
+        network_names = list(network_names)
+        networks = [{"name": x} for x in network_names]
+        return networks
 
     # Nodes
 
index d954f62..affab84 100644 (file)
@@ -142,7 +142,7 @@ class SFAv1(BaseVersion):
             defaults = network_tag.add_element('sliver_defaults')
         elif isinstance(defaults, list):
             defaults = defaults[0]
-        Sfav1Sliver.add_sliver_attribute(defaults, name, value)
+        SFAv1Sliver.add_sliver_attribute(defaults, name, value)
 
     def get_default_sliver_attributes(self, network=None):
         if network:
@@ -150,14 +150,14 @@ class SFAv1(BaseVersion):
         else:
             defaults = self.xml.xpath("//sliver_defaults")
         if not defaults: return []
-        return Sfav1Sliver.get_sliver_attributes(defaults)
+        return SFAv1Sliver.get_sliver_attributes(defaults[0])
     
     def remove_default_sliver_attribute(self, name, value, network=None):
         if network:
             defaults = self.xml.xpath("//network[@name='%s']/sliver_defaults" % network)
         else:
             defaults = self.xml.xpath("//sliver_defaults" % network)
-        attribs = Sfav1Sliver.get_sliver_attributes(defaults)
+        attribs = SFAv1Sliver.get_sliver_attributes(defaults)
         for attrib in attribs:
             if attrib['name'] == name and attrib['value'] == value:
                 attrib.element.delete()