- @staticmethod
- def to_sfa_network(pg_rspec, xml):
- network_urn = pg_rspec.get_network()
- network, _ = urn_to_hrn(network_urn)
- nodes = pg_rspec.get_node_elements()
- network_tag = etree.SubElement(xml, "network")
- network_tag.set("name", network)
- network_tag.set("id", network)
- i = 0
- for node in nodes:
- PGRSpecConverter.to_sfa_node(network_tag, node, i)
-
- @staticmethod
- def to_sfa_rspec(rspec):
- pg_rspec = PGRSpec(rspec=rspec)
- header = '<?xml version="1.0"?>\n'
- xml = etree.Element("RSpec", type="SFA")
- PGRSpecConverter.to_sfa_network(pg_rspec, xml)
- return header + etree.tostring(xml, pretty_print=True)
+ version_manager = VersionManager()
+ sfa_version = version_manager._get_version('sfa', '1')
+ sfa_rspec = RSpec(version=sfa_version)
+
+ #nodes = pg_rspec.version.get_nodes()
+ # sfa_rspec.version.add_nodes(nodes())
+ # sfa_rspec.version.add_links(pg_rspec.version.get_links())
+ # return sfa_rspec.toxml()
+
+ # get network
+ networks = pg_rspec.version.get_networks()
+ network_hrn = networks[0]["name"]
+ network_element = sfa_rspec.xml.add_element(
+ 'network', name=network_hrn, id=network_hrn)
+
+ # get nodes
+ pg_nodes_elements = pg_rspec.version.get_nodes()
+ nodes_with_slivers = pg_rspec.version.get_nodes_with_slivers()
+ i = 1
+ for pg_node in pg_nodes_elements:
+ attribs = dict(pg_node.items())
+ attribs['id'] = 'n' + str(i)
+
+ node_element = network_element.add_element('node')
+ for attrib in attribs:
+ if type(attribs[attrib]) == str:
+ node_element.set(attrib, attribs[attrib])
+ urn = pg_node["component_id"]
+ if urn:
+ if type(urn) == list:
+ # legacy code, not sure if urn is ever a list...
+ urn = urn[0]
+ hostname = Xrn.urn_split(urn)[-1]
+ hostname_element = node_element.add_element('hostname')
+ hostname_element.set_text(hostname)
+ if hostname in nodes_with_slivers:
+ node_element.add_element('sliver')
+
+ for hardware_type in pg_node["hardware_types"]:
+ if "name" in hardware_type:
+ node_element.add_element(
+ "hardware_type", name=hardware_type["name"])
+
+ # just copy over remaining child elements
+ # for child in pg_node_element.getchildren():
+ # node_element.append(transform(child).getroot())
+ i = i + 1
+
+ return sfa_rspec.toxml()