From 23df535492154c48cba91deece662c04c075ced3 Mon Sep 17 00:00:00 2001
From: Thl CMK <thl-cmk@outlook.com>
Date: Mon, 8 Jun 2020 21:28:30 +0200
Subject: [PATCH] update project

---
 checkpoint_soft_raid.mkp                    | Bin 3890 -> 3895 bytes
 checks/checkpoint_soft_raid                 |  46 +++++++++-----------
 packages/checkpoint_soft_raid               |   4 +-
 web/plugins/metrics/checkpoint_soft_raid.py |  27 +++++++-----
 4 files changed, 37 insertions(+), 40 deletions(-)

diff --git a/checkpoint_soft_raid.mkp b/checkpoint_soft_raid.mkp
index dfdb61c4bd34e178e14268469828634e06e714e6..3897ab2a2d9a6e33e0883ab7fb335bdcb343de34 100644
GIT binary patch
literal 3895
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
VO(w$sr^qMV7c&#;SVdS^{{w>VU;qFB

literal 3890
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

diff --git a/checks/checkpoint_soft_raid b/checks/checkpoint_soft_raid
index eaa0046..5ee8a93 100644
--- a/checks/checkpoint_soft_raid
+++ b/checks/checkpoint_soft_raid
@@ -1,11 +1,16 @@
 #!/usr/bin/python
 # -*- encoding: utf-8; py-indent-offset: 4 -*-
-
 #
-# 31.05.2016 : Th.L. : monitor Check Point appliance soft RAID
-# 08.03.2018 : Th.L. : changed snmp scan function
-# 13.03.2018 : Th.L. : code cleanup
-# 15.03.2018 : Th.L. : more code cleanup
+# License: GNU General Public License v2
+#
+# Author: thl-cmk[at]outlook[dot]com
+# URL   : https://thl-cmk.hopto.org
+#
+# 31.05.2016 : monitor Check Point appliance soft RAID
+# 08.03.2018 : changed snmp scan function
+# 13.03.2018 : code cleanup
+# 15.03.2018 : more code cleanup
+# 08.06.2020 : changed snmp-scan function
 #
 # sample snmpwalk (one volume / two disks)
 #
@@ -121,11 +126,9 @@ def inventory_checkpoint_soft_raid(parse):
                     disksonvolume.append(disk)
                     disks.remove(disk)
             yield item, [volume, disksonvolume]
-    else:
-        return
 
 
-def check_checkpoint_soft_raid(item, params, parse):
+def check_checkpoint_soft_raid(_no_item, _no_params, parse):
     raidvolumestate = {
         0: 'OPTIMAL',
         1: 'DEGRADED',
@@ -199,8 +202,6 @@ def check_checkpoint_soft_raid(item, params, parse):
             return description
 
     volumes, disks = parse
-    disksonvolume = []
-    state = 0
     infotext = ''
     longoutput = ''
     perfdata = []
@@ -217,7 +218,7 @@ def check_checkpoint_soft_raid(item, params, parse):
                 if volume.get('volumestate') != 0:
                     yield 2, 'Volume state %s' % raidvolumestate.get(volume.get('volumestate'))
                 else:
-                    infotext += 'Volume state: %s, ' % raidvolumestate.get(volume.get('volumestate'))
+                    yield 0, 'Volume state: %s' % raidvolumestate.get(volume.get('volumestate'))
 
                 infotext += '%s, '       % volume.get('volumetype')
                 infotext += '%d disks, ' % volume.get('numofdisksonraid')
@@ -230,7 +231,6 @@ def check_checkpoint_soft_raid(item, params, parse):
                 longoutput += 'max LBA: %d, '        % volume.get('volumemaxlba')
                 longoutput += 'Flags: %s'            % getflags(volume.get('volumeflags'), raidvolumeflags)
 
-
                 # disk infos
                 for disk in disks:
                     diskid = disk.get('diskid')
@@ -238,7 +238,7 @@ def check_checkpoint_soft_raid(item, params, parse):
                     if disk.get('diskstate') != 0:
                         yield 2, 'Disk ID: %d state: %s' % (diskid, raiddiskstate.get(disk.get('diskstate')))
                     else:
-                        infotext += 'Disk ID %d state %s, ' % (diskid, raiddiskstate.get(disk.get('diskstate')))
+                        yield 0, 'Disk ID %d state %s' % (diskid, raiddiskstate.get(disk.get('diskstate')))
 
                     longoutput += '\n%s disk (id %d): ' % (raiddiskid.get(diskid), diskid)
                     longoutput += 'State: %s, '         % raiddiskstate.get(disk.get('diskstate'))
@@ -253,9 +253,9 @@ def check_checkpoint_soft_raid(item, params, parse):
                     perfdata.append(('disk_id_%d' % diskid, syncstate, None, None, 0, 100))
 
                 # remove last ', '
-                infotext = infotext[:-2]
+                # infotext = infotext[:-2]
 
-    yield state, infotext + longoutput, perfdata
+                yield 0, infotext + longoutput, perfdata
 
 
 check_info['checkpoint_soft_raid'] = {
@@ -264,16 +264,11 @@ check_info['checkpoint_soft_raid'] = {
     'parse_function'          : parse_checkpoint_soft_raid,
     'default_levels_variable' : 'checkpoint_soft_raid_defaults',
     'service_description'     : 'Soft RAID',
-    'group'                   : 'cp_soft_raid',
+    'group'                   : 'checkpoint_soft_raid',
     'has_perfdata'           : True,
-
-    #'snmp_scan_function': lambda oid: oid('.1.3.6.1.2.1.1.2.0') in ['.1.3.6.1.4.1.2620.1.6.123.1.67',  # ClusterXL Gateway
-    #                                                                '.1.3.6.1.4.1.2620.1.6.123.1.65',  # Appliance
-    #                                                                '.1.3.6.1.4.1.2620.1.6.123.1.64',  # VSX Gateway
-    #                                                                '.1.3.6.1.4.1.2620.1.6.123.1.62',  # Gateway
-    #                                                                '.1.3.6.1.4.1.2620.1.6.123.1.49',  # R77.30 Gateway
-    #                                                                '.1.3.6.1.4.1.2620.1.6.123.1.48',  # Mgmt
-    'snmp_scan_function': lambda oid: oid('.1.3.6.1.2.1.1.2.0').startswith('.1.3.6.1.4.1.2620.1.6.123.1'),
+    'snmp_scan_function': lambda oid: (oid('.1.3.6.1.2.1.1.2.0').startswith('.1.3.6.1.4.1.2620.1.6.123.1') or
+                                       oid('.1.3.6.1.2.1.1.2.0').startswith('.1.3.6.1.4.1.8072.3.2.10')) and
+                                      oid('.1.3.6.1.4.1.2620.1.6.1.0', '').lower().startswith('svn foundation'),
     'snmp_info'               : [('.1.3.6.1.4.1.2620.1.6.7.7.1.1', [  # CHECKPOINT-MIB::raidVolumeEntry
                                   '1',   # raidVolumeIndex
                                   '2',   # raidVolumeID
@@ -298,5 +293,4 @@ check_info['checkpoint_soft_raid'] = {
                                   '11',  # raidDiskSyncState
                                   '12',  # raidDiskSize
                                   ])],
-}
-
+}
\ No newline at end of file
diff --git a/packages/checkpoint_soft_raid b/packages/checkpoint_soft_raid
index d79f4dc..992578c 100644
--- a/packages/checkpoint_soft_raid
+++ b/packages/checkpoint_soft_raid
@@ -6,6 +6,6 @@
  'name': 'checkpoint_soft_raid',
  'num_files': 2,
  'title': u'Check Point appliance soft RAID',
- 'version': '20180731.v0.2b',
+ 'version': '20200608.v0.2c',
  'version.min_required': '1.2.8b8',
- 'version.packaged': '1.4.0p35'}
\ No newline at end of file
+ 'version.packaged': '1.4.0p38'}
\ No newline at end of file
diff --git a/web/plugins/metrics/checkpoint_soft_raid.py b/web/plugins/metrics/checkpoint_soft_raid.py
index 94f5fb4..53cd9ce 100644
--- a/web/plugins/metrics/checkpoint_soft_raid.py
+++ b/web/plugins/metrics/checkpoint_soft_raid.py
@@ -1,24 +1,27 @@
 #!/usr/bin/python
 # -*- encoding: utf-8; py-indent-offset: 4 -*-
 #
-# Check Point soft RAID metrics plugin
+# License: GNU General Public License v2
 #
-# Author: Th.L.
+# Author: thl-cmk[at]outlook[dot]com
+# URL   : https://thl-cmk.hopto.org
 # Date  : 2018-04-11
 #
+# Check Point soft RAID metrics plugin
+#
 
-#####################################################################################################################
+##############################################################################
 #
 # define units for perfdata
 #
-#####################################################################################################################
+##############################################################################
 
 
-#####################################################################################################################
+##############################################################################
 #
 # define metrics for perfdata
 #
-#####################################################################################################################
+##############################################################################
 
 metric_info['checkpoint_soft_raid_disk_id_0'] = {
     'title': _('Sync Disk 0'),
@@ -33,22 +36,22 @@ metric_info['checkpoint_soft_raid_disk_id_1'] = {
     'color': '21/a',
 }
 
-######################################################################################################################
+##############################################################################
 #
 # map perfdata to metric
 #
-######################################################################################################################
+##############################################################################
 
 check_metrics['check_mk-checkpoint_soft_raid'] = {
     'disk_id_0': {'name': 'checkpoint_soft_raid_disk_id_0', },
     'disk_id_1': {'name': 'checkpoint_soft_raid_disk_id_1', }
 }
 
-######################################################################################################################
+##############################################################################
 #
 # how to graph perdata
 #
-######################################################################################################################
+##############################################################################
 
 graph_info.append({
     'title': _('Check Point soft RAID sync status'),
@@ -58,11 +61,11 @@ graph_info.append({
     ],
 })
 
-######################################################################################################################
+##############################################################################
 #
 # define perf-o-meter
 #
-######################################################################################################################
+##############################################################################
 
 
 perfometer_info.append(('stacked', [
-- 
GitLab