def processCleanUpJobReport(self,statusCode): """ _processCleanUpJobReport_ Arguments: None Return: None """ # // # // Generate a report # // report = FwkJobReport() report.name = "cleanUp" report.status = "Failed" if statusCode == 0 : report.status = "Success" for lfnRemovedFile in self.success: report.addRemovedFile(lfnRemovedFile, self.seName) for lfnUnremovedFile in self.failed: report.addUnremovedFile(lfnUnremovedFile, self.seName) report.exitCode = statusCode report.jobSpecId = self.state.jobSpecNode.jobName report.jobType = self.state.jobSpecNode.jobType report.workflowSpecId = self.state.jobSpecNode.workflow report.write("./FrameworkJobReport.xml") # // # // Ensure this report gets added to the job-wide report #// toplevelReport = os.path.join(os.environ['PRODAGENT_JOB_DIR'],"FrameworkJobReport.xml") newReport = os.path.join(os.getcwd(), "FrameworkJobReport.xml") mergeReports(toplevelReport, newReport)
def writeFwkJobReport( self, jobSpecId, exitCode, reportfilename ): """ __writeFwkJobReport__ write a fake reportfilename based on the status reported """ # create job report logging.debug("Creating report %s" % reportfilename) fwjr = FwkJobReport() fwjr.jobSpecId = jobSpecId if exitCode == 0 : fwjr.status = "Success" fwjr.exitCode = 0 else : fwjr.exitCode = exitCode fwjr.status = "Failed" # store job report fwjr.write(reportfilename)
def __fwkJobReportCommon(self, jobSpecLoaded, workerNodeInfo): """ __fwkJobReportCommon_ Create a new job report and fill it in with generic information that is not dependent on the outcome of the job. The jobSpecLoaded parameter is a reference to an instance of the JobSpec class that has been initialized with the job spec that we are generating a report for. """ #workerNodeInfo = RandomAllocationPlugin().allocateJob() try: jobSpecPayload = jobSpecLoaded.payload newReport = FwkJobReport() newReport.jobSpecId = jobSpecPayload.jobName newReport.jobType = jobSpecPayload.type newReport.workflowSpecId = jobSpecPayload.workflow newReport.name = jobSpecPayload.name #get information from the super class newReport.siteDetails['SiteName'] = workerNodeInfo['SiteName'] #HostName is the same as worker_node name newReport.siteDetails['HostName'] = workerNodeInfo['HostName'] newReport.siteDetails['se-name'] = workerNodeInfo['se-name'] newReport.siteDetails['ce-name'] = workerNodeInfo['ce-name'] newReport.addLogFile("/path/to/log/archive", "some.random.se.cern.ch") return jobSpecPayload, newReport except Exception, ex: #msg = "Unable to Publish Report for %s\n" % jobSpecPayload.jobName #msg += "Since It is not known to the JobState System:\n" msg = str(ex) logging.error(msg) raise RuntimeError, msg
def stageOut(): """ _stageOut_ Main function for this module. Loads data from the task and manages the stage out process for a single attempt """ state = TaskState(os.getcwd()) state.loadRunResDB() workflow = WorkflowSpec() workflow.load(os.environ['PRODAGENT_WORKFLOW_SPEC']) jobSpecFile = os.environ.get('PRODAGENT_JOBSPEC') jobSpecId = None if jobSpecFile is not None: jobSpec = JobSpec() jobSpec.load(jobSpecFile) jobSpecId = jobSpec.parameters.get('JobName') print workflow print state.taskName() print jobSpecId stageOutFor, override, controls = StageOutUtils.getStageOutConfig( workflow, state.taskName()) toplevelReport = os.path.join(os.environ['PRODAGENT_JOB_DIR'], "FrameworkJobReport.xml") exitCode = 0 # // # // find inputs by locating the task for which we are staging out #// and loading its TaskState for inputTask in stageOutFor: print "Attempting to stage out files for node %s" % inputTask try: inputState = getTaskState(inputTask) msg = "Loaded Input Task: %s " % inputTask except Exception, ex: msg = "Error load for TaskState for task %s" % inputTask msg += "%s\n" % str(ex) inputState = None print msg if inputState == None: # exit with init error # generate failure report in this dir, since cant find # input state dir inputReport = FwkJobReport() inputReport.name = inputTask inputReport.jobSpecId = jobSpecId exitCode = 60311 errRep = inputReport.addError( 60311, "TaskStateError") errRep['Description'] = msg inputReport.status = "Failed" inputReport.exitCode = 60311 updateReport(toplevelReport, inputReport) print "TaskState is None, exiting..." return exitCode try: inputReport = inputState.getJobReport() msg = "Loaded JobReport for Task : %s\n" % inputTask msg += "File: %s\n" % inputState.jobReport except Exception, ex: msg = "Error loading input report : %s" % str(ex) inputReport = None
try: inputReport = inputState.getJobReport() msg = "Loaded JobReport for Task : %s\n" % inputTask msg += "File: %s\n" % inputState.jobReport except Exception, ex: msg = "Error loading input report : %s" % str(ex) inputReport = None print msg if inputReport == None: msg += "Unable to read Job Report for input task: %s\n" % inputTask msg += "Looked for file: %s\n" % inputState.jobReport print msg inputReport = FwkJobReport() inputReport.name = inputTask inputReport.jobSpecId = jobSpecId exitCode = 60311 errRep = inputReport.addError( 60311, "InputReportError") errRep['Description'] = msg inputReport.status = "Failed" inputReport.exitCode = 60311 updateReport(toplevelReport, inputReport) # exit with init error return 60311 try: manager = StageOutReport(inputReport, override, controls) except StageOutInitError, ex: