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:
parent
8af0b03cca
commit
80c87b0ad1
4 changed files with 196 additions and 0 deletions
60
manifests/object/apply_dependency.pp
Normal file
60
manifests/object/apply_dependency.pp
Normal 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'],
|
||||
}
|
||||
|
||||
}
|
55
manifests/object/dependency.pp
Normal file
55
manifests/object/dependency.pp
Normal 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'],
|
||||
}
|
||||
|
||||
}
|
45
templates/object_apply_dependency.conf.erb
Normal file
45
templates/object_apply_dependency.conf.erb
Normal 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 -%>
|
||||
}
|
36
templates/object_dependency.conf.erb
Normal file
36
templates/object_dependency.conf.erb
Normal 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 -%>
|
||||
|
||||
}
|
Loading…
Reference in a new issue