#del resa['resource_ids']
return reservation_dict_list
- def GetNodes(self, node_filter_dict = None, return_fields_list = None):
+ def GetNodes(self, node_filter_dict=None, return_fields_list=None):
"""
Make a list of iotlab nodes and their properties from information
'hrn','archi','mobile','hostname','site','boot_state','node_id',
'radio','posx','posy','oar_id','posz'.
- :param node_filter_dict: dictionnary of lists with node properties
+ :param node_filter_dict: dictionnary of lists with node properties. For
+ instance, if you want to look for a specific node with its hrn,
+ the node_filter_dict should be {'hrn': [hrn_of_the_node]}
:type node_filter_dict: dict
:param return_fields_list: list of specific fields the user wants to be
returned.
node_dict_by_id = self.oar.parser.SendRequest("GET_resources_full")
node_dict_list = node_dict_by_id.values()
logger.debug (" IOTLABDRIVER GetNodes node_filter_dict %s \
- return_fields_list %s "%(node_filter_dict, return_fields_list))
+ return_fields_list %s " % (node_filter_dict, return_fields_list))
#No filtering needed return the list directly
if not (node_filter_dict or return_fields_list):
return node_dict_list
for value in node_filter_dict[filter_key]:
for node in node_dict_list:
if node[filter_key] == value:
- if return_fields_list :
+ if return_fields_list:
tmp = {}
for k in return_fields_list:
tmp[k] = node[k]
\t lease['slice_hrn'] %s"
% (slice_filter, lease['slice_hrn']))
if lease['slice_hrn'] == slice_hrn:
+ slicerec_dict['oar_job_id'] = lease['lease_id']
#Update lease dict with the slice record
if fixed_slicerec_dict:
fixed_slicerec_dict['oar_job_id'] = []
slicerec_dict['slice_hrn'] = lease['slice_hrn']
slicerec_dict['hrn'] = lease['slice_hrn']
slicerec_dict['user'] = lease['user']
- slicerec_dict['oar_job_id'] = lease['lease_id']
slicerec_dict.update(
{'list_node_ids':
{'hostname': lease['reserved_nodes']}})
#for reserved_node in lease['reserved_nodes']:
logger.debug("IOTLABDRIVER.PY \tGetSlices lease %s "
% (lease))
-
+ slicerec_dict.update(fixed_slicerec_dict)
slicerec_dict.update({'node_ids':
lease['reserved_nodes']})
slicerec_dict.update({'list_node_ids':
{'hostname':
lease['reserved_nodes']}})
- slicerec_dict.update(fixed_slicerec_dict)
+
#slicerec_dict.update({'hrn':\
#str(fixed_slicerec_dict['slice_hrn'])})
#return_slicerec_dictlist.append(slicerec_dict)
try:
for record in record_list:
+
+ if str(record['type']) == 'node':
+ # look for node info using GetNodes
+ # the record is about one node only
+ filter_dict = {'hrn': [record['hrn']]}
+ node_info = self.iotlab_api.GetNodes(filter_dict)
+ # the node_info is about one node only, but it is formatted
+ # as a list
+ record.update(node_info[0])
+ logger.debug("IOTLABDRIVER.PY \t \
+ fill_record_info NODE" % (record))
+
#If the record is a SFA slice record, then add information
#about the user of this slice. This kind of
#information is in the Iotlab's DB.
if str(record['type']) == 'slice':
- if 'reg_researchers' in record and \
- isinstance(record['reg_researchers'], list):
+ if 'reg_researchers' in record and isinstance(record
+ ['reg_researchers'],
+ list):
record['reg_researchers'] = \
record['reg_researchers'][0].__dict__
record.update(
% (rec['oar_job_id']))
record['node_ids'] = [self.iotlab_api.root_auth +
- hostname for hostname in
- rec['node_ids']]
+ '.' + hostname for hostname
+ in rec['node_ids']]
except KeyError:
pass