for hostname in hostnames:
nodes = SFAv1Node.get_nodes(xml, {'component_id': '*%s*' % hostname})
for node in nodes:
- slivers = SFAv1Slivers.get_slivers(node.element)
+ slivers = SFAv1Sliver.get_slivers(node.element)
for sliver in slivers:
node.element.remove(sliver.element)
# get tags
node['tags'] = SFAv1PLTag.get_pl_tags(node_elem, ignore=Node.fields)
- parent = node_elem.getparent()
- if (parent != None) and (parent.tag=="network") and ("name" in parent.attrib):
- node['network_name'] = parent.attrib['name']
+ # temporary... play nice with old slice manager rspec
+ if not node['component_name']:
+ hostname_elem = node_elem.find("hostname")
+ if hostname_elem != None:
+ node['component_name'] = hostname_elem.text
nodes.append(node)
return nodes
}
namespaces = dict(extensions.items() + [('default', namespace)])
- # Networks
+ # Networks
def get_networks(self):
- networks = set()
- nodes = self.xml.xpath('//default:node[@component_manager_id] | //node:[@component_manager_id]', namespaces=self.namespaces)
- for node in nodes:
- if 'component_manager_id' in node:
- network_urn = node.get('component_manager_id')
- network_hrn = Xrn(network_urn).get_hrn()[0]
- networks.add({'name': network_hrn})
- return list(networks)
+ network_names = set()
+ nodes = self.xml.xpath('//default:node[@component_manager_id] | //node[@component_manager_id]', namespaces=self.namespaces)
+ for node in nodes:
+ if 'component_manager_id' in node.attrib:
+ network_urn = node.get('component_manager_id')
+ if network_urn.startswith("urn:"):
+ network_hrn = Xrn(network_urn).get_hrn()[0]
+ else:
+ # some component_manager_ids are hrns instead of urns??
+ network_hrn = network_urn
+ network_names.add(network_hrn)
+ print "PPP", network_names, network_hrn, network_urn
+ network_names = list(network_names)
+ networks = [{"name": x} for x in network_names]
+ return networks
# Nodes
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:
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 = SFAv1Sliver.get_sliver_attributes(defaults)
for attrib in attribs:
if attrib['name'] == name and attrib['value'] == value:
attrib.element.delete()