.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Nagios::Object 3pm" .TH Nagios::Object 3pm "2013-09-24" "perl v5.18.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Nagios::Object \- Creates perl objects to represent Nagios objects .SH "DESCRIPTION" .IX Header "DESCRIPTION" This module contains the code for creating perl objects to represent any of the Nagios objects. All of the perl classes are auto-generated at compile-time, so it's pretty trivial to add new attributes or even entire objects. The following is a list of currently supported classes: .PP .Vb 10 \& Nagios::TimePeriod \& Nagios::Command \& Nagios::Contact \& Nagios::ContactGroup \& Nagios::Host \& Nagios::Service \& Nagios::HostGroup \& Nagios::ServiceEscalation \& Nagios::HostDependency \& Nagios::HostEscalation \& Nagios::HostGroupEscalation \& Nagios::ServiceDependency \& \-\- next two are for status.dat in Nagios 2.x \& Nagios::Info \& Nagios::Program .Ve .SH "EXAMPLE" .IX Header "EXAMPLE" .Vb 10 \& use Nagios::Object; \& my $generic_host = Nagios::Host\->new( \& register => 0, \& parents => undef, \& check_command => $some_command, \& max_check_attempts => 3, \& checks_enabled => 1, \& event_handler => $some_command, \& event_handler_enabled => 0, \& low_flap_threshold => 0, \& high_flap_threshold => 0, \& flap_detection_enabled => 0, \& process_perf_data => 1, \& retain_status_information => 1, \& retain_nonstatus_information => 1, \& notification_interval => $timeperiod, \& notification_options => [qw(d u r)], \& notifications_enabled => 1, \& stalking_options => [qw(o d u)] \& ); \& \& # this will automatically \*(Aquse\*(Aq $generic_host \& my $localhost = $generic_host\->new( \& host_name => "localhost", \& alias => "Loopback", \& address => "127.0.0.1" \& ); \& \& my $hostname = $localhost\->host_name(); \& printf "max check attempts for $hostname is %s.\en", \& $localhost\->max_check_attempts; \& \& $localhost\->set_event_handler( \& Nagios::Command\->new( \& command_name => "new_event_handler", \& command_line => "/bin/true" \& ) \& ); .Ve .SH "METHODS" .IX Header "METHODS" .IP "\fInew()\fR" 4 .IX Item "new()" Create a new object of one of the types listed above. .Sp Calling \fInew()\fR on an existing object will use the \s-1LHS\s0 object as the template for the object being created. This is mainly useful for creating objects without involving Nagios::Object::Config (like in the test suite). .Sp .Vb 1 \& Nagios::Host\->new( ... ); .Ve .IP "\fIdump()\fR" 4 .IX Item "dump()" Output a Nagios define { } block from an object. This is still \s-1EXPERIMENTAL,\s0 but may eventually be robust enough to use for a configuration \s-1GUI. \s0 Passing in a single true argument will tell it to flatten the object inheritance on dump. .Sp .Vb 2 \& print $object\->dump(); \& print $object\->dump(1); # flatten .Ve .IP "\fIname()\fR" 4 .IX Item "name()" This method is common to all classes created by this module. It should always return the textual name for an object. It is used internally by the Nagios::Object modules to allow polymorphism (which is what makes this module so compact). This is the only way to retrieve the name of a template, since they are identified by their \*(L"name\*(R" field. .Sp .Vb 2 \& my $svc_desc = $service\->name; \& my $hostname = $host\->name; .Ve .Sp Which is just short for: .Sp .Vb 2 \& my $svc_desc = $service\->service_description; \& my $hostname = $service\->host_name; .Ve .IP "\fIregister()\fR" 4 .IX Item "register()" Returns true/undef to indicate whether the calling object is registerable or not. .Sp .Vb 1 \& if ( $object\->register ) { print $object\->name, " is registerable." } .Ve .IP "\fIhas_attribute()\fR" 4 .IX Item "has_attribute()" Returns true/undef to indicate whether the calling object has the attribute specified as the only argument. .Sp .Vb 2 \& # check to see if $object has attribute "command_line" \& die if ( !$object\->has_attribute("command_line") ); .Ve .IP "\fIlist_attributes()\fR" 4 .IX Item "list_attributes()" Returns a list of valid attributes for the calling object. .Sp .Vb 1 \& my @host_attributes = $host\->list_attributes(); .Ve .IP "\fIattribute_type()\fR" 4 .IX Item "attribute_type()" Returns the type of data expected by the object's set_ method for the given attribute. For some fields like notification_options, it may return \*(L"char_flag.\*(R" .Sp For \*(L"name\*(R" attributes, it will simply return whatever \f(CW%setup_data\fR contains. .Sp This method needs some \s-1TLC ...\s0 .Sp .Vb 1 \& my $type = $host\->attribute_type("notification_period"); .Ve .IP "\fIattribute_is_list()\fR" 4 .IX Item "attribute_is_list()" Returns true if the attribute is supposed to be a list (\s-1ARRAYREF\s0). .Sp .Vb 5 \& if ( $object\->attribute_is_list("members") ) { \& $object\->set_members( [$member] ); \& } else { \& $object\->set_members( $member ); \& } .Ve .SH "AUTHOR" .IX Header "AUTHOR" Al Tobey .PP Thank you to the fine people of #perl on freenode.net for helping me with some hairy code and silly optimizations. .SH "WARNINGS" .IX Header "WARNINGS" See \s-1AUTHOR.\s0