From 616372346d8b4ecddecae0d948e30846f7a55109 Mon Sep 17 00:00:00 2001
From: "th.l" <thl-cmk@outlook.com>
Date: Sun, 23 Apr 2023 19:30:50 +0200
Subject: [PATCH] update project

---
 agent_based/checkpoint_powersupply.py |  31 +++++++++---------
 checkpoint_powersupply.mkp            | Bin 3092 -> 2285 bytes
 gui/wato/checkpoint_powersupply.py    |  44 ++++++++++++++++++++++++++
 packages/checkpoint_powersupply       |  10 +++---
 4 files changed, 64 insertions(+), 21 deletions(-)
 create mode 100644 gui/wato/checkpoint_powersupply.py

diff --git a/agent_based/checkpoint_powersupply.py b/agent_based/checkpoint_powersupply.py
index 5a65d5c..fd3252a 100644
--- a/agent_based/checkpoint_powersupply.py
+++ b/agent_based/checkpoint_powersupply.py
@@ -12,6 +12,7 @@
 # 2020-06-08: changed snmp-scan function
 # 2021-08-10: rewritten for CMK 2.0
 #             added WATO
+# 2023-04-23: refactoring
 # 
 #
 # ToDo: remove VSX...
@@ -30,12 +31,6 @@
 # .1.3.6.1.4.1.2620.1.6.7.9.1.1.2.2.0 = STRING: Up
 
 #
-#
-# sample section
-# smart-1 5150
-# {'1': 'Present', '2': 'Present'}
-# 23800 appliance
-# {'1': 'Up', '2': 'Up'}
 
 from typing import Dict, Optional
 
@@ -59,12 +54,18 @@ from cmk.base.plugins.agent_based.agent_based_api.v1 import (
 
 
 def parse_checkpoint_powersupply(string_table: StringTable) -> Dict[str, str]:
-    powersupplys = {}
-    for psindex, psstatus in string_table:
-        if psindex.isdigit():
-            powersupplys.update({psindex: psstatus})
+    """
+    >>> print(parse_checkpoint_powersupply([['1', 'Up'], ['2', 'Up']]))
+    {'1': 'Up', '2': 'Up'}
+    >>> print(parse_checkpoint_powersupply([['1', 'Present'], ['2', 'Present']]))
+    {'1': 'Present', '2': 'Present'}
+    """
+    power_supplys = {}
+    for ps_index, ps_status in string_table:
+        if ps_index.isdigit():
+            power_supplys.update({ps_index: ps_status})
 
-    return powersupplys
+    return power_supplys
 
 
 def discovery_checkpoint_powersupply(section: Dict[str, str]) -> DiscoveryResult:
@@ -74,14 +75,14 @@ def discovery_checkpoint_powersupply(section: Dict[str, str]) -> DiscoveryResult
 
 def check_checkpoint_powersupply(item, params, section: Dict[str, str]) -> Optional[CheckResult]:
     try:
-        psstatus = section[item]
+        ps_status = section[item]
     except KeyError:
         return
 
-    if psstatus.lower() in ['up', 'present']:
-        yield Result(state=State.OK, summary=f'Status: {psstatus}')
+    if ps_status.lower() in ['up', 'present']:
+        yield Result(state=State.OK, summary=f'Status: {ps_status}')
     else:
-        yield Result(state=State(params['ps_not_up']), summary=f'Status: {psstatus}')
+        yield Result(state=State(params['ps_not_up']), summary=f'Status: {ps_status}')
 
 
 register.snmp_section(
diff --git a/checkpoint_powersupply.mkp b/checkpoint_powersupply.mkp
index c19b16f8fd251bf840ff1ac48959c090d01b69c8..fba787f008fc7b15b776c194a33d2a92720d899b 100644
GIT binary patch
delta 2251
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
ZKa=na7?bP^7z{rr{sSQMbhH3?002+PclZDR

delta 3049
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

diff --git a/gui/wato/checkpoint_powersupply.py b/gui/wato/checkpoint_powersupply.py
new file mode 100644
index 0000000..2fc4343
--- /dev/null
+++ b/gui/wato/checkpoint_powersupply.py
@@ -0,0 +1,44 @@
+#!/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  : 2021-08-10
+#
+# 2023-04-23: moved wato file to ~/local/lib/check_mk/gui/plugins/wato
+#             moved rule set from networking to hardware
+
+from cmk.gui.i18n import _
+from cmk.gui.valuespec import (
+    Dictionary,
+    TextAscii,
+    MonitoringState,
+)
+from cmk.gui.plugins.wato.utils import (
+    CheckParameterRulespecWithItem,
+    rulespec_registry,
+    RulespecGroupCheckParametersHardware,
+)
+
+
+def _parameter_valuespec_checkpoint_powersupply():
+    return Dictionary(elements=[
+        ('ps_not_up',
+         MonitoringState(
+             default_value=2,
+             title=_('State if power supply is not "UP" or "Present".'),
+         )),
+    ])
+
+
+rulespec_registry.register(
+    CheckParameterRulespecWithItem(
+        check_group_name='checkpoint_powersupply',
+        group=RulespecGroupCheckParametersHardware,
+        item_spec=lambda: TextAscii(title=_('Power Supply index'), ),
+        match_type='dict',
+        parameter_valuespec=_parameter_valuespec_checkpoint_powersupply,
+        title=lambda: _('Check Point Power Supply'),
+    ))
diff --git a/packages/checkpoint_powersupply b/packages/checkpoint_powersupply
index e2ab239..6180734 100644
--- a/packages/checkpoint_powersupply
+++ b/packages/checkpoint_powersupply
@@ -5,12 +5,10 @@
                 'WATO\n',
  'download_url': 'https://thl-cmk.hopto.org',
  'files': {'agent_based': ['checkpoint_powersupply.py'],
-           'checkman': ['checkpoint_powersupply'],
-           'web': ['plugins/wato/checkpoint_powersupply.py']},
+           'gui': ['wato/checkpoint_powersupply.py']},
  'name': 'checkpoint_powersupply',
- 'num_files': 3,
  'title': 'Check Point power supply status',
- 'version': '20210810.v0.0.2',
- 'version.min_required': '2.0.0',
- 'version.packaged': '2021.09.20',
+ 'version': '1.0.1-20230423',
+ 'version.min_required': '2.1.0b1',
+ 'version.packaged': '2.1.0p21',
  'version.usable_until': None}
\ No newline at end of file
-- 
GitLab