From d21cfb3e3c5db2d4c76ef16371094721be166233 Mon Sep 17 00:00:00 2001 From: garnier-quentin Date: Thu, 19 Nov 2015 14:20:58 +0100 Subject: [PATCH] + Correct bladecenter IBM --- .../ibm/bladecenter/snmp/mode/components/ambient.pm | 2 +- .../ibm/bladecenter/snmp/mode/components/blade.pm | 6 ++++-- .../ibm/bladecenter/snmp/mode/components/chassisfan.pm | 4 ++-- .../ibm/bladecenter/snmp/mode/components/fanpack.pm | 10 +++++++--- .../bladecenter/snmp/mode/components/switchmodule.pm | 1 + 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/hardware/server/ibm/bladecenter/snmp/mode/components/ambient.pm b/hardware/server/ibm/bladecenter/snmp/mode/components/ambient.pm index 6725026a0..5c2970d7c 100644 --- a/hardware/server/ibm/bladecenter/snmp/mode/components/ambient.pm +++ b/hardware/server/ibm/bladecenter/snmp/mode/components/ambient.pm @@ -59,7 +59,7 @@ sub check { $label = 'pureflex'; } - foreach my $temp (@values) { + foreach my $temp (@sensors) { if (!defined($self->{results}->{$oid_temperature}->{$oids->{$label}->{$temp}}) || $self->{results}->{$oid_temperature}->{$oids->{$label}->{$temp}} !~ /([0-9\.]+)/) { $self->{output}->output_add(long_msg => sprintf("skip ambient '%s': no values", diff --git a/hardware/server/ibm/bladecenter/snmp/mode/components/blade.pm b/hardware/server/ibm/bladecenter/snmp/mode/components/blade.pm index db7fc2399..29ab7b611 100644 --- a/hardware/server/ibm/bladecenter/snmp/mode/components/blade.pm +++ b/hardware/server/ibm/bladecenter/snmp/mode/components/blade.pm @@ -77,8 +77,10 @@ sub check { my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_bladeSystemStatusEntry}, instance => $instance); next if ($self->check_exclude(section => 'blade', instance => $result->{bladeId})); - next if ($result->{bladeExists} =~ /No/i && - $self->absent_problem(section => 'blade', instance => $result->{bladeId})); + if ($result->{bladeExists} =~ /No/i) { + $self->{output}->output_add(long_msg => "skipping blade '" . $instance . "' : not exits"); + next; + } $self->{components}->{blade}->{total}++; if ($result->{bladePowerState} =~ /off/) { diff --git a/hardware/server/ibm/bladecenter/snmp/mode/components/chassisfan.pm b/hardware/server/ibm/bladecenter/snmp/mode/components/chassisfan.pm index c92ddd188..a3c90d7a2 100644 --- a/hardware/server/ibm/bladecenter/snmp/mode/components/chassisfan.pm +++ b/hardware/server/ibm/bladecenter/snmp/mode/components/chassisfan.pm @@ -58,8 +58,8 @@ sub check { next if ($self->check_exclude(section => 'chassisfan', instance => $instance)); $self->{components}->{chassisfan}->{total}++; - $self->{output}->output_add(long_msg => sprintf("Chassis fan '%s' is %d rpm [status: %s, instance: %s]", - $instance, $result->{fanPackAverageSpeedRPM}, $result->{chassisFanState}, + $self->{output}->output_add(long_msg => sprintf("Chassis fan '%s' is %s rpm [status: %s, instance: %s]", + $instance, $result->{chassisFanSpeedRPM}, $result->{chassisFanState}, $instance)); my $exit = $self->get_severity(section => 'chassisfan', value => $result->{chassisFanState}); if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) { diff --git a/hardware/server/ibm/bladecenter/snmp/mode/components/fanpack.pm b/hardware/server/ibm/bladecenter/snmp/mode/components/fanpack.pm index 6f6b075ff..79605c75a 100644 --- a/hardware/server/ibm/bladecenter/snmp/mode/components/fanpack.pm +++ b/hardware/server/ibm/bladecenter/snmp/mode/components/fanpack.pm @@ -29,10 +29,14 @@ my %map_state = ( 2 => 'warning', 3 => 'bad', ); +my %map_exists = ( + 0 => 'false', + 1 => 'true', +); # In MIB 'mmblade.mib' and 'cme.mib' my $mapping = { - fanPackExists => { oid => '.1.3.6.1.4.1.2.3.51.2.2.6.1.1.2' }, + fanPackExists => { oid => '.1.3.6.1.4.1.2.3.51.2.2.6.1.1.2', map => \%map_exists }, fanPackState => { oid => '.1.3.6.1.4.1.2.3.51.2.2.6.1.1.3', map => \%map_state }, fanPackAverageSpeedRPM => { oid => '.1.3.6.1.4.1.2.3.51.2.2.6.1.1.6' }, }; @@ -56,14 +60,14 @@ sub check { my $instance = $1; my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$oid_fanPackEntry}, instance => $instance); - if ($result->{fanPackExists} == 1) { + if ($result->{fanPackExists} =~ /No/i) { $self->{output}->output_add(long_msg => "skipping fanpack '" . $instance . "' : not exits"); next; } next if ($self->check_exclude(section => 'fanpack', instance => $instance)); $self->{components}->{fanpack}->{total}++; - $self->{output}->output_add(long_msg => sprintf("Fanpack '%s' is %d rpm [status: %s, instance: %s]", + $self->{output}->output_add(long_msg => sprintf("Fanpack '%s' is %s rpm [status: %s, instance: %s]", $instance, $result->{fanPackAverageSpeedRPM}, $result->{fanPackState}, $instance)); my $exit = $self->get_severity(section => 'fanpack', value => $result->{fanPackState}); diff --git a/hardware/server/ibm/bladecenter/snmp/mode/components/switchmodule.pm b/hardware/server/ibm/bladecenter/snmp/mode/components/switchmodule.pm index d48dac789..3d6c6b3f2 100644 --- a/hardware/server/ibm/bladecenter/snmp/mode/components/switchmodule.pm +++ b/hardware/server/ibm/bladecenter/snmp/mode/components/switchmodule.pm @@ -49,6 +49,7 @@ sub check { return if ($self->check_exclude(section => 'switchmodule')); foreach my $oid ($self->{snmp}->oid_lex_sort(keys %{$self->{results}->{$mapping->{smHealthState}->{oid}}})) { + $oid =~ /^$mapping->{smHealthState}->{oid}\.(.*)/; my $instance = $1; my $result = $self->{snmp}->map_instance(mapping => $mapping, results => $self->{results}->{$mapping->{smHealthState}->{oid}}, instance => $instance);