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

Parameters:
  • operation (Operation) – Operation instance

  • csPath (str) – config path in CS for this operation

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:

Parameters:
  • se (str) – SE name

  • status (str) – RSS status

setOperation(operation)

operation and request setter

Parameters:

operation (Operation) – operation instance

Raises:

TypeError – if operation is not an instance of Operation

property shifter