From 3dfadc575e631157a192140be10533a3a9ecf05f Mon Sep 17 00:00:00 2001 From: Kevin Duret Date: Wed, 30 Apr 2014 11:26:57 +0200 Subject: [PATCH] Fix and rename mode mirrorvg to lvsync --- .../aix/local/mode/{mirrorvg.pm => lvsync.pm} | 115 ++++++++---------- centreon-plugins/os/aix/local/plugin.pm | 2 +- 2 files changed, 55 insertions(+), 62 deletions(-) rename centreon-plugins/os/aix/local/mode/{mirrorvg.pm => lvsync.pm} (65%) diff --git a/centreon-plugins/os/aix/local/mode/mirrorvg.pm b/centreon-plugins/os/aix/local/mode/lvsync.pm similarity index 65% rename from centreon-plugins/os/aix/local/mode/mirrorvg.pm rename to centreon-plugins/os/aix/local/mode/lvsync.pm index d285742b9..96e4d8f6b 100644 --- a/centreon-plugins/os/aix/local/mode/mirrorvg.pm +++ b/centreon-plugins/os/aix/local/mode/lvsync.pm @@ -33,7 +33,7 @@ # #################################################################################### -package os::aix::local::mode::mirrorvg; +package os::aix::local::mode::lvsync; use base qw(centreon::plugins::mode); @@ -58,10 +58,9 @@ sub new { "sudo" => { name => 'sudo' }, "command:s" => { name => 'command', default => 'lsvg' }, "command-path:s" => { name => 'command_path' }, - "command-options:s" => { name => 'command_options', default => '-o | lsvg -i -l | grep -i stale 2>&1' }, + "command-options:s" => { name => 'command_options', default => '-o | lsvg -i -l 2>&1' }, + "filter-state:s" => { name => 'filter_state', default => 'stale' }, "filter-type:s" => { name => 'filter_type', }, - "warning:s" => { name => 'warning' }, - "critical:s" => { name => 'critical' }, "name:s" => { name => 'name' }, "regexp" => { name => 'use_regexp' }, "regexp-isensitive" => { name => 'use_regexpi' }, @@ -87,65 +86,63 @@ sub manage_selection { my @lines = split /\n/, $stdout; # Header not needed shift @lines; - foreach my $line (@lines) { - next if ($line !~ /^(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(.*)/); - my ($lv, $type, $lp, $pp, $pv, $lvstate, $mount) = ($1, $2, $3, $4, $5, $6, $7); - - next if (defined($self->{option_results}->{filter_type}) && $self->{option_results}->{filter_type} ne '' && - $type !~ /$self->{option_results}->{filter_type}/); - - next if (defined($self->{option_results}->{name}) && defined($self->{option_results}->{use_regexp}) && defined($self->{option_results}->{use_regexpi}) - && $mount !~ /$self->{option_results}->{name}/i); - next if (defined($self->{option_results}->{name}) && defined($self->{option_results}->{use_regexp}) && !defined($self->{option_results}->{use_regexpi}) - && $mount !~ /$self->{option_results}->{name}/); - next if (defined($self->{option_results}->{name}) && !defined($self->{option_results}->{use_regexp}) && !defined($self->{option_results}->{use_regexpi}) - && $mount ne $self->{option_results}->{name}); - - $self->{result}->{$mount} = {lv => $lv, type => $type, lp => $lp, pp => $pp, pv => $pv, lvstate => $lvstate}; + if (scalar @lines != 0){ + foreach my $line (@lines) { + next if ($line !~ /^(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(.*)/); + my ($lv, $type, $lp, $pp, $pv, $lvstate, $mount) = ($1, $2, $3, $4, $5, $6, $7); + + next if (defined($self->{option_results}->{filter_state}) && $self->{option_results}->{filter_state} ne '' && + $lvstate !~ /$self->{option_results}->{filter_state}/); + next if (defined($self->{option_results}->{filter_type}) && $self->{option_results}->{filter_type} ne '' && + $type !~ /$self->{option_results}->{filter_type}/); + + next if (defined($self->{option_results}->{name}) && defined($self->{option_results}->{use_regexp}) && defined($self->{option_results}->{use_regexpi}) + && $mount !~ /$self->{option_results}->{name}/i); + next if (defined($self->{option_results}->{name}) && defined($self->{option_results}->{use_regexp}) && !defined($self->{option_results}->{use_regexpi}) + && $mount !~ /$self->{option_results}->{name}/); + next if (defined($self->{option_results}->{name}) && !defined($self->{option_results}->{use_regexp}) && !defined($self->{option_results}->{use_regexpi}) + && $mount ne $self->{option_results}->{name}); + + $self->{result}->{$mount} = {lv => $lv, type => $type, lp => $lp, pp => $pp, pv => $pv, lvstate => $lvstate}; + } } - if (scalar(keys %{$self->{result}}) <= 0) { - if (defined($self->{option_results}->{name})) { - $self->{output}->add_option_msg(short_msg => "No lv found for mount point '" . $self->{option_results}->{name} . "'."); - } else { - $self->{output}->add_option_msg(short_msg => "No lv found."); - } - $self->{output}->option_exit(); - } } sub run { my ($self, %options) = @_; $self->manage_selection(); - if (!defined($self->{option_results}->{name}) || defined($self->{option_results}->{use_regexp})) { - $self->{output}->output_add(severity => 'OK', - short_msg => 'All lv are ok.'); - } - my $num_disk_check = 0; - foreach my $name (sort(keys %{$self->{result}})) { - $num_disk_check++; - my $lv = $self->{result}->{$name}->{lv}; - my $type = $self->{result}->{$name}->{type}; - my $lp = $self->{result}->{$name}->{lp}; - my $pp = $self->{result}->{$name}->{pp}; - my $pv = $self->{result}->{$name}->{pv}; - my $lvstate = $self->{result}->{$name}->{lvstate}; - my $mount = $name; + if (scalar(keys %{$self->{result}}) <= 0) { + $self->{output}->output_add(long_msg => 'All LV are ok.'); + $self->{output}->output_add(severity => 'OK', + short_msg => 'All LV are ok.'); + } else { + my $num_disk_check = 0; + foreach my $name (sort(keys %{$self->{result}})) { + $num_disk_check++; + my $lv = $self->{result}->{$name}->{lv}; + my $type = $self->{result}->{$name}->{type}; + my $lp = $self->{result}->{$name}->{lp}; + my $pp = $self->{result}->{$name}->{pp}; + my $pv = $self->{result}->{$name}->{pv}; + my $lvstate = $self->{result}->{$name}->{lvstate}; + my $mount = $name; - $self->{output}->output_add(long_msg => sprintf("LV '%s' MountPoint: '%s' State: '%s' [LP: %s PP: %s PV: %s]", $lv, - $mount, $lvstate, + $self->{output}->output_add(long_msg => sprintf("LV '%s' MountPoint: '%s' State: '%s' [LP: %s PP: %s PV: %s]", $lv, + $mount, $lvstate, $lp, $pp, $pv)); - $self->{output}->output_add(severity => 'critical', - short_msg => sprintf("LV '%s' MountPoint: '%s' State: '%s' [LP: %s PP: %s PV: %s]", $lv, - $mount, $lvstate, - $lp, $pp, $pv)); - } - - if ($num_disk_check == 0) { - $self->{output}->add_option_msg(short_msg => "No lv checked."); - $self->{output}->option_exit(); + $self->{output}->output_add(severity => 'critical', + short_msg => sprintf("LV '%s' MountPoint: '%s' State: '%s' [LP: %s PP: %s PV: %s]", $lv, + $mount, $lvstate, + $lp, $pp, $pv)); + } + + if ($num_disk_check == 0) { + $self->{output}->add_option_msg(short_msg => "No lv checked."); + $self->{output}->option_exit(); + } } $self->{output}->display(); @@ -201,15 +198,7 @@ Command path (Default: none). =item B<--command-options> -Command options (Default: '-o | lsvg -i -l | grep -i stale 2>&1'). - -=item B<--warning> - -Threshold warning. - -=item B<--critical> - -Threshold critical. +Command options (Default: '-o | lsvg -i -l 2>&1'). =item B<--name> @@ -223,6 +212,10 @@ Allows to use regexp to filter storage mount point (with option --name). Allows to use regexp non case-sensitive (with --regexp). +=item B<--filter-state> + +Filter filesystem state (Default: stale) (regexp can be used). + =item B<--filter-type> Filter filesystem type (regexp can be used). diff --git a/centreon-plugins/os/aix/local/plugin.pm b/centreon-plugins/os/aix/local/plugin.pm index 3df4262e6..286ba32f6 100644 --- a/centreon-plugins/os/aix/local/plugin.pm +++ b/centreon-plugins/os/aix/local/plugin.pm @@ -50,7 +50,7 @@ sub new { 'errpt' => 'os::aix::local::mode::errpt', 'list-storages' => 'os::aix::local::mode::liststorages', 'storage' => 'os::aix::local::mode::storage', - 'mirrorvg' => 'os::aix::local::mode::mirrorvg', + 'lvsync' => 'os::aix::local::mode::lvsync', ); return $self;