netdef.Rules package¶
Rules¶
Rules¶
-
netdef.Rules.Rules.
register
(name, classref=None)[source]¶ A decorator to register rules. Example:
from netdef.Rules import BaseRule, Rules @Rules.register("NewRuleTemplate") class NewRuleTemplate(BaseRule.BaseRule): def __init__(self, name, shared): ...
Can also be called as a normal function:
from netdef.Rules import BaseRule, Rules def setup(shared): Rules.register("NewRuleTemplate", NewRuleTemplate) class NewRuleTemplate(BaseRule.BaseRule): def __init__(self, name, shared): ...
Parameters: - name (str) – Name of the rule class
- classref (object) – Should be None if used as a decorator and a class if called as a function
Returns: A callable that returns a class if used as a decorator and a class if called as a normal function
Abstract base¶
This is an abstract baseclass
BaseRule¶
-
class
netdef.Rules.BaseRule.
BaseRule
(name, shared)[source]¶ Bases:
object
Abstract class for rules.
Parameters: - name (str) – Name to be used in logfiles
- shared (netdef.Shared.Shared) – a reference to the shared object
-
add_class_to_controller
(source_name, controller_name=None)[source]¶ Sends ADD_PARSER to controls. Controllers will use static functions defined in these classes to decode / encode values etc.
Parameters: - source_name (str) – source name as string
- controller_name (str) – controller name as string
-
add_instance_to_controller
(item_instance)[source]¶ Send ADD_SOURCE to controller of given source.
Parameters: item_instance (netdef.Sources.BaseSource) – source instance
-
add_new_expression
(expr_info)[source]¶ This function does too many things:
- Updates shared.expressions.instances (indirectly via self.maintain_searches)
- Associate the sources with expressions as arguments
- Finds sources and sends them to controllers with ADD_SOURCE message
-
add_new_parser
(source_name, controller_name=None)[source]¶ It is not always easy for a controller to understand what kind data that a source regards as value. Some controllers do not even know which source to update with data.
Therefore the source classes has static functions that the controller can use to find out these things.
Use this function to add a source class to a controller as a parser.
Parameters: - source_name (str) – source as string
- controller_name (str) – controller as string
-
convert_to_instance
(item_name, source_name, controller_name, rule_name, defaultvalue)[source]¶ Uses the source name to find the actual source class. Make a instance off the given source class, returns the instance
Parameters: - item_name (str) – item as string
- source_name (str) – source as string
- controller_name (str) – controller as string
- rule_name (str) – rule as string
- defaultvalue – could be anything.
Returns: instance of source
-
get_expressions
(instance)[source]¶ Returns all expression that is associated with the given instance
Returns: list or None
-
static
get_module_from_string
(mod_str, package=None, abs_root=None, location_name=None, mod_name=None)[source]¶
-
has_existing_instance
(source_instance)[source]¶ Returns True if the source we are working on already exists. This is important, because we do not want more than one source instance for each value…
-
loop_incoming
()[source]¶ Get every message from the queue and dispatch the associated handler function
-
rule_name_from_key
(key, default_rule_name)[source]¶ Check if rule name is valid.
Parameters: - key (str) – the source key
- default_rule_name (str) – rule name to use if not found by given key
Returns: rule name
Return type: str
Raises: ValueError – if rule does not exists
-
run
()[source]¶ Override this function in rule. Example:
def run(self): self.logger.info("Running") while not self.has_interrupt(): self.loop_incoming() # dispatch handle_* functions self.logger.info("Stopped")
-
send_expressions_to_engine
(item_instance, expressions, value, source_time, status_code)[source]¶ Send RUN_EXPRESSION to the engine
Parameters: - item_instance – the source instance that triggered the expressions
- expressions (list) – list of expressions
-
setup
()[source]¶ Implement the following:
- Open and read a configuration file
- Create SourceInfo for the sources found in config
- Create instance of expression found in config
- Create source instances based on data in SourceInfo
- Link source instances to expression.
- Send ADD_SOURCE and ADD_PARSER to controllers
-
sleep
(seconds)[source]¶ ” Sleep by waiting for the interrupt. Should be used instead of time.sleep. Override if sleep should be interrupted by even more signals
-
source_and_controller_from_key
(key, controller=None)[source]¶ Check if controller name is valid. Returns a valid (key, controller) tuple
Parameters: - key (str) – the source key
- controller (str) – controller name to use if not found by given key
Returns: tuple of key and controller
Return type: tuple
Raises: ValueError – if controller does not exists
-
class
netdef.Rules.BaseRule.
ExpressionInfo
(module, arguments, func='expression', setup='setup')[source]¶ Bases:
object
This is a data class that describes an expression. The rule shall create an expression based on this description
-
arguments
¶
-
func
¶
-
module
¶
-
setup
¶
-
Built-in rule modules¶
CSVRule¶
-
class
netdef.Rules.CSVRule.
CSVRule
(name, shared)[source]¶ Bases:
netdef.Rules.BaseRule.BaseRule
Tip
Development Status :: 5 - Production/Stable
InfluxDBLoggerRule¶
-
class
netdef.Rules.InfluxDBLoggerRule.
InfluxDBLoggerRule
(name, shared)[source]¶ Bases:
netdef.Rules.BaseRule.BaseRule
-
run
()[source]¶ Main loop. Will exit when receiving interrupt signal. Calls
setup_auto_logging()
once at startup
-
INIRule¶
-
class
netdef.Rules.INIRule.
INIRule
(name, shared)[source]¶ Bases:
netdef.Rules.BaseRule.BaseRule
Caution
Development Status :: 4 - Beta
YAMLRule¶
-
class
netdef.Rules.YAMLRule.
YAMLRule
(name, shared)[source]¶ Bases:
netdef.Rules.BaseRule.BaseRule
Danger
Development Status :: 3 - Alpha