From ce797844139f3d46b22fdec8aec1e21ee2e61554 Mon Sep 17 00:00:00 2001
From: "th.l" <thl-cmk@outlook.com>
Date: Sat, 22 Apr 2023 19:19:18 +0200
Subject: [PATCH] update project

---
 CHANGELOG               |   1 +
 agent_based/inv_epsm.py |  56 ++++++++++++++++++++++------------------
 gui/views/inv_epsm.py   |  34 ++++++++++++++++++++++++
 inv_epsm.mkp            | Bin 2381 -> 2476 bytes
 packages/inv_epsm       |  10 +++----
 5 files changed, 70 insertions(+), 31 deletions(-)
 create mode 100644 gui/views/inv_epsm.py

diff --git a/CHANGELOG b/CHANGELOG
index 2c7296e..0272628 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1 +1,2 @@
 2021-11-27: initial release
+2023-04-22: moved inventory view to ~/local/lib/check_mk/gui/plugins/views
diff --git a/agent_based/inv_epsm.py b/agent_based/inv_epsm.py
index 48d8022..8609df2 100644
--- a/agent_based/inv_epsm.py
+++ b/agent_based/inv_epsm.py
@@ -51,31 +51,7 @@
 # .1.3.6.1.4.1.24734.13.2.1.1.6.1 = STRING: "v 4.0.0.5"
 # .1.3.6.1.4.1.24734.13.2.1.1.6.17 = STRING: "v 7.10.0.0"
 #
-# sample string_table
-# [
-#  [
-#   ['v 3.1.2.2']
-#  ],
-#  [
-#   ['M0', 'F_Master', '1', '1', 'PowerSwitch', 'v 3.3.0.0'],
-#   ['S1', 'F_Satellit', '1', '1', 'Power Switch 8-Port', 'v 4.0.0.5'],
-#   ['TH1', 'SEN-1', '1', '1', 'TH Sensor', 'v 7.10.0.0']
-#  ]
-# ]
-#
-# sample section
-# {
-#  'devices':
-#   [
-#    {'id': 'M0', 'name': 'F_Master', 'type': 'PowerSwitch', 'version': 'v 3.3.0.0',
-#     'status_columns': {'activated': '1', 'detected': '1'}},
-#    {'id': 'S1', 'name': 'F_Satellit', 'type': 'Power Switch 8-Port', 'version': 'v 4.0.0.5',
-#     'status_columns': {'activated': '1', 'detected': '1'}},
-#    {'id': 'TH1', 'name': 'SEN-1', 'type': 'TH Sensor', 'version': 'v 7.10.0.0',
-#     'status_columns': {'activated': '1', 'detected': '1'}}
-#   ],
-#  'version': 'v 3.1.2.2'
-# }
+
 
 from typing import List, Dict, Any
 
@@ -104,6 +80,36 @@ _device_detected = {
 
 
 def parse_inv_espm(string_table: List[StringTable]) -> Dict[str, Any]:
+    """
+    >>> from pprint import pp
+    >>> modules = []
+    >>> modules.append(['M0', 'F_Master', '1', '1', 'PowerSwitch', 'v 3.3.0.0'])
+    >>> modules.append(['S1', 'F_Satellit', '1', '1', 'Power Switch 8-Port', 'v 4.0.0.5'])
+    >>> modules.append(['TH1', 'SEN-1', '1', '1', 'TH Sensor', 'v 7.10.0.0'])
+    >>> string_table = [[['v 3.1.2.2']], modules]
+    >>> pp(string_table)
+    [[['v 3.1.2.2']],
+     [['M0', 'F_Master', '1', '1', 'PowerSwitch', 'v 3.3.0.0'],
+      ['S1', 'F_Satellit', '1', '1', 'Power Switch 8-Port', 'v 4.0.0.5'],
+      ['TH1', 'SEN-1', '1', '1', 'TH Sensor', 'v 7.10.0.0']]]
+    >>> pp(parse_inv_espm(string_table))
+    {'devices': [{'id': 'M0',
+                  'name': 'F_Master',
+                  'type': 'PowerSwitch',
+                  'version': 'v 3.3.0.0',
+                  'status_columns': {'activated': 'True', 'detected': 'True'}},
+                 {'id': 'S1',
+                  'name': 'F_Satellit',
+                  'type': 'Power Switch 8-Port',
+                  'version': 'v 4.0.0.5',
+                  'status_columns': {'activated': 'True', 'detected': 'True'}},
+                 {'id': 'TH1',
+                  'name': 'SEN-1',
+                  'type': 'TH Sensor',
+                  'version': 'v 7.10.0.0',
+                  'status_columns': {'activated': 'True', 'detected': 'True'}}],
+     'version': 'v 3.1.2.2'}
+     """
     version, devices = string_table
 
     section = {
diff --git a/gui/views/inv_epsm.py b/gui/views/inv_epsm.py
new file mode 100644
index 0000000..8a7bc4a
--- /dev/null
+++ b/gui/views/inv_epsm.py
@@ -0,0 +1,34 @@
+#!/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-11-27
+#
+# inventory view for Noel epower switch
+#
+# 2023-04-22: moved to ~/local/lib/check_mk/gui/plugins/views
+#
+
+from cmk.gui.plugins.views.utils import (
+    inventory_displayhints,
+)
+from cmk.gui.i18n import _
+from cmk.gui.plugins.views.inventory import declare_invtable_view
+
+inventory_displayhints.update({
+    '.hardware.devices:': {'title': _('Devices'),
+                           'keyorder': ['id', 'name', 'type', 'version', 'detected', 'activated', ],
+                           'view': 'invdevices_of_host',
+                           },
+    '.hardware.devices:*.id': {'title': _('ID'), },
+    '.hardware.devices:*.name': {'title': _('Name')},
+    '.hardware.devices:*.type': {'title': _('Type'), },
+    '.hardware.devices:*.version': {'title': _('Version')},
+    '.hardware.devices:*.detected': {'title': _('Detected'), },
+    '.hardware.devices:*.activated': {'title': _('Activated'), },
+})
+
+declare_invtable_view('invdevices', '.hardware.devices:', _('Devices'), _('Devices'))
diff --git a/inv_epsm.mkp b/inv_epsm.mkp
index c2b348ebeb990ca2c4bc44e346c5934953bc581b..1a4e4fd32c6cf71a6a46f3c6aeeafead3013a8d6 100644
GIT binary patch
literal 2476
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
VUhsdTm34=+nC8S>U<qPj`48_u2H*ey

literal 2381
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

diff --git a/packages/inv_epsm b/packages/inv_epsm
index 17d3780..409cafe 100644
--- a/packages/inv_epsm
+++ b/packages/inv_epsm
@@ -1,12 +1,10 @@
 {'author': 'Th.L. (thl-cmk[at]outlook[dot]com)',
  'description': 'Inventory Neols ePowerSwitch \n',
  'download_url': 'https://thl-cmk.hopto.org',
- 'files': {'agent_based': ['inv_epsm.py'],
-           'web': ['plugins/views/inv_epsm.py']},
+ 'files': {'agent_based': ['inv_epsm.py'], 'gui': ['views/inv_epsm.py']},
  'name': 'inv_epsm',
- 'num_files': 2,
  'title': 'Neol ePowerswitch inventory',
- 'version': '20211127.v.0.0.1',
- 'version.min_required': '2.0.0',
- 'version.packaged': '2021.09.20',
+ 'version': '0.0.2-20230422',
+ 'version.min_required': '2.1.0b1',
+ 'version.packaged': '2.1.0p21',
  'version.usable_until': None}
\ No newline at end of file
-- 
GitLab