Nagios::Object
Creates perl objects to represent Nagios objects
- Provided by: libnagios-object-perl (Version: 0.21.20-2)
- Report a bug
Creates perl objects to represent Nagios objects
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
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 'use' $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.\n",
$localhost->max_check_attempts;
$localhost->set_event_handler(
Nagios::Command->new(
command_name => "new_event_handler",
command_line => "/bin/true"
)
);
Calling new() on an existing object will use the LHS 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).
Nagios::Host->new( ... );
print $object->dump(); print $object->dump(1); # flatten
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;
if ( $object->register ) { print $object->name, " is registerable." }
# check to see if $object has attribute "command_line"
die if ( !$object->has_attribute("command_line") );
my @host_attributes = $host->list_attributes();
For "name" attributes, it will simply return whatever %setup_data contains.
This method needs some TLC ...
my $type = $host->attribute_type("notification_period");
if ( $object->attribute_is_list("members") ) {
$object->set_members( [$member] );
} else {
$object->set_members( $member );
}
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.
See AUTHOR.