From a9e2585d5a46923cab2456ad8f2bd32c44018e88 Mon Sep 17 00:00:00 2001 From: Robert Sander Date: Thu, 8 Aug 2024 12:00:11 +0200 Subject: [PATCH] wagner_racksens2 for CMK 2.3 --- .../agent_based/wagner_racksens2.py | 36 +++++++------ .../metrics => graphing}/wagner_racksens2.py | 41 +++++++------- wagner_racksens2/rulesets/wagner_racksens2.py | 48 +++++++++++++++++ wagner_racksens2/wagner_racksens2-2.2.0.mkp | Bin 24228 -> 0 bytes wagner_racksens2/wagner_racksens2-3.0.0.mkp | Bin 0 -> 23672 bytes .../web/plugins/wato/wagner_racksens2.py | 51 ------------------ 6 files changed, 91 insertions(+), 85 deletions(-) rename wagner_racksens2/{lib/check_mk/base/plugins => }/agent_based/wagner_racksens2.py (94%) rename wagner_racksens2/{web/plugins/metrics => graphing}/wagner_racksens2.py (58%) create mode 100644 wagner_racksens2/rulesets/wagner_racksens2.py delete mode 100644 wagner_racksens2/wagner_racksens2-2.2.0.mkp create mode 100644 wagner_racksens2/wagner_racksens2-3.0.0.mkp delete mode 100644 wagner_racksens2/web/plugins/wato/wagner_racksens2.py diff --git a/wagner_racksens2/lib/check_mk/base/plugins/agent_based/wagner_racksens2.py b/wagner_racksens2/agent_based/wagner_racksens2.py similarity index 94% rename from wagner_racksens2/lib/check_mk/base/plugins/agent_based/wagner_racksens2.py rename to wagner_racksens2/agent_based/wagner_racksens2.py index 17251682..4ee03bfd 100644 --- a/wagner_racksens2/lib/check_mk/base/plugins/agent_based/wagner_racksens2.py +++ b/wagner_racksens2/agent_based/wagner_racksens2.py @@ -16,22 +16,26 @@ # to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, # Boston, MA 02110-1301 USA. -from .agent_based_api.v1 import ( +from cmk.agent_based.v2 import ( check_levels, + CheckPlugin, + CheckResult, contains, - register, - render, + DiscoveryResult, Metric, + render, OIDEnd, Result, Service, + SNMPSection, SNMPTree, State, + StringTable, ) -from .utils import temperature +from cmk.plugins.lib import temperature -def parse_wagner_racksens2(string_table): +def parse_wagner_racksens2(string_table: StringTable): section = { 'info': [ ('Manufacturer', string_table[0][0][0]), @@ -77,7 +81,7 @@ def parse_wagner_racksens2(string_table): int(string_table[0][0][temp + 9])) ) return section -register.snmp_section( +snmp_section_wagner_racksens2 = SNMPSection( name="wagner_racksens2", detect=contains(".1.3.6.1.2.1.1.2.0", ".1.3.6.1.4.1.34187.57949"), parse_function=parse_wagner_racksens2, @@ -164,7 +168,7 @@ def check_wagner_racksens2_info(section): yield Result(state=State.OK, summary="%s: %s" % (key, value)) -register.check_plugin( +check_plugin_wagner_racksens2_info = CheckPlugin( name="wagner_racksens2_info", sections=['wagner_racksens2'], service_name="Racksens2 Info", @@ -199,7 +203,7 @@ def check_wagner_racksens2_detector(item, params, section): yield Result(state=State.CRIT, summary="Fire Alarm") yield from check_levels( vals['smoke'], - levels_upper=params.get('smoke_levels'), + levels_upper=("fixed", params.get('smoke_levels')), metric_name="smoke_perc", label="Smoke detected", render_func=render.percent, @@ -207,17 +211,17 @@ def check_wagner_racksens2_detector(item, params, section): levels_lower = params.get('chamber_levels') if isinstance(levels_lower, tuple): warn, crit = levels_lower - levels_lower = (-warn, -crit) + levels_lower = ("fixed", (-warn, -crit)) yield from check_levels( vals['chamber'], - levels_upper=params.get('chamber_levels'), + levels_upper=("fixed", params.get('chamber_levels')), levels_lower=levels_lower, metric_name="chamber_perc", label="Chamber Deviation", render_func=render.percent, ) -register.check_plugin( +check_plugin_wagner_racksens2_detector = CheckPlugin( name="wagner_racksens2_detector", sections=['wagner_racksens2'], service_name="Racksens2 Detector %s", @@ -263,7 +267,7 @@ def check_wagner_racksens2_temp(item, params, section): dev_status_name = 'Alarm', ) -register.check_plugin( +check_plugin_wagner_racksens2_temp = CheckPlugin( name="wagner_racksens2_temp", sections=['wagner_racksens2'], service_name="Racksens2 Temp %s", @@ -298,7 +302,7 @@ def check_wagner_racksens2_alarm(item, section): status = map_status.get(section['alarms'][item], State.UNKNOWN) yield Result(state=status, summary="Status: %d" % section['alarms'][item]) -register.check_plugin( +check_plugin_wagner_racksens2_alarm = CheckPlugin( name="wagner_racksens2_alarm", sections=['wagner_racksens2'], service_name="Racksens2 Alarm %s", @@ -330,14 +334,14 @@ def check_wagner_racksens2_airflow(section): yield Metric('airflow_meter', airflow[1]) yield from check_levels( airflow[2], - levels_upper=(None, airflow[3]), - levels_lower=(None, -airflow[3]), + levels_upper=("fixed", (airflow[3], airflow[3])), + levels_lower=("fixed", (-airflow[3], -airflow[3])), metric_name='deviation_airflow', label='Deviation', render_func=render.percent, ) -register.check_plugin( +check_plugin_wagner_racksens2_airflow = CheckPlugin( name="wagner_racksens2_airflow", sections=['wagner_racksens2'], service_name="Racksens2 Airflow", diff --git a/wagner_racksens2/web/plugins/metrics/wagner_racksens2.py b/wagner_racksens2/graphing/wagner_racksens2.py similarity index 58% rename from wagner_racksens2/web/plugins/metrics/wagner_racksens2.py rename to wagner_racksens2/graphing/wagner_racksens2.py index 2f7d1ba3..983d2f63 100644 --- a/wagner_racksens2/web/plugins/metrics/wagner_racksens2.py +++ b/wagner_racksens2/graphing/wagner_racksens2.py @@ -17,24 +17,29 @@ # to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, # Boston, MA 02110-1301 USA. -from cmk.utils.render import physical_precision -from cmk.gui.plugins.metrics.unit import physical_precision_list +from cmk.graphing.v1 import Title +from cmk.graphing.v1.metrics import ( + Color, + DecimalNotation, + IECNotation, + Metric, + StrictPrecision, + Unit, +) -unit_info["m/s"] = { - "title": _("Meters per second"), - "symbol": _("m/s"), - "render": lambda v: physical_precision(v, 3, _("m/s")), - "graph_unit": lambda v: physical_precision_list(v, 3, _("m/s")), -} +UNIT_METERS_PER_SECOND = Unit(IECNotation("m/s")) +UNIT_PERCENT = Unit(DecimalNotation("%"), StrictPrecision(2)) -metric_info["chamber_perc"] = { - "title": _("Chamber Deviation"), - "unit": "%", - "color": "#88f060", -} +metric_chamber_perc = Metric( + name = "chamber_perc", + title = Title("Chamber Deviation"), + unit = UNIT_PERCENT, + color = Color.LIGHT_GREEN, +) -metric_info["airflow_meter"] = { - "title": _("Airflow"), - "unit": "m/s", - "color": "#123456", -} +metric_airflow_meter = Metric( + name = "airflow_meter", + title = Title("Airflow"), + unit = UNIT_METERS_PER_SECOND, + color = Color.PURPLE, +) diff --git a/wagner_racksens2/rulesets/wagner_racksens2.py b/wagner_racksens2/rulesets/wagner_racksens2.py new file mode 100644 index 00000000..082496d4 --- /dev/null +++ b/wagner_racksens2/rulesets/wagner_racksens2.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 +# -*- encoding: utf-8; py-indent-offset: 4 -*- + +from cmk.rulesets.v1 import Help, Title +from cmk.rulesets.v1.form_specs import ( + DictElement, + Dictionary, + Integer, + InputHint, + LevelDirection, + migrate_to_integer_simple_levels, + SimpleLevels, + String, +) +from cmk.rulesets.v1.rule_specs import CheckParameters, HostAndItemCondition, Topic + +def _parameter_form_wagner_racksens2_detector() -> Dictionary: + return Dictionary( + elements = { + "smoke_levels": DictElement( + parameter_form=SimpleLevels( + title = Title("Smoke Levels"), + level_direction = LevelDirection.UPPER, + form_spec_template = Integer(unit_symbol="%"), + migrate=migrate_to_integer_simple_levels, + prefill_fixed_levels=InputHint(value=(3, 5)), + )), + "chamber_levels": DictElement( + parameter_form=SimpleLevels( + title = Title("Chamber Levels"), + level_direction = LevelDirection.UPPER, + form_spec_template = Integer(unit_symbol="%"), + migrate=migrate_to_integer_simple_levels, + prefill_fixed_levels=InputHint(value=(10, 20)), + )), + }, + ) + +rule_spec_wagner_racksens2_detector = CheckParameters( + name="wagner_racksens2_detector", + topic=Topic.ENVIRONMENTAL, + parameter_form=_parameter_form_wagner_racksens2_detector, + title=Title("Wagner Racksens2 Smoke Detector"), + condition=HostAndItemCondition( + item_title=Title("Sensor ID"), + item_form=String(help_text=Help("The identifier of the smoke detector.")), + ), +) diff --git a/wagner_racksens2/wagner_racksens2-2.2.0.mkp b/wagner_racksens2/wagner_racksens2-2.2.0.mkp deleted file mode 100644 index d8c887176747a14cff0e149db243ae596c278431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24228 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 diff --git a/wagner_racksens2/wagner_racksens2-3.0.0.mkp b/wagner_racksens2/wagner_racksens2-3.0.0.mkp new file mode 100644 index 0000000000000000000000000000000000000000..e91b7d8180d42da19ada75d25325a6f8c97ab91d GIT binary patch literal 23672 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 literal 0 HcmV?d00001 diff --git a/wagner_racksens2/web/plugins/wato/wagner_racksens2.py b/wagner_racksens2/web/plugins/wato/wagner_racksens2.py deleted file mode 100644 index 482009e8..00000000 --- a/wagner_racksens2/web/plugins/wato/wagner_racksens2.py +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env python3 -# -*- encoding: utf-8; py-indent-offset: 4 -*- - -from cmk.gui.i18n import _ -from cmk.gui.valuespec import ( - Dictionary, - Tuple, - Integer, - TextInput, -) - -from cmk.gui.plugins.wato.utils import ( - rulespec_registry, - CheckParameterRulespecWithItem, - RulespecGroupCheckParametersEnvironment, -) - -def _parameter_valuespec_wagner_racksens2_detector(): - return Dictionary( - elements = [ - ( 'smoke_levels', - Tuple( - title = _("Smoke Levels"), - elements = [ - Integer(title = _("Warning at"), unit='%', default_value=3), - Integer(title = _("Critical at"), unit='%', default_value=5), - ] - )), - ( 'chamber_levels', - Tuple( - title = _("Chamber Levels"), - elements = [ - Integer(title = _("Warning at"), unit='%', default_value=10), - Integer(title = _("Critical at"), unit='%', default_value=20), - ] - )), - ], - optional_keys = ['smoke_levels', 'chamber_levels'], - ) - -rulespec_registry.register( - CheckParameterRulespecWithItem( - check_group_name="wagner_racksens2_detector", - group=RulespecGroupCheckParametersEnvironment, - match_type="dict", - parameter_valuespec=_parameter_valuespec_wagner_racksens2_detector, - title=lambda: _("Wagner Racksens2 Smoke Detector"), - item_spec=lambda: TextInput( - title=_("Sensor ID"), help=_("The identifier of the smoke detector.") - ), - ))