From d84de2fdd95db20812441cb2e1e172fd6cc91666 Mon Sep 17 00:00:00 2001 From: Thl CMK <thl-cmk@outlook.com> Date: Tue, 14 Jul 2020 21:41:35 +0200 Subject: [PATCH] update project --- inv_huawei_hw_components.mkp | Bin 0 -> 2092 bytes inventory/huawei_hw_components | 97 ++++++++++++++++++ packages/inv_huawei_hw_components | 11 ++ web/plugins/views/inv_huawei_hw_components.py | 35 +++++++ 4 files changed, 143 insertions(+) create mode 100644 inv_huawei_hw_components.mkp create mode 100644 inventory/huawei_hw_components create mode 100644 packages/inv_huawei_hw_components create mode 100644 web/plugins/views/inv_huawei_hw_components.py diff --git a/inv_huawei_hw_components.mkp b/inv_huawei_hw_components.mkp new file mode 100644 index 0000000000000000000000000000000000000000..084edc35b50cb44e40f93d34bbbe1d7102e05a33 GIT binary patch literal 2092 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 Wfj}S-2m}K0QusfXdqOt=cmM#ep)NlF literal 0 HcmV?d00001 diff --git a/inventory/huawei_hw_components b/inventory/huawei_hw_components new file mode 100644 index 0000000..66d3afb --- /dev/null +++ b/inventory/huawei_hw_components @@ -0,0 +1,97 @@ +#!/usr/bin/python +# -*- encoding: utf-8; py-indent-offset: 4 -*- +# +# License: GNU General Public License v2 +# +# Author: thl-cmk[at]outlook[dot]com +# URL : https://thl-cmk.hopto.org +# Date : 2020-07-14 +# +# extended inventory of Huawei hardware components +# + + +def inv_huawei_hw_components(info, params): + def parse_huawei_hw_components(info): + def get_snmp_date(hwEntityManufacturedDate): + year = (ord(hwEntityManufacturedDate[0]) << 8) + ord(hwEntityManufacturedDate[1]) + month = ord(hwEntityManufacturedDate[2]) + day = ord(hwEntityManufacturedDate[3]) + snmpDate = '%d-%02d-%02d' % (year, month, day) + return snmpDate + + defaultEntities, huaweiEntities = info + entities = {} + + for entry in huaweiEntities: + hwOID_END, hwEntityBomId, hwEntityBomEnDesc, hwEntityManufacturedDate, hwEntityBoardType, hwEntityOpticalVendorSn = entry + + if hwEntityBomEnDesc != '': + entity = {} + entity['hwEntityBomId'] = hwEntityBomId + entity['hwEntityBomEnDesc'] = hwEntityBomEnDesc + entity['hwEntityManufacturedDate'] = get_snmp_date(hwEntityManufacturedDate) + entity['hwEntityBoardType'] = hwEntityBoardType + entity['serial_number'] = hwEntityOpticalVendorSn + + for entry in defaultEntities: + OID_END, entPhysicalDescr, entPhysicalName, entPhysicalHardwareRev, entPhysicalFirmwareRev, entPhysicalSoftwareRev, entPhysicalSerialNum, entPhysicalMfgName = entry + if OID_END == hwOID_END: + entity['entPhysicalDescr'] = entPhysicalDescr + entity['entPhysicalName'] = entPhysicalName + entity['entPhysicalHardwareRev'] = entPhysicalHardwareRev + entity['entPhysicalFirmwareRev'] = entPhysicalFirmwareRev + entity['entPhysicalSoftwareRev'] = entPhysicalSoftwareRev + entity['entPhysicalMfgName'] = entPhysicalMfgName + if entity['serial_number'] == '': + entity['serial_number'] = entPhysicalSerialNum + + entities[hwOID_END] = entity + return entities + + node = inv_tree_list('hardware.components.huawei:') + entities = parse_huawei_hw_components(info) + + for key, value in entities.items(): + node.append({ + 'index': key, + 'bom_id': value['hwEntityBomId'], + 'bom_decription': value['hwEntityBomEnDesc'], + 'manufactured_date': value['hwEntityManufacturedDate'], + 'board_type': value['hwEntityBoardType'], + 'description': value['entPhysicalDescr'], + 'name': value['entPhysicalName'], + 'hardware_revision': value['entPhysicalHardwareRev'], + 'firmware_revision': value['entPhysicalFirmwareRev'], + 'software_revision': value['entPhysicalSoftwareRev'], + 'serial_number': value['serial_number'], + 'vendor': value['entPhysicalMfgName'], + }) + + return node + + +inv_info['inv_huawei_hw_components'] = { + 'inv_function': inv_huawei_hw_components, + 'snmp_info': [ + ('.1.3.6.1.2.1.47.1.1.1.1', [ + OID_END, + '2', # entPhysicalDescr + '7', # entPhysicalName + '8', # entPhysicalHardwareRev + '9', # entPhysicalFirmwareRev + '10', # entPhysicalSoftwareRev + '11', # entPhysicalSerialNum + '12', # entPhysicalMfgName + ]), + ('.1.3.6.1.4.1.2011.5.25.31.1.1', [ + OID_END, + '2.1.1', # hwEntityBomId + '2.1.2', # hwEntityBomEnDesc + '2.1.4', # hwEntityManufacturedDate + '2.1.11', # hwEntityBoardType + '3.1.4' # hwEntityOpticalVendorSn + ]) + ], + 'snmp_scan_function': lambda oid: oid('.1.3.6.1.2.1.1.2.0').startswith('.1.3.6.1.4.1.2011'), +} diff --git a/packages/inv_huawei_hw_components b/packages/inv_huawei_hw_components new file mode 100644 index 0000000..cce8645 --- /dev/null +++ b/packages/inv_huawei_hw_components @@ -0,0 +1,11 @@ +{'author': u'Th.L. (thl-cmk[at]outlook[dot]com)', + 'description': u'SNMP inventory for Huawei hardware components.', + 'download_url': 'https://thl-cmk.hopto.org', + 'files': {'inventory': ['huawei_hw_components'], + 'web': ['plugins/views/inv_huawei_hw_components.py']}, + 'name': 'inv_huawei_hw_components', + 'num_files': 2, + 'title': u'Inventory for Huawei hardware components', + 'version': '20200714.v0.1c', + 'version.min_required': '1.2.8b8', + 'version.packaged': '1.4.0p38'} \ No newline at end of file diff --git a/web/plugins/views/inv_huawei_hw_components.py b/web/plugins/views/inv_huawei_hw_components.py new file mode 100644 index 0000000..6f793b2 --- /dev/null +++ b/web/plugins/views/inv_huawei_hw_components.py @@ -0,0 +1,35 @@ +#!/usr/bin/python +# -*- encoding: utf-8; py-indent-offset: 4 -*- + +try: + from cmk.gui.plugins.views.inventory import ( + declare_invtable_view, + render_inv_dicttable, + ) +except: + pass + +inventory_displayhints.update({ + '.hardware.components.huawei:': {'title': _('Huawei'), 'render': render_inv_dicttable, + 'keyorder': ['index', 'name', 'description', 'board_type', 'serial_number', + 'manufactured_date', 'vendor', + ], + 'view': 'invhuawei_components_of_host', + }, + '.hardware.components.huawei:*.index': {'title': _('Index'), }, + '.hardware.components.huawei:*.name': {'title': _('Name')}, + '.hardware.components.huawei:*.description': {'title': _('Description'), }, + '.hardware.components.huawei:*.bom_id': {'title': _('BOM ID'), }, + '.hardware.components.huawei:*.bom_decription': {'title': _('BOM Description')}, + '.hardware.components.huawei:*.manufactured_date': {'title': _('Manufactured Date')}, + '.hardware.components.huawei:*.board_type': {'title': _('Board Type'), }, + '.hardware.components.huawei:*.software_revision': {'title': _('Software Revision'), }, + '.hardware.components.huawei:*.firmware_revision': {'title': _('Firmware Revision'), }, + '.hardware.components.huawei:*.hardware_revision': {'title': _('Hardware Revision'), }, + '.hardware.components.huawei:*.serial_number': {'title': _('Serial Number'), }, + '.hardware.components.huawei:*.vendor': {'title': _('Vendor'), }, + +}) + +declare_invtable_view('invhuawei_components', '.hardware.components.huawei:', _('Huawei hardware components'), + _('Huawei hardware components')) -- GitLab