diff options
author | Harald Pfeiffer <coding _ lirion.de> | 2019-04-17 19:07:19 +0200 |
---|---|---|
committer | Harald Pfeiffer <coding _ lirion.de> | 2019-04-17 19:07:19 +0200 |
commit | 1e2387474a449452b78520b9ad96a8b4b5e99722 (patch) | |
tree | 836889471eec7d2aac177405068e2a8f1e2b1978 /nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/CommonEnclosureSubsystem | |
download | nagios-plugins-contrib-1e2387474a449452b78520b9ad96a8b4b5e99722.tar.bz2 |
initial commit of source fetch
Diffstat (limited to 'nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/CommonEnclosureSubsystem')
4 files changed, 591 insertions, 0 deletions
diff --git a/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/CommonEnclosureSubsystem/FanSubsystem.pm b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/CommonEnclosureSubsystem/FanSubsystem.pm new file mode 100755 index 0000000..c28b921 --- /dev/null +++ b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/CommonEnclosureSubsystem/FanSubsystem.pm @@ -0,0 +1,139 @@ +package HP::BladeSystem::Component::CommonEnclosureSubsystem::FanSubsystem; +our @ISA = qw(HP::BladeSystem::Component::CommonEnclosureSubsystem); + +use strict; +use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 }; + +sub new { + my $class = shift; + my %params = @_; + my $self = { + runtime => $params{runtime}, + rawdata => $params{rawdata}, + method => $params{method}, + blacklisted => 0, + fans => [], + info => undef, + extendedinfo => undef, + }; + bless $self, $class; + $self->init(); + return $self; +} + +sub init { + my $self = shift; + my $oids = { + cpqRackCommonEnclosureFanEntry => '1.3.6.1.4.1.232.22.2.3.1.3.1', + cpqRackCommonEnclosureFanRack => '1.3.6.1.4.1.232.22.2.3.1.3.1.1', + cpqRackCommonEnclosureFanChassis => '1.3.6.1.4.1.232.22.2.3.1.3.1.2', + cpqRackCommonEnclosureFanIndex => '1.3.6.1.4.1.232.22.2.3.1.3.1.3', + cpqRackCommonEnclosureFanEnclosureName => '1.3.6.1.4.1.232.22.2.3.1.3.1.4', + cpqRackCommonEnclosureFanLocation => '1.3.6.1.4.1.232.22.2.3.1.3.1.5', + cpqRackCommonEnclosureFanPartNumber => '1.3.6.1.4.1.232.22.2.3.1.3.1.6', + cpqRackCommonEnclosureFanSparePartNumber => '1.3.6.1.4.1.232.22.2.3.1.3.1.7', + cpqRackCommonEnclosureFanPresent => '1.3.6.1.4.1.232.22.2.3.1.3.1.8', + cpqRackCommonEnclosureFanRedundant => '1.3.6.1.4.1.232.22.2.3.1.3.1.9', + cpqRackCommonEnclosureFanRedundantGroupId => '1.3.6.1.4.1.232.22.2.3.1.3.1.10', + cpqRackCommonEnclosureFanCondition => '1.3.6.1.4.1.232.22.2.3.1.3.1.11', + cpqRackCommonEnclosureFanEnclosureSerialNum => '1.3.6.1.4.1.232.22.2.3.1.3.1.12', + cpqRackCommonEnclosureFanPresentValue => { + 1 => 'other', + 2 => 'absent', + 3 => 'present', + }, + cpqRackCommonEnclosureFanRedundantValue => { + 0 => 'other', # meiner phantasie entsprungen, da sich hp nicht aeussert + 1 => 'other', + 2 => 'notRedundant', + 3 => 'redundant', + }, + cpqRackCommonEnclosureFanConditionValue => { + 1 => 'other', + 2 => 'ok', + 3 => 'degraded', + 4 => 'failed', + } + }; + # INDEX { cpqRackCommonEnclosureFanRack, cpqRackCommonEnclosureFanChassis, cpqRackCommonEnclosureFanIndex } + foreach ($self->get_entries($oids, 'cpqRackCommonEnclosureFanEntry')) { + push(@{$self->{fans}}, + HP::BladeSystem::Component::CommonEnclosureSubsystem::FanSubsystem::Fan->new(%{$_})); + } + +} + +sub check { + my $self = shift; + foreach (@{$self->{fans}}) { + $_->check() if $_->{cpqRackCommonEnclosureFanPresent} eq 'present' || + $self->{runtime}->{options}->{verbose} >= 3; # absent nur bei -vvv + } +} + +sub dump { + my $self = shift; + foreach (@{$self->{fans}}) { + $_->dump() if $_->{cpqRackCommonEnclosureFanPresent} eq 'present' || + $self->{runtime}->{options}->{verbose} >= 3; # absent nur bei -vvv + } +} + + +package HP::BladeSystem::Component::CommonEnclosureSubsystem::FanSubsystem::Fan; + +our @ISA = qw(HP::BladeSystem::Component::CommonEnclosureSubsystem::FanSubsystem); + +use strict; +use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 }; + +sub new { + my $class = shift; + my %params = @_; + my $self = { + runtime => $params{runtime}, + rawdata => $params{rawdata}, + method => $params{method}, + blacklisted => 0, + info => undef, + extendedinfo => undef, + }; + map { $self->{$_} = $params{$_} } grep /cpqRackCommonEnclosureFan/, keys %params; + $self->{name} = $self->{cpqRackCommonEnclosureFanRack}.':'.$self->{cpqRackCommonEnclosureFanChassis}.':'.$self->{cpqRackCommonEnclosureFanIndex}; + bless $self, $class; + return $self; +} + +sub check { + my $self = shift; + $self->blacklist('f', $self->{name}); + $self->add_info(sprintf 'fan %s is %s, location is %s, redundance is %s, condition is %s', + $self->{name}, $self->{cpqRackCommonEnclosureFanPresent}, + $self->{cpqRackCommonEnclosureFanLocation}, + $self->{cpqRackCommonEnclosureFanRedundant}, + $self->{cpqRackCommonEnclosureFanCondition}); + if ($self->{cpqRackCommonEnclosureFanCondition} eq 'degraded') { + $self->{info} .= sprintf ", (SparePartNum: %s)", $self->{cpqRackCommonEnclosureFanSparePartNumber}; + $self->add_message(WARNING, $self->{info}); + } elsif ($self->{cpqRackCommonEnclosureFanCondition} eq 'failed') { + $self->{info} .= sprintf ", (SparePartNum: %s)", $self->{cpqRackCommonEnclosureFanSparePartNumber}; + $self->add_message(CRITICAL, $self->{info}); + } +} + +sub dump { + my $self = shift; + printf "[FAN_%s]\n", $self->{name}; + foreach (qw(cpqRackCommonEnclosureFanRack cpqRackCommonEnclosureFanChassis + cpqRackCommonEnclosureFanIndex cpqRackCommonEnclosureFanEnclosureName + cpqRackCommonEnclosureFanLocation cpqRackCommonEnclosureFanPartNumber + cpqRackCommonEnclosureFanSparePartNumber cpqRackCommonEnclosureFanPresent + cpqRackCommonEnclosureFanRedundant cpqRackCommonEnclosureFanRedundantGroupId + cpqRackCommonEnclosureFanCondition cpqRackCommonEnclosureFanEnclosureSerialNum)) { + printf "%s: %s\n", $_, $self->{$_}; + } + printf "info: %s\n", $self->{info}; + printf "\n"; +} + +1; diff --git a/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/CommonEnclosureSubsystem/FuseSubsystem.pm b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/CommonEnclosureSubsystem/FuseSubsystem.pm new file mode 100755 index 0000000..bc67e3b --- /dev/null +++ b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/CommonEnclosureSubsystem/FuseSubsystem.pm @@ -0,0 +1,121 @@ +package HP::BladeSystem::Component::CommonEnclosureSubsystem::FuseSubsystem; +our @ISA = qw(HP::BladeSystem::Component::CommonEnclosureSubsystem); + +use strict; +use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 }; + +sub new { + my $class = shift; + my %params = @_; + my $self = { + runtime => $params{runtime}, + rawdata => $params{rawdata}, + method => $params{method}, + blacklisted => 0, + fuses => [], + info => undef, + extendedinfo => undef, + }; + bless $self, $class; + $self->init(); + return $self; +} + +sub init { + my $self = shift; + my $oids = { + cpqRackCommonEnclosureFuseEntry => '1.3.6.1.4.1.232.22.2.3.1.4.1', + cpqRackCommonEnclosureFuseRack => '1.3.6.1.4.1.232.22.2.3.1.4.1.1', + cpqRackCommonEnclosureFuseChassis => '1.3.6.1.4.1.232.22.2.3.1.4.1.2', + cpqRackCommonEnclosureFuseIndex => '1.3.6.1.4.1.232.22.2.3.1.4.1.3', + cpqRackCommonEnclosureFuseEnclosureName => '1.3.6.1.4.1.232.22.2.3.1.4.1.4', + cpqRackCommonEnclosureFuseLocation => '1.3.6.1.4.1.232.22.2.3.1.4.1.5', + cpqRackCommonEnclosureFusePresent => '1.3.6.1.4.1.232.22.2.3.1.4.1.8', + cpqRackCommonEnclosureFuseCondition => '1.3.6.1.4.1.232.22.2.3.1.4.1.11', + cpqRackCommonEnclosureFusePresentValue => { + 1 => 'other', + 2 => 'absent', + 3 => 'present', + }, + cpqRackCommonEnclosureFuseConditionValue => { + 1 => 'other', + 2 => 'ok', + 4 => 'failed', + } + }; + # INDEX { cpqRackCommonEnclosureFuseRack, cpqRackCommonEnclosureFuseChassis, cpqRackCommonEnclosureFuseIndex } + foreach ($self->get_entries($oids, 'cpqRackCommonEnclosureFuseEntry')) { + push(@{$self->{fuses}}, + HP::BladeSystem::Component::CommonEnclosureSubsystem::FuseSubsystem::Fuse->new(%{$_})); + } + +} + +sub check { + my $self = shift; + foreach (@{$self->{fuses}}) { + $_->check() if $_->{cpqRackCommonEnclosureFusePresent} eq 'present' || + $self->{runtime}->{options}->{verbose} >= 3; # absent nur bei -vvv + } +} + +sub dump { + my $self = shift; + foreach (@{$self->{fuses}}) { + $_->dump() if $_->{cpqRackCommonEnclosureFusePresent} eq 'present' || + $self->{runtime}->{options}->{verbose} >= 3; # absent nur bei -vvv + } +} + + +package HP::BladeSystem::Component::CommonEnclosureSubsystem::FuseSubsystem::Fuse; + +our @ISA = qw(HP::BladeSystem::Component::CommonEnclosureSubsystem::FuseSubsystem); + +use strict; +use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 }; + +sub new { + my $class = shift; + my %params = @_; + my $self = { + runtime => $params{runtime}, + rawdata => $params{rawdata}, + method => $params{method}, + blacklisted => 0, + info => undef, + extendedinfo => undef, + }; + map { $self->{$_} = $params{$_} } grep /cpqRackCommonEnclosureFuse/, keys %params; + $self->{name} = $self->{cpqRackCommonEnclosureFuseRack}.':'.$self->{cpqRackCommonEnclosureFuseChassis}.':'.$self->{cpqRackCommonEnclosureFuseIndex}; + bless $self, $class; + return $self; +} + +sub check { + my $self = shift; + $self->blacklist('fu', $self->{name}); + $self->add_info(sprintf 'fuse %s is %s, location is %s, condition is %s', + $self->{name}, $self->{cpqRackCommonEnclosureFusePresent}, + $self->{cpqRackCommonEnclosureFuseLocation}, $self->{cpqRackCommonEnclosureFuseCondition}); + if ($self->{cpqRackCommonEnclosureFuseCondition} eq 'failed') { + $self->add_message(CRITICAL, $self->{info}); + } elsif ($self->{cpqRackCommonEnclosureFuseCondition} ne 'ok') { + $self->add_message(WARNING, $self->{info}); + } +} + +sub dump { + my $self = shift; + printf "[FUSE_%s]\n", $self->{name}; + foreach (qw(cpqRackCommonEnclosureFuseRack cpqRackCommonEnclosureFuseChassis + cpqRackCommonEnclosureFuseIndex cpqRackCommonEnclosureFuseEnclosureName + cpqRackCommonEnclosureFuseLocation cpqRackCommonEnclosureFusePresent + cpqRackCommonEnclosureFuseCondition)) { + printf "%s: %s\n", $_, $self->{$_}; + } + printf "info: %s\n", $self->{info}; + printf "\n"; +} + +1; diff --git a/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/CommonEnclosureSubsystem/ManagerSubsystem.pm b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/CommonEnclosureSubsystem/ManagerSubsystem.pm new file mode 100755 index 0000000..1c2e15b --- /dev/null +++ b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/CommonEnclosureSubsystem/ManagerSubsystem.pm @@ -0,0 +1,154 @@ +package HP::BladeSystem::Component::CommonEnclosureSubsystem::ManagerSubsystem; +our @ISA = qw(HP::BladeSystem::Component::CommonEnclosureSubsystem); + +use strict; +use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 }; + +sub new { + my $class = shift; + my %params = @_; + my $self = { + runtime => $params{runtime}, + rawdata => $params{rawdata}, + method => $params{method}, + blacklisted => 0, + managers => [], + info => undef, + extendedinfo => undef, + }; + bless $self, $class; + $self->init(); + return $self; +} + +sub init { + my $self = shift; + my $oids = { + cpqRackCommonEnclosureManagerEntry => '1.3.6.1.4.1.232.22.2.3.1.6.1', + cpqRackCommonEnclosureManagerRack => '1.3.6.1.4.1.232.22.2.3.1.6.1.1', + cpqRackCommonEnclosureManagerChassis => '1.3.6.1.4.1.232.22.2.3.1.6.1.2', + cpqRackCommonEnclosureManagerIndex => '1.3.6.1.4.1.232.22.2.3.1.6.1.3', + cpqRackCommonEnclosureManagerEnclosureName => '1.3.6.1.4.1.232.22.2.3.1.6.1.4', + cpqRackCommonEnclosureManagerLocation => '1.3.6.1.4.1.232.22.2.3.1.6.1.5', + cpqRackCommonEnclosureManagerPartNumber => '1.3.6.1.4.1.232.22.2.3.1.6.1.6', + cpqRackCommonEnclosureManagerSparePartNumber => '1.3.6.1.4.1.232.22.2.3.1.6.1.7', + cpqRackCommonEnclosureManagerSerialNum => '1.3.6.1.4.1.232.22.2.3.1.6.1.8', + cpqRackCommonEnclosureManagerRole => '1.3.6.1.4.1.232.22.2.3.1.6.1.9', + cpqRackCommonEnclosureManagerPresent => '1.3.6.1.4.1.232.22.2.3.1.6.1.10', + cpqRackCommonEnclosureManagerRedundant => '1.3.6.1.4.1.232.22.2.3.1.6.1.11', + cpqRackCommonEnclosureManagerCondition => '1.3.6.1.4.1.232.22.2.3.1.6.1.12', + cpqRackCommonEnclosureManagerFWRev => '1.3.6.1.4.1.232.22.2.3.1.6.1.15', + cpqRackCommonEnclosureManagerRoleValue => { + 1 => 'standby', + 2 => 'active', + }, + cpqRackCommonEnclosureManagerPresentValue => { + 1 => 'other', + 2 => 'absent', # mit vorsicht zu geniessen! + 3 => 'present', + }, + cpqRackCommonEnclosureManagerRedundantValue => { + 0 => 'other', # meiner phantasie entsprungen, da sich hp nicht aeussert + 1 => 'other', + 2 => 'notRedundant', + 3 => 'redundant', + }, + cpqRackCommonEnclosureManagerConditionValue => { + 1 => 'other', + 2 => 'ok', + 3 => 'degraded', + 4 => 'failed', + } + }; + # INDEX { cpqRackCommonEnclosureManagerRack, cpqRackCommonEnclosureManagerChassis, cpqRackCommonEnclosureManagerIndex } + foreach ($self->get_entries($oids, 'cpqRackCommonEnclosureManagerEntry')) { + push(@{$self->{managers}}, + HP::BladeSystem::Component::CommonEnclosureSubsystem::ManagerSubsystem::Manager->new(%{$_})); + } +} + +sub check { + my $self = shift; + foreach (@{$self->{managers}}) { + $_->check() if $_->{cpqRackCommonEnclosureManagerPresent} eq 'present' || + $self->{runtime}->{options}->{verbose} >= 3; # absent nur bei -vvv + } +} + +sub dump { + my $self = shift; + foreach (@{$self->{managers}}) { + $_->dump() if $_->{cpqRackCommonEnclosureManagerPresent} eq 'present' || + $self->{runtime}->{options}->{verbose} >= 3; # absent nur bei -vvv + } +} + + +package HP::BladeSystem::Component::CommonEnclosureSubsystem::ManagerSubsystem::Manager; + +our @ISA = qw(HP::BladeSystem::Component::CommonEnclosureSubsystem::ManagerSubsystem); + +use strict; +use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 }; + +sub new { + my $class = shift; + my %params = @_; + my $self = { + runtime => $params{runtime}, + rawdata => $params{rawdata}, + method => $params{method}, + blacklisted => 0, + info => undef, + extendedinfo => undef, + }; + map { $self->{$_} = $params{$_} } grep /cpqRackCommonEnclosureManager/, keys %params; + $self->{name} = $self->{cpqRackCommonEnclosureManagerRack}. + ':'.$self->{cpqRackCommonEnclosureManagerChassis}. + ':'.$self->{cpqRackCommonEnclosureManagerIndex}; + if ($self->{cpqRackCommonEnclosureManagerPresent} eq "absent" && + defined $self->{cpqRackCommonEnclosureManagerEnclosureName}) { + $self->{cpqRackCommonEnclosureManagerPresent} = "present"; + } + bless $self, $class; + return $self; +} + +sub check { + my $self = shift; + $self->blacklist('em', $self->{name}); + my $info = sprintf 'manager %s is %s, location is %s, redundance is %s, condition is %s, role is %s', + $self->{name}, $self->{cpqRackCommonEnclosureManagerPresent}, + $self->{cpqRackCommonEnclosureManagerLocation}, + $self->{cpqRackCommonEnclosureManagerRedundant}, + $self->{cpqRackCommonEnclosureManagerCondition}, + $self->{cpqRackCommonEnclosureManagerRole}; + $self->add_info($info) if $self->{cpqRackCommonEnclosureManagerPresent} eq 'present' || + $self->{runtime}->{options}->{verbose} >= 3; # absent managers nur bei -vvv + if ($self->{cpqRackCommonEnclosureManagerCondition} eq 'degraded') { + $self->{info} .= sprintf ' (SparePartNum: %s)', + $self->{cpqRackCommonEnclosureManagerSparePartNumber}; + $self->add_message(WARNING, $self->{info}); + } elsif ($self->{cpqRackCommonEnclosureManagerCondition} eq 'failed') { + $self->{info} .= sprintf ' (SparePartNum: %s)', + $self->{cpqRackCommonEnclosureManagerSparePartNumber}; + $self->add_message(CRITICAL, $self->{info}); + } +} + +sub dump { + my $self = shift; + printf "[ENCLOSURE_MANAGER_%s]\n", $self->{name}; + foreach (qw(cpqRackCommonEnclosureManagerRack cpqRackCommonEnclosureManagerChassis + cpqRackCommonEnclosureManagerIndex cpqRackCommonEnclosureManagerEnclosureName + cpqRackCommonEnclosureManagerLocation cpqRackCommonEnclosureManagerPartNumber + cpqRackCommonEnclosureManagerSparePartNumber cpqRackCommonEnclosureManagerPresent + cpqRackCommonEnclosureManagerRedundant + cpqRackCommonEnclosureManagerCondition cpqRackCommonEnclosureManagerFWRev)) { + printf "%s: %s\n", $_, $self->{$_}; + } + printf "info: %s\n", $self->{info}; + printf "\n"; +} + +1; diff --git a/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/CommonEnclosureSubsystem/TempSubsystem.pm b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/CommonEnclosureSubsystem/TempSubsystem.pm new file mode 100755 index 0000000..3e004f1 --- /dev/null +++ b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/CommonEnclosureSubsystem/TempSubsystem.pm @@ -0,0 +1,177 @@ +package HP::BladeSystem::Component::CommonEnclosureSubsystem::TempSubsystem; +our @ISA = qw(HP::BladeSystem::Component::CommonEnclosureSubsystem); + +use strict; +use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 }; + +sub new { + my $class = shift; + my %params = @_; + my $self = { + runtime => $params{runtime}, + rawdata => $params{rawdata}, + method => $params{method}, + condition => $params{condition}, + status => $params{status}, + temperatures => [], + blacklisted => 0, + info => undef, + extendedinfo => undef, + }; + bless $self, $class; + if ($params{runtime}->{options}->{customthresholds}) { + if (-f $params{runtime}->{options}->{customthresholds}) { + open CT, $params{runtime}->{options}->{customthresholds}; + $params{runtime}->{options}->{customthresholds} = <CT>; + close CT; + } + foreach my $ct_items + (split(/\//, $params{runtime}->{options}->{customthresholds})) { + if ($ct_items =~ /^(\d+):(\d+)$/) { + my $temp = $2; + $params{runtime}->{options}->{thresholds}->{$1} = $temp; + } else { + die sprintf "invalid threshold %s", $ct_items; + } + } + } + $self->init(); + return $self; +} + +sub init { + my $self = shift; + my %params = @_; + my $snmpwalk = $self->{rawdata}; + my $oids = { + cpqRackCommonEnclosureTempEntry => '1.3.6.1.4.1.232.22.2.3.1.2.1', + cpqRackCommonEnclosureTempRack => '1.3.6.1.4.1.232.22.2.3.1.2.1.1', + cpqRackCommonEnclosureTempChassis => '1.3.6.1.4.1.232.22.2.3.1.2.1.2', + cpqRackCommonEnclosureTempSensorIndex => '1.3.6.1.4.1.232.22.2.3.1.2.1.3', + cpqRackCommonEnclosureTempSensorEnclosureName => '1.3.6.1.4.1.232.22.2.3.1.2.1.4', + cpqRackCommonEnclosureTempLocation => '1.3.6.1.4.1.232.22.2.3.1.2.1.5', + cpqRackCommonEnclosureTempCurrent => '1.3.6.1.4.1.232.22.2.3.1.2.1.6', + cpqRackCommonEnclosureTempThreshold => '1.3.6.1.4.1.232.22.2.3.1.2.1.7', + cpqRackCommonEnclosureTempCondition => '1.3.6.1.4.1.232.22.2.3.1.2.1.8', + cpqRackCommonEnclosureTempType => '1.3.6.1.4.1.232.22.2.3.1.2.1.9', + cpqRackCommonEnclosureTempConditionValue => { + 1 => 'other', + 2 => 'ok', + 3 => 'degraded', + 4 => 'failed', + }, + cpqRackCommonEnclosureTempTypeValue => { + 1 => 'other', + 5 => 'blowout', + 9 => 'caution', + 15 => 'critical', + }, + }; + # INDEX { cpqRackCommonEnclosureTempRack cpqRackCommonEnclosureTempChassis + # cpqRackCommonEnclosureTempSensorIndex } + foreach ($self->get_entries($oids, 'cpqRackCommonEnclosureTempEntry')) { + push(@{$self->{temperatures}}, + HP::BladeSystem::Component::CommonEnclosureSubsystem::TempSubsystem::Temp->new(%{$_})) if (($_->{cpqRackCommonEnclosureTempCurrent} != -1 && $_->{cpqRackCommonEnclosureTempThreshold} != -1) && ($_->{cpqRackCommonEnclosureTempThreshold} != 0)); + } + +} + + +sub check { + my $self = shift; + my $errorfound = 0; + if (scalar (@{$self->{temperatures}}) == 0) { + #$self->overall_check(); + } else { + foreach (@{$self->{temperatures}}) { + $_->check(); + } + } +} + +sub dump { + my $self = shift; + foreach (@{$self->{temperatures}}) { + $_->dump(); + } +} + + +package HP::BladeSystem::Component::CommonEnclosureSubsystem::TempSubsystem::Temp; +our @ISA = qw(HP::BladeSystem::Component::CommonEnclosureSubsystem::TempSubsystem); + +use strict; +use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 }; + +sub new { + my $class = shift; + my %params = @_; + my $self = { + runtime => $params{runtime}, + rawdata => $params{rawdata}, + method => $params{method}, + blacklisted => 0, + info => undef, + extendedinfo => undef, + }; + map { $self->{$_} = $params{$_} } grep /cpqRackCommonEnclosureTemp/, keys %params; + $self->{name} = $params{cpqRackCommonEnclosureTempRack}.':'. + $params{cpqRackCommonEnclosureTempChassis}.':'. + $params{cpqRackCommonEnclosureTempSensorIndex}; + bless $self, $class; + return $self; +} + +sub check { + my $self = shift; + $self->blacklist('t', $self->{name}); + if ($self->{cpqRackCommonEnclosureTempCurrent} > $self->{cpqRackCommonEnclosureTempThreshold}) { + $self->add_info(sprintf "%s temperature too high (%d%s)", + $self->{cpqRackCommonEnclosureTempLocation}, + $self->{cpqRackCommonEnclosureTempCurrent}, + $self->{runtime}->{options}->{celsius} ? "C" : "F"); + $self->add_message(CRITICAL, $self->{info}); + } else { + $self->add_info(sprintf "%s temperature is %d%s (%d max)", + $self->{cpqRackCommonEnclosureTempLocation}, + $self->{cpqRackCommonEnclosureTempCurrent}, + $self->{runtime}->{options}->{celsius} ? "C" : "F", + $self->{cpqRackCommonEnclosureTempThreshold}); + } + if ($self->{runtime}->{options}->{perfdata} == 2) { + $self->{runtime}->{plugin}->add_perfdata( + label => sprintf('temp_%s', $self->{name}), + value => $self->{cpqRackCommonEnclosureTempCurrent}, + warning => $self->{cpqRackCommonEnclosureTempThreshold}, + critical => $self->{cpqRackCommonEnclosureTempThreshold} + ); + } elsif ($self->{runtime}->{options}->{perfdata} == 1) { + $self->{runtime}->{plugin}->add_perfdata( + label => sprintf('temp_%s_%s', $self->{name}, + $self->{cpqRackCommonEnclosureTempLocation}), + value => $self->{cpqRackCommonEnclosureTempCurrent}, + warning => $self->{cpqRackCommonEnclosureTempThreshold}, + critical => $self->{cpqRackCommonEnclosureTempThreshold} + ); + } + $self->add_extendedinfo(sprintf "temp_%s=%d", + $self->{name}, $self->{cpqRackCommonEnclosureTempCurrent}); + +} + + +sub dump { + my $self = shift; + printf "[TEMP_%s]\n", $self->{name}; + foreach (qw(cpqRackCommonEnclosureTempRack cpqRackCommonEnclosureTempChassis + cpqRackCommonEnclosureTempSensorIndex cpqRackCommonEnclosureTempSensorEnclosureName + cpqRackCommonEnclosureTempLocation + cpqRackCommonEnclosureTempCurrent cpqRackCommonEnclosureTempThreshold + cpqRackCommonEnclosureTempCondition cpqRackCommonEnclosureTempType)) { + printf "%s: %s\n", $_, $self->{$_}; + } + printf "info: %s\n\n", $self->{info}; +} + +1; + |