From e860d0741f046dcc89bdb82b4c6852503bce0ac3 Mon Sep 17 00:00:00 2001 From: garnier-quentin Date: Fri, 24 May 2019 17:09:32 +0200 Subject: [PATCH] Fix #1165 --- .../standard/snmp/mode/components/led.pm | 4 +-- .../standard/snmp/mode/components/psu.pm | 31 ++++++++++++++++--- .../hirschmann/standard/snmp/mode/cpu.pm | 10 +++--- .../hirschmann/standard/snmp/mode/hardware.pm | 8 ++--- .../hirschmann/standard/snmp/mode/memory.pm | 10 +++--- 5 files changed, 42 insertions(+), 21 deletions(-) diff --git a/centreon-plugins/network/hirschmann/standard/snmp/mode/components/led.pm b/centreon-plugins/network/hirschmann/standard/snmp/mode/components/led.pm index a2d747a02..6c9500499 100644 --- a/centreon-plugins/network/hirschmann/standard/snmp/mode/components/led.pm +++ b/centreon-plugins/network/hirschmann/standard/snmp/mode/components/led.pm @@ -99,8 +99,8 @@ sub check { } else { return ; } - + check_led($self, mapping => $mapping); } -1; \ No newline at end of file +1; diff --git a/centreon-plugins/network/hirschmann/standard/snmp/mode/components/psu.pm b/centreon-plugins/network/hirschmann/standard/snmp/mode/components/psu.pm index b3d47f08f..edb2ffca7 100644 --- a/centreon-plugins/network/hirschmann/standard/snmp/mode/components/psu.pm +++ b/centreon-plugins/network/hirschmann/standard/snmp/mode/components/psu.pm @@ -29,30 +29,51 @@ my %map_psu_status = ( 3 => 'notInstalled', 4 => 'unknown', ); +my %map_psu_state = ( + 1 => 'error', 2 => 'ignore', +); +my %map_psid = ( + 1 => 9, # hmDevMonSensePS1State + 2 => 10, # hmDevMonSensePS2State + 3 => 14, # hmDevMonSensePS3State + 4 => 15, # hmDevMonSensePS4State + 5 => 17, # hmDevMonSensePS5State + 6 => 18, # hmDevMonSensePS6State + 7 => 19, # hmDevMonSensePS7State + 8 => 20, # hmDevMonSensePS8State +); # In MIB 'hmpriv.mib' my $mapping = { hmPSState => { oid => '.1.3.6.1.4.1.248.14.1.2.1.3', map => \%map_psu_status }, }; +my $oid_hmDevMonConfigEntry = '.1.3.6.1.4.1.248.14.2.12.3.1'; sub load { my ($self) = @_; - push @{$self->{request}}, { oid => $mapping->{hmPSState}->{oid} }; + push @{$self->{request}}, { oid => $mapping->{hmPSState}->{oid} }, { oid => $oid_hmDevMonConfigEntry }; } sub check { my ($self) = @_; $self->{output}->output_add(long_msg => "Checking power supplies"); - $self->{components}->{psu} = {name => 'psus', total => 0, skip => 0}; + $self->{components}->{psu} = { name => 'psus', total => 0, skip => 0 }; return if ($self->check_filter(section => 'psu')); foreach my $oid ($self->{snmp}->oid_lex_sort(keys %{$self->{results}->{$mapping->{hmPSState}->{oid}}})) { - next if ($oid !~ /^$mapping->{hmPSState}->{oid}\.(.*)$/); - my $instance = $1; + next if ($oid !~ /^$mapping->{hmPSState}->{oid}\.(\d+)\.(\d+)$/); + my $instance = $1 . '.' . $2; + my ($sysid, $psid) = ($1, $2); my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$mapping->{hmPSState}->{oid}}, instance => $instance); + if (defined($map_psid{$psid}) && + defined($self->{results}->{$oid_hmDevMonConfigEntry}->{$oid_hmDevMonConfigEntry . '.' . $map_psid{$psid} . '.' . $sysid})) { + my $state = $map_psu_state{$self->{results}->{$oid_hmDevMonConfigEntry}->{$oid_hmDevMonConfigEntry . '.' . $map_psid{$psid} . '.' . $sysid}}; + $result->{hmPSState} = 'ignore' if ($state eq 'ignore'); + } + next if ($self->check_filter(section => 'psu', instance => $instance)); next if ($result->{hmPSState} =~ /notInstalled/i && $self->absent_problem(section => 'psu', instance => $instance)); @@ -71,4 +92,4 @@ sub check { } } -1; \ No newline at end of file +1; diff --git a/centreon-plugins/network/hirschmann/standard/snmp/mode/cpu.pm b/centreon-plugins/network/hirschmann/standard/snmp/mode/cpu.pm index 743da4e37..d8f0c69fb 100644 --- a/centreon-plugins/network/hirschmann/standard/snmp/mode/cpu.pm +++ b/centreon-plugins/network/hirschmann/standard/snmp/mode/cpu.pm @@ -31,11 +31,11 @@ sub new { bless $self, $class; $self->{version} = '1.0'; - $options{options}->add_options(arguments => - { - "warning:s" => { name => 'warning' }, - "critical:s" => { name => 'critical' }, - }); + $options{options}->add_options(arguments => { + "warning:s" => { name => 'warning' }, + "critical:s" => { name => 'critical' }, + }); + return $self; } diff --git a/centreon-plugins/network/hirschmann/standard/snmp/mode/hardware.pm b/centreon-plugins/network/hirschmann/standard/snmp/mode/hardware.pm index 0d6a5e4db..95fc50828 100644 --- a/centreon-plugins/network/hirschmann/standard/snmp/mode/hardware.pm +++ b/centreon-plugins/network/hirschmann/standard/snmp/mode/hardware.pm @@ -43,9 +43,10 @@ sub set_system { ['failed', 'CRITICAL'], ['notInstalled', 'OK'], ['unknown', 'UNKNOWN'], + ['ignore', 'OK'], ], led => [ - ['off', 'UNKNOWN'], + ['off', 'OK'], ['green', 'OK'], ['yellow', 'WARNING'], ['red', 'CRITICAL'], @@ -69,9 +70,8 @@ sub new { bless $self, $class; $self->{version} = '1.0'; - $options{options}->add_options(arguments => - { - }); + $options{options}->add_options(arguments => { + }); return $self; } diff --git a/centreon-plugins/network/hirschmann/standard/snmp/mode/memory.pm b/centreon-plugins/network/hirschmann/standard/snmp/mode/memory.pm index 3f40a9a9d..75cfdf1d2 100644 --- a/centreon-plugins/network/hirschmann/standard/snmp/mode/memory.pm +++ b/centreon-plugins/network/hirschmann/standard/snmp/mode/memory.pm @@ -31,11 +31,11 @@ sub new { bless $self, $class; $self->{version} = '1.0'; - $options{options}->add_options(arguments => - { - "warning:s" => { name => 'warning' }, - "critical:s" => { name => 'critical' }, - }); + $options{options}->add_options(arguments => { + "warning:s" => { name => 'warning' }, + "critical:s" => { name => 'critical' }, + }); + return $self; }