Model

class lsst.ts.watcher.Model(domain, config, alarm_callback=None, log=None)

Bases: object

Watcher model: constructs and manages rules and alarms.

Parameters:
domainlsst.ts.salobj.Domain

DDS Domain.

configtypes.SimpleNamespace

Watcher configuration validated against the Watcher schema.

alarm_callbackcallable, optional

Coroutine (async function) to call whenever an alarm changes state, or None if no callback wanted. The coroutine receives one argument: this alarm.

loglogging.Logger, optional

Parent logger.

Raises:
TypeError

If alarm_callback is not None and not a coroutine.

Attributes Summary

enabled

Get the enabled state of the Watcher model.

Methods Summary

acknowledge_alarm(name, severity, user)

Acknowledge one or more alarms.

add_rule(rule)

Add a rule.

close()

Stop rules and close remotes.

disable()

Disable the model.

enable()

Enable the model.

get_filtered_topic_wrapper(topic, filter_field)

Get an existing TopicWrapper.

get_rules(name_regex)

Get all rules whose name matches the specified regular expression.

make_filtered_topic_wrapper(topic, filter_field)

Make a FilteredTopicWrapper, or return an existing one, if found.

make_log_entry(name)

MakeLogEntry for alarm.

mute_alarm(name, duration, severity, user)

Mute one or more alarms for a specified duration.

start()

Start all remotes.

unacknowledge_alarm(name)

Unacknowledge one or more alarms.

unmute_alarm(name)

Unmute one or more alarms.

Attributes Documentation

enabled

Get the enabled state of the Watcher model.

Methods Documentation

async acknowledge_alarm(name, severity, user)

Acknowledge one or more alarms.

Parameters:
namestr

Regular expression for alarm name(s) to acknowledge.

severitylsst.ts.idl.enums.Watcher.AlarmSeverity or int

Severity to acknowledge. If the severity goes above this level the alarm will unacknowledge itself.

userstr

Name of user; used to set acknowledged_by.

add_rule(rule)

Add a rule.

Parameters:
ruleBaseRule

Rule to add.

Raises:
ValueError

If a rule by this name already exists.

RuntimeError

If the rule uses a remote for which no IDL file is available in the ts_idl package. Or if the rule references a topic that does not exist. Or if a RemoteInfo specifies index=0 for an indexed SAL component and index_required is true.

async close()

Stop rules and close remotes.

disable()

Disable the model. A no-op if already disabled.

async enable()

Enable the model. A no-op if already enabled.

get_filtered_topic_wrapper(topic, filter_field)

Get an existing TopicWrapper.

Parameters:
topiclsst.ts.salobj.ReadTopic

Topic to read.

filter_fieldstr

Field to filter on. The field must be a scalar. It should also have a smallish number of expected values, in order to avoid caching too much data.

Raises:
KeyError

If the wrapper is not in the registry.

get_rules(name_regex)

Get all rules whose name matches the specified regular expression.

Parameters:
name_regexstr

Regular expression for alarm name(s) to return.

Returns:
rulesgenerator

An iterator over rules.

make_filtered_topic_wrapper(topic, filter_field)

Make a FilteredTopicWrapper, or return an existing one, if found.

Call this, instead of constructing a FilteredTopicWrapper directly. That makes sure cached value is returned, if it exists (avoiding an exception in the class constructor).

Parameters:
topiclsst.ts.salobj.ReadTopic

Topic to read.

filter_fieldstr

Field to filter on. The field must be a scalar. It should also have a smallish number of expected values, in order to avoid caching too much data.

Notes

Watcher rules typically do not use FilteredTopicWrapper directly. Instead they use subclasses of BaseFilteredFieldWrapper. Each filtered field wrapper creates a FilteredTopicWrapper for internal use.

async make_log_entry(name)

MakeLogEntry for alarm.

Parameters:
namestr

Regular expression for alarm name(s) to post to narrative log.

async mute_alarm(name, duration, severity, user)

Mute one or more alarms for a specified duration.

Parameters:
namestr

Regular expression for alarm name(s) to mute.

durationfloat

How long to mute the alarm (sec)

severitylsst.ts.idl.enums.Watcher.AlarmSeverity or int

Severity to mute; used to set the mutedSeverity field of the alarm event.

userstr

Name of user; used to set acknowledged_by.

async start()

Start all remotes.

async unacknowledge_alarm(name)

Unacknowledge one or more alarms.

Parameters:
namestr

Regular expression for alarm name(s) to unacknowledge.

async unmute_alarm(name)

Unmute one or more alarms.

Parameters:
namestr

Regular expression for alarm name(s) to unmute.