X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Frspecs%2Fsfa_rspec.py;h=1f997eea66317eb8b9438c8689f802dac0951f0b;hb=54e2d38326e66d9f04e6faa3143f9e1a44b3215f;hp=9f41ec2baf207cf8cbb4203bc7dd8ba9cdc38a2f;hpb=711356bf60f81831da0e844ffefe03787a752ea3;p=sfa.git diff --git a/sfa/rspecs/sfa_rspec.py b/sfa/rspecs/sfa_rspec.py index 9f41ec2b..1f997eea 100755 --- a/sfa/rspecs/sfa_rspec.py +++ b/sfa/rspecs/sfa_rspec.py @@ -11,15 +11,15 @@ class SfaRSpec(RSpec): xml = None header = '\n' namespaces = {} - + format = 'sfa' ################### # Parser ################### def get_network_elements(self): - return self.xml.xpath('//network', self.namespaces) + return self.xml.xpath('//network') def get_networks(self): - return self.xml.xpath('//network[@name]/@name', self.namespaces) + return self.xml.xpath('//network[@name]/@name') def get_node_element(self, hostname, network=None): if network: @@ -32,28 +32,28 @@ class SfaRSpec(RSpec): return None def get_node_elements(self): - return self.xml.xpath('//node', self.namespaces) + return self.xml.xpath('//node') def get_nodes(self, network=None): if network == None: - nodes = self.xml.xpath('//node/hostname/text()', self.namespaces) + nodes = self.xml.xpath('//node/hostname/text()') else: - nodes = self.xml.xpath('//network[@name="%s"]//node/hostname/text()' % network, self.namespaces) + nodes = self.xml.xpath('//network[@name="%s"]//node/hostname/text()' % network) return nodes def get_nodes_with_slivers(self, network = None): if network: - return self.xml.xpath('//network[@name="%s"]//node[sliver]/hostname/text()' % network, self.namespaces) + return self.xml.xpath('//network[@name="%s"]//node[sliver]/hostname/text()' % network) else: - return self.xml.xpath('//node[sliver]/hostname/text()', self.namespaces) + return self.xml.xpath('//node[sliver]/hostname/text()') def get_nodes_without_slivers(self, network=None): xpath_nodes_without_slivers = '//node[not(sliver)]/hostname/text()' xpath_nodes_without_slivers_in_network = '//network[@name="%s"]//node[not(sliver)]/hostname/text()' if network: - return self.xml.xpath('//network[@name="%s"]//node[not(sliver)]/hostname/text()' % network, self.namespaces) + return self.xml.xpath('//network[@name="%s"]//node[not(sliver)]/hostname/text()' % network) else: - return self.xml.xpath('//node[not(sliver)]/hostname/text()', self.namespaces) + return self.xml.xpath('//node[not(sliver)]/hostname/text()') def attributes_list(self, elem): @@ -67,9 +67,9 @@ class SfaRSpec(RSpec): def get_default_sliver_attributes(self, network=None): if network: - defaults = self.xml.xpath("//network[@name='%s']/sliver_defaults" % network, self.namespaces) + defaults = self.xml.xpath("//network[@name='%s']/sliver_defaults" % network) else: - defaults = self.xml.xpath("//network/sliver_defaults" % network, self.namespaces) + defaults = self.xml.xpath("//network/sliver_defaults" % network) return self.attributes_list(defaults) def get_sliver_attributes(self, hostname, network=None): @@ -80,14 +80,14 @@ class SfaRSpec(RSpec): def get_site_nodes(self, siteid, network=None): if network: nodes = self.xml.xpath('//network[@name="%s"]/site[@id="%s"]/node/hostname/text()' % \ - (network, siteid), self.namespaces) + (network, siteid)) else: - nodes = self.xml.xpath('//site[@id="%s"]/node/hostname/text()' % siteid, self.namespaces) + nodes = self.xml.xpath('//site[@id="%s"]/node/hostname/text()' % siteid) return nodes def get_links(self, network=None): if network: - links = self.xml.xpath('//network[@name="%s"]/link' % network, self.namespaces) + links = self.xml.xpath('//network[@name="%s"]/link' % network) else: links = self.xml.xpath('//link') linklist = [] @@ -120,9 +120,9 @@ class SfaRSpec(RSpec): def get_vlinks(self, network=None): vlinklist = [] if network: - vlinks = self.xml.xpath("//network[@name='%s']//vlink" % network, self.namespaces) + vlinks = self.xml.xpath("//network[@name='%s']//vlink" % network) else: - vlinks = self.xml.xpath("//vlink", self.namespaces) + vlinks = self.xml.xpath("//vlink") for vlink in vlinks: endpoints = vlink.get("endpoints") (end1, end2) = endpoints.split() @@ -169,7 +169,7 @@ class SfaRSpec(RSpec): 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: @@ -177,21 +177,29 @@ class SfaRSpec(RSpec): 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 - - + if 'interfaces' in node: + for interface in node['interfaces']: + if 'bwlimit' in interface: + bwlimit = etree.SubElement(node_tag, 'bwlimit', units='kbps').tet = str(interface['bwlimit']/1000) + if 'tags' in node: + for tag in node['tags']: + if tag['tagname'] in ['fcdistro', 'arch']: + tag_element = etree.SubElement(node_tag, tag['tagname'], value=tag['value']) + 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] @@ -209,7 +217,7 @@ class SfaRSpec(RSpec): 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):