FCConditionParser

Contains the mechanism to evaluate whether to use or not a catalog

class DIRAC.Resources.Catalog.FCConditionParser.FCConditionParser(vo=None, ro_methods=None)

Bases: object

This objects allows to evaluate conditions on whether or not a given operation should be evaluated on a given catalog for a given lfn (be glad so many things are given to you !).

The conditions are expressed as boolean logic, where the basic bloc has the form “pluginName=whateverThatWillBePassedToThePlugin”. The basic blocs will be evaluated by the respective plugins, and the result can be combined using the standard boolean operators:

  • ! for not
  • & for and
  • | for or
  • [ ] for prioritizing the operations

All these characters, as well as the ‘=’ symbol cannot be used in any expression to be evaluated by a plugin.

The rule to evaluate can either be given at calling time, or can be retrieved from the CS depending on the context (see doc of __call__ and __getConditionFromCS)

Example of rules are:

  • Filename=startswith(‘/lhcb’) & Proxy=voms.has(/lhcb/Role->production)
  • [Filename=startswith(‘/lhcb’) & !Filename=find(‘/user/’)] | Proxy=group.in(lhcb_mc, lhcb_data)
class PluginOperand(tokens)

Bases: object

This class is a wrapper for a plugin and it’s condition It is instantiated by pyparsing every time it encounters “plugin=condition”

__init__(tokens)
Parameters:tokens – [ pluginName, =, conditions ] the pluginName is automatically prepended with ‘Plugin’
eval(**kwargs)

Forward the evaluation call to the plugin

Parameters:**kwargs – contains all the information given to the plugin namely the lfns
Returns:True or False
__init__(vo=None, ro_methods=None)
Parameters:vo – name of the VO