From ad1c1b7098fcfa0907b6a6722a95dcc23d23ef07 Mon Sep 17 00:00:00 2001 From: "th.l" <thl-cmk@outlook.com> Date: Sun, 23 Apr 2023 11:18:10 +0200 Subject: [PATCH] update project --- CHANGELOG | 1 + agent_based/inv_checkpoint_base.py | 100 ++++++++++++++++------------- gui/views/inv_checkpoint_base.py | 26 ++++++++ inv_checkpoint_base.mkp | Bin 2480 -> 2651 bytes packages/inv_checkpoint_base | 11 ++-- 5 files changed, 88 insertions(+), 50 deletions(-) create mode 100644 gui/views/inv_checkpoint_base.py diff --git a/CHANGELOG b/CHANGELOG index 7a57d2d..da63ee0 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -13,3 +13,4 @@ 2021-03-18: fixed missing update agent snmp section. 2021-07-24: fixed parse function for empty string_table 2021-08-10: added display hints +2023-04-23: refactoring, moved views file to ~/local/lib/check_mk/gui/plugins/views diff --git a/agent_based/inv_checkpoint_base.py b/agent_based/inv_checkpoint_base.py index 54e1713..809623f 100644 --- a/agent_based/inv_checkpoint_base.py +++ b/agent_based/inv_checkpoint_base.py @@ -1,7 +1,11 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -# -# Author: thl-cmk[at]outlook[dot]com / thl-cmk.hopto.org + +# License: GNU General Public License v2 + +# Author: thl-cmk[at]outlook[dot]com +# URL : https://thl-cmk.hopto.org +# Date : 2016-06-29 # # Check Point base inventory # @@ -11,25 +15,15 @@ # 2020-06-01: cleanup, prepared for cmk1.7x, rename from inv_checkpoint_svn to checkpoint_inv_base # 2020-11-27: rewrite for CMK check API 1.0 (CMK 2.0) # 2020-11-28: added available updates -# 2021-02-08: transfered license/support info to seperate plugin +# 2021-02-08: transferred license/support info to separate plugin # 2021-02-22: code cleanup # 2021-03-05: added hostlabel section # 2021-03-18: fixed missing update agent snmp section. # 2021-07-24: fixed parse function for empty string_table -# -# sample string_table -# [ -# [ -# ['5M7C043', 'Smart-1 5150', 'CheckPoint', 'Smart-1', 'R80.40', '994000022', 'Gaia', '3', '10'] -# ], -# [ -# ['1959'] -# ], -# ] +# 2023-04-23: refactoring # from typing import List, NamedTuple, Optional - from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import ( HostLabelGenerator, StringTable, @@ -47,51 +41,69 @@ from cmk.base.plugins.agent_based.agent_based_api.v1 import ( ) +class CheckpointInvBaseInfo(NamedTuple): + serial_number: str + product_name: str + manufacturer: str + series: str + version: str + build: str + osname: str + os_major_ver: str + os_minor_ver: str + + def parse_inv_checkpoint_base(string_table: List[StringTable]) -> Optional[List]: - class CheckpointInvBaseInfo(NamedTuple): - serialnumber: str - productname: str - manufacturer: str - series: str - version: str - build: str - osname: str - osmajorver: str - osminorver: str - - if string_table == [[], []]: + """ + >>> from pprint import pp + >>> string_table = [[['5M7C043','Smart-1 5150','CheckPoint','Smart-1','R80.40','994000022','Gaia','3','10']]] + >>> string_table.append([['1959']]) + >>> print(string_table) + [[['5M7C043', 'Smart-1 5150', 'CheckPoint', 'Smart-1', 'R80.40', '994000022', 'Gaia', '3', '10']], [['1959']]] + >>> pp(parse_inv_checkpoint_base(string_table)) + [(['hardware', 'system'], 'serial', '5M7C043'), + (['hardware', 'system'], 'appliance_series', 'Smart-1'), + (['hardware', 'system'], 'manufacturer', 'CheckPoint'), + (['hardware', 'system'], 'product_name', 'Smart-1 5150'), + (['software', 'check_point', 'os_info'], 'svn_version', 'R80.40'), + (['software', 'check_point', 'os_info'], 'svn_build', '994000022'), + (['software', 'check_point', 'os_info'], 'os_name', 'Gaia'), + (['software', 'check_point', 'os_info'], 'deployment_agent_build', '1959'), + (['software', 'check_point', 'os_info'], 'os_version', '3.10')] + """ + try: + base_info = CheckpointInvBaseInfo(*string_table[0][0]) + except IndexError: return - section = [] - baseinfo = CheckpointInvBaseInfo(*string_table[0][0]) - try: - updateagentversion = string_table[1][0][0] + update_agent_version = string_table[1][0][0] except IndexError: - updateagentversion = '' + update_agent_version = '' - invPath = ['hardware', 'system'] + section = [] + path = ['hardware', 'system'] for key, value in [ - ('serial', baseinfo.serialnumber), - ('appliance_series', baseinfo.series), - ('manufacturer', baseinfo.manufacturer), - ('product_name', baseinfo.productname), + ('serial', base_info.serial_number), + ('appliance_series', base_info.series), + ('manufacturer', base_info.manufacturer), + ('product_name', base_info.product_name), ]: if not value == '': - section.append((invPath, key, value)) + section.append((path, key, value)) - invPath = ['software', 'check_point', 'os_info'] + path = ['software', 'check_point', 'os_info'] for key, value in [ - ('svn_version', baseinfo.version), - ('svn_build', baseinfo.build), - ('os_name', baseinfo.osname), - ('deployment_agent_build', updateagentversion), - ('os_version', baseinfo.osmajorver + '.' + baseinfo.osminorver), + ('svn_version', base_info.version), + ('svn_build', base_info.build), + ('os_name', base_info.osname), + ('deployment_agent_build', update_agent_version), + ('os_version', base_info.os_major_ver + '.' + base_info.os_minor_ver), ]: if not value == '': - section.append((invPath, key, value)) + section.append((path, key, value)) return section diff --git a/gui/views/inv_checkpoint_base.py b/gui/views/inv_checkpoint_base.py new file mode 100644 index 0000000..a6317c5 --- /dev/null +++ b/gui/views/inv_checkpoint_base.py @@ -0,0 +1,26 @@ +#!/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 : 2016-06-29 + +# 2023-04-23: moved views file to ~/local/lib/check_mk/gui/plugins/views + +from cmk.gui.i18n import _ +from cmk.gui.plugins.views.utils import ( + inventory_displayhints, +) + +inventory_displayhints.update({ + '.software.check_point.os_info:': { + 'title': _('OS Info'), + }, + '.software.check_point.os_info.deployment_agent_build': {'title': _('Deployment Agent Build'), }, + '.software.check_point.os_info.os_name': {'title': _('OS Name'), }, + '.software.check_point.os_info.os_version': {'title': _('OS Version'), }, + '.software.check_point.os_info.svn_build': {'title': _('SVN Build'), }, + '.software.check_point.os_info.svn_version': {'title': _('SVN Version'), }, +}) diff --git a/inv_checkpoint_base.mkp b/inv_checkpoint_base.mkp index 6fcf74af6671d74f5ae77c9767d9621a516517a0..8a80466998d9771df5a1a99f5acc136ac7eead80 100644 GIT binary patch literal 2651 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 literal 2480 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 ZM_lKbX#bx!rBkBl$I+>*G@&#!{{ewh-Q@rP diff --git a/packages/inv_checkpoint_base b/packages/inv_checkpoint_base index d6a6e36..0e46e76 100644 --- a/packages/inv_checkpoint_base +++ b/packages/inv_checkpoint_base @@ -1,17 +1,16 @@ {'author': 'Th.L. (thl-cmk[at]outlook[dot]com)', 'description': 'SNMP inventory of Check Point Appliances for:\n' - 'Serial Number, Product Name, Manufacturer, OS/SVN/Deployment ' + 'Serial number, Product name, Manufacturer, OS/SVN/Deployment ' 'agent version\n' '\n' '- 2021-02-08: initial release\n' '- 2021-02-22: code cleanup\n', 'download_url': 'https://thl-cmk.hopto.org', 'files': {'agent_based': ['inv_checkpoint_base.py'], - 'web': ['plugins/views/inv_checkpoint_base.py']}, + 'gui': ['views/inv_checkpoint_base.py']}, 'name': 'inv_checkpoint_base', - 'num_files': 2, 'title': 'Check Point appliance base inventory plugin', - 'version': '20210724.v.0.1a', - 'version.min_required': '2.0.0', - 'version.packaged': '2021.09.20', + 'version': '0.2.1-20230423', + 'version.min_required': '2.1.0b1', + 'version.packaged': '2.1.0p21', 'version.usable_until': None} \ No newline at end of file -- GitLab