From 616680a679dab87f5bc0e21803ec1ff2fa971e3c Mon Sep 17 00:00:00 2001
From: "Th.L" <thl-cmk@outlook.com>
Date: Thu, 15 Jul 2021 21:50:00 +0200
Subject: [PATCH] update project

---
 agent_based/cisco_wlc_temp.py      | 124 +++++++++++++++++++++++++++++
 checkman/cisco_wlc_temp            |  19 ++---
 cisco_wlc_temp.mkp                 | Bin 2686 -> 2856 bytes
 packages/cisco_wlc_temp            |  23 +++---
 web/plugins/wato/cisco_wlc_temp.py |  78 +++++++++++++-----
 5 files changed, 206 insertions(+), 38 deletions(-)
 create mode 100644 agent_based/cisco_wlc_temp.py

diff --git a/agent_based/cisco_wlc_temp.py b/agent_based/cisco_wlc_temp.py
new file mode 100644
index 0000000..37ae9de
--- /dev/null
+++ b/agent_based/cisco_wlc_temp.py
@@ -0,0 +1,124 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# License: GNU General Public License v2
+#
+# Author: thl-cmk[at]outlook[dot]com
+# URL   : https://thl-cmk.hopto.org
+# Date  : 2016-03-31
+#
+# Monitors Cisco WLC temperature sensor
+#
+# tested with WLC2504, WLC5520
+#
+# 2016-07-02: fixed crit/warn to >=
+# 2018-09-14: workaround for wrong data from Mobility Express Controller --> removed
+# 2021-07-15: rewritten for CMK 2.0
+#
+# sample snmpwalk
+#
+# .1.3.6.1.4.1.14179.2.3.1.12.0 = STRING: "1"
+# .1.3.6.1.4.1.14179.2.3.1.13.0 = STRING: "18"
+# .1.3.6.1.4.1.14179.2.3.1.14.0 = STRING: "10"
+# .1.3.6.1.4.1.14179.2.3.1.15.0 = STRING: "38"
+#
+# sample string_table
+#
+# [['1', '18', '10', '38']]
+#
+
+from dataclasses import dataclass
+from typing import Optional
+from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import (
+    DiscoveryResult,
+    CheckResult,
+    StringTable,
+)
+
+from cmk.base.plugins.agent_based.agent_based_api.v1 import (
+    register,
+    Service,
+    Result,
+    SNMPTree,
+    contains,
+    State,
+    check_levels,
+)
+
+
+@dataclass
+class CiscoWlcTemp:
+    environment: str
+    current: int
+    lowlimit: float
+    highlimit: float
+
+
+_wlc_temp_environment = {
+    '0': 'unknown',
+    '1': 'commercial',
+    '2': 'industrial',
+}
+
+
+def parse_cisco_wlc_temp(string_table: StringTable) -> Optional[CiscoWlcTemp]:
+    try:
+        environment, temperature, lowlimit, highlimit = string_table[0]
+    except IndexError:
+        return
+
+    temperature = int(temperature)
+    highlimit = int(highlimit)
+    lowlimit = int(lowlimit)
+    environment = _wlc_temp_environment.get(environment)
+    return CiscoWlcTemp(
+        environment=environment,
+        current=temperature,
+        lowlimit=lowlimit,
+        highlimit=highlimit,
+    )
+
+
+def discovery_cisco_wlc_temp(section: CiscoWlcTemp) -> DiscoveryResult:
+    yield Service()
+
+
+def check_cisco_wlc_temp(params, section: CiscoWlcTemp) -> CheckResult:
+    yield from check_levels(
+        value=section.current,
+        label='Temperature',
+        levels_upper=params['levels_upper'],
+        levels_lower=params['levels_lower'],
+        render_func=lambda v: f'{v}°C',
+        metric_name='temp',
+        boundaries=(0, 100),
+    )
+
+    yield Result(state=State.OK,
+                 notice=f'Lower/upper levels reported by the device: {section.lowlimit}°C/{section.highlimit}°C')
+    yield Result(state=State.OK, notice=f'Environment type reported by the device: {section.environment}')
+
+
+register.snmp_section(
+    name='cisco_wlc_temp',
+    parse_function=parse_cisco_wlc_temp,
+    fetch=SNMPTree(
+        base='.1.3.6.1.4.1.14179.2.3.1',  # AIRESPACE-WIRELESS-MIB::bsnGlobalDot11Config
+        oids=[
+            '12',  # bsnOperatingTemperatureEnvironment
+            '13',  # bsnSensorTemperature (Current Internal Temperature of the unit in Centigrade)
+            '14',  # bsnTemperatureAlarmLowLimit
+            '15',  # bsnTemperatureAlarmHighLimit
+        ]
+    ),
+    detect=contains('.1.3.6.1.2.1.1.1.0', 'Cisco Controller'),  # sysDescr
+)
+
+register.check_plugin(
+    name='cisco_wlc_temp',
+    service_name='Temperature',
+    discovery_function=discovery_cisco_wlc_temp,
+    check_function=check_cisco_wlc_temp,
+    check_default_parameters={'levels_upper': (36, 38), 'levels_lower': (12, 10)},
+    check_ruleset_name='cisco_wlc_temp',
+)
diff --git a/checkman/cisco_wlc_temp b/checkman/cisco_wlc_temp
index cb4b034..2329c01 100644
--- a/checkman/cisco_wlc_temp
+++ b/checkman/cisco_wlc_temp
@@ -1,30 +1,31 @@
-title: Cisco WLC: temperatur sensors
+title: Cisco WLC: temperature sensor
 agents: snmp
 author: Th.L.
 catalog: hw/network/cisco
 license: GPLv3
 distribution: unkown
 description:
- The Cisco "Wireless LAN Controller" (WLC) has some temperatur sensors.
- This check allows to monitor this sensors. Default levels are 60°/70° celsius 
- for warning/critical.
+ The Cisco "Wireless LAN Controller" (WLC) has some temperature sensors.
+ This check allows to monitor this sensors.
  The check uses the bsnSensorTemperature from the AIRESPACE-WIRELESS-MIB  (1.3.6.1.4.1.14179). 
- The check is tested against WLC2504 devices.
+ The check is tested against WLC2504 and WLC5520 devices.
 
 
 perfdata:
-  Temperatur
+  temp
 
 
 item:
-  One item per temperatur sensor is generated.
+  There is no item.
 
 
 inventory:
-  The check detects WLC temperatur sensors and saves them.
+  The check detects WLC temperature sensors and saves them.
 
 
 parameters:
-  Warning/Critical levels. Default is 60°/70° celsius.
+  lower_levels, default is 12°C/10°C
+  upper_levels, default is 36°C/38°C
+
 
 
diff --git a/cisco_wlc_temp.mkp b/cisco_wlc_temp.mkp
index 4d4807e2bea9c71f8777ecff0b4dc3ad19429912..71b877e41331ed5e39b76fc356b087c056f8e8cb 100644
GIT binary patch
delta 2825
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
b5eNj6QVJlG-3JK_UyFYOBc$sP0H6Q>zKf}j

delta 2659
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
R4Iun~;lG%L<qZI!005JuH4Fd%

diff --git a/packages/cisco_wlc_temp b/packages/cisco_wlc_temp
index 6e34fe6..b864ecb 100644
--- a/packages/cisco_wlc_temp
+++ b/packages/cisco_wlc_temp
@@ -1,14 +1,15 @@
-{'author': u'Th.L. (thl-cmk[at]outlook[dot]com)',
- 'description': u'monitor Cisco WLC temperatur sensor\n\ntested with WLC2504\n',
+{'author': 'Th.L. (thl-cmk[at]outlook[dot]com)',
+ 'description': 'monitor Cisco WLC temperature sensor\n'
+                '\n'
+                'tested with WLC2504 and WLC5520\n',
  'download_url': 'https://thl-cmk.hopto.org',
- 'files': {'checkman': ['cisco_wlc_temp'],
-           'checks': ['cisco_wlc_temp'],
-           'web': ['plugins/wato/cisco_wlc_temp.py',
-                   'plugins/metrics/cisco_wlc_temp.py']},
+ 'files': {'agent_based': ['cisco_wlc_temp.py'],
+           'checkman': ['cisco_wlc_temp'],
+           'web': ['plugins/wato/cisco_wlc_temp.py']},
  'name': 'cisco_wlc_temp',
- 'num_files': 4,
- 'title': u'monitor Cisco WLC temperatur sensor',
- 'version': '20180805.v.0.0.1',
- 'version.min_required': '1.2.8b8',
- 'version.packaged': '1.6.0p12',
+ 'num_files': 3,
+ 'title': 'monitor Cisco WLC temperature sensor',
+ 'version': '20210715.v.0.2',
+ 'version.min_required': '2.0.0',
+ 'version.packaged': '2021.07.14',
  'version.usable_until': None}
\ No newline at end of file
diff --git a/web/plugins/wato/cisco_wlc_temp.py b/web/plugins/wato/cisco_wlc_temp.py
index ef71059..e0ecbb4 100644
--- a/web/plugins/wato/cisco_wlc_temp.py
+++ b/web/plugins/wato/cisco_wlc_temp.py
@@ -1,22 +1,64 @@
-#!/usr/bin/python
-# -*- encoding: utf-8; py-indent-offset: 4 -*-
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
 #
-# Author : Th.L.
-# Content: wato plugin for snmp check 'cisco_wlc_temp'
-#          to configure waring/critical levels
+# License: GNU General Public License v2
 #
+# Author: thl-cmk[at]outlook[dot]com
+# URL   : https://thl-cmk.hopto.org
+# Date  : 2016-03-31
 #
-register_check_parameters(
-    subgroup_environment,
-    'cisco_wlc_temp',
-    _('Cisco WLC temperatur sensor'),
-    Tuple(
-        title=_('Cisco WLC temperatur sensor thresholds'),
-        elements=[
-            Integer(title=_('warning at'), unit=_(u'° celsius'), default_value=50),
-            Integer(title=_('critical at'), unit=_(u'° celsius'), default_value=60),
-        ]
-    ),
-    None,
-    None
+# WATO for plugin cisco_wlc_temp
+#
+#
+
+from cmk.gui.i18n import _
+from cmk.gui.valuespec import (
+    Dictionary,
+    Tuple,
+    Integer,
+)
+
+from cmk.gui.plugins.wato import (
+    CheckParameterRulespecWithItem,
+    rulespec_registry,
+    RulespecGroupCheckParametersNetworking,
 )
+
+
+def _parameter_valuespec_cisco_wlc_temp():
+    return Dictionary(elements=[
+        ('levels_upper',
+         Tuple(
+             title=_('Temperature upper levels'),
+             help=_('Set the upper levels for temperature in °C. From the MID description: '
+                    'Operating Environment of the Airespace Switch. commercial is Commercial (0 to 40 C) '
+                    'and industrial is Industrial (-10 to 70 C)'),
+             elements=[
+                 Integer(title=_('Warning at'), unit=u'°C', default_value=36, minvalue=-20, maxvalue=100),
+                 Integer(title=_('Critical at'), unit=u'°C', default_value=38, minvalue=-20, maxvalue=100)
+             ],
+         ),
+         ),
+        ('levels_lower',
+         Tuple(
+             title=_('Temperature lower levels'),
+             help=_('Set the lower levels for temperature in °C From the MID description: '
+                    'Operating Environment of the Airespace Switch. commercial is Commercial (0 to 40 C) '
+                    'and industrial is Industrial (-10 to 70 C)'),
+             elements=[
+                 Integer(title=_('Warning below'), unit=u'°C', default_value=12, minvalue=-20, maxvalue=100),
+                 Integer(title=_('Critical below'), unit=u'°C', default_value=10, minvalue=-20, maxvalue=100)
+             ],
+         ),
+         ),
+    ])
+
+
+rulespec_registry.register(
+    CheckParameterRulespecWithItem(
+        check_group_name='cisco_wlc_temp',
+        group=RulespecGroupCheckParametersNetworking,
+        match_type='dict',
+        parameter_valuespec=_parameter_valuespec_cisco_wlc_temp,
+        title=lambda: _('Cisco WLC Temperature'),
+    ))
-- 
GitLab