/Users/cpanrun/depot/main/contrib-patched/perl/CPAN/src/Nagios-Object/blib/lib/Nagios/Object.pm


NAME

Nagios::Object


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:

 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


EXAMPLE

 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)]
 );
 my $localhost = Nagios::Host->new(
    use       => $generic_host,
    host_name => "localhost",
    alias     => "Loopback",
    address   => "127.0.0.1"
 );
 my $hostname = $localhost->host_name();
 printf "max check attempts for $hostname is %s.\n",
     $localhost->max_check_attempts;

 $localhost->set_event_handler(
     Nagios::Command->new(
         command_name => "new_event_handler",
         command_line => "/bin/true"
     )
 );


METHODS

new()
Create a new object of one of the types listed above. Nagios::Host->new( ... );

dump()
Output a Nagios define { } block from an object. This is still EXPERIMENTAL, but may eventually be robust enough to use for a configuration GUI.
 print $object->dump();

use()
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 ``name'' field.
 my $svc_desc = $service->name;
 my $hostname = $host->name;

Which is just short for:

 my $svc_desc = $service->service_description;
 my $hostname = $service->host_name;

register()
Returns true/undef to indicate whether the calling object is registerable or not.
 if ( $object->register ) { print $object->name, " is registerable." }

has_attribute()
Returns true/undef to indicate whether the calling object has the attribute specified as the only argument.
 # check to see if $object has attribute "command_line"
 die if ( !$object->has_attribute("command_line") );

list_attributes()
Returns a list of valid attributes for the calling object.
 my @host_attributes = $host->list_attributes();

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 ``char_flag.''

For ``name'' attributes, it will simply return whatever %setup_data contains.

This method needs some TLC ...

 my $type = $host->attribute_type("notification_period");

attribute_is_list()
Returns true if the attribute is supposed to be a list (ARRAYREF).
 if ( $object->attribute_is_list("members") ) {
    $object->set_members( [$member] );
 } else {
    $object->set_members( $member );
 }

attribute_allows_undef()
Returns true if the attribute provided is allowed to have a value of undef. Setting an attribute to undef will cause the templates to be searched until a non-undef answer is found.

NOTE: this may go away, since I'm not sure if it's really useful at all.

 my $answer = $object->attribute_allows_undef("command_line");


AUTHOR

Al Tobey <tobeya@cpan.org>

Thank you to the fine people of #perl on freenode.net for helping me with some hairy code and silly optimizations.


WARNINGS

See AUTHOR.

 /Users/cpanrun/depot/main/contrib-patched/perl/CPAN/src/Nagios-Object/blib/lib/Nagios/Object.pm