X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Frspecs%2Fversions%2Fsfav1.py;h=8f172bd821c0c2a31decef73485e1abc6c588418;hb=e80760cd31b6b247f2841ba86a4828fa3be13e56;hp=406077af4705524d385bcba02c9969f6a830788d;hpb=a984afaf2e5d6e9618629df3086a9411b6776526;p=sfa.git diff --git a/sfa/rspecs/versions/sfav1.py b/sfa/rspecs/versions/sfav1.py index 406077af..8f172bd8 100644 --- a/sfa/rspecs/versions/sfav1.py +++ b/sfa/rspecs/versions/sfav1.py @@ -104,17 +104,20 @@ class SFAv1(BaseVersion): return attributes - def add_sliver_attribute(self, hostname, name, value, network=None): - nodes = self.get_nodes({'component_id': '*%s*' % hostname}) - if not nodes: + def add_sliver_attribute(self, component_id, name, value, network=None): + nodes = self.get_nodes({'component_id': '*%s*' % component_id}) + if nodes is not None and isinstance(nodes, list) and len(nodes) > 0: node = nodes[0] slivers = SFAv1Sliver.get_slivers(node) if slivers: sliver = slivers[0] - SFAv1Sliver.add_attribute(sliver, name, value) + SFAv1Sliver.add_sliver_attribute(sliver, name, value) + else: + # should this be an assert / raise an exception? + print "WARNING: failed to find component_id", component_id - def get_sliver_attributes(self, hostname, network=None): - nodes = self.get_nodes({'component_id': '*%s*' %hostname}) + def get_sliver_attributes(self, component_id, network=None): + nodes = self.get_nodes({'component_id': '*%s*' % component_id}) attribs = [] if nodes is not None and isinstance(nodes, list) and len(nodes) > 0: node = nodes[0] @@ -124,11 +127,13 @@ class SFAv1(BaseVersion): attribs = SFAv1Sliver.get_sliver_attributes(sliver.element) return attribs - def remove_sliver_attribute(self, hostname, name, value, network=None): - attribs = self.get_sliver_attributes(hostname) + def remove_sliver_attribute(self, component_id, name, value, network=None): + attribs = self.get_sliver_attributes(component_id) for attrib in attribs: if attrib['name'] == name and attrib['value'] == value: - attrib.element.delete() + #attrib.element.delete() + parent = attrib.element.getparent() + parent.remove(attrib.element) def add_default_sliver_attribute(self, name, value, network=None): if network: @@ -142,7 +147,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,17 +155,15 @@ 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 = self.get_default_sliver_attributes(network) for attrib in attribs: if attrib['name'] == name and attrib['value'] == value: - attrib.element.delete() + #attrib.element.delete() + parent = attrib.element.getparent() + parent.remove(attrib.element) # Links @@ -173,7 +176,7 @@ class SFAv1(BaseVersion): def add_links(self, links): networks = self.get_networks() if len(networks) > 0: - xml = networks[0] + xml = networks[0].element else: xml = self.xml PGv2Link.add_links(xml, links)