global sliver attributes should appear in the <sliver_defaults> tag and not under...
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Mon, 20 Jun 2011 20:03:28 +0000 (16:03 -0400)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Mon, 20 Jun 2011 20:03:28 +0000 (16:03 -0400)
sfa/plc/aggregate.py
sfa/rspecs/pg_rspec.py
sfa/rspecs/sfa_rspec.py

index 12580b8..ae4a03b 100644 (file)
@@ -105,8 +105,9 @@ class Aggregate:
                     slivers.append(sliver)
                     for tag in tags:
                         # if tag isn't bound to a node then it applies to all slivers
+                        # and belongs in the <sliver_defaults> tag
                         if not tag['node_id']:
-                            sliver['tags'].append(tag)
+                            rspec.add_default_sliver_attribute(tag['tagname'], tag['value'], self.api.hrn)
                         else:
                             tag_host = self.nodes[tag['node_id']]['hostname']
                             if tag_host == sliver['hostname']:
index 7c3f760..d481eb7 100755 (executable)
@@ -136,6 +136,9 @@ class PGRSpec(RSpec):
                     node.set('sliver_id', sliver_urn)
                 etree.SubElement(node, 'sliver_type', name='plab-vnode')
 
+    def add_default_sliver_attribute(self, name, value, network=Name):
+        pass
+
     def add_interfaces(self, interfaces, no_dupes=False):
         pass
 
index bc12200..0fce426 100755 (executable)
@@ -248,9 +248,8 @@ class SfaRSpec(RSpec):
         else:
             defaults = self.xml.xpath("//sliver_defaults" % network)
         if defaults is None:
-            defaults = etree.Element("sliver_defaults")
-            network = self.xml.xpath("//network[@name='%s']" % network)
-            network.insert(0, defaults)
+            network_tag = self.xml.xpath("//network[@name='%s']" % network)
+            defaults = self.add_element('sliver_defaults', attrs={}, network_tag)
         self.add_attribute(defaults, name, value)
 
     def add_sliver_attribute(self, hostname, name, value, network=None):