Exemple #1
0
    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)
Exemple #2
0
    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
Exemple #4
0
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
Exemple #5
0
        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: