/usr/share/perl5/Nagios/Plugin/Threshold.pm is in libnagios-plugin-perl 0.36-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | package Nagios::Plugin::Threshold;
use 5.006;
use strict;
use warnings;
use base qw(Class::Accessor::Fast);
__PACKAGE__->mk_accessors(qw(warning critical));
use Nagios::Plugin::Range;
use Nagios::Plugin::Functions qw(:codes nagios_die);
our ($VERSION) = $Nagios::Plugin::Functions::VERSION;
sub get_status
{
my ($self, $value) = @_;
$value = [ $value ] if (ref $value eq "");
foreach my $v (@$value) {
if ($self->critical->is_set) {
return CRITICAL if $self->critical->check_range($v);
}
}
foreach my $v (@$value) {
if ($self->warning->is_set) {
return WARNING if $self->warning->check_range($v);
}
}
return OK;
}
sub _inflate
{
my ($self, $value, $key) = @_;
# Return an undefined range if $value is undef
return Nagios::Plugin::Range->new if ! defined $value;
# For refs, check isa N::P::Range
if (ref $value) {
nagios_die("Invalid $key object: type " . ref $value)
unless $value->isa("Nagios::Plugin::Range");
return $value;
}
# Another quick exit if $value is an empty string
return Nagios::Plugin::Range->new if $value eq "";
# Otherwise parse $value
my $range = Nagios::Plugin::Range->parse_range_string($value);
nagios_die("Cannot parse $key range: '$value'") unless(defined($range));
return $range;
}
sub set_thresholds
{
my ($self, %arg) = @_;
# Equals new() as a class method
return $self->new(%arg) unless ref $self;
# On an object, just acts as special mutator
$self->set($_, $arg{$_}) foreach qw(warning critical);
}
sub set
{
my $self = shift;
my ($key, $value) = @_;
$self->SUPER::set($key, $self->_inflate($value, $key));
}
# Constructor - inflate scalars to N::P::Range objects
sub new
{
my ($self, %arg) = @_;
$self->SUPER::new({
map { $_ => $self->_inflate($arg{$_}, $_) } qw(warning critical)
});
}
1;
__END__
=head1 NAME
Nagios::Plugin::Threshold - class for handling Nagios::Plugin thresholds.
=head1 SYNOPSIS
# NB: This is an internal Nagios::Plugin class.
# See Nagios::Plugin itself for public interfaces.
# Constructor
$t = Nagios::Plugin::Threshold->set_thresholds(
warning => $warning_range_string,
critical => $critical_range_string,
);
# Value checking - returns CRITICAL if in the critical range,
# WARNING if in the warning range, and OK otherwise
$status = $t->get_status($value);
# Accessors - return the associated N::P::Range object
$warning_range = $t->warning;
$critical_range = $t->critical;
=head1 DESCRIPTION
Internal Nagios::Plugin class for handling threshold data. See
Nagios::Plugin for public interfaces.
A threshold object contains (typically) a pair of ranges, associated
with a particular severity e.g.
warning => range1
critical => range2
=head1 AUTHOR
This code is maintained by the Nagios Plugin Development Team: see
http://nagiosplug.sourceforge.net.
=head1 COPYRIGHT AND LICENSE
Copyright (C) 2006-2007 Nagios Plugin Development Team
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
|