NAME

Nagios::Object::Config

DESCRIPTION

This is a module for parsing and processing Nagios object configuration files into perl objects.

METHODS

new()

Create a new configuration object. If Version is not specified, the already weak validation will be weakened further to allow mixing of Nagios 1.0 and 2.0 configurations. For now, the minor numbers of Version are ignored. Do not specify any letters as in '2.0a1'.

my $objects = Nagios::Object::Config->new();
my $objects = Nagios::Object::Config->new( Version => 1.2 );
my $objects = Nagios::Object::Config->new( Version => 2.0 );
parse()

Parse a nagios object configuration file into memory. Although Nagios::Objects will be created, they are not really usable until the register() method is called.

$parser->parse( "myfile.cfg" );
find_object()

Search through the list of objects' names and return the first match. The second argument is optional. Always using it can considerably reduce the size of the list to be searched, so it is recommended.

my $object = $parser->find_object( "localhost" );
my $object = $parser->find_object( "oracle", "Nagios::Service" );
all_objects_for_type()

Obtain a reference to all objects of the specified Nagios object type.

Usage: $objects = all_objects_for_type($object_type)

Parameters: $object_type - A specific Nagios object type, i.e. "Nagios::Contact"..

Returns: A reference to an array of references to all objects of the specified type associated with this configuration. Objects of this type added to the configuration following the call to this method _will_ be accessible through this reference after the fact.

Note that the array reference by the return value may be empty.

Example:

my $contacts = $config->all_objects_for_type("Nagios::Contact");
if (scalar(@$contacts) == 0) {
    print "No contacts have yet been defined\n";
} else {
    foreach $contact (@$contacts) {
        ...
    }
}
find_attribute()

Search through the objects parsed thus far, looking for a particular textual name. When found, return that object. If called with two arguments, it will search through all objects currently loaded until a match is found. A third argument may specify the type of object to search for, which may speed up the search considerably.

my $object = $parser->find_attribute( "command_name", "check_host_alive" );
my $object = $parser->find_attribute( "command_name", "check_host_alive", 'Nagios::Host' );
resolve()

Resolve the template for the specified object. Templates will not work until this has been done.

$parser->resolve( $object );
register()

Examine all attributes of an object and link all of it's references to other Nagios objects to their respective perl objects. If this isn't called, some methods will return the textual name instead of a perl object.

$parser->register( $host_object );
my $timeperiod_object = $host_object->notification_period;
resolve_objects()

Resolve all objects currently loaded into memory. This can be called any number of times without corruption.

$parser->resolve_objects();
register_objects()

Same deal as resolve_objects(), but as you'd guess, it registers all objects currently loaded into memory.

$parser->register_objects();
list_hosts(), list_hostgroups(), etc.

Returns an array/arrayref of objects of the given type.

->list_hosts;
->list_hostroups;
->list_services;
->list_timeperiods;
->list_commands;
->list_contacts;
->list_contactgroups;
->list_hostdependencies;
->list_servicedependencies;
->list_hostescalation;
->list_hostgroupescalation;
->list_serviceescalation;

AUTHOR

Al Tobey <tobeya@cpan.org> Contributions From: Lynne Lawrence (API & bugs)