Exemple #1
0
 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
Exemple #2
0
 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'])
Exemple #3
0
    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)