PollingRule¶
- class lsst.ts.watcher.PollingRule(config, name, remote_info_list, log=None)¶
- Bases: - BaseRule- Base class for watcher rules that poll for data. - Regularly call - update_alarm_severitywith no arguments, at the interval specified by config.poll_interval.- Parameters:
- configtypes.SimpleNamespace
- Rule configuration, as validated by the schema. Must include a float field named “poll_interval” set to the polling interval in seconds. 
- namestr
- Name of alarm. This must be unique among all alarms and should be of the form system.[subsystem….]_name so that groups of related alarms can be acknowledged. 
- remote_info_listlist[RemoteInfo]
- Information about the remotes used by this rule. 
- loglogging.Logger, optional
- Parent logger. 
 
- config
- Attributes:
- BaseRule attributes
- All attributes from - BaseRule, plus:
- poll_start_taifloat
- The time (TAI, unix seconds) at which polling began. 
- poll_loop_taskasyncio.Future
- Task that runs the polling loop. 
 
 - Attributes Summary - Get the rule name. - Methods Summary - compute_alarm_severity(**kwargs)- Compute and set alarm severity and reason. - Return a jsonschema as a - dict, to validate configuration.- is_usable(disabled_sal_components)- Return True if rule can be used, despite disabled SAL components. - make_config(**kwargs)- Make a config from keyword arguments, after applying defaults. - setup(model)- Perform post-constructor setup. - start()- Start any background tasks, such as a polling loop. - stop()- Stop all background tasks. - update_alarm_severity(**kwargs)- Compute and set alarm severity and reason. - Attributes Documentation - name¶
- Get the rule name. 
 - Methods Documentation - abstract compute_alarm_severity(**kwargs: Any) tuple[lsst.ts.xml.enums.Watcher.AlarmSeverity, str] | None¶
- Compute and set alarm severity and reason. - Parameters:
- **kwargsdict[str,typing.Any]
- Keyword arguments. If triggered by - TopicCallbackcalling- update_alarm_severity, the arguments will be as follows:- data : - salobj.BaseMsgTypeMessage from the topic described by topic_callback.
- topic_callback : - TopicCallbackTopic callback wrapper.
 
 
- **kwargs
- Returns:
- None, if no change or unknown, or a tuple of two values:
- severity: lsst.ts.xml.enums.Watcher.AlarmSeverity
- The new alarm severity. 
- reasonstr
- Detailed reason for the severity, e.g. a string describing what value is out of range, and what the range is. If - severityis- NONEthen this value is ignored (but still required) and the old reason is retained until the alarm is reset to- nominalstate.
 
 - Notes - You may return - NoneNoReasonif the alarm state is- NONE.
 - abstract classmethod get_schema() dict[str, Any]¶
- 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) 
 - is_usable(disabled_sal_components: set[tuple[str, int]]) bool¶
- Return True if rule can be used, despite disabled SAL components. - The default implementation returns true if all remotes used by this rule are enabled. Override if you need something more complicated. The attributes - config,- nameand- remote_info_listare all available when this method is called.
 - classmethod make_config(**kwargs: str) SimpleNamespace¶
- Make a config from keyword arguments, after applying defaults. - Parameters:
- kwargs
- The configuration, as a dict of property: name. The allowed properties and values are specified by the rule’s config schema. 
 
- Returns:
- configtypes.SimpleNamespace
- The rule configuration, with defaults applied as needed. 
 
- config
- Raises:
- jsonschema.ValidationError
- If the provided kwargs are incorrect (missing keys, misspelled keys, incorrect data types…). 
 
 
 - async poll_loop()¶
 - setup(model: Model) None¶
- Perform post-constructor setup. - Called after the remotes are constructed and populated with topics, but before the remotes have started. - Parameters:
- modelModel
- The watcher model. 
 
- model
 - 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.
 - 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 before- stop; 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 before- stop; the order depends on the initial state of the Watcher.- This base implementation does nothing, so immediate subclasses need not call - super().stop().
 - async update_alarm_severity(**kwargs: Any) None¶
- Compute and set alarm severity and reason. - This must run quickly. If computing alarm severity is expensive, override this method to start a thread that computes the data and create a background task to manage the thread, then return. - Parameters:
- **kwargsdict[str,typing.Any]
- Keyword arguments. If called by - TopicCallback, the arguments will be as follows:- data : - salobj.BaseMsgTypeMessage from the topic described by topic_callback.
- topic_callback : - TopicCallbackTopic callback wrapper.
 
 
- **kwargs