---
name: "Nagios::Object"
section: "3pm"
platform: "linux"
package: "libnagios-object-perl"
version: "0.21.20-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Nagios::Object"
---

# Nagios::Object(3pm)

Creates perl objects to represent Nagios objects

## 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)]
 );
 # 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"
     )
 );
```

## METHODS

- **new()**

  Create a new object of one of the types listed above.

  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( ... );
  ```

- **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.   Passing in a single true argument will tell it to flatten the object inheritance on dump.

  ```
   print $object->dump();
   print $object->dump(1); # flatten
  ```

- **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 );
   }
  ```

## 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.
