def remove_slivers(self, slivers, network=None, no_dupes=False):
return self.version.remove_slivers(slivers, network, no_dupes)
- #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 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 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']
+ 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):
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 []
xml = open(rspec_file).read()
rspec = SfaceRSpec(rspec=xml) #rspec = parse_rspec(xml)
- self.purgeNonSliceResources(rspec)
+ #self.purgeNonSliceResources(rspec)
return rspec
return None