xml = None
header = '<?xml version="1.0"?>\n'
namespaces = {}
-
+ format = 'sfa'
###################
# Parser
###################
network_tag = self.xml
if 'network' in node:
network = node['network']
- network_tags = self.xml.xpath('//network[@name="%s"]' % network, self.namespaces)
+ network_tags = self.xml.xpath('//network[@name="%s"]' % network)
if not network_tags:
network_tag = etree.SubElement(self.xml, 'network', name=network)
else:
node_tag = etree.SubElement(network_tag, 'node')
if 'network' in node:
- node_tag.set('component_manager_uuid', network)
+ node_tag.set('component_manager_id', network)
if 'urn' in node:
- node_tag.set('compinent_uuid', node['urn'])
+ node_tag.set('component_id', node['urn'])
if 'site_urn' in node:
- node_tag.set('site_uuid', node['site_urn'])
+ node_tag.set('site_id', node['site_urn'])
if 'node_id' in node:
node_tag.set('node_id', 'n'+str(node['node_id']))
if 'hostname' in node:
hostname_tag = etree.SubElement(node_tag, 'hostname').text = node['hostname']
- if 'bw_unallocated' in node:
- pass
- if 'bw_limit' in node:
- pass
-
+ for interface in node['interfaces']:
+ if 'bwlimit' in node:
+ bwlimit = etree.SubElement(node_tag, 'bwlimit', units='kbps').tet = str(interface['bwlimit']/1000)
+
+
+ def add_interfaces(self, interfaces):
+ pass
+ def add_links(self, links):
+ pass
+
def add_slivers(self, hostnames, network=None, no_dupes=False):
if not isinstance(hostnames, list):
hostnames = [hostnames]
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 = [