Version History¶
v1.17.3¶
Update
script_failedalarm to allow users to specify the severity of the alarm.Update
enabledrule to allow setting alarm level toNONEfor a particular state.
v1.17.2¶
Update heartbeat tests to raise an exception when there are errors, and fix them to capture the correct behavior of the rule.
Update unit tests to be more reliable when running with the kafka version of salobj.
In
watcher_csc.py, pass logger when instantiating the model.In
model.py, add logger to theModelclass and pass in logger when creating rules.In
base_rule.py, add logger toBaseRuleclass and pass logger toAlarmclass when instantiating it.In
base_ess_rule.py, add logger toBaseESSRule.Add logger to all rules.
In
alarm.py, add logger toAlarmclass.In
rules/heartbeat.py, use_get_publish_severity_reasonwhen setting alarm severity inheartbeat_timerto make sure it keeps track of the alarm state.Update .gitignore with latest ts-pre-commit-config setup.
v1.17.1¶
Update ESS topic item names.
v1.17.0¶
Move feature that prevents alarms from being republished if they haven’t changed from
BaseEssRuletoBaseRule, to fix behavior of all rules.
v1.16.1¶
Update
BaseEssRuleto prevent alarms to be continuously republished. The rule will now keep record of the latest severity/reason and only publishes when it changes.
v1.16.0¶
Make
ScriptFailedrule unit test more robust.Change
Alarmbehavior to cancel escalation timer if alarm is no longer critical.Update default timeout parameter for heartbeat rule.
v1.15.0¶
BaseRule: allowcompute_alarm_severityto return None.-
Rename
rule_nameconstructor argumentrule_nametoname, to matchBaseRuleandPollingRule.Move from the
rulessub-module to the main level. This prevents it from being specified as a rule in the CSC configuration and is consistent withBaseRuleandPollingRule.
Add
rules.MTAirCompressorsStaterule.Improve two documents: How to Write a Rule, and SquadCast Notes.
Requires:
ts_utils 1.1
ts_salobj 7.1
ts_idl 2
IDL files for
Watcher,ATDome,ESS,MTMount,ScriptQueue, andTest, plus any additional SAL components you wish to watch. These may be generated usingmake_idl_files.pybuilt with ts_xml 16 and ts_sal 7.
v1.14.0¶
BaseRule: change abstract__call__method to concrete asyncupdate_alarm_severitymethod. This calls new abstract methodcompute_alarm_severity. These changes make the API for Rule a bit clearer.PollingRule: delete abstractpoll_oncemethod and callcompute_alarm_severityinstead.RemoteInfo: addindex_requiredconstructor argument, which defaults to True. This means that, by default, a Remote for an indexed component cannot be constructed with index=0. All existing rules assumed this, but did not enforce it.
Requires:
ts_utils 1.1
ts_salobj 7.1
ts_idl 2
IDL files for
Watcher,ATDome,ESS,MTMount,ScriptQueue, andTest, plus any additional SAL components you wish to watch. These may be generated usingmake_idl_files.pybuilt with ts_xml 16 and ts_sal 7.
v1.13.3¶
conda/meta.yaml: fix Conda build by removingsetup.cfg.
Requires:
ts_utils 1.1
ts_salobj 7.1
ts_idl 2
IDL files for
Watcher,ATDome,ESS,MTMount,ScriptQueue, andTest, plus any additional SAL components you wish to watch. These may be generated usingmake_idl_files.pybuilt with ts_xml 16 and ts_sal 7.
v1.13.2¶
-
When enabling the CSC, print alarm events for all alarms, even those in nominal state. Most alarms will usually be in nominal state.
showAlarmscommand: print an alarm event for all events, even those in nominal state.
-
Make the
enablemethod call the alarm callback for all alarms, even those in nominal state. This causes the CSC to publish alarm events for all events when going to enabled state.Make the
enablemethod asynchronous. This simplifies calling alarm callbacks and reduces the number of tasks created.
Fix a few unit test warnings.
Note: ts_xml 16 defines a new
notificationevent for Watcher. This is intended as a stateless notification of a problem (“stateless” meaning it does not require or allow acknowledgement).notificationis very much like thelogMessageevent, but intended to be displayed in a special window in LOVE. Rules should now feel free to output this event.
Requires:
ts_utils 1.1
ts_salobj 7.1
ts_idl 2
IDL files for
Watcher,ATDome,ESS,MTMount,ScriptQueue, andTest, plus any additional SAL components you wish to watch. These may be generated usingmake_idl_files.pybuilt with ts_xml 16 and ts_sal 7.
v1.13.1¶
-
Improve behavior when going to standby and back to enabled. Close the model and reconstruct it.
Delay escalation while muted. Cancel the escalation timer when muting begins, then start it again when muting ends, if appropriate.
Model: make the close method close rules (instead of just stoppping alarms).Add missing
bin/command_watcherscript.
Requires:
ts_utils 1.1
ts_salobj 7.1
ts_idl 2
IDL files for
Watcher,ATDome,ESS,MTMount,ScriptQueue, andTest, plus any additional SAL components you wish to watch. These may be generated usingmake_idl_files.pybuilt with ts_xml 13 and ts_sal 7.
v1.13.0¶
BaseRule: addmake_configclass method, and update code to use it.rules.Enabled: make alarm severity configurable per state, and set the default severity for FAULT state to CRITICAL.rules.Heartbeat: make alarm severity configurable and set the default severity to CRITICAL. Also increase the default timeout from 3 to 5 seconds, to reduce unnecessary alarms.Use ts_pre_commit_config.
Jenkinsfile: use the shared library.
Remove scons support.
v1.12.2¶
Fix outdated references to OpsGenie in documentation and code, changing them to SquadCast.
Expand the user guide to describe the ESCALATION_KEY environment variable.
Requires:
ts_utils 1.1
ts_salobj 7.1
ts_idl 2
IDL files for
Watcher,ATDome,ESS,MTMount,ScriptQueue, andTest, plus any additional SAL components you wish to watch. These may be generated usingmake_idl_files.pybuilt with ts_xml 13 and ts_sal 7.
v1.12.1¶
DewPointDepression: fix an error in the config schema.pre-commit: update black to 23.1.0, isort to 5.12.0, mypy to 1.0.0, and pre-commit-hooks to v4.4.0.
Jenkinsfile: do not run as root.
Requires:
ts_utils 1.1
ts_salobj 7.1
ts_idl 2
IDL files for
Watcher,ATDome,ESS,MTMount,ScriptQueue, andTest, plus any additional SAL components you wish to watch. These may be generated usingmake_idl_files.pybuilt with ts_xml 13 and ts_sal 7.
v1.12.0¶
Escalate critical alarms to SquadCast instead of OpsGenie. This changed the config schema version from v4 to v5.
Add
rules.BaseEssRuleand modifyrules.Humidityandrules.OverTemperatureto inherit from it.rules.Humdity: add optionalwarning_msg,serious_msg, andcritical_msgto config.Add
rules.UnderPressure.Add
rules.test.TriggeredSeveritiesrule. 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.Add
MockPagerDutyandMockSquadCastclasses.Make test_clock.py and test_heartbeat more robust by increasing the timing margin.
Requires:
ts_utils 1.1
ts_salobj 7.1
ts_idl 2
IDL files for
Watcher,ATDome,ESS,MTMount,ScriptQueue, andTest, plus any additional SAL components you wish to watch. These may be generated usingmake_idl_files.pybuilt with ts_xml 13 and ts_sal 7.
v1.11.2¶
Remove some obsolete backwards compatibility code for ts_xml 11 and 12 (DM-35892). Version v1.11.0 already required ts_xml 13, due to other changes.
Requires:
ts_utils 1.1
ts_salobj 7.1
ts_idl 2
IDL files for
Watcher,ATDome,ESS,MTMount,ScriptQueue, andTest, plus any additional SAL components you wish to watch. These may be generated usingmake_idl_files.pybuilt with ts_xml 13 and ts_sal 7.
v1.11.1¶
Modernize pre-commit hooks and conda recipe.
Requires:
ts_utils 1.1
ts_salobj 7.1
ts_idl 2
IDL files for
Watcher,ATDome,ESS,MTMount,ScriptQueue, andTest, plus any additional SAL components you wish to watch. These may be generated usingmake_idl_files.pybuilt with ts_xml 13 and ts_sal 7.
v1.11.0¶
Update for ts_xml 13:
Update rules to use the new ESS topics.
Update unit tests and documentation to eliminate use of obsolete ESS topics.
Update rules that use ESS topics to use hard-coded topics (this was made possible by ts_xml 13), simplifying configuration:
rules.DewPoint
Update CONFIG_SCHEMA to v4, because of the changes to the schemas of the rules noted above.
Update
rules.ATCameraDewerto improve float formatting in alarm details; vacuum was always shown as 0.00.Fix a race condition caused by making rule and topic wrapper callbacks read data from the topic callback instance:
Model: call call rules with an additional data argument.-
Call rules and topic wrappers with an additional data argument.
Eliminate the
getmethod; use the data passed to the callback, instead.Add attribute
call_eventfor unit tests.
Updated all rules accordingly.
Updated the “Writing Watcher Rules” document accordingly.
Add
PollingRuleclass, for rules that poll for data. Modified polling rules to use it.Add
write_and_waitfunction for unit tests.Make test_clock.py compatible with Kafka salobj, while preserving compatibility with DDS salobj.
Requires:
ts_utils 1.1
ts_salobj 7.1
ts_idl 2
IDL files for
Watcher,ATDome,ESS,MTMount,ScriptQueue, andTest, plus any additional SAL components you wish to watch. These may be generated usingmake_idl_files.pybuilt with ts_xml 13 and ts_sal 7.
v1.10.1¶
Add new ScriptFailed rule, which monitors the ScriptQueue execution and set severity to WARNING if the current script failed.
Requires:
ts_utils 1.1
ts_salobj 7.1
ts_idl 2
IDL files for
Watcher,ATDome,ESS,MTMount,ScriptQueue, andTest, plus any additional SAL components you wish to watch. These may be generated usingmake_idl_files.pybuilt with ts_xml 11 (preferably 13) and ts_sal 7.
v1.10.0¶
Escalate alarms to OpsGenie by using the REST API to create alerts.
Update the CSC configuration schema to version 3:
Update
escalationitems by replacing thetofield (a string)responders(a list of objects).Add escalation_url.
Overhaul escalation-related
Alarmfields. It is important to keep track of the ID of escalation alerts.Update
WatcherCscto handle the newAlarmfields andModelchanges.Add
MockOpsGenie, a mock OpsGenie service for unit tests.Add support for ts_xml 13, which has more detailed escalation information in the
alarmevent, while retaining backwards compatibility with ts_xml 11.
Modernize the documentation. Split the main page into a User Guide (still part of the main page) and a Developer Guide (a separate page). Add a section on alarm escalation to the User Guide.
Requires:
ts_utils 1.1
ts_salobj 7.1
ts_idl 2
IDL files for
Watcher,ATDome,ESS,MTMount,ScriptQueue, andTest, plus any additional SAL components you wish to watch. These may be generated usingmake_idl_files.pybuilt with ts_xml 11 (preferably 13) and ts_sal 7.
v1.9.0¶
Delete the command_watcher.py command-line script.
Rename command-line scripts to remove “.py” suffix.
Update HeartbeatWriter, a subclass of WriteTopic, in a unit test, to be compatible with ts_sal 7. ts_sal 7 is required for unit test test_clock.py to pass.
Simplify some tests by using a write-only controller. This requires ts_salobj 7.1.
Wait for SalInfo instances to start in unit tests.
Modernize
Jenkinsfile.Use
vars(message)instead ofmessage.get_vars()in a unit test.Build with pyproject.toml.
Requires:
ts_utils 1.1
ts_salobj 7.1
ts_idl 2
IDL files for
Watcher,ATDome,ESS,MTMount,ScriptQueue, andTest, plus any additional SAL components you wish to watch. These may be generated usingmake_idl_files.pybuilt with ts_xml 11 and ts_sal 7
v1.8.0¶
Update for ts_salobj 7, which is required. This also requires ts_xml 11.
Requires:
ts_utils 1.1
ts_salobj 7
ts_idl 2
IDL files for
Watcher,ATDome,ESS,MTMount,ScriptQueue, andTest, plus any additional SAL components you wish to watch. These may be generated usingmake_idl_files.pybuilt with ts_xml 11
v1.7.0¶
Use index_generator from ts_utils. This requires ts_utils 1.1 or later.
Add
ATCameraDewarrule.-
Add
init_severity_queueandassert_next_severitymethods, for unit testing.Fix
unacknowledgeto only restart the escalation timer if the alarm is configured with escalation information.
Overhaul the unit tests to wait for events instead of sleeping for an arbitrary time, where practical.
Requires:
ts_utils 1.1
ts_salobj 6.3
ts_xml 10.1
ts_idl 2
IDL files for
Watcher,ATDome,ESS,MTMount,ScriptQueue, andTest, plus any additional SAL components you wish to watch. These may be generated usingmake_idl_files.py
v1.6.0¶
Add rules (most of which require ts_xml 10.1):
rules.MTCCWFollowingRotator: warn when the MT camera cable wrap is not following the camera rotator.
Add classes
FieldWrapperList,BaseFilteredFieldWrapper,FilteredEssFieldWrapper, andIndexedEssFilteredFieldWrapper. These allow rules to handle data from CSCs such as the ESS, that publish the the same topic with different data for different subystems.Add class
ThresholdHandler, which computes alarm severity by comparing a value to one or more threshold levels.BaseRulechanges:Add method
BaseRule.setupfor finishing construction and performing additional validation, after the model and topics are made. This is where a rule can add filtered field wrappers.Add a default implementation of
BaseRule.is_usable. Use this default implementation for all existing rules.Add an attribute
remote_keys, which is used byBaseRule.is_usable.
Modelchanges:Change the type of
disabled_sal_componentsfromlisttofrozenset.Call
BaseRule.setupafter creating all topics.
TopicCallback: add support for wrapper callbacks.Add function
get_topic_key.Use package
ts_utils.Remove the
basesubpackage and move the contents up one level.Modernize unit tests to use bare assert.
Make
test_auto_acknowledge_unacknowledgeintest_csc.pymore robust by allowing a bit of clock jitter.Add
Jenkinsfile.
Requires:
ts_utils 1
ts_salobj 6.3
ts_xml 10.1
ts_idl 2
IDL files for
Watcher,ATDome,ESS,MTMount,ScriptQueue, andTest, plus any additional SAL components you wish to watch. These may be generated usingmake_idl_files.py
v1.5.3¶
Use
unittest.IsolatedAsyncioTestCaseinstead of the abandoned asynctest package.Format the code with black 20.8b1.
Requires:
ts_salobj 6.3
ts_xml 7
ts_idl 2
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py
v1.5.2¶
Add a Kapacitor rule for the summit and rename the rule for the NCSA test stand.
Requires:
ts_salobj 6.3
ts_xml 7
ts_idl 2
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py
v1.5.1¶
Fix handling of missing version.py file.
Requires:
ts_salobj 6.3
ts_xml 7
ts_idl 2
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py
v1.5.0¶
Store the CSC configuration schema in code. This requires ts_salobj 6.3.
Requires:
ts_salobj 6.3
ts_xml 7
ts_idl 2
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py
v1.4.3¶
WatcherCsc: setversionclass variable. Test that this sets the cscVersion field of the softwareVersions event.Modernize doc/conf.py for documenteer 0.6.
Requires:
ts_salobj 6.1
ts_xml 4.6 - 6
ts_idl 2
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py
v1.4.2¶
Update Jenkinsfile.conda to use the shared library.
Pin the versions of ts_idl and ts_salobj in conda/meta.yaml.
Requires:
ts_salobj 6.1
ts_xml 4.6 - 6
ts_idl 2
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py
v1.4.1¶
Fix ts-idl package name run dependency in conda recipe.
Minor updates to conda recipe.
Requires:
ts_salobj 6.1
ts_xml 4.6 - 6
ts_idl 2
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py
v1.4.0¶
Update for ts_salobj 6.1, which is required.
Add
WatcherCscconstructor argumentsettings_to_applyand set class variablerequire_settings = True.Fix deprecation warnings about calling get(flush=False) on read topics.
Remove obsolete .travis.yml file.
Update to use
pre-committo maintainflake8andblackcompliance.
Requires:
ts_salobj 6.1
ts_xml 4.6 - 6
ts_idl 2
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py
v1.3.3¶
Bug fix: Model mis-handled rules with no configuration.
Improved a unit test to catch ts_salobj bug DM-27380.
Requires:
ts_salobj 6
ts_xml 4.6 - 6
ts_idl 2
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py
v1.3.2¶
Fix the requirements for 1.3.0 and 1.3.1 in the version history.
Requires:
ts_salobj 6
ts_xml 4.6 - 6
ts_idl 2
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py
v1.3.1¶
Add the
kapacitordirectory to save Kapacitor alert scripts.
Requires:
ts_salobj 6
ts_xml 4.6 - 6
ts_idl 2
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py
v1.3.0¶
Add configuration for escalation.
Set the escalated fields of Alarm events.
Add optional
delayandrepeatsconfiguration fields torules.test.ConfiguredSeverities.Improve the git pre-commit hook.
Update the docs to link ts_sal and ts_xml.
Add
valid_simulation_modesclass variable toWatcherCsc.
Requires:
ts_salobj 6
ts_xml 4.6 - 6
ts_idl 2
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py
v1.2.0¶
Add
bin/command_watcher.py: a Watcher commander.Stop publishing
alarm.timestampSeverityNewest; it was causing too many unnecessary alarm messages.Make the
showAlarmscommand only work if the CSC is enabled. It would fail in interesting ways if the CSC was not enabled.
Requires:
ts_salobj 5.11 - 6
ts_xml 4.6 - 6
ts_idl 1
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py
v1.1.0¶
Update for compatibility with ts_salobj 6.
Requires:
ts_salobj 5.11 - 6
ts_xml 4.6 - 6
ts_idl 1
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py
v1.0.3¶
Add conda package configuration file and Jenkinsfile script to manage build process.
Requires:
ts_salobj 5.11
ts_xml 4.6
ts_idl 1
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py
v1.0.2¶
Add
tests/test_black.pyto verify that files are formatted with black. This requires ts_salobj 5.11 or later.Update test_csc.py to use
lsst.ts.salobj.BaseCscTestCase, which also makes it compatible with salobj 5.12.Update test_remote_wrapper.py to make it compatible with salobj 5.12.
Update
.travis.ymlto removesudo: falseto github travis checks pass once again.
Requires:
ts_salobj 5.11
ts_xml 4.6
ts_idl 1
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py
v1.0.1¶
Major changes:
Code formatted by
black, with a pre-commit hook to enforce this. See the README file for configuration instructions.
v1.0.0¶
Added the unacknowledge command. Added automatic unacknowledgement of active alarms and automatic acknowledgement of stale alarms, after configurable durations.
Requires:
ts_salobj 5.2
ts_xml 4.6
ts_idl 1
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py
v0.4.0¶
Update for ts_salobj 5.2: rename initial_simulation_mode to simulation_mode.
Requires:
ts_salobj 5.2
ts_xml 4.5
ts_idl 1
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py
v0.3.0¶
Add the showAlarms command.
Make the rules.test.ConfiguredSeverities rule cycle forever.
Requires:
ts_salobj 5.
ts_xml 4.5.
ts_idl 1.
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py.
v0.2.2¶
Add ts_salobj to the ups table file.
Requires:
ts_salobj 4.5.
ts_xml 4.3 for the Watcher SAL component.
ts_idl 0.3 for the Watcher enums.
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py.
v0.2.1¶
Fixed an incompatibility with ts_salobj 4.5 (use of a function only available in ts_salobj v5).
Requires:
ts_salobj 4.5.
ts_xml 4.3 for the Watcher SAL component.
ts_idl 0.3 for the Watcher enums.
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py.
v0.2.0¶
Add mute and unmute commands.
Add a rules.Clock rule to watch clock error.
Bug fixes:
The
acknowledgecommand was documented in ts_xml to support regular expressions, but did not.Model.__aenter__calledModel.startinstead of awaitingstart_task. Only the constructor should callModel.start.Model.enableran topic callbacks once for every remote, rather than once period.
Requires:
ts_salobj 4.5.
ts_xml 4.3 for the Watcher SAL component.
ts_idl 0.3 for the Watcher enums.
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py.
v0.1.0¶
First preliminary release.
There are a few rules and the unit tests pass, but we will need at least one configuration file in ts_config_ocs to declare it fully functional, and preferably more rules as well.
Requires:
ts_salobj 4.5.
ts_xml v4.1.0 for the Watcher SAL component.
ts_idl 0.3 for the Watcher enums.
IDL files for
Watcher,ATDome,ScriptQueue, andTest, plus any SAL components you wish to watch. These may be generated usingmake_idl_files.py.