def getRequest(): """ helper fcn to build requestContainer """ requestContainer = RequestContainer(init=False) ## get request requestContainer.setRequestName("00009423_00000118") requestContainer.setJobID(0) requestContainer.setOwnerDN("") requestContainer.setOwnerGroup("") requestContainer.setDIRACSetup("") requestContainer.setSourceComponent(None) requestContainer.setCreationTime("0000-00-00 00:00:00") requestContainer.setLastUpdate("2011-02-19 04:57:02") requestContainer.setStatus("Waiting") ## get subrequest requestContainer.initiateSubRequest("transfer") subRequestDict = { "Status": "Waiting", "SubRequestID": 2259916, "Operation": "replicateAndRegister", "Arguments": None, "ExecutionOrder": 0, "SourceSE": None, "TargetSE": "GRIDKA_MC-DST,GRIDKA_MC_M-DST", "Catalogue": None, "CreationTime": "2011-02-19 04:57:02", "SubmissionTime": "2011-02-19 04:57:02", "LastUpdate": "2011-08-18 20:14:22" } requestContainer.setSubRequestAttributes(0, "transfer", subRequestDict) ## get subrequest files files = [{ "FileID": 1610538, "LFN": "/lhcb/MC/MC10/ALLSTREAMS.DST/00009422/0000/00009422_00000171_1.allstreams.dst", "Size": None, "PFN": None, "GUID": None, "Md5": None, "Addler": None, "Attempt": 1, "Status": "Scheduled" }] requestContainer.setSubRequestFiles(0, "transfer", files) return { "OK": True, "Value": { "RequestName": "00009423_00000118", "RequestString": requestContainer.toXML()["Value"], "JobID": 0, "RequestContainer": requestContainer } }
def getRegisterRequest(): """ helper fcn to build request """ requestContainer = RequestContainer(init=False) requestContainer.setJobID(11889410) #requestContainer.setOwnerDN( "/DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=cibak/CN=605919/CN=Krzysztof Ciba" ) requestContainer.setOwnerGroup("lhcb_user") requestContainer.setDIRACSetup("LHCb-Production") requestContainer.setSourceComponent(None) requestContainer.setCreationTime("0000-00-00 00:00:00") requestContainer.setLastUpdate("2011-02-19 04:57:02") requestContainer.setStatus("Waiting") requestContainer.initiateSubRequest("register") subRequestDict = { "Status": "Waiting", "SubRequestID": 2259916, "Operation": "registerFile", "Arguments": None, "ExecutionOrder": 0, "SourceSE": None, "TargetSE": "RAL-USER", "Catalogue": "LcgFileCatalogCombined", "CreationTime": "2011-02-19 04:57:02", "SubmissionTime": "2011-02-19 04:57:02", "LastUpdate": "2011-08-18 20:14:22" } requestContainer.setSubRequestAttributes(0, "register", subRequestDict) files = [{ "FileID": 1610538, "LFN": "/lhcb/user/c/cblanks/11889/11889410/LDSB.rsQrRL", "Size": 153961749, "PFN": "srm://srm-lhcb.gridpp.rl.ac.uk/castor/ads.rl.ac.uk/prod/lhcb/user/c/cblanks/11889/11889410/LDSB.rsQrRL", "GUID": "5911A19C-7CDF-7F2A-36ED-089CD410F98A", "Md5": None, "Addler": "92b85e26", "Attempt": 1, "Status": "Waiting" }] requestContainer.setSubRequestFiles(0, "register", files) return { "requestName": "11889410.xml", "requestString": requestContainer.toXML()["Value"], "jobID": 11889410, "executionOrder": 0, "sourceServer": "foobarserver", "configPath": "/Systems/DataManagement/Development/Agents/RegistrationAgent" }
def getRequest(operation): """ fake requestDict :param str operation: sub-request operation attribute """ requestContainer = RequestContainer(init=False) requestContainer.setJobID(1) #requestContainer.setOwnerDN( "/DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=cibak/CN=605919/CN=Krzysztof Ciba" ) requestContainer.setOwnerGroup("lhcb_user") requestContainer.setDIRACSetup("LHCb-Production") requestContainer.setSourceComponent(None) requestContainer.setCreationTime("0000-00-00 00:00:00") requestContainer.setLastUpdate("2011-12-01 04:57:02") requestContainer.setStatus("Waiting") requestContainer.setAttribute("RequestID", 123456789) requestContainer.initiateSubRequest("transfer") subRequestDict = { "Status": "Waiting", "SubRequestID": 2222222, "Operation": operation, "Arguments": None, "ExecutionOrder": 0, "SourceSE": None, "TargetSE": "CERN-USER", "Catalogue": "LcgFileCatalogCombined", "CreationTime": "2011-12-01 04:57:02", "SubmissionTime": "2011-12-01 04:57:02", "LastUpdate": "2011-12-01 20:14:22" } requestContainer.setSubRequestAttributes(0, "transfer", subRequestDict) files = [{ "FileID": 3333333, "LFN": "/lhcb/user/c/cibak/11889/11889410/test.zzz", "Size": 44444444, "PFN": "srm://srm-lhcb.gridpp.rl.ac.uk/castor/ads.rl.ac.uk/prod/lhcb/user/c/cibak/11889/11889410/test.zzz", "GUID": "5P13RD4L-4J5L-3D21-U5P1-3RD4L4J5P13R", "Md5": None, "Addler": "92b85e26", "Attempt": 1, "Status": "Waiting" }] requestContainer.setSubRequestFiles(0, "transfer", files) return { "OK": True, "Value": { "requestName": "%s.xml" % operation, "requestString": requestContainer.toXML_new()["Value"], "requestObj": requestContainer, "jobID": 1, "executionOrder": 0, "sourceServer": "foobarserver" } }
def getRegisterRequest(): """ helper fcn to build request """ requestContainer = RequestContainer(init=False) requestContainer.setJobID(11889410) # requestContainer.setOwnerDN( "/DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=cibak/CN=605919/CN=Krzysztof Ciba" ) requestContainer.setOwnerGroup("lhcb_user") requestContainer.setDIRACSetup("LHCb-Production") requestContainer.setSourceComponent(None) requestContainer.setCreationTime("0000-00-00 00:00:00") requestContainer.setLastUpdate("2011-02-19 04:57:02") requestContainer.setStatus("Waiting") requestContainer.initiateSubRequest("register") subRequestDict = { "Status": "Waiting", "SubRequestID": 2259916, "Operation": "registerFile", "Arguments": None, "ExecutionOrder": 0, "SourceSE": None, "TargetSE": "RAL-USER", "Catalogue": "LcgFileCatalogCombined", "CreationTime": "2011-02-19 04:57:02", "SubmissionTime": "2011-02-19 04:57:02", "LastUpdate": "2011-08-18 20:14:22", } requestContainer.setSubRequestAttributes(0, "register", subRequestDict) files = [ { "FileID": 1610538, "LFN": "/lhcb/user/c/cblanks/11889/11889410/LDSB.rsQrRL", "Size": 153961749, "PFN": "srm://srm-lhcb.gridpp.rl.ac.uk/castor/ads.rl.ac.uk/prod/lhcb/user/c/cblanks/11889/11889410/LDSB.rsQrRL", "GUID": "5911A19C-7CDF-7F2A-36ED-089CD410F98A", "Md5": None, "Addler": "92b85e26", "Attempt": 1, "Status": "Waiting", } ] requestContainer.setSubRequestFiles(0, "register", files) return { "requestName": "11889410.xml", "requestString": requestContainer.toXML()["Value"], "jobID": 11889410, "executionOrder": 0, "sourceServer": "foobarserver", "configPath": "/Systems/DataManagement/Development/Agents/RegistrationAgent", }
def getRequest(): """ helper fcn to build requestContainer """ requestContainer = RequestContainer( init = False ) ## get request requestContainer.setRequestName( "00009423_00000118" ) requestContainer.setJobID( 0 ) requestContainer.setOwnerDN( "" ) requestContainer.setOwnerGroup( "" ) requestContainer.setDIRACSetup( "" ) requestContainer.setSourceComponent( None ) requestContainer.setCreationTime( "0000-00-00 00:00:00" ) requestContainer.setLastUpdate( "2011-02-19 04:57:02" ) requestContainer.setStatus( "Waiting" ) ## get subrequest requestContainer.initiateSubRequest( "transfer" ) subRequestDict = { "Status" : "Waiting", "SubRequestID" : 2259916, "Operation" : "replicateAndRegister", "Arguments" : None, "ExecutionOrder" : 0, "SourceSE" : None, "TargetSE" : "GRIDKA_MC-DST,GRIDKA_MC_M-DST", "Catalogue" : None, "CreationTime" : "2011-02-19 04:57:02", "SubmissionTime" : "2011-02-19 04:57:02", "LastUpdate" : "2011-08-18 20:14:22" } requestContainer.setSubRequestAttributes( 0, "transfer", subRequestDict ) ## get subrequest files files = [ { "FileID" : 1610538, "LFN" : "/lhcb/MC/MC10/ALLSTREAMS.DST/00009422/0000/00009422_00000171_1.allstreams.dst", "Size" : None, "PFN" : None, "GUID" : None, "Md5" : None, "Addler" : None, "Attempt" : 1, "Status" : "Scheduled" } ] requestContainer.setSubRequestFiles( 0, "transfer", files ) return { "OK" : True, "Value" : { "RequestName" : "00009423_00000118", "RequestString" : requestContainer.toXML()["Value"], "JobID" : 0, "RequestContainer" : requestContainer } }
def getKwargsRemoveFile(): """ helper fcn to build request """ requestContainer = RequestContainer(init=False) requestContainer.setJobID(11111111) #requestContainer.setOwnerDN( "/DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=cibak/CN=605919/CN=Krzysztof Ciba" ) requestContainer.setOwnerGroup("lhcb_user") requestContainer.setDIRACSetup("LHCb-Production") requestContainer.setSourceComponent(None) requestContainer.setCreationTime("0000-00-00 00:00:00") requestContainer.setLastUpdate("2011-12-01 04:57:02") requestContainer.setStatus("Waiting") requestContainer.initiateSubRequest("removal") subRequestDict = { "Status": "Waiting", "SubRequestID": 2222222, "Operation": "removeFile", "Arguments": None, "ExecutionOrder": 0, "SourceSE": None, "TargetSE": "RAL-USER", "Catalogue": "LcgFileCatalogCombined", "CreationTime": "2011-12-01 04:57:02", "SubmissionTime": "2011-12-01 04:57:02", "LastUpdate": "2011-12-01 20:14:22" } requestContainer.setSubRequestAttributes(0, "removal", subRequestDict) files = [{ "FileID": 3333333, "LFN": "/lhcb/user/c/cibak/11889/11889410/test.zzz", "Size": 44444444, "PFN": "srm://srm-lhcb.gridpp.rl.ac.uk/castor/ads.rl.ac.uk/prod/lhcb/user/c/cibak/11889/11889410/test.zzz", "GUID": "5P13RD4L-4J5L-3D21-U5P1-3RD4L4J5P13R", "Md5": None, "Addler": "92b85e26", "Attempt": 1, "Status": "Waiting" }] requestContainer.setSubRequestFiles(0, "removal", files) return { "requestName": "00000001.xml", "requestString": requestContainer.toXML()["Value"], "jobID": 1, "executionOrder": 0, "sourceServer": "foobarserver", "configPath": "/Systems/DataManagement/Development/Agents/RemovalAgent" }
def getRequest(operation): """ fake requestDict :param str operation: sub-request operation attribute """ requestContainer = RequestContainer(init=False) requestContainer.setJobID(1) requestContainer.setOwnerDN("/DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=cibak/CN=605919/CN=Krzysztof Ciba") requestContainer.setOwnerGroup("lhcb_user") requestContainer.setDIRACSetup("LHCb-Production") requestContainer.setSourceComponent(None) requestContainer.setCreationTime("0000-00-00 00:00:00") requestContainer.setLastUpdate("2011-12-01 04:57:02") requestContainer.setStatus("Waiting") requestContainer.setAttribute("RequestID", 123456789) requestContainer.initiateSubRequest("transfer") subRequestDict = { "Status": "Waiting", "SubRequestID": 2222222, "Operation": operation, "Arguments": None, "ExecutionOrder": 0, "SourceSE": None, "TargetSE": "CERN-USER,PIC-USER", "Catalogue": "LcgFileCatalogCombined", "CreationTime": "2011-12-01 04:57:02", "SubmissionTime": "2011-12-01 04:57:02", "LastUpdate": "2011-12-01 20:14:22", } requestContainer.setSubRequestAttributes(0, "transfer", subRequestDict) files = [ { "FileID": 3333333, "LFN": "/lhcb/user/c/cibak/11889/11889410/test.zzz", "Size": 44444444, "PFN": "srm://srm-lhcb.gridpp.rl.ac.uk/castor/ads.rl.ac.uk/prod/lhcb/user/c/cibak/11889/11889410/test.zzz", "GUID": "5P13RD4L-4J5L-3D21-U5P1-3RD4L4J5P13R", "Md5": None, "Addler": "92b85e26", "Attempt": 1, "Status": "Waiting", } ] requestContainer.setSubRequestFiles(0, "transfer", files) return requestContainer
def getKwargsRemoveFile(): """ helper fcn to build request """ requestContainer = RequestContainer( init = False ) requestContainer.setJobID( 11111111 ) #requestContainer.setOwnerDN( "/DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=cibak/CN=605919/CN=Krzysztof Ciba" ) requestContainer.setOwnerGroup( "lhcb_user" ) requestContainer.setDIRACSetup( "LHCb-Production" ) requestContainer.setSourceComponent( None ) requestContainer.setCreationTime( "0000-00-00 00:00:00" ) requestContainer.setLastUpdate( "2011-12-01 04:57:02" ) requestContainer.setStatus( "Waiting" ) requestContainer.initiateSubRequest( "removal" ) subRequestDict = { "Status" : "Waiting", "SubRequestID" : 2222222, "Operation" : "removeFile", "Arguments" : None, "ExecutionOrder" : 0, "SourceSE" : None, "TargetSE" : "RAL-USER", "Catalogue" : "LcgFileCatalogCombined", "CreationTime" : "2011-12-01 04:57:02", "SubmissionTime" : "2011-12-01 04:57:02", "LastUpdate" : "2011-12-01 20:14:22" } requestContainer.setSubRequestAttributes( 0, "removal", subRequestDict ) files = [ { "FileID" : 3333333, "LFN" : "/lhcb/user/c/cibak/11889/11889410/test.zzz", "Size" : 44444444, "PFN" : "srm://srm-lhcb.gridpp.rl.ac.uk/castor/ads.rl.ac.uk/prod/lhcb/user/c/cibak/11889/11889410/test.zzz", "GUID" : "5P13RD4L-4J5L-3D21-U5P1-3RD4L4J5P13R", "Md5" : None, "Addler" : "92b85e26", "Attempt" : 1, "Status" : "Waiting" } ] requestContainer.setSubRequestFiles( 0, "removal", files ) return { "requestName" : "00000001.xml", "requestString" : requestContainer.toXML()["Value"], "jobID" : 1, "executionOrder" : 0, "sourceServer" : "foobarserver", "configPath" : "/Systems/DataManagement/Development/Agents/RemovalAgent" }
def getRequestForSubRequest(self, itself, subRequestID): """ Select Request given SubRequestID. :param self: plugin reference :param itself: patient reference for injection :param int subRequestID: SubRequests.SubRequestID :warn: function has to be injected to RequestDBMySQL instance """ ## get RequestID requestID = "SELECT RequestID FROM SubRequests WHERE SubRequestID = %s;" % str( subRequestID) requestID = self._query(requestID) if not requestID["OK"]: return requestID requestID = requestID["Value"][0] ## create RequestContainer requestContainer = RequestContainer(init=False) requestContainer.setRequestID(requestID) ## put some basic infos in requestInfo = "SELECT RequestName, JobID, OwnerDN, OwnerGroup, DIRACSetup, SourceComponent, CreationTime, SubmissionTime, LastUpdate, Status " requestInfo += "FROM Requests WHERE RequestID = %d;" % requestID requestInfo = self._query(requestInfo) if not requestInfo["OK"]: return requestInfo requestName, jobID, ownerDN, ownerGroup, diracSetup, sourceComponent, creationTime, submissionTime, lastUpdate, status = requestInfo[ 'Value'][0] requestContainer.setRequestName(requestName) requestContainer.setJobID(jobID) requestContainer.setOwnerDN(ownerDN) requestContainer.setOwnerGroup(ownerGroup) requestContainer.setDIRACSetup(diracSetup) requestContainer.setSourceComponent(sourceComponent) requestContainer.setCreationTime(str(creationTime)) requestContainer.setLastUpdate(str(lastUpdate)) requestContainer.setStatus(status) ## get sub-requests subRequests = "SELECT SubRequestID, Status, RequestType, Operation, Arguments, ExecutionOrder, SourceSE, " subRequests += "TargetSE, Catalogue, CreationTime, SubmissionTime, LastUpdate FROM SubRequests WHERE RequestID=%s;" % requestID subRequests = self._query(subRequests) if not subRequests["OK"]: return subRequests ## loop over sub requests for subRequestID, status, requestType, operation, arguments, executionOrder, sourceSE, targetSE, catalogue, creationTime, submissionTime, lastUpdate in subRequests[ "Value"]: res = requestContainer.initiateSubRequest(requestType) ind = res["Value"] subRequestDict = { "Status": status, "SubRequestID": subRequestID, "Operation": operation, "Arguments": arguments, "ExecutionOrder": int(executionOrder), "SourceSE": sourceSE, "TargetSE": targetSE, "Catalogue": catalogue, "CreationTime": creationTime, "SubmissionTime": submissionTime, "LastUpdate": lastUpdate } res = requestContainer.setSubRequestAttributes( ind, requestType, subRequestDict) if not res["OK"]: return res ## get files for this subrequest req = "SELECT FileID, LFN, Size, PFN, GUID, Md5, Addler, Attempt, Status FROM Files WHERE SubRequestID = %s ORDER BY FileID;" % str( subRequestID) res = self._query(req) if not res["OK"]: return res files = [] for fileID, lfn, size, pfn, guid, md5, addler, attempt, status in res[ "Value"]: fileDict = { "FileID": fileID, "LFN": lfn, "Size": size, "PFN": pfn, "GUID": guid, "Md5": md5, "Addler": addler, "Attempt": attempt, "Status": status } files.append(fileDict) res = requestContainer.setSubRequestFiles(ind, requestType, files) if not res["OK"]: return res ## dump request to XML res = requestContainer.toXML() if not res["OK"]: return res requestString = res["Value"] ## return dictonary with all info in at least return S_OK({ "RequestName": requestName, "RequestString": requestString, "JobID": jobID, "RequestContainer": requestContainer })
def getRequestForSubRequest(self, itself, subRequestID ): """ Select Request given SubRequestID. :param self: plugin reference :param itself: patient reference for injection :param int subRequestID: SubRequests.SubRequestID :warn: function has to be injected to RequestDBMySQL instance """ ## get RequestID requestID = "SELECT RequestID FROM SubRequests WHERE SubRequestID = %s;" % str(subRequestID) requestID = self._query( requestID ) if not requestID["OK"]: return requestID requestID = requestID["Value"][0] ## create RequestContainer requestContainer = RequestContainer( init = False ) requestContainer.setRequestID( requestID ) ## put some basic infos in requestInfo = "SELECT RequestName, JobID, OwnerDN, OwnerGroup, DIRACSetup, SourceComponent, CreationTime, SubmissionTime, LastUpdate, Status " requestInfo += "FROM Requests WHERE RequestID = %d;" % requestID requestInfo = self._query( requestInfo ) if not requestInfo["OK"]: return requestInfo requestName, jobID, ownerDN, ownerGroup, diracSetup, sourceComponent, creationTime, submissionTime, lastUpdate, status = requestInfo['Value'][0] requestContainer.setRequestName( requestName ) requestContainer.setJobID( jobID ) requestContainer.setOwnerDN( ownerDN ) requestContainer.setOwnerGroup( ownerGroup ) requestContainer.setDIRACSetup( diracSetup ) requestContainer.setSourceComponent( sourceComponent ) requestContainer.setCreationTime( str( creationTime ) ) requestContainer.setLastUpdate( str( lastUpdate ) ) requestContainer.setStatus( status ) ## get sub-requests subRequests = "SELECT SubRequestID, Status, RequestType, Operation, Arguments, ExecutionOrder, SourceSE, " subRequests += "TargetSE, Catalogue, CreationTime, SubmissionTime, LastUpdate FROM SubRequests WHERE RequestID=%s;" % requestID subRequests = self._query( subRequests ) if not subRequests["OK"]: return subRequests ## loop over sub requests for subRequestID, status, requestType, operation, arguments, executionOrder, sourceSE, targetSE, catalogue, creationTime, submissionTime, lastUpdate in subRequests["Value"]: res = requestContainer.initiateSubRequest( requestType ) ind = res["Value"] subRequestDict = { "Status" : status, "SubRequestID" : subRequestID, "Operation" : operation, "Arguments" : arguments, "ExecutionOrder" : int( executionOrder ), "SourceSE" : sourceSE, "TargetSE" : targetSE, "Catalogue" : catalogue, "CreationTime" : creationTime, "SubmissionTime" : submissionTime, "LastUpdate" : lastUpdate } res = requestContainer.setSubRequestAttributes( ind, requestType, subRequestDict ) if not res["OK"]: return res ## get files for this subrequest req = "SELECT FileID, LFN, Size, PFN, GUID, Md5, Addler, Attempt, Status FROM Files WHERE SubRequestID = %s ORDER BY FileID;" % str(subRequestID) res = self._query( req ) if not res["OK"]: return res files = [] for fileID, lfn, size, pfn, guid, md5, addler, attempt, status in res["Value"]: fileDict = { "FileID" : fileID, "LFN" : lfn, "Size" : size, "PFN" : pfn, "GUID" : guid, "Md5" : md5, "Addler" : addler, "Attempt" : attempt, "Status" : status } files.append( fileDict ) res = requestContainer.setSubRequestFiles( ind, requestType, files ) if not res["OK"]: return res ## dump request to XML res = requestContainer.toXML() if not res["OK"]: return res requestString = res["Value"] ## return dictonary with all info in at least return S_OK( { "RequestName" : requestName, "RequestString" : requestString, "JobID" : jobID, "RequestContainer" : requestContainer } )