X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Frspecs%2Felements%2Fversions%2Fpgv2Node.py;h=4ddafc1f3e0268f4a1c662f23ce5927c5957047a;hb=9b7fc4030530fbe922f3e9d386f66b6a7ddba9f6;hp=33bf3e8f34fb3c647cc1cb5ce5e1cacf0dea98b8;hpb=63f75ee1e78335b05eb18b9df0f40185bab8b2a9;p=sfa.git diff --git a/sfa/rspecs/elements/versions/pgv2Node.py b/sfa/rspecs/elements/versions/pgv2Node.py index 33bf3e8f..4ddafc1f 100644 --- a/sfa/rspecs/elements/versions/pgv2Node.py +++ b/sfa/rspecs/elements/versions/pgv2Node.py @@ -12,6 +12,7 @@ from sfa.rspecs.elements.interface import Interface from sfa.rspecs.elements.bwlimit import BWlimit from sfa.rspecs.elements.pl_tag import PLTag from sfa.rspecs.rspec_elements import RSpecElement, RSpecElements +from sfa.rspecs.elements.versions.pgv2Service import PGv2Service class PGv2Node: elements = { @@ -37,6 +38,8 @@ class PGv2Node: node_elem.set('component_nama', component_name) if node.get('client_id'): node_elem.set('client_id', node['client_id']) + if node.get('sliver_id'): + node_elem.set('sliver_id', node['sliver_id']) if node.get('exclusive'): node_elem.set('exclusive', node['exclusive']) hardware_types = node.get('hardware_type', []) @@ -44,17 +47,22 @@ class PGv2Node: hw_type_elem = etree.SubElement(node_elem, 'hardware_type') if hardware_type.get('name'): hw_type_elem.set('name', hardware_type['name']) - if node.get('available') and node['available'].get('now'): - available_elem = etree.SubElement(node_elem, 'available', \ - now=node['available']['now']) + if node.get('boot_state', '').lower() == 'boot': + available_elem = etree.SubElement(node_elem, 'available', now='True') + else: + available_elem = etree.SubElement(node_elem, 'available', now='False') + + if node.get('services'): + PGv2Services.add_services(node_elem, node.get('services')) + slivers = node.get('slivers', []) + pl_initscripts = node.get('pl_initscripts', {}) for sliver in slivers: sliver_elem = etree.SubElement(node_elem, 'sliver_type') if sliver.get('name'): sliver_elem.set('name', sliver['name']) if sliver.get('client_id'): sliver_elem.set('client_id', sliver['client_id']) - pl_initscripts = node.get('pl_initscripts', {}) for pl_initscript in pl_initscripts.values(): etree.SubElement(sliver_elem, '{%s}initscript' % xml.namespaces['planetlab'], \ name=pl_initscript['name']) @@ -86,6 +94,13 @@ class PGv2Node: if len(location_elems) > 0: node['location'] = Location(location_elems[0].attrib, location_elems[0]) + # set services + services_elems = node_elem.xpath(PGv2Service.elements['services'].path, xml.namespaces) + node['services'] = [] + for services_elem in services_elems: + # services element has no useful info, but the child elements do + for child in services_elem.iterchildren(): + # set interfaces interface_elems = node_elem.xpath(PGv2Node.elements['interface'].path, xml.namespaces) node['interfaces'] = [] @@ -95,7 +110,10 @@ class PGv2Node: # set available available = node_elem.xpath(PGv2Node.elements['available'].path, xml.namespaces) if len(available) > 0: - node['available'] = available[0].attrib + if available[0].attrib.get('now', '').lower() == 'true': + node['boot_state'] = 'boot' + else: + node['boot_state'] = 'disabled' # set the slivers sliver_elems = node_elem.xpath(PGv2Node.elements['sliver'].path, xml.namespaces)