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