From: Mohamed Larabi Date: Wed, 18 Sep 2013 17:14:23 +0000 (+0200) Subject: expose PL node tags using attribute in PGv2 and GENIv3 rspecs X-Git-Tag: sfa-3.0-2~34 X-Git-Url: http://git.onelab.eu/?p=sfa.git;a=commitdiff_plain;h=83b27e3b6a23737337bd40682f7e2da6bc321536 expose PL node tags using attribute in PGv2 and GENIv3 rspecs --- diff --git a/sfa/rspecs/elements/attribute.py b/sfa/rspecs/elements/attribute.py new file mode 100644 index 00000000..740083b7 --- /dev/null +++ b/sfa/rspecs/elements/attribute.py @@ -0,0 +1,9 @@ +from sfa.rspecs.elements.element import Element + +class Attribute(Element): + + fields = [ + 'name', + 'value', + ] + diff --git a/sfa/rspecs/elements/versions/pgv2Node.py b/sfa/rspecs/elements/versions/pgv2Node.py index ba854d01..5db9ba91 100644 --- a/sfa/rspecs/elements/versions/pgv2Node.py +++ b/sfa/rspecs/elements/versions/pgv2Node.py @@ -12,7 +12,9 @@ from sfa.rspecs.elements.pltag import PLTag from sfa.rspecs.elements.versions.pgv2Services import PGv2Services from sfa.rspecs.elements.versions.pgv2SliverType import PGv2SliverType from sfa.rspecs.elements.versions.pgv2Interface import PGv2Interface +from sfa.rspecs.elements.versions.sfav1PLTag import SFAv1PLTag from sfa.rspecs.elements.granularity import Granularity +from sfa.rspecs.elements.attribute import Attribute from sfa.planetlab.plxrn import xrn_to_hostname @@ -66,12 +68,12 @@ class PGv2Node: tags = node.get('tags', []) if tags: for tag in tags: - tag_elem = node_elem.add_element(tag['tagname']) - tag_elem.set_text(tag['value']) - PGv2SliverType.add_slivers(node_elem, node.get('slivers', [])) + tag['name'] = tag.pop('tagname') + node_elem.add_instance('attribute', tag, ['name', 'value']) return node_elems + @staticmethod def get_nodes(xml, filter={}): xpath = '//node%s | //default:node%s' % (XpathFilter.xpath(filter), XpathFilter.xpath(filter)) @@ -123,6 +125,15 @@ class PGv2Node: node['boot_state'] = 'boot' else: node['boot_state'] = 'disabled' + + # get node tags + tag_elems = node_elem.xpath('./default:attribute | ./attribute') + node['tags'] = [] + if len(tag_elems) > 0: + for tag_elem in tag_elems: + tag = tag_elem.get_instance(Attribute) + tag['tagname'] = tag.pop('name') + node['tags'].append(tag) return nodes