diff --git a/README.md b/README.md index 7eb2158cd05d3e937cdac4762d12f9c67931b712..3a565ea29602a6465dbaaa8e95c7ebfbbe1bbc35 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 Binary files a/inv_opengear_base.mkp and /dev/null differ 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 Binary files /dev/null and b/mkp/inv_opengear_base-0.0.3-20240510.mkp differ 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 7ecc64de4850d9f6901c07c4a197298fbaa0cf5c..49b662b7e1ff3bc6a65fe8356e4e19f2da312032 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 52a4b2d693edff5ef91e461fb576a59ed322280d..a357d3b6effec6d7d90327c3235849736b28a46d 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'}