def __init__(self, taskman, taskDict, oldStatus, previousSteps, postprocLib, jobName=None): self.stepName = self.__class__.__name__ self.executedSteps = previousSteps self.executedSteps.append(self.stepName) self.taskman = taskman self.taskDict = taskDict self.dsName = taskDict['DSNAME'] self.taskName = taskDict['TASKNAME'] self.taskDir = '/'.join([self.dsName, self.taskName]) self.oldStatus = oldStatus self.postprocLib = postprocLib self.jobName = jobName self.baseName = '%s-%s' % (self.dsName, self.taskName) self.baseNameStep = '%s-%s.%s' % (self.dsName, self.taskName, self.stepName) self.logfile = open('%s/%s.log' % (self.taskDir, self.baseNameStep), 'w') self.log('Starting postprocessing: %s' % self.__class__.__name__) self.log('* Data set name = %s' % self.dsName, noTime=True) self.log('* Task name = %s' % self.taskName, noTime=True) self.log('* Old status = %s' % getKey(TaskManager.StatusCodes, self.oldStatus), noTime=True) self.log('* Job name = %s' % self.jobName, noTime=True) self.log('* User name = %s' % getUserName(), noTime=True) self.log('* Host name = %s\n' % os.uname()[1], noTime=True) pass
def content(self, **args): # Make sure we don't expose any password stored in oracle connection strings taskDb = 'oracle:******' if 'oracle:' in self.globalConfig[ 'taskDb'] else self.globalConfig['taskDb'] return debuginfo % ( sys.version, getUserName(), commands.getoutput('whoami'), os.environ.get('HOME', 'not defined'), self.globalConfig.baseUrl, self.globalConfig.pageList, self.globalConfig.pageAttributes, self.globalConfig['jobDir'], taskDb, self.globalConfig['wwwDir'], self.globalConfig['ntDir'])
def addTask(self, dsName, taskName, template, release, njobs, taskpostprocsteps='', status=StatusCodes['SUBMITTED'], onDisk=OnDiskCodes['ALLONDISK'], createdTime=None, createdUser=None, createdHost=None, comment=''): """Add an entry for a new task if the task doesn't exist already. If the task exists, its UPDATED, NJOBS, STATUS and ONDISK fields will be updated.""" tstamp = time.time() nDefined = self.getNTasks([ 'where DSNAME =', DbParam(dsName), 'and TASKNAME=', DbParam(taskName) ]) updateStatus = self.getNTasks([ 'where DSNAME = ', DbParam(dsName), 'and TASKNAME=', DbParam(taskName), 'and STATUS < %i' % TaskManager.StatusCodes['POSTPROCRUNNING'] ]) if nDefined: # Task entry exists already; only update UPDATED, NJOBS, STATUS, ONDISK and possibly ATLREL task = self.getTaskDict(dsName, taskName) if task['TEMPLATE'] != template: print 'ERROR: Must not update task with different template: DSNAME = %s, TASKNAME = %s, templates = %s vs %s' % ( dsName, taskName, task['TEMPLATE'], template) else: updateStr = [ 'update TASKS set UPDATED =', DbParam(tstamp), ', NJOBS = ', DbParam(task['NJOBS'] + njobs), ', ONDISK = ', DbParam(onDisk) ] if not release in task['ATLREL']: print 'WARNING: Updating task using different release: DSNAME = %s, TASKNAME = %s, release = = %s vs %s' % ( dsName, taskName, task['ATLREL'], release) release = '; '.join([task['ATLREL'], release]) updateStr += [', ATLREL = ', DbParam(release)] if updateStatus: updateStr += [', STATUS = ', DbParam(status)] updateStr += [ 'where DSNAME = ', DbParam(dsName), 'and TASKNAME = ', DbParam(taskName) ] self.execute(updateStr) else: # New task entry if not createdTime: createdTime = tstamp if not createdUser: createdUser = getUserName() if not createdHost: createdHost = os.uname()[1] runnr = getRunFromName(dsName, None, True) self.execute([ 'insert into TASKS (DSNAME,RUNNR,TASKNAME,TEMPLATE,TASKPOSTPROCSTEPS,ATLREL,CREATED,CREATED_USER,CREATED_HOST,UPDATED,STATUS,ONDISK,NJOBS,TASKCOMMENT) values (', DbParam(dsName), ',', DbParam(runnr), ',', DbParam(taskName), ',', DbParam(template), ',', DbParam(taskpostprocsteps), ',', DbParam(release), ',', DbParam(createdTime), ',', DbParam(createdUser), ',', DbParam(createdHost), ',', DbParam(tstamp), ',', DbParam(status), ',', DbParam(onDisk), ',', DbParam(njobs), ',', DbParam(comment), ')' ], True)