From f0795a0ab4bf5a3f28f52081109127225271d191 Mon Sep 17 00:00:00 2001
From: "th.l" <thl-cmk@outlook.com>
Date: Wed, 30 Nov 2022 21:00:35 +0100
Subject: [PATCH] update project

---
 agent_based/checkpoint_asg_vsls.py |  58 +++++++++++++++++++++--------
 checkpoint_asg_vsls.mkp            | Bin 2312 -> 2463 bytes
 packages/checkpoint_asg_vsls       |   2 +-
 3 files changed, 43 insertions(+), 17 deletions(-)

diff --git a/agent_based/checkpoint_asg_vsls.py b/agent_based/checkpoint_asg_vsls.py
index 43ce98e..a649d3f 100644
--- a/agent_based/checkpoint_asg_vsls.py
+++ b/agent_based/checkpoint_asg_vsls.py
@@ -35,7 +35,7 @@
 #   ['50', '1 2']
 #  ], 
 #  [
-#   ['0', 'k01001s11-017500009', '1', '1', 'OK', 'Primary chassis health is good.', '2', '2', '1', '1', '', '']
+#   ['0', 'k01001s11-017500009', '1', '1', 'OK', 'Primary chassis health is good.', '2', '2', '1', '1']
 #  ]
 # ]
 #
@@ -45,7 +45,7 @@
 #                   VsPrimaryChassis='1', VsActiveChassis='1', VsHealth='OK',
 #                   VsReason='Primary chassis health is good.', ChassisState=[(2, 2), (1, 1)])
 
-from typing import List, Tuple, Optional
+from typing import List, NamedTuple, Optional
 from dataclasses import dataclass
 from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import (
     DiscoveryResult,
@@ -66,17 +66,24 @@ from cmk.base.plugins.agent_based.agent_based_api.v1 import (
 )
 
 
+class CheckpoinstAsgVlslChassis(NamedTuple):
+    InterfacesUp: int
+    InterfacesTotal: int
+    FwksUp: int
+    FwksTotal: int
+
+
 @dataclass
 class CheckpointAsgVsls:
     SgmRatio: str
-    SystemPrimaryChassis: str
+    SystemPrimaryChassis: list
     Vsid: str
     VsName: str
     VsPrimaryChassis: str
     VsActiveChassis: str
     VsHealth: str
     VsReason: str
-    ChassisState: List[Tuple[int, int]]
+    ChassisState: List[CheckpoinstAsgVlslChassis]
 
 
 def parse_checkpoint_asg_vsls(string_table: List[StringTable]) -> Optional[CheckpointAsgVsls]:
@@ -87,14 +94,15 @@ def parse_checkpoint_asg_vsls(string_table: List[StringTable]) -> Optional[Check
         return
 
     try:
-        Vsid, VsName, VsPrimaryChassis, VsActiveChassis, VsHealth, VsReason, VsChassis1FwksUp, VsChassis1FwksTotal, \
-        VsChassis2FwksUp, VsChassis2FwksTotal, VsChassis3FwksUp, VsChassis3FwksTotal = chassis_state[0]
+        Vsid, VsName, VsPrimaryChassis, VsActiveChassis, VsHealth, VsReason, \
+        VsChassis1InterfacesUp, VsChassis1InterfacesTotal, VsChassis1FwksUp, VsChassis1FwksTotal, \
+        VsChassis2InterfacesUp, VsChassis2InterfacesTotal, VsChassis2FwksUp, VsChassis2FwksTotal, = chassis_state[0]
     except (IndexError, ValueError):
         return
 
     return CheckpointAsgVsls(
         SgmRatio=SgmRatio,
-        SystemPrimaryChassis=SystemPrimaryChassis,
+        SystemPrimaryChassis=SystemPrimaryChassis.strip(),
         Vsid=Vsid,
         VsName=VsName,
         VsPrimaryChassis=VsPrimaryChassis,
@@ -102,9 +110,18 @@ def parse_checkpoint_asg_vsls(string_table: List[StringTable]) -> Optional[Check
         VsHealth=VsHealth,
         VsReason=VsReason,
         ChassisState=[
-            (int(VsChassis1FwksUp), int(VsChassis1FwksTotal)),
-            (int(VsChassis2FwksUp), int(VsChassis2FwksTotal)),
-           # (int(VsChassis3FwksUp), int(VsChassis3FwksTotal)),
+            CheckpoinstAsgVlslChassis(
+                int(VsChassis1InterfacesUp),
+                int(VsChassis1InterfacesTotal),
+                int(VsChassis1FwksUp),
+                int(VsChassis1FwksTotal)
+            ),
+            CheckpoinstAsgVlslChassis(
+                int(VsChassis2InterfacesUp),
+                int(VsChassis2InterfacesTotal),
+                int(VsChassis2FwksUp),
+                int(VsChassis2FwksTotal)
+            ),
         ]
     )
 
@@ -114,10 +131,11 @@ def discovery_checkpoint_asg_vsls(section: CheckpointAsgVsls) -> DiscoveryResult
 
 
 def check_checkpoint_asg_vsls(params, section: CheckpointAsgVsls) -> CheckResult:
-    SystemPrimaryChassis = section.SystemPrimaryChassis.strip().split(' ')
     inv_asgVslsVsActiveChassis = params['discovery_active_chassis']
 
     longoutput = ''
+    longoutput += f'\nThreshold ratio for failover: {section.SgmRatio}'
+    longoutput += f'\nMethod for defaulting Chassis per each VS: {section.SystemPrimaryChassis}'
     longoutput += f'\nSystem name: {section.VsName}'
     longoutput += f'\nHealth status: {section.VsHealth}'
     longoutput += f'\nHealth reason: {section.VsReason}'
@@ -132,14 +150,20 @@ def check_checkpoint_asg_vsls(params, section: CheckpointAsgVsls) -> CheckResult
     else:
         yield Result(state=State.OK, notice=yield_text)
 
-    for chassis in SystemPrimaryChassis:
-        VsChassisFwksUp, VsChassisFwksTotal = section.ChassisState[int(chassis) - 1]
-        yield_text = f'Chassis {chassis}: {VsChassisFwksUp}/{VsChassisFwksTotal} SGMs UP'
+    chassis = 0
+    for InterfacesUp, InterfacesTotal, VsChassisFwksUp, VsChassisFwksTotal in section.ChassisState:
+        chassis += 1
+        yield_text = f'Chassis {chassis}: {VsChassisFwksUp}/{VsChassisFwksTotal} SGMs Up'
         if VsChassisFwksUp != VsChassisFwksTotal:
             yield Result(state=State.CRIT, notice=yield_text)
         else:
             yield Result(state=State.OK, summary=yield_text)
 
+        yield_text = f'Interfaces: {InterfacesUp}/{InterfacesTotal} (Up/Total)'
+        if InterfacesUp != InterfacesTotal:
+            yield Result(state=State.CRIT, notice=yield_text)
+        else:
+            yield Result(state=State.OK, summary=yield_text)
 
 register.snmp_section(
     name='checkpoint_asg_vsls',
@@ -161,12 +185,14 @@ register.snmp_section(
                 '4',  # asgVslsVsActiveChassis
                 '5',  # asgVslsVsHealth
                 '6',  # asgVslsVsReason
+                '7',  # asgVslsVsChassis1InterfacesUp
+                '8',  # asgVslsVsChassis1InterfacesTotal
                 '9',  # asgVslsVsChassis1FwksUp
                 '10',  # asgVslsVsChassis1FwksTotal
+                '21',  # asgVslsVsChassis2InterfacesUp
+                '22',  # asgVslsVsChassis2InterfacesTotal
                 '23',  # asgVslsVsChassis2FwksUp
                 '24',  # asgVslsVsChassis2FwksTotal
-                '33',  # asgVslsVsChassis3FwksUp
-                '34',  # asgVslsVsChassis3FwksTotal
             ]
         ),
     ],
diff --git a/checkpoint_asg_vsls.mkp b/checkpoint_asg_vsls.mkp
index 06e71246815a9af5efef8ceed1cc85702cf023e8..55870c42e3541ae6158d8e5488d1062443690112 100644
GIT binary patch
delta 2448
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
Oh5rERI<v0;PyhfbJ;6c%

delta 2296
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
S3KS^#XW<Vvq5Pi!PyhhLIdAU(

diff --git a/packages/checkpoint_asg_vsls b/packages/checkpoint_asg_vsls
index 910b669..22fb51e 100644
--- a/packages/checkpoint_asg_vsls
+++ b/packages/checkpoint_asg_vsls
@@ -7,5 +7,5 @@
  'title': 'Check Point Maestro SMO ASG VSLS Chassis',
  'version': '20210911.v0.2',
  'version.min_required': '2.0.0',
- 'version.packaged': '2021.07.14',
+ 'version.packaged': '2021.09.20',
  'version.usable_until': None}
\ No newline at end of file
-- 
GitLab