def kill_processing(self, processing): try: if processing: from pandatools import Client proc = processing['processing_metadata']['processing'] task_id = proc.workload_id # task_id = processing['processing_metadata']['task_id'] # Client.killTask(task_id) Client.finishTask(task_id, soft=False) except Exception as ex: msg = "Failed to check the processing (%s) status: %s" % (str( processing['processing_id']), str(ex)) raise exceptions.IDDSException(msg)
def finish(self,JobID,soft=False): # get logger tmpLog = PLogger.getPandaLogger() # check proxy self.gridPassPhrase,self.vomsFQAN = PsubUtils.checkGridProxy( self.gridPassPhrase, False, self.verbose, useCache=True) # force update just in case self.status(JobID,True) # get jobset jobList = self.getJobIDsWithSetID(JobID) if jobList == None: # works only for jobsetID if useJobsetID: return # works with jobID jobList = [JobID] else: tmpMsg = "ID=%s is composed of JobID=" % JobID for tmpJobID in jobList: tmpMsg += '%s,' % tmpJobID tmpMsg = tmpMsg[:-1] tmpLog.info(tmpMsg) for tmpJobID in jobList: # get job info from local repository job = self.getJobInfo(tmpJobID) if job == None: tmpLog.warning("JobID=%s not found in local repository. Synchronization may be needed" % tmpJobID) continue # skip frozen job if job.dbStatus == 'frozen': tmpLog.info('All subJobs in JobID=%s already finished/failed' % tmpJobID) continue # finish JEDI task tmpLog.info('Sending finishTask command ...') status,output = Client.finishTask(job.jediTaskID,soft,self.verbose) # communication error if status != 0: tmpLog.error(output) tmpLog.error("Failed to finish JobID=%s" % tmpJobID) return False tmpStat,tmpDiag = output if not tmpStat: tmpLog.error(tmpDiag) tmpLog.error("Failed to finish JobID=%s" % tmpJobID) return False tmpLog.info(tmpDiag) # done tmpLog.info('Done. TaskID=%s will be finished soon' % job.jediTaskID) return True