80 |
|
""" |
81 |
|
opt={} |
82 |
|
if optsToSave.get('server_mode',0) == 1: opt['serverName']=optsToSave['server_name'] |
83 |
+ |
if common.scheduler.name().upper() not in ['LSF', 'CAF', 'SGE', 'PBS']: |
84 |
+ |
checkNewSiteDB() |
85 |
|
opt['name']= getUserName()+ '_' + string.split(common.work_space.topDir(),'/')[-2]+'_'+common.work_space.task_uuid() |
86 |
< |
task = Task( opt ) |
86 |
> |
task = Task( opt ) |
87 |
|
try: |
88 |
|
common.bossSession.saveTask( task ) |
89 |
|
except Exception, e : |
335 |
|
newJobs = len(reportList) - len(task.jobs) |
336 |
|
if newJobs != 0: |
337 |
|
isNew=True |
338 |
< |
if not len(task.jobs):isNew=False |
338 |
> |
if len(task.jobs):isNew=False |
339 |
|
jobL=[] |
340 |
|
for i in range(1,newJobs+1): |
341 |
|
jobL.append(len(task.jobs)+i) |
352 |
|
if r.getAttribute('id') in [ id, 'all']: |
353 |
|
rForJ = r |
354 |
|
break |
355 |
+ |
|
356 |
+ |
# check if rForJ is None |
357 |
+ |
if rForJ is None: |
358 |
+ |
common.logger.debug( "Missing XML element for job %s, skip update status"%str(id) ) |
359 |
+ |
continue |
360 |
+ |
|
361 |
|
## Check the submission number and create new running jobs on the client side |
362 |
|
if rForJ.getAttribute('resubmit') != 'None' and (rForJ.getAttribute('status') not in ['Cleared','Killed','Done','Done (Failed)','Not Submitted', 'Cancelled by user']) : |
363 |
|
if int(job.runningJob['submission']) < int(rForJ.getAttribute('resubmit')) + 1: |
402 |
|
|
403 |
|
job.runningJob['state'] = str( rForJ.getAttribute('action') ) |
404 |
|
|
405 |
< |
#if str( rForJ.getAttribute('resubmit') ).isdigit(): |
406 |
< |
# job['submissionNumber'] = int(rForJ.getAttribute('resubmit')) |
399 |
< |
# job.runningJob['submission'] = int(rForJ.getAttribute('resubmit')) |
405 |
> |
# Needed for unique naming of the output. |
406 |
> |
job['arguments'] = "%d %s"%(job.runningJob['jobId'], str(rForJ.getAttribute('submission')).strip() ) |
407 |
|
|
401 |
– |
# TODO cleared='0' field, how should it be handled/mapped in BL? #Fabio |
402 |
– |
|
408 |
|
common.bossSession.updateDB( task_new ) |
409 |
|
return |
410 |
|
|
415 |
|
return False |
416 |
|
return True |
417 |
|
|
418 |
+ |
# Method to update arguments w.r.t. resubmission number in order to grant unique output |
419 |
+ |
def updateResubAttribs(self, jobsL): |
420 |
+ |
task = self.getTask(jobsL) |
421 |
+ |
for j in task.jobs: |
422 |
+ |
common.bossSession.getRunningInstance(j) |
423 |
+ |
try: |
424 |
+ |
resubNum = int(str(j['arguments']).split(' ')[1]) + 1 |
425 |
+ |
except Exception, e: |
426 |
+ |
resubNum = j.runningJob['submission'] |
427 |
+ |
newArgs = "%d %d"%(j.runningJob['jobId'], resubNum) |
428 |
+ |
j['arguments'] = newArgs |
429 |
+ |
|
430 |
+ |
common.bossSession.updateDB(task) |
431 |
+ |
return |
432 |
|
|