Skip to main content

Python library for the Icinga Director RESTful API

Project description

IcingaDirectorAPI

IcingaDirectorAPI is a small module to interact with the Icinga Director REST API, written in Python. It is compatible with the most recent Director version (1.10) only.

Features

  • simple authentication
  • create, get, list, modify and delete Director Objects through object type, name and definition (in JSON/dict format)

Usage

Import

from IcingaDirectorAPI.director import Director

Authentication

For now only basic authentication (with username & password) is supported. Example:

director = Director('https://icinga-master.with-director.local:8080', 'username', 'password')

Object methods

Supported object types

For now:

  • Command
  • CommandTemplate
  • Endpoint
  • Host
  • HostGroup
  • HostTemplate
  • Notification
  • NotificationTemplate
  • Service
  • ServiceApplyRule
  • ServiceGroup
  • ServiceTemplate
  • Timeperiod
  • TimeperiodTemplate
  • User
  • UserGroup
  • UserTemplate
  • Zone

list()

To get a list of all objects of the same type use the function objects.list().

Parameter Type Description
object_type string Required. The object type to get.

Examples:

Get all hosts:

director.objects.list('Host')

Get all timeperiods:

director.objects.list('Timeperiod')

get()

To get a single object use the function objects.get().

Parameter Type Description
object_type string Required. The object type to get.
name string Required. The object's name.

Examples:

Get host webserver01.domain:

director.objects.get('Host', 'webserver01.domain')

Get service ping4 of host webserver01.domain:

director.objects.get('Service', 'webserver01.domain!ping4')

Get notification template mail_notifs:

director.objects.get('NotificationTemplate', 'mail_notifs')

create()

Create an object using templates and specify attributes (attrs).

Parameter Type Description
object_type string Required. The object's type.
name string Required. The objects name.
templates list Optional. A list of templates to import.
attrs dictionary Optional. The objects attributes.

Examples:

Create a host:

director.objects.create(
    'Host',
    'localhost',
    ['generic-host'],
    {'address': '127.0.0.1'})

Create a service for Host "localhost":

director.objects.create(
    'Service',
    'localhost!Ping',
    ['generic-service'],
    {'check_command': 'ping4'})

Create a notification template:

director.objects.create(
    'NotificationTemplate',
    'nt_host-to-jira',
    attrs={'command': 'c_notify', 'notification_interval': '0',
           'period': 't_24x7', 'states': ['Down', 'Up'],
           'types': ['Custom', 'Problem', 'Recovery'], 'users': ['u_jira']})

Notice the addition of the attrs= selector, when skipping the optional templates parameter. If other objects are referenced through the JSON/dict definition, they have to exist in advance of executing this command, since Director does a built-in lookup for these objects.

modify()

Modify attributes of an existing object.

Parameter Type Description
object_type string Required. The object type to get
name string Required. The objects name.
attrs dictionary Required. The objects attributes.

Examples:

Change the ip address of a host:

director.objects.modify(
    'Host',
    'localhost',
    {'address': '127.0.1.1'})

Change the used templates and the check interval of a Service:

director.objects.modify('Service',
       'localhost!dummy',
       ['generic-service'],
       {'check_interval': '10m'})

delete()

Delete a single object.

Parameter Type Description
object_type string Required. The object type to get
name string Required. The objects name.

Examples:

Delete Host "localhost":

director.objects.delete('Host', 'localhost')

Delete ServiceTemplate "generic-service":

director.objects.delete('ServiceTemplate', 'generic-service')

IMPORTANT: If the object, that is supposed to be deleted is still referenced in the definition of other objects (e.g. a ServiceTemplate used by Services), it cannot be deleted or Director will throw an error. It has to be removed from the object definitions prior to the delete request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

icingadirectorapi-1.0.4.tar.gz (23.5 kB view details)

Uploaded Source

Built Distribution

icingadirectorapi-1.0.4-py3-none-any.whl (19.0 kB view details)

Uploaded Python 3

File details

Details for the file icingadirectorapi-1.0.4.tar.gz.

File metadata

  • Download URL: icingadirectorapi-1.0.4.tar.gz
  • Upload date:
  • Size: 23.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.7

File hashes

Hashes for icingadirectorapi-1.0.4.tar.gz
Algorithm Hash digest
SHA256 4d29afa8ed8e28201b23ebfef12d5be5a3d48c56a8d11204bedfcc6369f217be
MD5 a61f6d7ddaa19e65019db463962a9a32
BLAKE2b-256 33c5acd4d4d051a03ba7e29a14625f801b679c6fd56a51e0d3651d24bfd7b599

See more details on using hashes here.

File details

Details for the file icingadirectorapi-1.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for icingadirectorapi-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a17b1230b2346d7cb9cd5cd1eb4b40298d4d49763c5e1e01894a0098cc09eabc
MD5 6bb79996ea2131dd7ff30577b13b53c8
BLAKE2b-256 249996ff67ee8da99a4c494a2a081718f9b96ef64d90eba6e9c9725cb8dc1045

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page