Example #1
0
    def __call__(self, fileToStage):
        """
        _operator()_

        Use call to invoke transfers

        """
        lastException = ""

        logging.info("==>Working on file: %s", fileToStage['LFN'])
        lfn = fileToStage['LFN']

        fileToStage['StageOutReport'] = []
        #  //
        # // No override => use local-stage-out from site conf
        # //  invoke for all files and check failures/successes
        if not self.override:
            logging.info("===> Attempting Local Stage Out.")
            try:
                pfn = self.localStageOut(lfn, fileToStage['PFN'],
                                         fileToStage.get('Checksums'))
                fileToStage['PFN'] = pfn
                fileToStage['PNN'] = self.siteCfg.localStageOut['phedex-node']
                fileToStage['StageOutCommand'] = self.siteCfg.localStageOut[
                    'command']
                self.completedFiles[fileToStage['LFN']] = fileToStage

                logging.info("===> Stage Out Successful: %s", fileToStage)
                fileToStage = stageoutPolicyReport(fileToStage, None, None,
                                                   'LOCAL', 0)
                return fileToStage
            except WMException as ex:
                lastException = ex
                logging.info("===> Local Stage Out Failure for file:")
                logging.info("======>  %s\n", fileToStage['LFN'])
                fileToStage = stageoutPolicyReport(
                    fileToStage,
                    self.siteCfg.localStageOut.get('phedex-node', None),
                    self.siteCfg.localStageOut['command'], 'LOCAL', 60311)
            except Exception as ex:
                lastException = StageOutFailure("Error during local stage out",
                                                error=str(ex))
                logging.info("===> Local Stage Out Failure for file:\n")
                logging.info("======>  %s\n", fileToStage['LFN'])
                fileToStage = stageoutPolicyReport(
                    fileToStage,
                    self.siteCfg.localStageOut.get('phedex-node', None),
                    self.siteCfg.localStageOut['command'], 'LOCAL', 60311)

        # //
        # // Still here => failure, start using the fallback stage outs
        # //  If override is set, then that will be the only fallback available
        logging.info("===> Attempting %s Fallback Stage Outs",
                     len(self.fallbacks))
        for fallback in self.fallbacks:
            try:
                pfn = self.fallbackStageOut(lfn, fileToStage['PFN'], fallback,
                                            fileToStage.get('Checksums'))
                fileToStage['PFN'] = pfn
                fileToStage['PNN'] = fallback['phedex-node']
                fileToStage['StageOutCommand'] = fallback['command']
                logging.info("attempting fallback")
                self.completedFiles[fileToStage['LFN']] = fileToStage
                if lfn in self.failed:
                    del self.failed[lfn]

                logging.info("===> Stage Out Successful: %s", fileToStage)
                fileToStage = stageoutPolicyReport(fileToStage, None, None,
                                                   'FALLBACK', 0)
                return fileToStage
            except Exception as ex:
                fileToStage = stageoutPolicyReport(
                    fileToStage, fallback.get('phedex-node', None),
                    fallback['command'], 'FALLBACK', 60310)
                lastException = ex
                continue

        raise lastException
Example #2
0
    def __call__(self, fileToStage):
        """
        _operator()_

        Use call to invoke transfers

        """
        lastException = ""

        print("==>Working on file: %s" % fileToStage['LFN'])
        lfn = fileToStage['LFN']

        fileToStage['StageOutReport'] = []
        #  //
        # // No override => use local-stage-out from site conf
        #//  invoke for all files and check failures/successes
        if not self.override:
            print("===> Attempting Local Stage Out.")
            try:
                pfn = self.localStageOut(lfn, fileToStage['PFN'], fileToStage.get('Checksums'))
                fileToStage['PFN'] = pfn
                fileToStage['PNN'] = self.siteCfg.localStageOut['phedex-node']
                fileToStage['StageOutCommand'] = self.siteCfg.localStageOut['command']
                self.completedFiles[fileToStage['LFN']] = fileToStage

                print("===> Stage Out Successful: %s" % fileToStage)
                fileToStage = stageoutPolicyReport(fileToStage, None, None, None, 'LOCAL', 0)
                return fileToStage
            except WMException as ex:
                lastException = ex
                print("===> Local Stage Out Failure for file:")
                print("======>  %s\n" % fileToStage['LFN'])
                fileToStage = stageoutPolicyReport(fileToStage, self.siteCfg.localStageOut['se-name'],
                                                   self.siteCfg.localStageOut['phedex-node'],
                                                   self.siteCfg.localStageOut['command'], 'LOCAL', 60311)
            except Exception as ex:
                lastException = StageOutFailure("Error during local stage out",
                                                error = str(ex))
                print("===> Local Stage Out Failure for file:\n")
                print("======>  %s\n" % fileToStage['LFN'])
                fileToStage = stageoutPolicyReport(fileToStage, self.siteCfg.localStageOut['se-name'],
                                                   self.siteCfg.localStageOut['phedex-node'],
                                                   self.siteCfg.localStageOut['command'], 'LOCAL', 60311)

        #  //
        # // Still here => failure, start using the fallback stage outs
        #//  If override is set, then that will be the only fallback available
        print("===> Attempting %s Fallback Stage Outs" % len(self.fallbacks))
        for fallback in self.fallbacks:
            try:
                pfn = self.fallbackStageOut(lfn, fileToStage['PFN'],
                                            fallback, fileToStage.get('Checksums'))
                fileToStage['PFN'] = pfn
                fileToStage['PNN'] = fallback['phedex-node']
                fileToStage['StageOutCommand'] = fallback['command']
                print("attempting fallback")
                self.completedFiles[fileToStage['LFN']] = fileToStage
                if lfn in self.failed:
                    del self.failed[lfn]

                print("===> Stage Out Successful: %s" % fileToStage)
                fileToStage = stageoutPolicyReport(fileToStage, None, None, None, 'FALLBACK', 0)
                return fileToStage
            except Exception as ex:
                fileToStage = stageoutPolicyReport(fileToStage, fallback['se-name'], fallback['phedex-node'],
                                                   fallback['command'], 'FALLBACK', 60310)
                lastException = ex
                continue

        raise lastException