From a6e189fb6ee1ca1ab57381d141fbacfdba36decc Mon Sep 17 00:00:00 2001 From: Christopher Odenbach Date: Thu, 23 Nov 2017 09:46:52 +0100 Subject: [PATCH 1/6] enable checking of multiple mpt controllers --- .../Plugin/CheckRaid/Plugins/mpt.pm | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/lib/App/Monitoring/Plugin/CheckRaid/Plugins/mpt.pm b/lib/App/Monitoring/Plugin/CheckRaid/Plugins/mpt.pm index 575e6696..9fcefda3 100644 --- a/lib/App/Monitoring/Plugin/CheckRaid/Plugins/mpt.pm +++ b/lib/App/Monitoring/Plugin/CheckRaid/Plugins/mpt.pm @@ -42,21 +42,24 @@ sub active { return defined($id); } -# get controller from mpt-status -p -# FIXME: could there be multiple controllers? sub get_controller { my $this = shift; + + # controller ID may be given on the command line + my $id = $this->{options}{'mpt-id'}; + if (!$id) { - my $fh = $this->cmd('get_controller_no'); - my $id; - while (<$fh>) { - chomp; - if (/^Found.*id=(\d{1,2}),.*/) { - $id = $1; - last; + # get controller from mpt-status -p + my $fh = $this->cmd('get_controller_no'); + while (<$fh>) { + chomp; + if (/^Found.*id=(\d{1,2}),.*/) { + $id = $1; + last; + } } + close $fh; } - close $fh; return $id; } From 642c65976bd8c397a0c0605d9348bc9f18d00383 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Thu, 23 Nov 2017 21:39:30 +0200 Subject: [PATCH 2/6] add extracted test data from PR --- t/check_mpt.t | 6 ++++++ t/data/mpt/pr177/mpt-status-i-2 | 3 +++ t/data/mpt/pr177/mpt-status-p | 2 ++ 3 files changed, 11 insertions(+) create mode 100644 t/data/mpt/pr177/mpt-status-i-2 create mode 100644 t/data/mpt/pr177/mpt-status-p diff --git a/t/check_mpt.t b/t/check_mpt.t index e42c867c..3a0484b4 100755 --- a/t/check_mpt.t +++ b/t/check_mpt.t @@ -47,6 +47,12 @@ my @tests = ( input => 'pr57/status13', message => 'Volume 13 (RAID-1, 2 disks, 135 GiB): OPTIMAL', }, + { + status => OK, + get_controller_no => 'pr177/mpt-status-p', + input => 'pr177/mpt-status-i-2', + message => 'Volume 2 (RAID-1, 2 disks, 58 GiB): OPTIMAL', + }, ); # test that plugin can be created diff --git a/t/data/mpt/pr177/mpt-status-i-2 b/t/data/mpt/pr177/mpt-status-i-2 new file mode 100644 index 00000000..0e9fd0ac --- /dev/null +++ b/t/data/mpt/pr177/mpt-status-i-2 @@ -0,0 +1,3 @@ +ioc0 vol_id 2 type IM, 2 phy, 58 GB, state OPTIMAL, flags ENABLED +ioc0 phy 1 scsi_id 4 ATA SSDSA2SH064G1GC 8860, 59 GB, state ONLINE, flags NONE +ioc0 phy 0 scsi_id 3 ATA SSDSA2SH064G1GC 8860, 59 GB, state ONLINE, flags NONE diff --git a/t/data/mpt/pr177/mpt-status-p b/t/data/mpt/pr177/mpt-status-p new file mode 100644 index 00000000..cc78d25d --- /dev/null +++ b/t/data/mpt/pr177/mpt-status-p @@ -0,0 +1,2 @@ +Checking for SCSI ID:0 +Found SCSI id=0, use ''mpt-status -i 0`` to get more information. From 9c61601760a3f9a883aefc8ea4474d13196bee2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Thu, 23 Nov 2017 21:45:54 +0200 Subject: [PATCH 3/6] add test data for -i 0 --- t/check_mpt.t | 6 ++++++ t/data/mpt/pr177/mpt-status-i-0 | 3 +++ 2 files changed, 9 insertions(+) create mode 100644 t/data/mpt/pr177/mpt-status-i-0 diff --git a/t/check_mpt.t b/t/check_mpt.t index 3a0484b4..3029edfa 100755 --- a/t/check_mpt.t +++ b/t/check_mpt.t @@ -53,6 +53,12 @@ my @tests = ( input => 'pr177/mpt-status-i-2', message => 'Volume 2 (RAID-1, 2 disks, 58 GiB): OPTIMAL', }, + { + status => OK, + get_controller_no => 'pr177/mpt-status-p', + input => 'pr177/mpt-status-i-0', + message => 'Volume 0 (RAID-1, 2 disks, 33 GiB): OPTIMAL', + }, ); # test that plugin can be created diff --git a/t/data/mpt/pr177/mpt-status-i-0 b/t/data/mpt/pr177/mpt-status-i-0 new file mode 100644 index 00000000..0161ad7f --- /dev/null +++ b/t/data/mpt/pr177/mpt-status-i-0 @@ -0,0 +1,3 @@ +ioc0 vol_id 0 type IM, 2 phy, 33 GB, state OPTIMAL, flags ENABLED +ioc0 phy 2 scsi_id 5 FUJITSU MAY2036RCSUN36G 0401, 33 GB, state ONLINE, flags NONE +ioc0 phy 3 scsi_id 1 FUJITSU MAY2036RCSUN36G 0401, 33 GB, state ONLINE, flags NONE From 9fc92452e0bd7a03cc2c3229db5b28848e331109 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Thu, 23 Nov 2017 21:55:01 +0200 Subject: [PATCH 4/6] fix test count --- t/check_mpt.t | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/t/check_mpt.t b/t/check_mpt.t index 3029edfa..7bbdc250 100755 --- a/t/check_mpt.t +++ b/t/check_mpt.t @@ -6,7 +6,8 @@ BEGIN { use strict; use warnings; -use Test::More tests => 31; +use constant TESTS => 8; +use Test::More tests => 1 + TESTS * 5; use test; my @tests = ( From ef79c2badc66bb5ae44485aabaf637badaa8c431 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Thu, 23 Nov 2017 21:55:04 +0200 Subject: [PATCH 5/6] preserve formatting from mpt-status output --- t/data/mpt/pr177/mpt-status-i-2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/t/data/mpt/pr177/mpt-status-i-2 b/t/data/mpt/pr177/mpt-status-i-2 index 0e9fd0ac..45c88b2e 100644 --- a/t/data/mpt/pr177/mpt-status-i-2 +++ b/t/data/mpt/pr177/mpt-status-i-2 @@ -1,3 +1,3 @@ ioc0 vol_id 2 type IM, 2 phy, 58 GB, state OPTIMAL, flags ENABLED -ioc0 phy 1 scsi_id 4 ATA SSDSA2SH064G1GC 8860, 59 GB, state ONLINE, flags NONE -ioc0 phy 0 scsi_id 3 ATA SSDSA2SH064G1GC 8860, 59 GB, state ONLINE, flags NONE +ioc0 phy 1 scsi_id 4 ATA SSDSA2SH064G1GC 8860, 59 GB, state ONLINE, flags NONE +ioc0 phy 0 scsi_id 3 ATA SSDSA2SH064G1GC 8860, 59 GB, state ONLINE, flags NONE From 6dbfe33a7ae33f345ab1070d04aa7514f7236b98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Thu, 23 Nov 2017 21:56:45 +0200 Subject: [PATCH 6/6] update changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3253fd84..62c4e3c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## [4.0.9] - UNRELEASED +- mpt-status: Enable checking of multiple mpt controllers, [#177] + +[#177]: https://github.com/glensc/nagios-plugin-check_raid/pull/177 [4.0.9]: https://github.com/glensc/nagios-plugin-check_raid/compare/4.0.8...master ## [4.0.8] - 2017-09-01