X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Frspecs%2Felements%2Fversions%2Fpgv2Node.py;h=d553d2192eab72f8ec20b829dacf03acb766b1f4;hb=e3dfbbc08aee7acaf3aedaeb9771cccd677cd647;hp=ea171d61c677c364de320373375a4bab09550e91;hpb=6768452369c6e82f731239fc474b497d1b3ac8ab;p=sfa.git diff --git a/sfa/rspecs/elements/versions/pgv2Node.py b/sfa/rspecs/elements/versions/pgv2Node.py index ea171d61..d553d219 100644 --- a/sfa/rspecs/elements/versions/pgv2Node.py +++ b/sfa/rspecs/elements/versions/pgv2Node.py @@ -19,7 +19,7 @@ from sfa.rspecs.elements.attribute import Attribute class PGv2Node: @staticmethod - def add_nodes(xml, nodes): + def add_nodes(xml, nodes, rspec_content_type=None): node_elems = [] for node in nodes: node_fields = ['component_manager_id', 'component_id', 'client_id', 'sliver_id', 'exclusive'] @@ -27,7 +27,7 @@ class PGv2Node: node_elems.append(node_elem) # set component name if node.get('component_id'): - component_name = get_leaf(Xrn(node['component_id']).get_hrn()) + component_name = Xrn.unescape(get_leaf(Xrn(node['component_id']).get_hrn())) node_elem.set('component_name', component_name) # set hardware types if node.get('hardware_types'): @@ -55,7 +55,11 @@ class PGv2Node: slivers = node.get('slivers', []) if not slivers: # we must still advertise the available sliver types - slivers = Sliver({'type': 'plab-vserver'}) + if node.get('sliver_type'): + slivers = Sliver({'type': node['sliver_type']}) + else: + # Planet lab + slivers = Sliver({'type': 'plab-vserver'}) # we must also advertise the available initscripts slivers['tags'] = [] if node.get('pl_initscripts'): @@ -70,6 +74,10 @@ class PGv2Node: tag['name'] = tag.pop('tagname') node_elem.add_instance('{%s}attribute' % xml.namespaces['planetlab'], tag, ['name', 'value']) + # add sliver tag in Request Rspec + #if rspec_content_type == "request": + # node_elem.add_instance('sliver', '', []) + return node_elems @@ -128,21 +136,28 @@ class PGv2Node: node['boot_state'] = 'disabled' # get initscripts - node['pl_initscripts'] = [] - initscript_elems = node_elem.xpath('./default:sliver_type/planetlab:initscript | ./sliver_type/initscript') - if len(initscript_elems) > 0: - for initscript_elem in initscript_elems: - if 'name' in initscript_elem.attrib: - node['pl_initscripts'].append(dict(initscript_elem.attrib)) + try: + node['pl_initscripts'] = [] + initscript_elems = node_elem.xpath('./default:sliver_type/planetlab:initscript | ./sliver_type/initscript') + if len(initscript_elems) > 0: + for initscript_elem in initscript_elems: + if 'name' in initscript_elem.attrib: + node['pl_initscripts'].append(dict(initscript_elem.attrib)) + except: + pass # 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 = dict(tag_elem.get_instance(Attribute)) - tag['tagname'] = tag.pop('name') - node['tags'].append(tag) + try: + tag_elems = node_elem.xpath('./planetlab:attribute | ./attribute') + node['tags'] = [] + if len(tag_elems) > 0: + for tag_elem in tag_elems: + tag = dict(tag_elem.get_instance(Attribute)) + tag['tagname'] = tag.pop('name') + node['tags'].append(tag) + except: + pass + return nodes