X-Git-Url: http://git.onelab.eu/?p=sface.git;a=blobdiff_plain;f=sface%2Fsfidata.py;h=41b904f7c949873e830a9ea3b18e4f3f8428d112;hp=57a6260eaabede71b8eceb16288f7f935b4a2255;hb=e9ec3baedf4607aefd6f034647ec745ab5ea4ee3;hpb=03b467d0bf99663f894553af50265816bd28027e diff --git a/sface/sfidata.py b/sface/sfidata.py index 57a6260..41b904f 100644 --- a/sface/sfidata.py +++ b/sface/sfidata.py @@ -38,6 +38,18 @@ class SfaceRSpec(RSpec): def remove_slivers(self, slivers, network=None, no_dupes=False): return self.version.remove_slivers(slivers, network, no_dupes) + def add_default_sliver_attribute(self, name, value, network=None): + self.version.add_default_sliver_attribute(name, value, network) + + def add_sliver_attribute(self, hostname, name, value, network=None): + self.version.add_sliver_attribute(hostname, name, value, network) + + def remove_default_sliver_attribute(self, name, value, network=None): + self.version.remove_default_sliver_attribute(name, value, network) + + def remove_sliver_attribute(self, hostname, name, value, network=None): + self.version.remove_sliver_attribute(hostname, name, value, network) + #def add_slivers(self, slivers, network=None, sliver_urn=None, no_dupes=False): # return self.version.add_slivers(slivers, network, sliver_urn, no_dupes) @@ -45,7 +57,7 @@ class SfaceRSpec(RSpec): return self.version.merge_node(source_node_tag, network, no_dupes) # sfav1.add_slivers isn't working for us... - def add_slivers(self, slivers, network=None, sliver_urn=None, no_dupes=False): + def add_slivers_xxx(self, slivers, network=None, sliver_urn=None, no_dupes=False): # add slice name to network tag network_tags = self.xml.xpath('//network') if network_tags: @@ -61,6 +73,17 @@ class SfaceRSpec(RSpec): for tag in sliver['tags']: etree.SubElement(sliver_elem, tag['tagname']).text = value=tag['value'] + def get_node_sliver_type(self, node, network): + node = self.get_node_element(node, network) + if node is None: + return "" + + sliver_types = node.xpath("sliver_type") + if len(sliver_types)>0: + return sliver_types[0].attrib.get("name", "") + + return "" + class SfiData: def __init__(self): pass @@ -101,7 +124,16 @@ class SfiData: def getUserSliceHrns(self): rec = self.getUserRecord() if rec: - return rec.get_field("slices") + slices = rec.get_field("slices") + if (type(slices)!=list) or (len(slices)<1): + return [] + + # get_field("slices") is returning [{"text": name}, {"text": name}, ...] + if (type(slices[0])==dict): + if "text" in slices[0]: + slices = [x["text"] for x in slices] + + return slices return [] @@ -125,7 +157,7 @@ class SfiData: xml = open(rspec_file).read() rspec = SfaceRSpec(rspec=xml) #rspec = parse_rspec(xml) - self.purgeNonSliceResources(rspec) + #self.purgeNonSliceResources(rspec) return rspec return None