Nagios::Object.3pm

Langue: en

Autres versions - même langue

Version: 2008-11-18 (ubuntu - 08/07/09)

Section: 3 (Bibliothèques de fonctions)

NAME

Nagios::Object - Creates perl objects to represent Nagios objects

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.