From: Tony Mack Date: Tue, 4 Oct 2011 20:40:24 +0000 (-0400) Subject: add_slivers() will remove nodes that don't have slivers X-Git-Tag: sfa-1.1-1~141 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=6c20754b16352f2a673ab29125de82994248a27c;p=sfa.git add_slivers() will remove nodes that don't have slivers --- diff --git a/sfa/rspecs/versions/sfav1.py b/sfa/rspecs/versions/sfav1.py index 4712d955..a9c38447 100644 --- a/sfa/rspecs/versions/sfav1.py +++ b/sfa/rspecs/versions/sfav1.py @@ -257,18 +257,24 @@ class SFAv1(BaseVersion): network_tag = network_tags[0] network_tag.set('slice', urn_to_hrn(sliver_urn)[0]) - nodes_with_slivers = self.get_nodes_with_slivers(network) + all_nodes = self.get_nodes() + nodes_with_slivers = [sliver['hostname'] for sliver in slivers] + nodes_without_slivers = set(all_nodes).difference(nodes_with_slivers) + + # add slivers for sliver in slivers: - if isinstance(sliver, basestring): - sliver = {'hostname': sliver} - if sliver['hostname'] in nodes_with_slivers: - continue node_elem = self.get_node_element(sliver['hostname'], network) + if not node_elem: continue sliver_elem = etree.SubElement(node_elem, 'sliver') if 'tags' in sliver: for tag in sliver['tags']: 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) def remove_slivers(self, slivers, network=None, no_dupes=False): for sliver in slivers: