MTAirCompressorsState#

class lsst.ts.watcher.rules.MTAirCompressorsState(config, log=None)#

Bases: BaseRule

Monitor the summary state of the two MTAirCompressor instances.

Set alarm severity None if both instances are disabled or enabled (both states are equally good from the perspective of providing compressed air). Set one configurable alarm level if either instance is not. Set a different configurable alarm level if both instances are not.

Parameters:

Notes

The alarm name is “MTAirCompressorsState”.

Methods Summary

compute_alarm_severity(data, **kwargs)

Compute and set alarm severity and reason.

get_schema()

Return a jsonschema as a dict, to validate configuration.

setup(model)

Perform post-constructor setup.

Methods Documentation

compute_alarm_severity(data, **kwargs)#

Compute and set alarm severity and reason.

Parameters:

**kwargs (dict [str, typing.Any]) –

Keyword arguments. If triggered by TopicCallback calling update_alarm_severity, the arguments will be as follows:

  • data : salobj.BaseMsgType Message from the topic described by topic_callback.

  • topic_callback : TopicCallback Topic callback wrapper.

Return type:

tuple[AlarmSeverity, str] | None

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. If severity is NONE then this value is ignored (but still required) and the old reason is retained until the alarm is reset to nominal state.

Notes

You may return NoneNoReason if the alarm state is NONE.

Parameters:

data (BaseMsgType)

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)
setup(model)#

Perform post-constructor setup.

Called after the remotes are constructed and populated with topics, but before the remotes have started.

Parameters:

model (Model) – The watcher model.

Return type:

None

Notes

Possible uses:

  • Rules in which topics and/or fields are specified in configuration should check that the topics and/or fields exist. They may also set variables pointing to the appropriate topics.

  • Rules that start a background process may start the process here rather than in the constructor; this is especially helpful if the process needs access to topics or fields.

Few rules require setup, so the default implemention is a no-op.