TriggeredSeverities#
- class lsst.ts.watcher.rules.test.TriggeredSeverities(config, log=None)#
Bases:
BaseRuleA test rule that transitions through a specified list of severities, repeatedly, when manually triggered by test code.
This is only intended for unit tests, since it will not transition between severities on its own. It gives unit tests complete control over when to report the next severity.
- Parameters:
config (
types.SimpleNamespace) – Rule configuration, as validated by the schema.log (
logging.Logger, optional) – Parent logger.
- Raises:
RuntimeError – If
compute_alarm_severityis called. When used as a normal rule this method should never be called because the rule specifies topics to call it.
- run_task#
The task used to run the
runmethod. Once started, you may check if this task is done to determine that all repeats have run.- Type:
- trigger_next_severity_event#
An event the user can set to trigger the next severity.
- Type:
Notes
The alarm name is
f"test.TriggeredSeverities.{config.name}"Methods Summary
Compute and set alarm severity and reason.
Return a jsonschema as a
dict, to validate configuration.run()Run through the configured severities, repeatedly, forever.
start()Start any background tasks, such as a polling loop.
stop()Stop all background tasks.
Methods Documentation
- compute_alarm_severity()#
Compute and set alarm severity and reason.
- Parameters:
**kwargs (
dict[str,typing.Any]) –Keyword arguments. If triggered by
TopicCallbackcallingupdate_alarm_severity, the arguments will be as follows:data :
salobj.BaseMsgTypeMessage from the topic described by topic_callback.topic_callback :
TopicCallbackTopic callback wrapper.
- Return type:
- Returns:
None, if no change or unknown, or a tuple of two values
severity (
lsst.ts.xml.enums.Watcher.AlarmSeverity) – The new alarm severity.reason (
str) – Detailed reason for the severity, e.g. a string describing what value is out of range, and what the range is. IfseverityisNONEthen this value is ignored (but still required) and the old reason is retained until the alarm is reset tonominalstate.
Notes
You may return
NoneNoReasonif the alarm state isNONE.
- classmethod get_schema()#
Return a jsonschema as a
dict, to validate configuration.Notes
Please provide default values for all fields for which defaults make sense. This makes watcher configuration files easier to write.
If your rule has no configuration then return
None.We recommend that you write the schema as yaml, for compactness, then use yaml.safe_load to convert it to a dict. For example:
schema_yaml = """ $schema: http://json-schema.org/draft-07/schema# description: Configuration for MyRule type: object properties: ... required: [...] additionalProperties: false """ return yaml.safe_load(schema_yaml)
- async run()#
Run through the configured severities, repeatedly, forever.
- start()#
Start any background tasks, such as a polling loop.
This is called when the watcher goes into the enabled state.
Notes
Do not assume that
startis called beforestop; the order depends on the initial state of the Watcher.Immediate subclasses need not call super().start()
- stop()#
Stop all background tasks.
This is called when the watcher goes out of the enabled state, and must stop any tasks that might trigger an alarm state change.
Notes
Do not assume that
startis called beforestop; the order depends on the initial state of the Watcher.This base implementation does nothing, so immediate subclasses need not call
super().stop().