node_attrs = {}
node_attrs['exclusive'] = 'false'
if 'component_manager_id' in sfa_node_element.attrib:
- component_manager_id = sfa_node_element.attrib['component_manager_id']
+ node_attrs['component_manager_id'] = sfa_node_element.attrib['component_manager_id']
else:
- component_manager_id = hrn_to_urn(network, 'authority+cm')
- node_attrs['component_manager_id'] = component_manager_id
+ node_attrs['component_manager_id'] = hrn_to_urn(network, 'authority+cm')
+
+ if 'component_id' in sfa_node_element.attrib:
+ node_attrs['compoenent_id'] = sfa_node_element.attrib['component_id']
+
if sfa_node_element.find('hostname') != None:
- node_attrs['component_name'] = sfa_node_element.find('hostname').text
- if sfa_node_element.find('urn') != None:
- node_attrs['component_id'] = sfa_node_element.find('urn').text
+ hostname = sfa_node_element.find('hostname').text
+ node_attrs['component_name'] = hostname
+ node_attrs['client_id'] = hostname
node_element = pg_rspec.xml.add_element('node', node_attrs)
if content_type == 'request':
sliver_element = sfa_node_element.find('sliver')
+ sliver_type_elements = sfa_node_element.xpath('./sliver_type', namespaces=sfa_rspec.namespaces)
+ available_sliver_types = [element.attrib['name'] for element in sliver_type_elements]
+ valid_sliver_types = ['emulab-openvz', 'raw-pc']
+
+ # determine sliver type
+ requested_sliver_type = 'emulab-openvz'
+ for available_sliver_type in available_sliver_types:
+ if available_sliver_type in valid_sliver_types:
+ requested_sliver_type = available_sliver_type
+
if sliver_element != None:
- pg_rspec.xml.add_element('sliver_type', {'name': 'planetlab-vnode'}, parent=node_element)
+ pg_rspec.xml.add_element('sliver_type', {'name': requested_sliver_type}, parent=node_element)
else:
# create node_type element
for hw_type in ['plab-pc', 'pc']:
if location != None:
location_attrs = {}
location_attrs['country'] = location.get('country', 'unknown')
- location_attrs['latitude'] = location.get('latitiue', 'None')
+ location_attrs['latitude'] = location.get('latitude', 'None')
location_attrs['longitude'] = location.get('longitude', 'None')
pg_rspec.xml.add_element('location', location_attrs, parent=node_element)