Capability State Transition Rules
Rules when no devices are being ignored
CAPABILITY_STATE_RULES_ALL_DEVICES = {
"UNAVAILABLE": rule_engine.Rule(
"(DS.operatingmode == 'DSOperatingMode.STARTUP' or "
"DS.operatingmode == 'DSOperatingMode.ESTOP') "
" and "
"SPF.capabilitystate == 'SPFCapabilityStates.UNAVAILABLE'"
" and "
"SPFRX.capabilitystate == 'SPFRxCapabilityStates.UNAVAILABLE'"
),
"STANDBY_1": rule_engine.Rule(
"DM.dishmode in "
" ['DishMode.STANDBY_LP', "
" 'DishMode.STANDBY_FP']"
" and "
"SPF.capabilitystate in "
" ['SPFCapabilityStates.STANDBY', "
" 'SPFCapabilityStates.OPERATE_DEGRADED', "
" 'SPFCapabilityStates.OPERATE_FULL']"
" and "
"SPFRX.capabilitystate in "
" ['SPFRxCapabilityStates.STANDBY', "
" 'SPFRxCapabilityStates.OPERATE']"
),
"STANDBY_2": rule_engine.Rule(
"( "
" DM.dishmode == 'DishMode.STOW'"
" and "
# Added line below otherwise matches OPERATE_DEGRADED
" DS.indexerposition != 'IndexerPosition.MOVING' "
") "
" and "
"SPF.capabilitystate == 'SPFCapabilityStates.STANDBY'"
" and "
"SPFRX.capabilitystate in "
" ['SPFRxCapabilityStates.STANDBY', "
" 'SPFRxCapabilityStates.OPERATE']"
),
"STANDBY_3": rule_engine.Rule(
"DM.dishmode == 'DishMode.MAINTENANCE'"
" and "
"SPF.capabilitystate in "
" ['SPFCapabilityStates.STANDBY', "
" 'SPFCapabilityStates.OPERATE_DEGRADED', "
" 'SPFCapabilityStates.OPERATE_FULL']"
" and "
"SPFRX.capabilitystate == 'SPFRxCapabilityStates.STANDBY' "
),
"OPERATE_FULL": rule_engine.Rule(
" DM.dishmode in ['DishMode.STOW', 'DishMode.OPERATE'] "
" and "
" SPF.capabilitystate == 'SPFCapabilityStates.OPERATE_FULL' "
" and "
" SPFRX.capabilitystate == 'SPFRxCapabilityStates.OPERATE'"
),
"CONFIGURING": rule_engine.Rule(
"DM.dishmode == 'DishMode.CONFIG' "
" and "
"SPF.capabilitystate in "
" ['SPFCapabilityStates.OPERATE_DEGRADED', "
" 'SPFCapabilityStates.OPERATE_FULL']"
" and "
"SPFRX.capabilitystate in "
" ['SPFRxCapabilityStates.CONFIGURE', "
" 'SPFRxCapabilityStates.OPERATE']"
),
"OPERATE_DEGRADED": rule_engine.Rule(
"( "
" DS.indexerposition != 'IndexerPosition.MOVING' "
" and "
" DS.operatingmode in "
" ['DSOperatingMode.STOW', "
" 'DSOperatingMode.POINT']"
") "
" and "
" SPF.capabilitystate == 'SPFCapabilityStates.OPERATE_DEGRADED' "
" and "
" SPFRX.capabilitystate == 'SPFRxCapabilityStates.OPERATE'"
),
}
Rules when ignoring SPFC device
CAPABILITY_STATE_RULES_SPF_IGNORED = {
"UNAVAILABLE": rule_engine.Rule(
"(DS.operatingmode == 'DSOperatingMode.STARTUP' or "
"DS.operatingmode == 'DSOperatingMode.ESTOP') "
" and "
"SPFRX.capabilitystate == 'SPFRxCapabilityStates.UNAVAILABLE'"
),
"STANDBY_1": rule_engine.Rule(
"DM.dishmode in "
" ['DishMode.STANDBY_LP', "
" 'DishMode.STANDBY_FP']"
" and "
"SPFRX.capabilitystate in "
" ['SPFRxCapabilityStates.STANDBY', "
" 'SPFRxCapabilityStates.OPERATE']"
),
"STANDBY_2": rule_engine.Rule(
"( "
" DM.dishmode == 'DishMode.STOW'"
" and "
# Added line below otherwise matches OPERATE_DEGRADED
" DS.indexerposition != 'IndexerPosition.MOVING' "
") "
" and "
"SPFRX.capabilitystate in "
" ['SPFRxCapabilityStates.STANDBY', "
" 'SPFRxCapabilityStates.OPERATE']"
),
"STANDBY_3": rule_engine.Rule(
"DM.dishmode == 'DishMode.MAINTENANCE'"
" and "
"SPFRX.capabilitystate == 'SPFRxCapabilityStates.STANDBY' "
),
"OPERATE_FULL": rule_engine.Rule(
" DM.dishmode in ['DishMode.STOW', 'DishMode.OPERATE'] "
" and "
" SPFRX.capabilitystate == 'SPFRxCapabilityStates.OPERATE'"
),
"CONFIGURING": rule_engine.Rule(
"DM.dishmode == 'DishMode.CONFIG' "
" and "
"SPFRX.capabilitystate in "
" ['SPFRxCapabilityStates.CONFIGURE', "
" 'SPFRxCapabilityStates.OPERATE']"
),
"OPERATE_DEGRADED": rule_engine.Rule(
"( "
" DS.indexerposition != 'IndexerPosition.MOVING' "
" and "
" DS.operatingmode in "
" ['DSOperatingMode.STOW', "
" 'DSOperatingMode.POINT']"
") "
" and "
" SPFRX.capabilitystate == 'SPFRxCapabilityStates.OPERATE'"
),
}
Rules when ignoring SPFRX device
CAPABILITY_STATE_RULES_SPFRX_IGNORED = {
"UNAVAILABLE": rule_engine.Rule(
"(DS.operatingmode == 'DSOperatingMode.STARTUP' or "
"DS.operatingmode == 'DSOperatingMode.ESTOP') "
" and "
"SPF.capabilitystate == 'SPFCapabilityStates.UNAVAILABLE'"
),
"STANDBY_1": rule_engine.Rule(
"DM.dishmode in "
" ['DishMode.STANDBY_LP', "
" 'DishMode.STANDBY_FP']"
" and "
"SPF.capabilitystate in "
" ['SPFCapabilityStates.STANDBY', "
" 'SPFCapabilityStates.OPERATE_DEGRADED', "
" 'SPFCapabilityStates.OPERATE_FULL']"
),
"STANDBY_2": rule_engine.Rule(
"( "
" DM.dishmode == 'DishMode.STOW'"
" and "
# Added line below otherwise matches OPERATE_DEGRADED
" DS.indexerposition != 'IndexerPosition.MOVING' "
") "
" and "
"SPF.capabilitystate == 'SPFCapabilityStates.STANDBY'"
),
"STANDBY_3": rule_engine.Rule(
"DM.dishmode == 'DishMode.MAINTENANCE'"
" and "
"SPF.capabilitystate in "
" ['SPFCapabilityStates.STANDBY', "
" 'SPFCapabilityStates.OPERATE_DEGRADED', "
" 'SPFCapabilityStates.OPERATE_FULL']"
),
"OPERATE_FULL": rule_engine.Rule(
" DM.dishmode in ['DishMode.STOW', 'DishMode.OPERATE'] "
" and "
" SPF.capabilitystate == 'SPFCapabilityStates.OPERATE_FULL' "
),
"CONFIGURING": rule_engine.Rule(
"DM.dishmode == 'DishMode.CONFIG' "
" and "
"SPF.capabilitystate in "
" ['SPFCapabilityStates.OPERATE_DEGRADED', "
" 'SPFCapabilityStates.OPERATE_FULL']"
),
"OPERATE_DEGRADED": rule_engine.Rule(
"( "
" DS.indexerposition != 'IndexerPosition.MOVING' "
" and "
" DS.operatingmode in "
" ['DSOperatingMode.STOW', "
" 'DSOperatingMode.POINT']"
") "
" and "
" SPF.capabilitystate == 'SPFCapabilityStates.OPERATE_DEGRADED' "
),
}
Rules when ignoring both SPFC and SPFRX devices
CAPABILITY_STATE_RULES_DS_ONLY = {
"UNAVAILABLE": rule_engine.Rule(
"(DS.operatingmode == 'DSOperatingMode.STARTUP' or "
"DS.operatingmode == 'DSOperatingMode.ESTOP')"
),
"STANDBY_1": rule_engine.Rule("DM.dishmode in ['DishMode.STANDBY_LP', 'DishMode.STANDBY_FP']"),
"STANDBY_2": rule_engine.Rule(
"( "
" DM.dishmode == 'DishMode.STOW'"
" and "
# Added line below otherwise matches OPERATE_DEGRADED
" DS.indexerposition != 'IndexerPosition.MOVING' "
")"
),
"STANDBY_3": rule_engine.Rule("DM.dishmode == 'DishMode.MAINTENANCE'"),
"OPERATE_FULL": rule_engine.Rule(" DM.dishmode in ['DishMode.STOW', 'DishMode.OPERATE'] "),
"CONFIGURING": rule_engine.Rule("DM.dishmode == 'DishMode.CONFIG' "),
"OPERATE_DEGRADED": rule_engine.Rule(
"( "
" DS.indexerposition != 'IndexerPosition.MOVING' "
" and "
" DS.operatingmode in "
" ['DSOperatingMode.STOW', "
" 'DSOperatingMode.POINT']"
") "
),
}