X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Frspecs%2Felements%2Fversions%2Fpgv2Node.py;h=a59116a58fafc2f51ae88a5b9e2a5f2510400a57;hb=b56a9671b85eca53b3f992a5d1c4c047676bbd40;hp=ba854d01aab448fed05b610603e7bec0182e9f11;hpb=c2fae87506603c9e794b7ec98c5035ca43fa2dd9;p=sfa.git diff --git a/sfa/rspecs/elements/versions/pgv2Node.py b/sfa/rspecs/elements/versions/pgv2Node.py index ba854d01..a59116a5 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('{%s}attribute' % xml.namespaces['planetlab'], tag, ['name', 'value']) return node_elems + @staticmethod def get_nodes(xml, filter={}): xpath = '//node%s | //default:node%s' % (XpathFilter.xpath(filter), XpathFilter.xpath(filter)) @@ -117,12 +119,22 @@ class PGv2Node: # get slivers node['slivers'] = PGv2SliverType.get_slivers(node_elem) + available_elems = node_elem.xpath('./default:available | ./available') - if len(available_elems) > 0 and 'name' in available_elems[0].attrib: + if len(available_elems) > 0 and 'now' in available_elems[0].attrib: if available_elems[0].attrib.get('now', '').lower() == 'true': node['boot_state'] = 'boot' else: node['boot_state'] = 'disabled' + + # get node tags + tag_elems = node_elem.xpath('./planetlab: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