From aae03f6fd22fd19536f49c3a4ef6b1d4a4219f40 Mon Sep 17 00:00:00 2001
From: Quentin Garnier <qgarnier@merethis.com>
Date: Wed, 11 Mar 2015 16:52:27 +1100
Subject: [PATCH] Fix bladecenter ibm

---
 .../server/ibm/bladecenter/snmp/mode/components/blower.pm  | 6 +++---
 hardware/server/ibm/bladecenter/snmp/mode/hardware.pm      | 7 +++++++
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/hardware/server/ibm/bladecenter/snmp/mode/components/blower.pm b/hardware/server/ibm/bladecenter/snmp/mode/components/blower.pm
index 841891f6c..7e0e6014e 100644
--- a/hardware/server/ibm/bladecenter/snmp/mode/components/blower.pm
+++ b/hardware/server/ibm/bladecenter/snmp/mode/components/blower.pm
@@ -77,10 +77,10 @@ sub check {
         next if (!defined($self->{results}->{$oid_blowers}->{$oid_blowers . '.' . ($entry_blower_state + $i) . '.0'}));
         my $blower_state = $map_blower_state{$self->{results}->{$oid_blowers}->{$oid_blowers . '.' . ($entry_blower_state + $i) . '.0'}};
         my $blower_speed = defined($self->{results}->{$oid_blowers}->{$oid_blowers . '.' . ($entry_blower_speed + $i) . '.0'}) ? $map_blower_state{$self->{results}->{$oid_blowers}->{$oid_blowers . '.' . ($entry_blower_speed + $i) . '.0'}} : undef;
-        my $ctrl_state = defined($self->{results}->{$oid_blowers}->{$oid_blowers . '.' . ($entry_controller_state + $i) . '.0'}) ? $map_blower_state{$self->{results}->{$oid_blowers}->{$oid_blowers . '.' . ($entry_controller_state + $i) . '.0'}} : undef;
+        my $ctrl_state = defined($self->{results}->{$oid_blowers}->{$oid_blowers . '.' . ($entry_controller_state + $i) . '.0'}) ? $map_controller_state{$self->{results}->{$oid_blowers}->{$oid_blowers . '.' . ($entry_controller_state + $i) . '.0'}} : undef;
     
         next if ($self->check_exclude(section => 'blower', instance => $instance));
-        next if ($blower_state =~ /No Blower/i && 
+        next if ($blower_speed =~ /No Blower/i && 
                  $self->absent_problem(section => 'blower', instance => $instance));
         $self->{components}->{blower}->{total}++;
 
@@ -112,7 +112,7 @@ sub check {
                  $self->absent_problem(section => 'blowerctrl', instance => $instance));
         $self->{output}->output_add(long_msg => sprintf("Blower controller '%s' state is %s.", 
                                     $instance, $ctrl_state));
-        $exit = $self->get_severity(section => 'blower', value => $ctrl_state);
+        $exit = $self->get_severity(section => 'blowerctrl', value => $ctrl_state);
         if (!$self->{output}->is_status(value => $exit, compare => 'ok', litteral => 1)) {
             $self->{output}->output_add(severity => $exit,
                                         short_msg => sprintf("Blower controller '%s' state is %s", 
diff --git a/hardware/server/ibm/bladecenter/snmp/mode/hardware.pm b/hardware/server/ibm/bladecenter/snmp/mode/hardware.pm
index 89f4df712..0e38be2b5 100644
--- a/hardware/server/ibm/bladecenter/snmp/mode/hardware.pm
+++ b/hardware/server/ibm/bladecenter/snmp/mode/hardware.pm
@@ -52,6 +52,13 @@ my $thresholds = {
         ['good', 'OK'],
         ['warning', 'WARNING'],
         ['bad', 'CRITICAL'],
+    ],    
+    blowerctrl => [
+        ['unknown', 'UNKNOWN'],
+        ['operational', 'OK'],
+        ['flashing', 'WARNING'],
+        ['communicationError', 'CRITICAL'],
+        ['notPresent', 'UNKNOWN'],
     ],
     blade => [
         ['unknown', 'UNKNOWN'],