From 7bca3f83e6418216b80b08f7c1881e322e9086e0 Mon Sep 17 00:00:00 2001
From: Thl CMK <thl-cmk@outlook.com>
Date: Sun, 8 Nov 2020 10:42:58 +0100
Subject: [PATCH] update project

---
 checkpoint_asg_vsls.mkp      | Bin 521 -> 1838 bytes
 checks/checkpoint_asg_vsls   | 126 +++++++++++++++++++++++++++++++++++
 packages/checkpoint_asg_vsls |   2 +-
 3 files changed, 127 insertions(+), 1 deletion(-)
 create mode 100644 checks/checkpoint_asg_vsls

diff --git a/checkpoint_asg_vsls.mkp b/checkpoint_asg_vsls.mkp
index 4c5c5eb34c8732913cb961b0d3f34a6fc45ce0e0..9231e6d99b42e1bed2f2a4e42e93ac32adfcff6d 100644
GIT binary patch
delta 1817
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
H08jt`*{y^V

delta 489
zcmV<F0T%wQ4v7Q>ABzYGc##Dxf0Rv+(=ZT*d*)YIz62z2?QNT&y&(=<wt!T`rK%!t
z>TOJ2Pw+=Mtoq;aBt)B5U4fQm5falwEc>0Aj+5ur_6A0OICzSDI&GgRPM^HslaZJd
zGf_<PS&{Zd`tcFrqbG>ygLH&E%8<k1{*k!NWDGU9?2^RnQ_Zdzc^+!>f2!JTmols%
z1_Q8Nt|6={*uBVJJ|o#$`O4`gXs~VC9IOuD$lF>~Tk;XK4P-8r4-Uv;{(*d6TrJX}
z^j>?Ct~*5E)q!u;fLxc+nN%pNLuf9?;~(u=4NU+BZZmGxH`*wlWVcy`eQ>$#mJN0+
zrQeiQ*CbmVFvH57!n!A-f4w(de;apYUsd2n(7~v7r29sBvv_wjPFrWMobT=;yWkgG
z2wt!~XJUBBcG{LseT~|wH7W(0GTuyHABh@SZRMsH<VhfAM}p|(wNYiXLF1LZ2dfUh
z_5O9@pMCLQ|04f+o}ch9c>bUNr{SNr1kl74?YK(IB|Xm-O<WOrTkeZaNwoi>Y0@Bi
zxOWCUJnlRP1wXeO)VE-w{8zceq@lfF?!ERx2SW`3OG!2wgX8p0LD4Dh)IG1=_#Ll<
fYPfym2<_jxb5A^ffO*ox<Gugyf8BV800;m8PdxQ`

diff --git a/checks/checkpoint_asg_vsls b/checks/checkpoint_asg_vsls
new file mode 100644
index 0000000..b0f8a70
--- /dev/null
+++ b/checks/checkpoint_asg_vsls
@@ -0,0 +1,126 @@
+#!/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-11-07
+#
+# Monitor Check Point Maestro SMO Vsls Chassis status
+#
+# sample snmpwalk 
+# .1.3.6.1.4.1.2620.1.48.30.20.1.0 = Gauge32: 50
+# .1.3.6.1.4.1.2620.1.48.30.20.2.0 = STRING: "1 2 "
+# .1.3.6.1.4.1.2620.1.48.30.20.10.1.1.1.0 = Gauge32: 0
+# .1.3.6.1.4.1.2620.1.48.30.20.10.1.2.1.0 = STRING: "k01001s11-017500009"
+# .1.3.6.1.4.1.2620.1.48.30.20.10.1.3.1.0 = Gauge32: 1
+# .1.3.6.1.4.1.2620.1.48.30.20.10.1.4.1.0 = Gauge32: 1
+# .1.3.6.1.4.1.2620.1.48.30.20.10.1.5.1.0 = STRING: "OK"
+# .1.3.6.1.4.1.2620.1.48.30.20.10.1.6.1.0 = STRING: "Primary chassis health is good."
+# .1.3.6.1.4.1.2620.1.48.30.20.10.1.7.1.0 = Gauge32: 0
+# .1.3.6.1.4.1.2620.1.48.30.20.10.1.8.1.0 = Gauge32: 0
+# .1.3.6.1.4.1.2620.1.48.30.20.10.1.9.1.0 = Gauge32: 2
+# .1.3.6.1.4.1.2620.1.48.30.20.10.1.10.1.0 = Gauge32: 2
+# .1.3.6.1.4.1.2620.1.48.30.20.10.1.21.1.0 = Gauge32: 0
+# .1.3.6.1.4.1.2620.1.48.30.20.10.1.22.1.0 = Gauge32: 0
+# .1.3.6.1.4.1.2620.1.48.30.20.10.1.23.1.0 = Gauge32: 1
+# .1.3.6.1.4.1.2620.1.48.30.20.10.1.24.1.0 = Gauge32: 1
+#
+# sample info
+# [[[u'50', u'1 2']], [[u'0', u'k01001s11-017500009', u'1', u'1', u'OK', u'Primary chassis health is good.', u'2', u'2', u'1', u'1', u'', u'']]]
+#
+
+def inventory_checkpoint_asg_vsls(info):
+    chassis_info, chassis_state = info
+    try:
+        asgVslsSgmRatio, asgVslsSystemPrimaryChassis = chassis_info[0]
+        yield None, {'inv_state': chassis_state[0]}
+    except KeyError:
+        pass
+
+
+def check_checkpoint_asg_vsls(_no_item, params, info):
+    chassis_info, chassis_state = info
+
+    asgVslsSgmRatio, asgVslsSystemPrimaryChassis = chassis_info[0]
+
+    asgVslsVsid, asgVslsVsName, asgVslsVsPrimaryChassis, asgVslsVsActiveChassis, asgVslsVsHealth, asgVslsVsReason, \
+    asgVslsVsChassis1FwksUp, asgVslsVsChassis1FwksTotal, \
+    asgVslsVsChassis2FwksUp, asgVslsVsChassis2FwksTotal, \
+    asgVslsVsChassis3FwksUp, asgVslsVsChassis3FwksTotal = chassis_state[0]
+
+    asgVslsSystemPrimaryChassis = asgVslsSystemPrimaryChassis.strip().split(' ')
+
+    inv_asgVslsVsActiveChassis = asgVslsVsActiveChassis
+
+    if params:
+        inv_state = params.get ('inv_state')
+        inv_asgVslsVsActiveChassis = inv_state[3]
+
+
+    infotext = ''
+    longoutput = ''
+    state = 0
+
+    # longoutput += '\n\nTo verify this output use the "asg monitor" command on the Check Point SMO cli,\n'
+    longoutput += '\nSystem name: %s' % asgVslsVsName
+    longoutput += '\nHealth status: %s' % asgVslsVsHealth
+    longoutput += '\nHealth reason: %s' % asgVslsVsReason
+
+    chassis_state = [
+        [int(asgVslsVsChassis1FwksUp), int(asgVslsVsChassis1FwksTotal)],
+        [int(asgVslsVsChassis2FwksUp), int(asgVslsVsChassis2FwksTotal)],
+        [int(asgVslsVsChassis2FwksUp), int(asgVslsVsChassis2FwksTotal)],
+    ]
+
+    if asgVslsVsHealth != "OK":
+        yield 1, "Health: %s, Reason: %s" % (asgVslsVsHealth, asgVslsVsReason)
+
+    yield_text = 'Primary/Active chassis: %s/%s' % (asgVslsVsPrimaryChassis, asgVslsVsActiveChassis)
+    if inv_asgVslsVsActiveChassis != asgVslsVsActiveChassis:
+        yield 1, yield_text
+    else:
+        yield 0, yield_text
+
+    for chassis in asgVslsSystemPrimaryChassis:
+        asgVslsVsChassisFwksUp, asgVslsVsChassisFwksTotal = chassis_state[int(chassis) - 1]
+        yield_text = 'Chassis %s: %s/%s SGMs UP' % (chassis, asgVslsVsChassisFwksUp, asgVslsVsChassisFwksTotal )
+        if asgVslsVsChassisFwksUp != asgVslsVsChassisFwksTotal:
+            yield 2, yield_text
+        else:
+            yield 0, yield_text
+
+    yield state, infotext + longoutput + '\n'
+
+
+check_info['checkpoint_asg_vsls'] = {
+    'check_function': check_checkpoint_asg_vsls,
+    'inventory_function': inventory_checkpoint_asg_vsls,
+    'service_description': "ASG VSLS",
+    'snmp_scan_function': scan_checkpoint,
+    'group': 'checkpoint_asg_vsls',
+    'snmp_info': [(
+        '.1.3.6.1.4.1.2620.1.48.30.20',  # CHECKPOINT-MIB::asgVslsInfo
+        [
+            1,  # asgVslsSgmRatio
+            2,  # asgVslsSystemPrimaryChassis
+        ]),
+        ('.1.3.6.1.4.1.2620.1.48.30.20.10.1',  # CHECKPOINT-MIB::asgVslsStateEntry
+         [
+             1,   # asgVslsVsid
+             2,   # asgVslsVsName
+             3,   # asgVslsVsPrimaryChassis
+             4,   # asgVslsVsActiveChassis
+             5,   # asgVslsVsHealth
+             6,   # asgVslsVsReason
+             9,   # asgVslsVsChassis1FwksUp
+             10,  # asgVslsVsChassis1FwksTotal
+             23,  # asgVslsVsChassis2FwksUp
+             24,  # asgVslsVsChassis2FwksTotal
+             33,  # asgVslsVsChassis3FwksUp
+             34,  # asgVslsVsChassis3FwksTotal
+         ])
+    ],
+    'includes': ['checkpoint.include'],
+}
\ No newline at end of file
diff --git a/packages/checkpoint_asg_vsls b/packages/checkpoint_asg_vsls
index bba4a00..06a26a4 100644
--- a/packages/checkpoint_asg_vsls
+++ b/packages/checkpoint_asg_vsls
@@ -1,7 +1,7 @@
 {'author': u'Th.L. (thl-cmk[at]outlook[dot]com)',
  'description': u'Monitor Check Point Maestro SMO VSLS Chassis status',
  'download_url': 'http://thl-cmk.hopto.org/',
- 'files': {'checks': ['checkpoint_asg_chassis']},
+ 'files': {'checks': ['checkpoint_asg_vsls']},
  'name': 'checkpoint_asg_vsls',
  'num_files': 1,
  'title': u'Check Point Maestro SMO ASG VSLS Chassis',
-- 
GitLab