From e8480c267e9d5b9a6d36fd4cc7dd0e9de1344aae Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Wed, 19 Oct 2011 14:41:28 -0400 Subject: [PATCH] added 'append' argument to add_slivers() --- sfa/rspecs/versions/pgv2.py | 10 ++++++---- sfa/rspecs/versions/sfav1.py | 11 ++++++----- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/sfa/rspecs/versions/pgv2.py b/sfa/rspecs/versions/pgv2.py index 177b32cc..f33a68ff 100644 --- a/sfa/rspecs/versions/pgv2.py +++ b/sfa/rspecs/versions/pgv2.py @@ -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: diff --git a/sfa/rspecs/versions/sfav1.py b/sfa/rspecs/versions/sfav1.py index 1b147c93..95fbcbc1 100644 --- a/sfa/rspecs/versions/sfav1.py +++ b/sfa/rspecs/versions/sfav1.py @@ -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: -- 2.45.2