summaryrefslogtreecommitdiffstats
path: root/lib/Nagios
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Nagios')
-rw-r--r--lib/Nagios/Plugin.pm90
1 files changed, 60 insertions, 30 deletions
diff --git a/lib/Nagios/Plugin.pm b/lib/Nagios/Plugin.pm
index 1fcd28a..f1b1807 100644
--- a/lib/Nagios/Plugin.pm
+++ b/lib/Nagios/Plugin.pm
@@ -2,8 +2,6 @@
2package Nagios::Plugin; 2package Nagios::Plugin;
3 3
4use Nagios::Plugin::Functions qw(:codes %ERRORS %STATUS_TEXT @STATUS_CODES); 4use Nagios::Plugin::Functions qw(:codes %ERRORS %STATUS_TEXT @STATUS_CODES);
5use Nagios::Plugin::Getopt;
6use Nagios::Plugin::Threshold;
7use Params::Validate qw(:all); 5use Params::Validate qw(:all);
8 6
9use strict; 7use strict;
@@ -12,7 +10,6 @@ use warnings;
12use Carp; 10use Carp;
13use base qw(Class::Accessor::Fast); 11use base qw(Class::Accessor::Fast);
14 12
15# do we need all of these to be accessible?
16Nagios::Plugin->mk_accessors(qw( 13Nagios::Plugin->mk_accessors(qw(
17 perfdata 14 perfdata
18 messages 15 messages
@@ -32,34 +29,41 @@ sub new {
32 my $class = shift; 29 my $class = shift;
33# my %args = @_; 30# my %args = @_;
34 31
35 my %args = validate( @_, { 32 my %args = validate( @_,
36 shortname => 0, 33 {
37 usage => 1, 34 shortname => 0,
38 version => 0, 35 usage => 0,
39 url => 0, 36 version => 0,
40 plugin => 0, 37 url => 0,
41 blurb => 0, 38 plugin => 0,
42 extra => 0, 39 blurb => 0,
43 license => 0, 40 extra => 0,
44 timeout => 0 }, 41 license => 0,
42 timeout => 0
43 },
45 ); 44 );
45
46 my $shortname = undef; 46 my $shortname = undef;
47 if (exists $args{shortname}) { 47 if (exists $args{shortname}) {
48 $shortname = $args{shortname}; 48 $shortname = $args{shortname};
49 delete $args{shortname}; 49 delete $args{shortname};
50 } 50 }
51 my $self = { 51 my $self = {
52 shortname => $shortname, 52 shortname => $shortname,
53 perfdata => [], # to be added later 53 perfdata => [], # to be added later
54 messages => { 54 messages => {
55 warning => [], 55 warning => [],
56 critical => [], 56 critical => [],
57 ok => [] 57 ok => []
58 }, 58 },
59 opts => new Nagios::Plugin::Getopt(%args), 59 opts => undef, # see below
60 threshold => undef, # defined later 60 threshold => undef, # defined later
61 }; 61 };
62 bless $self, $class; 62 bless $self, $class;
63 if (exists $args{usage}) {
64 require Nagios::Plugin::Getopt;
65 $self->opts( new Nagios::Plugin::Getopt(%args) );
66 }
63 return $self; 67 return $self;
64} 68}
65 69
@@ -119,28 +123,54 @@ sub check_threshold {
119 } ); 123 } );
120 } 124 }
121 125
122 if (! $self->threshold || exists $args{warning} || exists $args{critical}) {
123 $self->set_thresholds(
124 warning => $args{warning} || $self->opts->warning ,
125 critical => $args{critical} || $self->opts->critical ,
126 );
127 }
128 126
127 # in order of preference, get warning and critical from
128 # 1. explicit arguments to check_threshold
129 # 2. previously explicitly set threshold object
130 # 3. implicit options from Getopts object
129 131
132 if ( exists $args{warning} || exists $args{critical} ) {
133 $self->set_thresholds(
134 warning => $args{warning},
135 critical => $args{critical},
136 );
137 }
138 elsif ( defined $self->threshold ) {
139 # noop
140 }
141 elsif ( defined $self->opts ) {
142 $self->set_thresholds(
143 warning => $self->opts->warning,
144 critical => $self->opts->critical,
145 );
146 }
147 else {
148 return UNKNOWN;
149 }
150
130 return $self->threshold->get_status($args{check}); 151 return $self->threshold->get_status($args{check});
131} 152}
132 153
133# top level interface to my Nagios::Plugin::Getopt object 154# top level interface to my Nagios::Plugin::Getopt object
134sub arg { 155sub arg {
135 my $self = shift; 156 my $self = shift;
136 $self->opts->arg(@_); 157 $self->opts->arg(@_) if $self->_check_for_opts;
137} 158}
138sub getopts { 159sub getopts {
139 my $self = shift; 160 my $self = shift;
140 $self->opts->getopts(@_); 161 $self->opts->getopts(@_) if $self->_check_for_opts;
162}
163
164sub _check_for_opts {
165 my $self = shift;
166 croak
167 "You have to supply a 'usage' param to Nagios::Plugin::new() if you want to use Getopts from your Nagios::Plugin object."
168 unless ref $self->opts() eq 'Nagios::Plugin::Getopt';
169 return $self;
141} 170}
142 171
143 172
173
144# ------------------------------------------------------------------------- 174# -------------------------------------------------------------------------
145# NP::Functions::check_messages helpers and wrappers 175# NP::Functions::check_messages helpers and wrappers
146 176