StateMachine

This module defines the state machine for the Productions

class DIRAC.ProductionSystem.Utilities.StateMachine.ProductionsStateMachine(state)

Bases: DIRAC.ResourceStatusSystem.PolicySystem.StateMachine.StateMachine

Production Management System implementation of the state machine

__init__(state)

c’tor Defines the state machine transactions

getNextState(candidateState)

Method that gets the next state, given the proposed transition to candidateState. If candidateState is not on the state map <self.states>, it is rejected. If it is not the case, we have two options: if <self.state> is None, then the next state will be <candidateState>. Otherwise, the current state is using its own transition rule to decide.

Examples

>>> sm0.getNextState( None )
    S_OK( None )
>>> sm0.getNextState( 'NextState' )
    S_OK( 'NextState' )
Parameters:candidateState (str) – name of the next state
Returns:S_OK( nextState ) || S_ERROR
getStates()

Returns all possible states in the state map

Examples

>>> sm0.getStates()
    [ 'Nirvana' ]
Returns:list( stateNames )
levelOfState(state)

Given a state name, it returns its level ( integer ), which defines the hierarchy.

>>> sm0.levelOfState( 'Nirvana' )
    100
>>> sm0.levelOfState( 'AnotherState' )
    -1
Parameters:state (str) – name of the state, it should be on <self.states> key set
Returns:int || -1 ( if not in <self.states> )
setState(candidateState, noWarn=False)
Makes sure the state is either None or known to the machine, and that it is a valid state to move into.
Final states are also checked.

Examples

>>> sm0.setState(None)['OK']
    True
>>> sm0.setState('Nirvana')['OK']
    True
>>> sm0.setState('AnotherState')['OK']
    False
Parameters:state (None or str) – state which will be set as current state of the StateMachine
Returns:S_OK || S_ERROR