diff options
Diffstat (limited to 'nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/Proliant/Component/PowersupplySubsystem.pm')
-rwxr-xr-x | nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/Proliant/Component/PowersupplySubsystem.pm | 214 |
1 files changed, 214 insertions, 0 deletions
diff --git a/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/Proliant/Component/PowersupplySubsystem.pm b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/Proliant/Component/PowersupplySubsystem.pm new file mode 100755 index 0000000..6abba29 --- /dev/null +++ b/nagios-plugins-contrib-24.20190301~bpo9+1/check_hpasm/check_hpasm-4.8/plugins-scripts/HP/Proliant/Component/PowersupplySubsystem.pm @@ -0,0 +1,214 @@ +package HP::Proliant::Component::PowersupplySubsystem; +our @ISA = qw(HP::Proliant::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}, + condition => $params{condition}, + status => $params{status}, + powersupplies => [], + powerconverters => [], + blacklisted => 0, + info => undef, + extendedinfo => undef, + }; + bless $self, $class; + if ($self->{method} eq 'snmp') { + return HP::Proliant::Component::PowersupplySubsystem::SNMP->new(%params); + } elsif ($self->{method} eq 'cli') { + return HP::Proliant::Component::PowersupplySubsystem::CLI->new(%params); + } else { + die "unknown method"; + } + return $self; +} + +sub check { + my $self = shift; + my $errorfound = 0; + $self->add_info('checking power supplies'); + if (scalar (@{$self->{powersupplies}}) == 0) { + #$self->overall_check(); + } else { + foreach (@{$self->{powersupplies}}) { + $_->check(); + } + } +} + +sub dump { + my $self = shift; + foreach (@{$self->{powersupplies}}) { + $_->dump(); + } +} + + +package HP::Proliant::Component::PowersupplySubsystem::Powersupply; +our @ISA = qw(HP::Proliant::Component::PowersupplySubsystem); + +use strict; +use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 }; + +sub new { + my $class = shift; + my %params = @_; + my $self = { + runtime => $params{runtime}, + cpqHeFltTolPowerSupplyChassis => $params{cpqHeFltTolPowerSupplyChassis}, + cpqHeFltTolPowerSupplyBay => $params{cpqHeFltTolPowerSupplyBay}, + cpqHeFltTolPowerSupplyPresent => $params{cpqHeFltTolPowerSupplyPresent}, + cpqHeFltTolPowerSupplyCondition => $params{cpqHeFltTolPowerSupplyCondition}, + cpqHeFltTolPowerSupplyRedundant => $params{cpqHeFltTolPowerSupplyRedundant}, + cpqHeFltTolPowerSupplyCapacityUsed => $params{cpqHeFltTolPowerSupplyCapacityUsed} || 0, + cpqHeFltTolPowerSupplyCapacityMaximum => $params{cpqHeFltTolPowerSupplyCapacityMaximum} || 0, + blacklisted => 0, + info => undef, + extendexinfo => undef, + }; + bless $self, $class; + return $self; +} + +sub check { + my $self = shift; + $self->blacklist('p', $self->{cpqHeFltTolPowerSupplyBay}); + if ($self->{cpqHeFltTolPowerSupplyPresent} eq "present") { + if ($self->{cpqHeFltTolPowerSupplyCondition} ne "ok") { + if ($self->{cpqHeFltTolPowerSupplyCondition} eq "other") { + $self->add_info(sprintf "powersupply %d is missing", + $self->{cpqHeFltTolPowerSupplyBay}); + } else { + $self->add_info(sprintf "powersupply %d needs attention (%s)", + $self->{cpqHeFltTolPowerSupplyBay}, + $self->{cpqHeFltTolPowerSupplyCondition}); + } + $self->add_message(CRITICAL, $self->{info}); + } else { + $self->add_info(sprintf "powersupply %d is %s", + $self->{cpqHeFltTolPowerSupplyBay}, + $self->{cpqHeFltTolPowerSupplyCondition}); + } + $self->add_extendedinfo(sprintf "ps_%s=%s", + $self->{cpqHeFltTolPowerSupplyBay}, + $self->{cpqHeFltTolPowerSupplyCondition}); + if ($self->{cpqHeFltTolPowerSupplyCapacityUsed} && + $self->{cpqHeFltTolPowerSupplyCapacityMaximum}) { + if ($self->{runtime}->{options}->{perfdata}) { + $self->{runtime}->{plugin}->add_perfdata( + label => sprintf("pc_%s", $self->{cpqHeFltTolPowerSupplyBay}), + value => $self->{cpqHeFltTolPowerSupplyCapacityUsed}, + warning => $self->{cpqHeFltTolPowerSupplyCapacityMaximum}, + critical => $self->{cpqHeFltTolPowerSupplyCapacityMaximum} + ); + } + } elsif ($self->{cpqHeFltTolPowerSupplyCapacityUsed}) { + if ($self->{runtime}->{options}->{perfdata}) { + $self->{runtime}->{plugin}->add_perfdata( + label => sprintf("pc_%s", $self->{cpqHeFltTolPowerSupplyBay}), + value => $self->{cpqHeFltTolPowerSupplyCapacityUsed} + ); + } + } + } else { + $self->add_info(sprintf "powersupply %d is %s", + $self->{cpqHeFltTolPowerSupplyBay}, + $self->{cpqHeFltTolPowerSupplyPresent}); + $self->add_extendedinfo(sprintf "ps_%s=%s", + $self->{cpqHeFltTolPowerSupplyBay}, + $self->{cpqHeFltTolPowerSupplyPresent}); + } +} + + +sub dump { + my $self = shift; + printf "[PS_%s]\n", $self->{cpqHeFltTolPowerSupplyBay}; + foreach (qw(cpqHeFltTolPowerSupplyBay cpqHeFltTolPowerSupplyChassis + cpqHeFltTolPowerSupplyPresent cpqHeFltTolPowerSupplyCondition + cpqHeFltTolPowerSupplyRedundant cpqHeFltTolPowerSupplyCapacityUsed + cpqHeFltTolPowerSupplyCapacityMaximum)) { + printf "%s: %s\n", $_, $self->{$_}; + } + printf "info: %s\n\n", $self->{info}; +} + + +package HP::Proliant::Component::PowersupplySubsystem::Powerconverter; +our @ISA = qw(HP::Proliant::Component::PowersupplySubsystem); + +use strict; +use constant { OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 }; + +sub new { + my $class = shift; + my %params = @_; + my $self = { + runtime => $params{runtime}, + + cpqHePowerConvEntry => $params{cpqHePowerConvEntry}, + cpqHePowerConvChassis => $params{cpqHePowerConvChassis}, + cpqHePowerConvIndex => $params{cpqHePowerConvIndex}, + cpqHePowerConvPresent => $params{cpqHePowerConvPresent}, + cpqHePowerConvRedundant => $params{cpqHePowerConvRedundant}, + cpqHePowerConvCondition => $params{cpqHePowerConvCondition}, + cpqHePowerConvHwLocation => $params{cpqHePowerConvHwLocation}, + blacklisted => 0, + info => undef, + extendexinfo => undef, + }; + bless $self, $class; + return $self; +} + +sub check { + my $self = shift; + $self->blacklist('pc', $self->{cpqHePowerConvIndex}); + if ($self->{cpqHePowerConvPresent} eq "present") { + if ($self->{cpqHePowerConvCondition} ne "ok") { + if ($self->{cpqHePowerConvCondition} eq "other") { + $self->add_info(sprintf "powerconverter %d is missing", + $self->{cpqHePowerConvIndex}); + } else { + $self->add_info(sprintf "powerconverter %d needs attention (%s)", + $self->{cpqHePowerConvIndex}, + $self->{cpqHePowerConvCondition}); + } + $self->add_message(CRITICAL, $self->{info}); + } else { + $self->add_info(sprintf "powerconverter %d is %s", + $self->{cpqHePowerConvIndex}, + $self->{cpqHePowerConvCondition}); + } + $self->add_extendedinfo(sprintf "pc_%s=%s", + $self->{cpqHePowerConvIndex}, + $self->{cpqHePowerConvCondition}); + } else { + $self->add_info(sprintf "powerconverter %d is %s", + $self->{cpqHePowerConvIndex}, + $self->{cpqHePowerConvPresent}); + $self->add_extendedinfo(sprintf "pc_%s=%s", + $self->{cpqHePowerConvIndex}, + $self->{cpqHePowerConvPresent}); + } +} + + +sub dump { + my $self = shift; + printf "[PS_%s]\n", ($self->{cpqHePowerConvChassis} ? $self->{cpqHePowerConvChassis}.":" : "").$self->{cpqHePowerConvIndex}; + foreach (qw(cpqHePowerConvIndex cpqHePowerConvPresent cpqHePowerConvRedundant cpqHePowerConvCondition)) { + printf "%s: %s\n", $_, $self->{$_}; + } + printf "info: %s\n\n", $self->{info}; +} + + +1; |