added 'append' argument to add_slivers()
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Wed, 19 Oct 2011 18:41:28 +0000 (14:41 -0400)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Wed, 19 Oct 2011 18:41:28 +0000 (14:41 -0400)
sfa/rspecs/versions/pgv2.py
sfa/rspecs/versions/sfav1.py

index 177b32c..f33a68f 100644 (file)
@@ -149,7 +149,7 @@ class PGv2(BaseVersion):
         # this is untested
         self.xml.root.append(deepcopy(source_node_tag))
 
-    def add_slivers(self, slivers, sliver_urn=None, no_dupes=False):
+    def add_slivers(self, slivers, sliver_urn=None, no_dupes=False, append=False):
 
         # all nodes hould already be present in the rspec. Remove all
         # nodes that done have slivers
@@ -200,10 +200,12 @@ class PGv2(BaseVersion):
                         elif tag['tagname'] == 'initscript':
                             e = etree.SubElement(sliver_elem, '{%s}initscript' % self.namespaces['planetlab'], attrib={'name': tag['value']})                
                 else:
-                    # node isn't usable. just remove it from the request     
-                    parent = node.getparent()
-                    parent.remove(node)
+                    if not append:                   
+                        # node isn't usable. just remove it from the request     
+                        parent = node.getparent()
+                        parent.remove(node)
 
+    
 
     def remove_slivers(self, slivers, network=None, no_dupes=False):
         for sliver in slivers:
index 1b147c9..95fbcbc 100644 (file)
@@ -262,7 +262,7 @@ class SFAv1(BaseVersion):
             description = etree.SubElement(link_elem, 'description').text = link.description
             bw_unallocated = etree.SubElement(link_elem, 'bw_unallocated', units='kbps').text = link.capacity  
 
-    def add_slivers(self, slivers, network=None, sliver_urn=None, no_dupes=False):
+    def add_slivers(self, slivers, network=None, sliver_urn=None, no_dupes=False, append=False):
         # add slice name to network tag
         network_tags = self.xml.xpath('//network')
         if network_tags:
@@ -283,10 +283,11 @@ class SFAv1(BaseVersion):
                     etree.SubElement(sliver_elem, tag['tagname']).text = value=tag['value']
             
         # remove all nodes without slivers
-        for node in nodes_without_slivers:
-            node_elem = self.get_node_element(node, network)
-            parent = node_elem.getparent()
-            parent.remove(node_elem)
+        if not append:
+            for node in nodes_without_slivers:
+                node_elem = self.get_node_element(node, network)
+                parent = node_elem.getparent()
+                parent.remove(node_elem)
 
     def remove_slivers(self, slivers, network=None, no_dupes=False):
         for sliver in slivers: