56 |
|
Return task with all/list of jobs |
57 |
|
""" |
58 |
|
try: |
59 |
< |
task = common.bossSession.load(1,jobsList)[0] |
59 |
> |
task = common.bossSession.load(1,jobsList) |
60 |
|
except Exception, e : |
61 |
|
common.logger.debug(3, "Error while getting task : " +str(traceback.format_exc())) |
62 |
|
raise CrabException('Error while getting task '+str(e)) |
67 |
|
Return a task with a single job |
68 |
|
""" |
69 |
|
try: |
70 |
< |
task = common.bossSession.load(1,str(n))[0] |
70 |
> |
task = common.bossSession.load(1,str(n)) |
71 |
|
except Exception, e : |
72 |
|
common.logger.debug(3, "Error while getting job : " +str(traceback.format_exc())) |
73 |
|
raise CrabException('Error while getting job '+str(e)) |
198 |
|
tmp_task = self.getTask() |
199 |
|
return common.bossSession.serialize(tmp_task) |
200 |
|
|
201 |
< |
def queryID(self,server_mode=0): |
201 |
> |
def queryID(self,server_mode=0, jid=False): |
202 |
|
''' |
203 |
|
Return the taskId if serevr_mode =1 |
204 |
|
Return the joblistId if serevr_mode =0 |
207 |
|
lines=[] |
208 |
|
task = self.getTask() |
209 |
|
if server_mode == 1: |
210 |
< |
header= "Task Id = %-40s " %(task['name']) |
211 |
< |
else: |
210 |
> |
headerTask= "Task Id = %-40s " %(task['name']) |
211 |
> |
displayReport(self,headerTask,lines) |
212 |
> |
if (jid ) or (server_mode == 0): |
213 |
|
for job in task.jobs: |
214 |
|
toPrint='' |
215 |
|
common.bossSession.getRunningInstance(job) |
216 |
|
toPrint = "%-5s %-50s " % (job['jobId'],job.runningJob['schedulerId']) |
217 |
|
lines.append(toPrint) |
218 |
|
header+= "%-5s %-50s " % ('Job:','ID' ) |
219 |
< |
displayReport(self,header,lines) |
219 |
> |
displayReport(self,header,lines) |
220 |
|
return |
221 |
|
|
222 |
|
def queryTask(self,attr): |
333 |
|
if r.getAttribute('id') in [ id, 'all']: |
334 |
|
rForJ = r |
335 |
|
break |
336 |
< |
## Check the submission number and create new running jobs on the client side |
337 |
< |
if int(job.runningJob['submission']) < int(rForJ.getAttribute('resubmit')) + 1: |
338 |
< |
nj_list.append(id) |
339 |
< |
self.newRunJobs(nj_list) |
336 |
> |
## Check the submission number and create new running jobs on the client side |
337 |
> |
if rForJ.getAttribute('resubmit') != 'None' and (rForJ.getAttribute('status') not in ['Cleared','Killed','Done','Done (Failed)']) : |
338 |
> |
if int(job.runningJob['submission']) < int(rForJ.getAttribute('resubmit')) + 1: |
339 |
> |
nj_list.append(id) |
340 |
> |
if len(nj_list) > 0: self.newRunJobs(nj_list) |
341 |
|
|
342 |
|
task_new = self.getTask() |
343 |
|
|
348 |
|
for r in reportList: |
349 |
|
if r.getAttribute('id') in [ id, 'all']: |
350 |
|
rForJ = r |
351 |
< |
break |
351 |
> |
break |
352 |
> |
|
353 |
|
# Data alignment |
354 |
< |
jobStatus = str(job.runningJob['statusScheduler']) |
355 |
< |
if str(job.runningJob['status']) != 'EE': |
356 |
< |
if rForJ.getAttribute('statusScheduler') not in ['Created', 'Submitting', 'Unknown'] and \ |
357 |
< |
job.runningJob['statusScheduler'] != 'Cleared': |
358 |
< |
job.runningJob['statusScheduler'] = str( rForJ.getAttribute('status') ) |
359 |
< |
jobStatus = str(job.runningJob['statusScheduler']) |
354 |
> |
if rForJ.getAttribute('status') not in ['Created', 'Unknown']: |
355 |
> |
# update the status |
356 |
> |
common.logger.debug(3,"Updating DB status for job: " + str(id) + " @: " \ |
357 |
> |
+ str(rForJ.getAttribute('status')) ) |
358 |
> |
job.runningJob['statusScheduler'] = str( rForJ.getAttribute('status') ) |
359 |
> |
if (rForJ.getAttribute('status') == 'Done' or rForJ.getAttribute('status') == 'Done (Failed)')\ |
360 |
> |
and rForJ.getAttribute('sched_status') == 'E' : |
361 |
> |
job.runningJob['status'] = 'SD' |
362 |
> |
else: |
363 |
|
job.runningJob['status'] = str( rForJ.getAttribute('sched_status') ) |
364 |
|
|
365 |
+ |
job.runningJob['schedulerId'] = str( rForJ.getAttribute('sched_id') ) |
366 |
+ |
|
367 |
|
job.runningJob['destination'] = str( rForJ.getAttribute('site') ) |
368 |
|
dest = str(job.runningJob['destination']).split(':')[0] |
369 |
< |
|
369 |
> |
|
370 |
|
job.runningJob['applicationReturnCode'] = str( rForJ.getAttribute('exe_exit') ) |
371 |
|
exe_exit_code = str(job.runningJob['applicationReturnCode']) |
372 |
< |
|
372 |
> |
|
373 |
|
job.runningJob['wrapperReturnCode'] = str( rForJ.getAttribute('job_exit') ) |
374 |
|
job_exit_code = str(job.runningJob['wrapperReturnCode']) |
375 |
+ |
|
376 |
+ |
## unsing 'standardInput' field for 'ended' tag ['Y','N'] |
377 |
+ |
job['standardInput'] = str( rForJ.getAttribute('ended') ) |
378 |
|
|
379 |
< |
#if str( rForJ.getAttribute('resubmit') ).isdigit(): |
380 |
< |
# job['submissionNumber'] = int(rForJ.getAttribute('resubmit')) |
381 |
< |
# job.runningJob['submission'] = int(rForJ.getAttribute('resubmit')) |
379 |
> |
#if str( rForJ.getAttribute('resubmit') ).isdigit(): |
380 |
> |
# job['submissionNumber'] = int(rForJ.getAttribute('resubmit')) |
381 |
> |
# job.runningJob['submission'] = int(rForJ.getAttribute('resubmit')) |
382 |
|
|
383 |
< |
# TODO cleared='0' field, how should it be handled/mapped in BL? #Fabio |
383 |
> |
# TODO cleared='0' field, how should it be handled/mapped in BL? #Fabio |
384 |
|
|
385 |
|
common.bossSession.updateDB( task_new ) |
386 |
|
return |