From 079d72a3abe271c0b08f1f5020b6be76b2b52441 Mon Sep 17 00:00:00 2001 From: "th.l" <thl-cmk@outlook.com> Date: Sun, 23 Apr 2023 11:18:25 +0200 Subject: [PATCH] update project --- CHANGELOG | 3 +- agent_based/inv_checkpoint_updates.py | 61 +++++++++++++++----------- gui/views/inv_checkpoint_updates.py | 39 ++++++++++++++++ inv_checkpoint_updates.mkp | Bin 2713 -> 2813 bytes packages/inv_checkpoint_updates | 9 ++-- 5 files changed, 80 insertions(+), 32 deletions(-) create mode 100644 gui/views/inv_checkpoint_updates.py diff --git a/CHANGELOG b/CHANGELOG index c7e0629..742fc49 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,4 +5,5 @@ 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-22: code cleanup \ No newline at end of file +2021-02-22: code cleanup +2023-04-23: refactoring, moved views file to ~/local/lib/check_mk/gui/plugins/views diff --git a/agent_based/inv_checkpoint_updates.py b/agent_based/inv_checkpoint_updates.py index 213069d..07638df 100644 --- a/agent_based/inv_checkpoint_updates.py +++ b/agent_based/inv_checkpoint_updates.py @@ -1,17 +1,23 @@ #!/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 updates inventory # -# 2016-06-29 : inventory Check Point Appliance -# 2018-03-05 : added Patches, Deployment Agent Build -# 2018-03-07 : added Licenses -# 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 +# 2016-06-29: inventory Check Point Appliance +# 2018-03-05: added Patches, Deployment Agent Build +# 2018-03-07: added Licenses +# 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: transferred license/support info to separate plugin +# 2021-02-22: code cleanup +# 2021-04-23: refactoring # # sample string_table # [ @@ -34,8 +40,7 @@ # ] # -from typing import List, NamedTuple - +from typing import List, NamedTuple, Optional from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import ( StringTable, InventoryResult, @@ -62,27 +67,31 @@ class CheckpointUpdatesAvailable(NamedTuple): description: str type: str status: str - availablesince: str + available_since: str recommended: str - installedat: str + installed_at: str class CheckpointUpdates(NamedTuple): - updatesrecommended: list - updatesavailable: list + updates_recommended: list + updates_available: list -def parse_checkpoint_updates(string_table: List[StringTable]) -> CheckpointUpdates: - section = CheckpointUpdates - section.updatesrecommended = list(string_table[0]) - section.updatesavailable = list(string_table[1]) +def parse_checkpoint_updates(string_table: List[StringTable]) -> Optional[CheckpointUpdates]: + try: + section = CheckpointUpdates( + updates_recommended=list(string_table[0]), + updates_available=list(string_table[1]) + ) + except IndexError: + return return section def inventory_checkpoint_updates(section: CheckpointUpdates) -> InventoryResult: path = ['software', 'check_point', 'updates'] - for update in section.updatesrecommended: + for update in section.updates_recommended: update = CheckpointUpdatesRecommended(*update) yield TableRow( path=path, @@ -94,13 +103,13 @@ def inventory_checkpoint_updates(section: CheckpointUpdates) -> InventoryResult: }, ) - for update in section.updatesavailable: + for update in section.updates_available: update = CheckpointUpdatesAvailable(*update) - if not 'installed' in update.status.lower(): - installedat = 'N/A' + if 'installed' not in update.status.lower(): + installed_at = 'N/A' else: - installedat = update.installedat.replace('T', ' ').replace('Z', '') + installed_at = update.installed_at.replace('T', ' ').replace('Z', '') yield TableRow( path=path, @@ -110,8 +119,8 @@ def inventory_checkpoint_updates(section: CheckpointUpdates) -> InventoryResult: 'type': update.type, 'status': update.status, 'recommended': update.recommended, - 'available_since': update.availablesince[:10], - 'installed_at': installedat, + 'available_since': update.available_since[:10], + 'installed_at': installed_at, }, ) diff --git a/gui/views/inv_checkpoint_updates.py b/gui/views/inv_checkpoint_updates.py new file mode 100644 index 0000000..98adca4 --- /dev/null +++ b/gui/views/inv_checkpoint_updates.py @@ -0,0 +1,39 @@ +#!/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.inventory import declare_invtable_view +from cmk.gui.plugins.views.utils import ( + inventory_displayhints, +) + +inventory_displayhints.update({ + '.software.check_point.updates:': { + 'title': _('Updates'), + 'keyorder': [ + 'file_name', + 'type', + 'status', + 'recommended', + 'available_since', + 'installed_at', + 'description' + ], + 'view': 'invcheckpointupdates_of_host', + }, +}) + +declare_invtable_view( + 'invcheckpointupdates', + '.software.check_point.updates:', + _('Check Point updates'), + _('Check Point updates'), +) diff --git a/inv_checkpoint_updates.mkp b/inv_checkpoint_updates.mkp index 69aefe6c9f244b9787e006462f4cc1554198e79a..ff2cc34734d6e8ea01719af5cdc03503dde426c9 100644 GIT binary patch literal 2813 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 EA0+Im&;S4c literal 2713 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 GrvCx0vqe_` diff --git a/packages/inv_checkpoint_updates b/packages/inv_checkpoint_updates index 4849056..46e0f55 100644 --- a/packages/inv_checkpoint_updates +++ b/packages/inv_checkpoint_updates @@ -5,11 +5,10 @@ '- 2021-02-08: initial release\n', 'download_url': 'https://thl-cmk.hopto.org', 'files': {'agent_based': ['inv_checkpoint_updates.py'], - 'web': ['plugins/views/inv_checkpoint_updates.py']}, + 'gui': ['views/inv_checkpoint_updates.py']}, 'name': 'inv_checkpoint_updates', - 'num_files': 2, 'title': 'Check Point appliance avilable updates inventory plugin', - 'version': '20210208.v.0.1', - '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