X-Git-Url: http://git.onelab.eu/?p=sface.git;a=blobdiff_plain;f=sface%2Fsfidata.py;h=284c090f6db24a848efda857b60bc3fc0c00cf6c;hp=0ba93cbdc5339a0cf1874332f42ba483bb9a9afa;hb=ebc6f2825a983bf1cef33831349643577a32336c;hpb=83798f68c3d08b162485f1286159ca76c57198f7 diff --git a/sface/sfidata.py b/sface/sfidata.py index 0ba93cb..284c090 100644 --- a/sface/sfidata.py +++ b/sface/sfidata.py @@ -50,36 +50,12 @@ class SfaceRSpec(RSpec): 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) - def merge_node(self, source_node_tag, network, no_dupes=False): 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): - # add slice name to network tag - network_tags = self.xml.xpath('//network') - if network_tags: - network_tag = network_tags[0] - network_tag.set('slice', urn_to_hrn(sliver_urn)[0]) - - # add slivers - for sliver in slivers: - 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'] - - # these should be moved to SFAv1, etc. - def get_node_boot_state(self, node, network): - return self.get_node_element(node, network).attrib.get("boot_state","") - def get_node_sliver_type(self, node, network): node = self.get_node_element(node, network) - if not node: + if node is None: return "" sliver_types = node.xpath("sliver_type") @@ -128,7 +104,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 [] @@ -152,7 +137,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