X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Frspecs%2Felements%2Fversions%2Fsfav1Node.py;h=f50e6877f3577a66d2bead484ba2da48a7acaa50;hb=3d51e29695f79b143974f5cf7b2e104d89626ba4;hp=26d41a973d1f5dc1bebb0d8f2c9be5bfcec638bb;hpb=1851a8965e481084c8a8f869c58147c01ed670c6;p=sfa.git diff --git a/sfa/rspecs/elements/versions/sfav1Node.py b/sfa/rspecs/elements/versions/sfav1Node.py index 26d41a97..f50e6877 100644 --- a/sfa/rspecs/elements/versions/sfav1Node.py +++ b/sfa/rspecs/elements/versions/sfav1Node.py @@ -24,7 +24,7 @@ class SFAv1Node: network_elem = network_elems[0] elif len(nodes) > 0 and nodes[0].get('component_manager_id'): network_urn = nodes[0]['component_manager_id'] - network_elem = xml.add_element('network', name = Xrn(network_urn).get_hrn()) + network_elem = xml.add_element('network', name = Xrn(network_urn).get_hrn()) else: network_elem = xml @@ -55,16 +55,19 @@ class SFAv1Node: if location: node_elem.add_instance('location', location, Location.fields) - for interface in node.get('interfaces', []): - node_elem.add_instance('interface', interface, ['component_id', 'client_id', 'ipv4']) + if isinstance(node.get('interfaces'), list): + for interface in node.get('interfaces', []): + node_elem.add_instance('interface', interface, ['component_id', 'client_id', 'ipv4']) #if 'bw_unallocated' in node and node['bw_unallocated']: # bw_unallocated = etree.SubElement(node_elem, 'bw_unallocated', units='kbps').text = str(int(node['bw_unallocated'])/1000) PGv2Services.add_services(node_elem, node.get('services', [])) - for tag in node.get('tags', []): - tag_elem = node_elem.add_element(tag['tagname']) - tag_elem.set_text(tag['value']) + tags = node.get('tags', []) + if tags: + for tag in tags: + tag_elem = node_elem.add_element(tag['tagname']) + tag_elem.set_text(tag['value']) SFAv1Sliver.add_slivers(node_elem, node.get('slivers', [])) @staticmethod @@ -90,7 +93,7 @@ class SFAv1Node: 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) @@ -133,11 +136,16 @@ class SFAv1Node: # get slivers node['slivers'] = SFAv1Sliver.get_slivers(node_elem) # 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'] + node['tags'] = SFAv1PLTag.get_pl_tags(node_elem, ignore=Node.fields+["hardware_type"]) + # get hardware types + hardware_type_elems = node_elem.xpath('./default:hardware_type | ./hardware_type') + node['hardware_types'] = [hw_type.get_instance(HardwareType) for hw_type in hardware_type_elems] + + # 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