OperationHandlerBase
- mod:
OperationHandlerBase
- synopsis:
request operation handler base class
RMS Operation handler base class.
This should be a functor getting Operation as ctor argument and calling it (executing __call__) should return S_OK/S_ERROR.
Helper functions and tools:
self.rssClient() – returns RSSClient
self.getProxyForLFN( LFN ) – sets X509_USER_PROXY environment variable to LFN owner proxy
self.rssSEStatus( SE, status ) returns S_OK(True/False) depending of RSS :status:
Properties:
self.shifter – list of shifters matching request owner (could be empty!!!)
each CS option stored under CS path “RequestExecutingAgent/OperationHandlers/Foo” is exported as read-only property too
self.initialize() – overwrite it to perform additional initialization
self.log – own sub logger
self.request, self.operation – reference to Operation and Request itself
In all inherited class one should overwrite __call__ and initialize, when appropriate.
- class DIRAC.RequestManagementSystem.private.OperationHandlerBase.DynamicProps(name, bases, classdict)
Bases:
type
metaclass allowing to create properties on the fly
- __init__(*args, **kwargs)
- mro()
Return a type’s method resolution order.
- class DIRAC.RequestManagementSystem.private.OperationHandlerBase.OperationHandlerBase(operation=None, csPath=None)
Bases:
object
- class OperationHandlerBase
request operation handler base class
- __init__(operation=None, csPath=None)
c’tor
- createRMSRecord(status, nbObject)
This method is used to create a record given some parameters for sending it to the ES backend. It is used inside DMS/Agent/RequestOperations and this method is designed particularly for file type of objects.
- Parameters:
status – This can be one of these i.e. Attempted, Failed, or Successful.
nbObject – This is number of objects in question.
- Returns:
a dictionary.
- getProxyForLFN(lfn)
get proxy for lfn
- Parameters:
lfn (str) – LFN
- Returns:
S_ERROR or S_OK( “/path/to/proxy/file” )
- getWaitingFilesList()
prepare waiting files list, update Attempt, filter out MaxAttempt
- makeProperty(name, value, readOnly=False)
Add property :name: to class
This also creates a private :_name: attribute If you want to make read only property, set :readOnly: flag to True :warn: could raise AttributeError if :name: of :_name: is already defined as an attribute
- classmethod rssClient()
ResourceStatusClient getter
- rssSEStatus(se, status, retries=2)
check SE :se: for status :status:
- setOperation(operation)
operation and request setter
- property shifter