add dependency and apply dependency objects

Signed-off-by: Nick Chappell <nick@intronic.org>

Icinga refs#7219: https://dev.icinga.org/issues/7219
This commit is contained in:
Melanie Gault 2014-10-14 10:00:17 +11:00 committed by Nick Chappell
parent 8af0b03cca
commit 80c87b0ad1
4 changed files with 196 additions and 0 deletions

View file

@ -0,0 +1,60 @@
# == Defined type: icinga2::object::apply_dependency
#
# This is a defined type for Icinga 2 apply dependency objects.
# See the following Icinga 2 doc page for more info:
# http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/configuring-icinga2#objecttype-dependency
#
# === Parameters
#
# See the inline comments.
#
define icinga2::object::apply_dependency (
$object_name = $name,
$display_name = $name,
$object_type = 'Host',
$parent_host_name = undef,
$parent_service_name = undef,
$child_host_name = undef,
$child_service_name = undef,
$disable_checks = undef,
$disable_notifications = undef,
$period = undef,
$states = [],
$assign_where = undef,
$ignore_where = undef,
$target_dir = '/etc/icinga2/conf.d',
$target_file_name = "${name}.conf",
$target_file_owner = 'root',
$target_file_group = 'root',
$target_file_mode = '0644') {
# Do some validation of the class' parameters:
validate_string($object_name)
validate_string($display_name)
validate_string($host_name)
validate_string($parent_host_name)
validate_string($child_host_name)
validate_string($child_service_name)
validate_string($parent_service_name)
# validate_bool($disable_checks)
# validate_bool($disable_notifications)
validate_string($period)
validate_array($states)
validate_string($target_dir)
validate_string($target_file_name)
validate_string($target_file_owner)
validate_string($target_file_group)
validate_string($target_file_mode)
validate_re($object_type, ['^Host', '^Service'])
file { "${target_dir}/${target_file_name}":
ensure => file,
owner => $target_file_owner,
group => $target_file_group,
mode => $target_file_mode,
content => template('icinga2/object_apply_dependency.conf.erb'),
notify => Service['icinga2'],
}
}

View file

@ -0,0 +1,55 @@
# == Defined type: icinga2::object::dependency
#
# This is a defined type for Icinga 2 dependency objects.
# See the following Icinga 2 doc page for more info:
# http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/configuring-icinga2#objecttype-dependency
#
# === Parameters
#
# See the inline comments.
#
define icinga2::object::dependency (
$object_name = $name,
$display_name = $name,
$parent_host_name = $host_name,
$parent_service_name = undef,
$child_host_name = undef,
$child_service_name = undef,
$disable_checks = undef,
$disable_notifications = undef,
$period = undef,
$states = [],
$target_dir = '/etc/icinga2/conf.d',
$target_file_name = "${name}.conf",
$target_file_owner = 'root',
$target_file_group = 'root',
$target_file_mode = '0644') {
# Do some validation of the class' parameters:
validate_string($object_name)
validate_string($display_name)
validate_string($host_name)
validate_string($parent_host_name)
validate_string($child_host_name)
validate_string($child_service_name)
validate_string($parent_service_name)
# validate_bool($disable_checks)
# validate_bool($disable_notifications)
validate_string($period)
validate_array($states)
validate_string($target_dir)
validate_string($target_file_name)
validate_string($target_file_owner)
validate_string($target_file_group)
validate_string($target_file_mode)
file { "${target_dir}/${target_file_name}":
ensure => file,
owner => $target_file_owner,
group => $target_file_group,
mode => $target_file_mode,
content => template('icinga2/object_dependency.conf.erb'),
notify => Service['icinga2'],
}
}

View file

@ -0,0 +1,45 @@
/**
* WARNING: This hostgroup definition is automatically generated by Puppet.
* ANY MANUAL CHANGES TO IT WILL GET OVERWRITTEN!
*/
/**
* A apply dependency definition. You can create your own configuration files
* in the conf.d directory (e.g. one per host). By default all *.conf
* files in this directory are included.
*
*/
apply Dependency "<%= @object_name %>" to "<%= @object_type %>"{
<%#- If any of the @ parameters are undefined, don't print anything for them: -%>
<%- if @parent_host_name -%>
parent_host_name = "<%= @parent_host_name -%>"
<%- end -%>
<%- if @child_host_name -%>
child_host_name = "<%= @child_host_name -%>"
<%- end -%>
<%- if @parent_service_name -%>
parent_service_name = "<%= @parent_service_name -%>"
<%- end -%>
<%- if @child_service_name -%>
child_service_name = "<%= @child_service_name -%>"
<%- end -%>
<%- if @disable_checks -%>
disable_checks = <%= @disable_checks -%>
<%- end -%>
<%- if @disable_notifications -%>
disable_notifications = <%= @disable_notifications -%>
<%- end -%>
<%- if @period -%>
period = "<%= @period -%>"
<%- end -%>
<%- if @states.length != 0 -%>
states = [ <%- @states.each do |state| -%> <%= state %>, <%- end -%>]
<%- end -%>
<%- if @assign_where -%>
assign where <%= @assign_where -%>
<%- end -%>
<%- if @ignore_where -%>
ignore where <%= @ignore_where -%>
<%- end -%>
}

View file

@ -0,0 +1,36 @@
/**
* WARNING: This hostgroup definition is automatically generated by Puppet.
* ANY MANUAL CHANGES TO IT WILL GET OVERWRITTEN!
*/
/**
* A host dependency definition. You can create your own configuration files
* in the conf.d directory (e.g. one per host). By default all *.conf
* files in this directory are included.
*
*/
object Dependency "<%= @object_name %>" {
<%#- If any of the @ parameters are undefined, don't print anything for them: -%>
parent_host_name = "<%= @parent_host_name -%>"
child_host_name = "<%= @child_host_name -%>"
<%- if @parent_service_name -%>
parent_service_name = "<%= @parent_service_name -%>"
<%- end -%>
<%- if @child_service_name -%>
child_service_name = "<%= @child_service_name -%>"
<%- end -%>
<%- if @disable_checks -%>
disable_checks = <%= @disable_checks -%>
<%- end -%>
<%- if @disable_notifications -%>
disable_notifications = <%= @disable_notifications -%>
<%- end -%>
<%- if @period -%>
period = "<%= @period -%>"
<%- end -%>
<%- if @states.length != 0 -%>
states = [ <%- @states.each do |state| -%> <%= state %>, <%- end -%>]
<%- end -%>
}