xml = None
header = '<?xml version="1.0"?>\n'
namespaces = {}
-
+ format = 'sfa'
###################
# Parser
###################
if 'network' in node:
network = node['network']
network_tags = self.xml.xpath('//network[@name="%s"]' % network, self.namespaces)
- if not network_tag:
+ if not network_tags:
network_tag = etree.SubElement(self.xml, 'network', name=network)
else:
network_tag = network_tags[0]
for hostname in hostnames:
node = self.get_node_element(hostname, network)
sliver = node.find('sliver')
- if sliver:
+ if sliver != None:
node.remove(sliver)
-
-
def add_default_sliver_attribute(self, name, value, network=None):
if network:
for vlink in vlinks:
vlink.getparent().remove(vlink)
+
+ def merge(self, in_rspec):
+ """
+ Merge contents for specified rspec with current rspec
+ """
+
+ # just copy over all networks
+ current_networks = self.get_networks()
+ rspec = SfaRSpec(rspec=in_rspec)
+ networks = rspec.get_network_elements()
+ for network in networks:
+ current_network = network.get('name')
+ if not current_network in current_networks:
+ self.xml.append(network)
+ current_networks.append(current_network)
+
+
+
if __name__ == '__main__':
rspec = SfaRSpec()
nodes = [
'hostname': 'node1.planet-lab.org',
'site_urn': 'urn:publicid:IDN+plc+authority+cm',
'node_id': 1,
- }
+ },
+ {'network': 'plc',
+ 'hostname': 'node2.planet-lab.org',
+ 'site_urn': 'urn:publicid:IDN+plc+authority+cm',
+ 'node_id': 1,
+ },
+ {'network': 'ple',
+ 'hostname': 'node1.planet-lab.eu',
+ 'site_urn': 'urn:publicid:IDN+plc+authority+cm',
+ 'node_id': 1,
+ },
]
rspec.add_nodes(nodes)
print rspec