def eraseWorkflow(self, workflowSpecId): """ Arguments: workflowSpecId -- the workflow id. Return: none """ logging.info("TaskQueueKiller.eraseWorkflow(%s)" % workflowSpecId) # get job ids for workflows workflowSpecId jobs = JobState.retrieveJobIDs([workflowSpecId]) jobs = map(lambda x: x[0], jobs) logging.debug("TaskQueueKiller-> jobs: %s" % str(jobs)) totalJobs = len(jobs) if totalJobs == 0: logging.info("No jobs associated to the workflow %s" % \ workflowSpecId) return # Kill all jobs (those not in the queue will be ignored) self.tqApi.killTasks(jobs) # Avoid resubmission for job in jobs: self.__avoidResubmission(job) return
def testK(self): jobIDs=[] for i in xrange(0,20): JobState.register("jobClassID_0."+str(i),"Processing",30,1) JobState.register("jobClassID_1."+str(i),"Processing",30,1,"myWorkflowID1") JobState.register("jobClassID_2."+str(i),"Processing",30,1,"myWorkflowID2") JobState.register("jobClassID_3."+str(i),"Processing",30,1,"myWorkflowID3") jobIDs.append("jobClassID_1."+str(i)) jobIDs.append("jobClassID_2."+str(i)) jobIDs.append("jobClassID_3."+str(i)) JobState.setMaxRetries(jobIDs,2) self.assertEqual(JobState.general("jobClassID_1.1")['MaxRetries'],2) JobState.setMaxRetries("jobClassID_1.1",3) self.assertEqual(JobState.general("jobClassID_1.1")['MaxRetries'],3) jobIDs=JobState.retrieveJobIDs("myWorkflowID1") self.assertEqual(len(jobIDs),20) jobIDs=JobState.retrieveJobIDs(["myWorkflowID1","myWorkflowID2","myWorkflowID3"]) self.assertEqual(len(jobIDs),60) jobs=JobState.rangeGeneral(0,10) print(str(jobs))
def killWorkflow(self, workflowSpecId): """ Arguments: workflowSpecId -- the workflow id. Return: none """ logging.info("BossLiteKiller.killWorkflow(%s)" % workflowSpecId) # get job ids for workflows workflowSpecId jobs = JobState.retrieveJobIDs([workflowSpecId]) totalJobs = len(jobs) if totalJobs == 0: logging.info("No jobs associated to the workflow %s" % \ workflowSpecId) return skippedJobs = 0 # kill all jobs for job in jobs: jobName = job[0] # kill each one independently try: self.killJob(jobName) # if job is not found (may be finished right now), killJob() # has printed the error message. Try the next one except InvalidJobException, msg: logging.debug("job %s not yet created, no need to kill it" % \ jobName) skippedJobs += 1 # not yet submitted, no need to kill it except JobNotSubmittedException, msg: logging.debug( "job %s not yet submitted or finished, no need to kill it" \ % jobName)