+
+ def DeleteJobs(self, job_id, slice_hrn):
+ if not job_id:
+ return
+ username = slice_hrn.split(".")[-1].rstrip("_slice")
+ reqdict = {}
+ reqdict['method'] = "delete"
+ reqdict['strval'] = str(job_id)
+ answer = self.oar.POSTRequestToOARRestAPI('DELETE_jobs_id',reqdict,username)
+ print>>sys.stderr, "\r\n \r\n jobid DeleteJobs %s " %(answer)
+
+
+ def GetJobs(self,job_id= None, resources=True,return_fields=None, username = None):
+ #job_resources=['reserved_resources', 'assigned_resources','job_id', 'job_uri', 'assigned_nodes',\
+ #'api_timestamp']
+ #assigned_res = ['resource_id', 'resource_uri']
+ #assigned_n = ['node', 'node_uri']
+
+ if job_id and resources is False:
+ req = "GET_jobs_id"
+ node_list_k = 'assigned_network_address'
+
+ if job_id and resources :
+ req = "GET_jobs_id_resources"
+ node_list_k = 'reserved_resources'
+
+ #Get job info from OAR
+ job_info = self.oar.parser.SendRequest(req, job_id, username)
+ print>>sys.stderr, "\r\n \r\n \t\t GetJobs %s " %(job_info)
+
+ if 'state' in job_info :
+ if job_info['state'] == 'Terminated':
+ print>>sys.stderr, "\r\n \r\n \t\t GetJobs TERMINELEBOUSIN "
+ return None
+ if job_info['state'] == 'Error':
+ print>>sys.stderr, "\r\n \r\n \t\t GetJobs ERROR message %s " %(job_info)
+ return None
+
+ #Get a dict of nodes . Key :hostname of the node
+ node_list = self.GetNodes()
+ node_hostname_list = []
+ for node in node_list:
+ node_hostname_list.append(node['hostname'])
+ node_dict = dict(zip(node_hostname_list,node_list))
+ try :
+ liste =job_info[node_list_k]
+ #print>>sys.stderr, "\r\n \r\n \t\t GetJobs resources job_info liste%s" %(liste)
+ for k in range(len(liste)):
+ job_info[node_list_k][k] = node_dict[job_info[node_list_k][k]]['hostname']
+
+ #print>>sys.stderr, "\r\n \r\n \t\t YYYYYYYYYYYYGetJobs resources job_info %s" %(job_info)
+ #Replaces the previous entry "assigned_network_address" / "reserved_resources"
+ #with "node_ids"
+ job_info.update({'node_ids':job_info[node_list_k]})
+ del job_info[node_list_k]
+ return job_info
+
+ except KeyError:
+ print>>sys.stderr, "\r\n \r\n \t\t GetJobs KEYERROR "
+
+ def GetReservedNodes(self):
+ # this function returns a list of all the nodes already involved in an oar job
+
+ jobs=self.oar.parser.SendRequest("GET_jobs_details")
+ nodes=[]
+ for j in jobs :
+ nodes=j['assigned_network_address']+nodes
+ return nodes
+