def __call__( self ): """ reTransfer operation execution """ # # list of targetSEs targetSEs = self.operation.targetSEList # # get waiting files waitingFiles = self.getWaitingFilesList() # # prepare waiting files toRetransfer = dict( [ ( opFile.PFN, opFile ) for opFile in waitingFiles ] ) gMonitor.addMark( "FileReTransferAtt", len( toRetransfer ) ) if len( targetSEs ) != 1: error = "only one TargetSE allowed, got %s" % len( targetSEs ) for opFile in toRetransfer.values(): opFile.Error = error opFile.Status = "Failed" self.operation.Error = error gMonitor.addMark( "FileReTransferFail", len( toRetransfer ) ) return S_ERROR( error ) # # check targetSEs for removal targetSE = targetSEs[0] bannedTargets = self.checkSEsRSS( targetSE ) if not bannedTargets['OK']: gMonitor.addMark( "FileReTransferAtt" ) gMonitor.addMark( "FileReTransferFail" ) return bannedTargets if bannedTargets['Value']: return S_OK( "%s targets are banned for writing" % ",".join( bannedTargets['Value'] ) ) se = StorageElement( targetSE ) for opFile in toRetransfer.values(): reTransfer = se.retransferOnlineFile( opFile.PFN ) if not reTransfer["OK"]: opFile.Error = reTransfer["Message"] self.log.error( "%s retransfer failed: %s" % opFile.Error ) gMonitor.addMark( "FileReTransferFail", 1 ) continue reTransfer = reTransfer["Value"] if opFile.PFN in reTransfer["Failed"]: opFile.Error = reTransfer["Failed"][opFile.PFN] self.log.error( "%s retransfer failed: %s" % opFile.Error ) gMonitor.addMark( "FileReTransferFail", 1 ) continue opFile.Status = "Done" self.log.info( "%s retransfer done" % opFile.LFN ) gMonitor.addMark( "FileReTransferOK", 1 ) return S_OK()
def __call__(self): """ reTransfer operation execution """ # # list of targetSEs targetSEs = self.operation.targetSEList # # check targetSEs for removal targetSE = targetSEs[0] bannedTargets = self.checkSEsRSS(targetSE) if not bannedTargets['OK']: gMonitor.addMark("FileReTransferAtt") gMonitor.addMark("FileReTransferFail") return bannedTargets if bannedTargets['Value']: return S_OK("%s targets are banned for writing" % ",".join(bannedTargets['Value'])) # # get waiting files waitingFiles = self.getWaitingFilesList() # # prepare waiting files toRetransfer = dict([(opFile.PFN, opFile) for opFile in waitingFiles]) gMonitor.addMark("FileReTransferAtt", len(toRetransfer)) if len(targetSEs) != 1: error = "only one TargetSE allowed, got %d" % len(targetSEs) for opFile in toRetransfer.values(): opFile.Error = error opFile.Status = "Failed" self.operation.Error = error gMonitor.addMark("FileReTransferFail", len(toRetransfer)) return S_ERROR(error) se = StorageElement(targetSE) for opFile in toRetransfer.values(): reTransfer = se.retransferOnlineFile(opFile.LFN) if not reTransfer["OK"]: opFile.Error = reTransfer["Message"] self.log.error("Retransfer failed", opFile.Error) gMonitor.addMark("FileReTransferFail", 1) continue reTransfer = reTransfer["Value"] if opFile.LFN in reTransfer["Failed"]: opFile.Error = reTransfer["Failed"][opFile.LFN] self.log.error("Retransfer failed", opFile.Error) gMonitor.addMark("FileReTransferFail", 1) continue opFile.Status = "Done" self.log.info("%s retransfer done" % opFile.LFN) gMonitor.addMark("FileReTransferOK", 1) return S_OK()
def __call__(self): """reTransfer operation execution""" # The flag 'rmsMonitoring' is set by the RequestTask and is False by default. # Here we use 'createRMSRecord' to create the ES record which is defined inside OperationHandlerBase. if self.rmsMonitoring: self.rmsMonitoringReporter = MonitoringReporter( monitoringType="RMSMonitoring") # # list of targetSEs targetSEs = self.operation.targetSEList # # check targetSEs for removal targetSE = targetSEs[0] bannedTargets = self.checkSEsRSS(targetSE) if not bannedTargets["OK"]: if self.rmsMonitoring: for status in ["Attempted", "Failed"]: self.rmsMonitoringReporter.addRecord( self.createRMSRecord(status, len(self.operation))) self.rmsMonitoringReporter.commit() return bannedTargets if bannedTargets["Value"]: return S_OK("%s targets are banned for writing" % ",".join(bannedTargets["Value"])) # # get waiting files waitingFiles = self.getWaitingFilesList() # # prepare waiting files toRetransfer = dict([(opFile.PFN, opFile) for opFile in waitingFiles]) if self.rmsMonitoring: self.rmsMonitoringReporter.addRecord( self.createRMSRecord("Attempted", len(toRetransfer))) if len(targetSEs) != 1: error = "only one TargetSE allowed, got %d" % len(targetSEs) for opFile in toRetransfer.values(): opFile.Error = error opFile.Status = "Failed" self.operation.Error = error if self.rmsMonitoring: self.rmsMonitoringReporter.addRecord( self.createRMSRecord("Failed", len(toRetransfer))) self.rmsMonitoringReporter.commit() return S_ERROR(error) se = StorageElement(targetSE) for opFile in toRetransfer.values(): reTransfer = se.retransferOnlineFile(opFile.LFN) if not reTransfer["OK"]: opFile.Error = reTransfer["Message"] self.log.error("Retransfer failed", opFile.Error) if self.rmsMonitoring: self.rmsMonitoringReporter.addRecord( self.createRMSRecord("Failed", 1)) continue reTransfer = reTransfer["Value"] if opFile.LFN in reTransfer["Failed"]: opFile.Error = reTransfer["Failed"][opFile.LFN] self.log.error("Retransfer failed", opFile.Error) if self.rmsMonitoring: self.rmsMonitoringReporter.addRecord( self.createRMSRecord("Failed", 1)) continue opFile.Status = "Done" self.log.info("%s retransfer done" % opFile.LFN) if self.rmsMonitoring: self.rmsMonitoringReporter.addRecord( self.createRMSRecord("Successful", 1)) if self.rmsMonitoring: self.rmsMonitoringReporter.commit() return S_OK()