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/ServerBladeSubsystem.pm | |
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/ServerBladeSubsystem.pm')
-rwxr-xr-x | nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/ServerBladeSubsystem.pm | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/ServerBladeSubsystem.pm b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/ServerBladeSubsystem.pm new file mode 100755 index 0000000..2b41f7c --- /dev/null +++ b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/BladeSystem/Component/ServerBladeSubsystem.pm @@ -0,0 +1,158 @@ +package HP::BladeSystem::Component::ServerBladeSubsystem; +our @ISA = qw(HP::BladeSystem::Component); + +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}, + server_blades => [], + blacklisted => 0, + info => undef, + extendedinfo => undef, + }; + bless $self, $class; + $self->init(); + return $self; +} + +sub init { + my $self = shift; + my $oids = { + cpqRackServerBladeEntry => '1.3.6.1.4.1.232.22.2.4.1.1.1', + cpqRackServerBladeRack => '1.3.6.1.4.1.232.22.2.4.1.1.1.1', + cpqRackServerBladeChassis => '1.3.6.1.4.1.232.22.2.4.1.1.1.2', + cpqRackServerBladeIndex => '1.3.6.1.4.1.232.22.2.4.1.1.1.3', + cpqRackServerBladeName => '1.3.6.1.4.1.232.22.2.4.1.1.1.4', + cpqRackServerBladeEnclosureName => '1.3.6.1.4.1.232.22.2.4.1.1.1.5', + cpqRackServerBladePartNumber => '1.3.6.1.4.1.232.22.2.4.1.1.1.6', + cpqRackServerBladeSparePartNumber => '1.3.6.1.4.1.232.22.2.4.1.1.1.7', + cpqRackServerBladePosition => '1.3.6.1.4.1.232.22.2.4.1.1.1.8', + cpqRackServerBladeHeight => '1.3.6.1.4.1.232.22.2.4.1.1.1.9', + cpqRackServerBladeWidth => '1.3.6.1.4.1.232.22.2.4.1.1.1.10', + cpqRackServerBladeDepth => '1.3.6.1.4.1.232.22.2.4.1.1.1.11', + cpqRackServerBladePresent => '1.3.6.1.4.1.232.22.2.4.1.1.1.12', + cpqRackServerBladeHasFuses => '1.3.6.1.4.1.232.22.2.4.1.1.1.13', + cpqRackServerBladeEnclosureSerialNum => '1.3.6.1.4.1.232.22.2.4.1.1.1.14', + cpqRackServerBladeSlotsUsed => '1.3.6.1.4.1.232.22.2.4.1.1.1.15', + cpqRackServerBladeStatus => '1.3.6.1.4.1.232.22.2.4.1.1.1.21', + cpqRackServerBladeDiagnosticString => '1.3.6.1.4.1.232.22.2.4.1.1.1.24', + cpqRackServerBladePowered => '1.3.6.1.4.1.232.22.2.4.1.1.1.25', + cpqRackServerBladePOSTStatus => '1.3.6.1.4.1.232.22.2.4.1.1.1.35', + cpqRackServerBladePresentValue => { + 1 => 'other', + 2 => 'absent', + 3 => 'present', + }, + cpqRackServerBladeStatusValue => { + 1 => 'other', + 2 => 'ok', + 3 => 'degraded', + 4 => 'failed', + }, + cpqRackServerBladePoweredValue => { + 0 => 'aechz', + 1 => 'other', + 2 => 'on', + 3 => 'off', + 4 => 'powerStagedOff', + 5 => 'reboot', + }, + cpqRackServerBladePOSTStatusValue => { + 1 => 'other', + 2 => 'started', + 3 => 'completed', + 4 => 'failed', + }, + }; + + + # INDEX { cpqRackServerBladeRack, cpqRackServerBladeChassis, cpqRackServerBladeIndex } + # dreckada dreck, dreckada + foreach ($self->get_entries($oids, 'cpqRackServerBladeEntry')) { + push(@{$self->{server_blades}}, + HP::BladeSystem::Component::ServerBladeSubsystem::ServerBlade->new(%{$_})); + } +} + +sub check { + my $self = shift; + foreach (@{$self->{server_blades}}) { + $_->check() if $_->{cpqRackServerBladePresent} eq 'present' || + $self->{runtime}->{options}->{verbose} >= 3; # absent blades nur bei -vvv + } +} + +sub dump { + my $self = shift; + foreach (@{$self->{server_blades}}) { + $_->dump() if $_->{cpqRackServerBladePresent} eq 'present' || + $self->{runtime}->{options}->{verbose} >= 3; # absent blades nur bei -vvv + } +} + + +package HP::BladeSystem::Component::ServerBladeSubsystem::ServerBlade; +our @ISA = qw(HP::BladeSystem::Component::ServerBladeSubsystem); + +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 /cpqRackServerBlade/, keys %params; + $self->{cpqRackServerBladeDiagnosticString} ||= ''; + $self->{name} = $self->{cpqRackServerBladeRack}. + ':'.$self->{cpqRackServerBladeChassis}. + ':'.$self->{cpqRackServerBladeIndex}; + bless $self, $class; + $self->init(); +#printf "%s\n", Data::Dumper::Dumper(\%params); + return $self; +} + +sub check { + my $self = shift; + $self->blacklist('sb', $self->{name}); + my $info = sprintf 'server blade %s \'%s\' is %s, status is %s, powered is %s', + $self->{name}, $self->{cpqRackServerBladeName}, $self->{cpqRackServerBladePresent}, + $self->{cpqRackServerBladeStatus}, $self->{cpqRackServerBladePowered}; + $self->add_info($info); + if ($self->{cpqRackServerBladePowered} eq 'on') { + if ($self->{cpqRackServerBladeStatus} eq 'degraded') { + $self->add_message(WARNING, sprintf 'server blade %s diag is \'%s\', post status is %s', + $self->{cpqRackServerBladeName}, $self->{cpqRackServerBladeDiagnosticString}, + $self->{cpqRackServerBladePOSTStatus}); + } elsif ($self->{cpqRackServerBladeStatus} eq 'failed') { + $self->add_message(CRITICAL, sprintf 'server blade %s diag is \'%s\', post status is %s', + $self->{cpqRackServerBladeName}, $self->{cpqRackServerBladeDiagnosticString}, + $self->{cpqRackServerBladePOSTStatus}); + } + } +} + +sub dump { + my $self = shift; + printf "[SERVER_BLADE_%s]\n", $self->{cpqRackServerBladeName}; + foreach (qw(cpqRackServerBladeRack cpqRackServerBladeChassis cpqRackServerBladeIndex cpqRackServerBladeName cpqRackServerBladeEnclosureName cpqRackServerBladePartNumber cpqRackServerBladeSparePartNumber cpqRackServerBladePosition cpqRackServerBladeHeight cpqRackServerBladeWidth cpqRackServerBladeDepth cpqRackServerBladePresent cpqRackServerBladeHasFuses cpqRackServerBladeEnclosureSerialNum cpqRackServerBladeSlotsUsed cpqRackServerBladeStatus cpqRackServerBladeDiagnosticString cpqRackServerBladePowered cpqRackServerBladePOSTStatus)) { + printf "%s: %s\n", $_, $self->{$_}; + } + printf "\n"; +} + + +1; |