From 5803e49701388b15dc5f591888fc38ef5f3853e6 Mon Sep 17 00:00:00 2001
From: "th.l" <thl-cmk@outlook.com>
Date: Fri, 10 May 2024 21:04:14 +0200
Subject: [PATCH] update project

---
 README.md                                     |   1 +
 {doc => img}/.gitkeep                         |   0
 {doc => img}/sample.png                       | Bin
 inv_opengear_base.mkp                         | Bin 2274 -> 0 bytes
 .../inv_opengear_base-0.0.2-20230614.mkp      | Bin
 mkp/inv_opengear_base-0.0.3-20240510.mkp      | Bin 0 -> 2259 bytes
 .../agent_based}/inv_opengear_base.py         |  46 ++++++++++--------
 .../packages}/inv_opengear_base               |   6 +--
 8 files changed, 30 insertions(+), 23 deletions(-)
 rename {doc => img}/.gitkeep (100%)
 rename {doc => img}/sample.png (100%)
 delete mode 100644 inv_opengear_base.mkp
 rename inv_opengear_base-0.0.2-20230614.mkp => mkp/inv_opengear_base-0.0.2-20230614.mkp (100%)
 create mode 100644 mkp/inv_opengear_base-0.0.3-20240510.mkp
 rename {agent_based => source/agent_based}/inv_opengear_base.py (86%)
 rename {packages => source/packages}/inv_opengear_base (87%)

diff --git a/README.md b/README.md
index 7eb2158..3a565ea 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,4 @@
+[PACKAGE]: ../../raw/master/mkp/inv_opengear_base-0.0.3-20240510.mkp "inv_opengear_base-0.0.3-20240510.mkp"
 # Hardware inventory
 
 This plugin adds the serial number, model, manufacturer and firmware version of opengear console servers to the inventory.
diff --git a/doc/.gitkeep b/img/.gitkeep
similarity index 100%
rename from doc/.gitkeep
rename to img/.gitkeep
diff --git a/doc/sample.png b/img/sample.png
similarity index 100%
rename from doc/sample.png
rename to img/sample.png
diff --git a/inv_opengear_base.mkp b/inv_opengear_base.mkp
deleted file mode 100644
index aa8471c184112a93a9f1e79573c2b6b0b866d2e0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

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

diff --git a/inv_opengear_base-0.0.2-20230614.mkp b/mkp/inv_opengear_base-0.0.2-20230614.mkp
similarity index 100%
rename from inv_opengear_base-0.0.2-20230614.mkp
rename to mkp/inv_opengear_base-0.0.2-20230614.mkp
diff --git a/mkp/inv_opengear_base-0.0.3-20240510.mkp b/mkp/inv_opengear_base-0.0.3-20240510.mkp
new file mode 100644
index 0000000000000000000000000000000000000000..f9a9ca9a4a4f4c6c26d65893bead8fabdc504857
GIT binary patch
literal 2259
zcmV;^2rTy>iwFR&Z$4%M|Ls}pa-%vD_HRFhHuD2}7Zbqv5~{paIdRTx&WV%M#F?Gi
zjLU_M9CHQ(3nG(LHgB?TvoE$S0Y>1<keN;PrmiFe>1(xGEq&d9<1PH!D~k%!H4JtI
zDPOgAuU*rOuGTZUy>6!q?cJVc)R0<x1BoMIg<!Jw|0z$B6_ceON+y!VOXXZa4YG7w
z^VOGIi%k5OxW518*7nI{?ys7XTt||Pqj~5A#PL0<HM1g&9Pb``#19|Q!Vi%jVDAoF
zA)5PM<hvL}IK0PUq<r?IIx2~@wei@tBSe-=)v;XU#j6<(Wwi2b?83$J;)OLQafm}?
zc{W-&;p(duVzgx}Y8obsh|fk`&-De<xsHRt4+*xD2}I^rR12Mr3|;H)=sX$qw7s2e
zeNU&+-`UyMK7E2t799Vp=lYgCjYF44XGus9nTLmIP?e=05MS}bJBD63E{*^OyWkGi
zWJ+Uc!~LxUi!{x`$eNYlQJOqcCC^%6I`jsF4M`m0vhMXJC~go2N+UvHs-i0GmagiC
z+R;?LS6MmUG{k?6osdmR(gCW@v;rou=3ij$X+IzW-6#O!$eOu$8hgZX6HuEC@?5V8
zsns0df91Ex_x_FiuXfA)-|Kc&!T)c<{|D^A9+>E0$ALYN(E&a36tZ#TX(yKtDCTAP
z;IsGLOuvWLKYLpUJ7?#digVu0Nj7Ix>RoDudRC+=u5-;o6qT_M-_J8yf?-U?LwKG_
zAngp2WN6y>?F`KV!sP&}wKE4$FiQb|dOF}z0NmdmY)b(Lljmnan*T$>1zn*;`1bq{
zrwRTq@V}<^db;5Mx5@vThx`@e4>9f~*G?~uzh-D{F8)TRMw_(mTgD%u+AMZldk^kg
z{r{!%?stcA6dukT?+|<UD0qZa<F)JWQ0w<CNY}RG-I*vRi&meu)ZanRxiiOJgiZAR
z;s(9P9u6UEU&S-mnP+|IUT4r_mbpx{J7EFn=EFHW$e3tnngYzwBA8+z`RXmT+tT~c
zNK+SW+}Oj+_KtFf^|4_zt)=!&807(~gn4L1OF*H(3IV=|y*Vvt5d7d(KpvS9+aeaP
zePp5#ul#$^mr$cAp+)GgHVPC@L(@%U**4&#q&{Kg5iK_!9$5W@Bh-i<qs!TEcuvlS
zXn+(A3V|;CHQ-n8sKyaoHC1aeM<Qz#(0Yo55U44kB?PqI!f)~ip5&;W7VD^UWXxy%
zwoNB0BkAJsSej7CMCQ?&G?9P&qF1_XTHoqyS52Yt2Y%~yw#wu&0GE-oV#|2$L?rE?
zTPGnhH@<VcNa0f)_y5!i9OYh9U?4oT@gmB`YOsgwvuwkBz)|cHnKfRsbsp1Ymg~*$
zvRAZnOkl)WOmLJMxENiHLyVKV5Z{4cPz<v>N>n8J>X0S1P4_=r2Pl0n-?y$lTn=we
z#@DUU*-tV$KfWHfZmx#M<I^FOlB%w%9i6f5Uk;MPad$F;ysM$hpME(#8Kbk|>Bac$
z=d;rf$TSD&2>@52Z^v^IAq_p}8hRBCo!97B(P-xy^e9xBmAY2xRaMbAm7{JYmCTjv
zVb$f*RbHjqdTG2$r3KTA6C3`yl2W@cwc)2qN=CM7!%C6N<MPn2w8rf`EZ5zNp)@ip
z=g!>{a!d@IT}4gXQ0r9E%U1i0?r5WmN=MCA^lDCZbCq6ImCT`EPb#lnFEev|GU}*m
zC7nL6)2XPV<vP8Jc8=77j!`K(N136^0BRAMwxf~d0riH}h=i%v>v;{4yfT2~`^1R1
zu{|$o8st%}-!zewyiR~y^bTp=>`lfWfC%GghFr(P(KknG8`(&0JsGL3f8R(QH5<w3
zCnFjC7moy47rg7zk&@RYW$%&^p6m5GB+sO5nr>8L4ZbolS(?7(lIWy~T7P7%=x^x4
z_pr&PM8ZdN{iZuBykyE-%=8uHPe^q#DppE`B8Y0@hdB-i`e?Z^J`F=CMAw6cn8cx1
z-?Ww$Z_~7RlT&x6$!jSvlg;N=o$yu~XP%88m>HQf*{oo*<VJo6CVt3@vnbDgkQ9EL
z?UHv=@`)k2pZbd_3o~@M*lUym&}2|{Sf=z1A)v}<NV&tL!B@0$dFUq8qEa)NZ-kSg
zdw^~ysRyvwfkl?INm^Q=O=CmLR~VAum6XD075xQ2%IKah2`%Gq*B&;c#7C(V%BIXg
z__vI7_{<Hdh@w78GUsyIJ>j<N0(m}3CqmboTWrop#R|ZL-DqSU%A5nu<`(ZGe?c<u
zvt3%ve<);ae~(+)*BE(Y_bVYiR6&D1-85g<*<|BpDk-h3AKS{blAsbsVI)$j*Uk01
zzz|m@lXQWy5!Um4bg*l41$m?337z#I8>-NgPtjWI4xYf6nHYNp|LR#KuSDJ|n5MQ9
z3v?R|wtq}xb}6rBkE4SfG@D=-n9P@hJo4GYM9~w9A8h6Po}wir56=_V<Kywo^}SA?
zCkpDmV@I5g^>@fr)xY~W-9sPKr{4{vo*@%5xnQTU0Gq7uxPAI^Z}c7hn0}br{>R^g
zkeqtJ#?^d0Do#D+L8Z{Z7#i7do(QluL>+j?M_)0bH7cO#_X=P|_TZM%uD{^&@sBTp
zP78r#rWF5zAf}<=_<H}8CdtLd1i*v*0ku(@4E-cR`DZgul!==AYlx}8DwPpj1yP}Z
zSo#rRWL-)C@|I+uP$kds@|Il4&!&{1^ZdL$CI82yxWv<H=`HDAuOmR#|BD3pdI|95
zNdu0`i}D8GIk=tKnC{O>NuJrHqTO7qDj9VG6<?0Vr{||5#>6H(w5`V2#jE-rZj#n~
zM&Z}&T>J@k-~~*x4AjfOommFJ?J{^@@&de3#(!ixs|@RuVIz8?iYUF{Ql3uy*dz5K
z;WqzOEW6%NdCii%w5(Ez<T~qJwWB(tw#1iJAwq-*5h6s05FtW@2oWMgh!7z{ga{EL
hM2HX}LWBqrB1DJ~Awq-*5hCRE<e%?|&(Hu+007<Ked+)J

literal 0
HcmV?d00001

diff --git a/agent_based/inv_opengear_base.py b/source/agent_based/inv_opengear_base.py
similarity index 86%
rename from agent_based/inv_opengear_base.py
rename to source/agent_based/inv_opengear_base.py
index 7ecc64d..49b662b 100644
--- a/agent_based/inv_opengear_base.py
+++ b/source/agent_based/inv_opengear_base.py
@@ -28,16 +28,16 @@
 # ]
 #
 
-from typing import List, Optional
+from typing import List
 
 from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import (
-    StringTable,
     InventoryResult,
+    StringTable,
 )
 from cmk.base.plugins.agent_based.agent_based_api.v1 import (
     Attributes,
-    register,
     SNMPTree,
+    register,
     startswith,
 )
 
@@ -78,23 +78,30 @@ _opengear_models = {
 }
 
 
-def parse_inv_opengear_base(string_table: List[StringTable]) -> Optional[List]:
-    inv_data, ogSerialPortCTS, sysObjectID = string_table
+def parse_inv_opengear_base(string_table: List[StringTable]) -> List | None:
+    try:
+        inv_data, ogSerialPortCTS, sysObjectID = string_table
+    except ValueError:
+        return
 
     try:
         firmware_version, serial_number = inv_data[0]
-    except IndexError:
+    except (IndexError, ValueError):
+        return
+
+    try:
+        sysObjectID = sysObjectID[0][0]
+    except (IndexError, ValueError):
         return
 
     if serial_number == 'N/A':
         serial_number = ''
     number_of_lines = len(ogSerialPortCTS)
-    sysObjectID = sysObjectID[0][0]
     model_name = _opengear_models.get((sysObjectID, number_of_lines), '')
 
     section = []
 
-    invPath = ['hardware', 'system']
+    inv_path = ['hardware', 'system']
 
     for key, value in [
         ('serial', serial_number),
@@ -102,16 +109,16 @@ def parse_inv_opengear_base(string_table: List[StringTable]) -> Optional[List]:
         ('model', model_name),
     ]:
         if not value == '':
-            section.append((invPath, key, value))
+            section.append((inv_path, key, value))
 
-    invPath = ['software', 'firmware']
+    inv_path = ['software', 'firmware']
 
     for key, value in [
         ('vendor', 'opengear'),
         ('version', firmware_version.rstrip(' ()')),
     ]:
         if not value == '':
-            section.append((invPath, key, value))
+            section.append((inv_path, key, value))
 
     return section
 
@@ -137,7 +144,7 @@ register.snmp_section(
         SNMPTree(
             base='.1.3.6.1.4.1.25049.17.2.1',  # OG-STATUSv2-MIB:orgSerialÜprtEntry
             oids=[
-                '19',  # ogSerialPortCTS. ogSerialPortIndex don't exist so we use CTS to get the number of lines
+                '19',  # ogSerialPortCTS. ogSerialPortIndex don't exist, so we use CTS to get the number of lines
             ]
         ),
         SNMPTree(
@@ -147,12 +154,11 @@ register.snmp_section(
             ]
         ),
     ],
-    detect=startswith('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.25049'),  # sysObjectID == opengear
+    detect=startswith('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.25049'),
 )
 
 
-def parse_inv_opengear_base_om(string_table: StringTable) -> Optional[List]:
-
+def parse_inv_opengear_base_om(string_table: StringTable) -> List | None:
     try:
         host_name, serial_number, firmware_version, vendor, model_name, number_of_lines = string_table[0]
     except IndexError:
@@ -160,7 +166,7 @@ def parse_inv_opengear_base_om(string_table: StringTable) -> Optional[List]:
 
     section = []
 
-    invPath = ['hardware', 'system']
+    inv_path = ['hardware', 'system']
 
     for key, value in [
         ('serial', serial_number),
@@ -169,16 +175,16 @@ def parse_inv_opengear_base_om(string_table: StringTable) -> Optional[List]:
         ('host_name', host_name),
     ]:
         if not value == '':
-            section.append((invPath, key, value))
+            section.append((inv_path, key, value))
 
-    invPath = ['software', 'firmware']
+    inv_path = ['software', 'firmware']
 
     for key, value in [
         ('vendor', 'opengear'),
         ('version', firmware_version.rstrip(' ()')),
     ]:
         if not value == '':
-            section.append((invPath, key, value))
+            section.append((inv_path, key, value))
 
     return section
 
@@ -198,7 +204,7 @@ register.snmp_section(
             '2.1',  # ogOmSerialPortCount
         ]
     ),
-    detect=startswith('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.25049.1.101'),  # sysObjectID == OG-PRODUCTS-MIB::ogOperationsManager
+    detect=startswith('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.25049'),
 )
 
 register.inventory_plugin(
diff --git a/packages/inv_opengear_base b/source/packages/inv_opengear_base
similarity index 87%
rename from packages/inv_opengear_base
rename to source/packages/inv_opengear_base
index 52a4b2d..a357d3b 100644
--- a/packages/inv_opengear_base
+++ b/source/packages/inv_opengear_base
@@ -14,7 +14,7 @@
  'files': {'agent_based': ['inv_opengear_base.py']},
  'name': 'inv_opengear_base',
  'title': 'opengear base inventory',
- 'version': '0.0.2-20230614',
+ 'version': '0.0.3-20240510',
  'version.min_required': '2.0.0b1',
- 'version.packaged': '2.2.0p2',
- 'version.usable_until': '2.2.0b1'}
+ 'version.packaged': '2.2.0p24',
+ 'version.usable_until': '2.3.0b1'}
-- 
GitLab