def saveJob(self, status, frameworkJobId, scheduledJob): now = datetime.now() newJob = None #create new job if frameworkJobId is not None: newJob, created = Job.objects.get_or_create( frameworkid=frameworkJobId ) newJob.name = scheduledJob.job_name newJob.started = now newJob.workflow = scheduledJob.workflow newJob.is_public = scheduledJob.is_public newJob.owner = scheduledJob.created_by newJob.schedule = scheduledJob newJob.status = status else: newJob = Job( name=scheduledJob.job_name, started = now, workflow = scheduledJob.workflow, is_public = scheduledJob.is_public, owner = scheduledJob.created_by, schedule = scheduledJob, status = status ) newJob.save()
def onNotification(self, eventType, body): if eventType == 'JobFinished': # sleep is added, because a failing job can be quicker than # Django save the frameworkid of that job time.sleep(1) event = JobFinished() event.ParseFromString(body) self.logger.debug('Job with ID %s is finished with status %s', str(event.job), str(event.status)) Job.objects.update() finishedJob = Job.objects.get(frameworkid=event.job) finishedJob.status = event.status finishedJob.finished = datetime.now() finishedJob.save() return True