puppet-ceilometer/manifests/collector.pp

123 lines
3.5 KiB
Puppet

# == Class: ceilometer::params
#
# Installs the ceilometer collector service
#
# === Parameters:
#
# [*enabled*]
# (Optional) Should the service be enabled.
# Defaults to true.
#
# [*manage_service*]
# (Optional) Whether the service should be managed by Puppet.
# Defaults to true.
#
# [*package_ensure*]
# (Optional) ensure state for package.
# Defaults to 'present'.
#
# [*udp_address*]
# (Optional) the ceilometer collector udp bind address.
# Set it empty to disable the collector listener.
# Defaults to '0.0.0.0'.
#
# [*udp_port*]
# (Optional) the ceilometer collector udp bind port.
# Defaults to '4952'.
#
# [*meter_dispatchers*]
# (Optional) dispatcher driver(s) to process meter data.
# Can be an array or a string.
# Defaults to $::os_service_default.
#
# [*event_dispatchers*]
# (Optional) dispatcher driver(s) to process event data.
# Can be an array or a string.
# Defaults to $::os_service_default.
#
# [*collector_workers*]
# (Optional) Number of workers for collector service (integer value).
# Defaults to $::os_service_default.
#
# DEPRECATED PARAMETERS
#
# [*meter_dispatcher*]
# (Optional) dispatcher driver(s) to process meter data.
# Can be an array or a string.
# Defaults to undef.
#
# [*event_dispatcher*]
# (Optional) dispatcher driver(s) to process event data.
# Can be an array or a string.
# Defaults to undef.
#
class ceilometer::collector (
$manage_service = true,
$enabled = true,
$package_ensure = 'present',
$udp_address = '0.0.0.0',
$udp_port = '4952',
$collector_workers = $::os_service_default,
$meter_dispatchers = $::os_service_default,
$event_dispatchers = $::os_service_default,
# DEPRECATED PARAMETERS
$meter_dispatcher = undef,
$event_dispatcher = undef,
) {
include ::ceilometer::deps
include ::ceilometer::params
# We accept udp_address to be set to empty instead of the usual undef to stay
# close to the "strange" upstream interface.
if (is_ip_address($udp_address) != true and $udp_address != '' ){
fail("${udp_address} is not a valid ip and is not empty")
}
if $meter_dispatcher {
warning('The meter_dispatcher parameter is deprecated, please use meter_dispatchers instead.')
$meter_dispatchers_real = $meter_dispatcher
} else {
$meter_dispatchers_real = $meter_dispatchers
}
if $event_dispatcher {
warning('The event_dispatcher parameter is deprecated, please use event_dispatchers instead.')
$event_dispatchers_real = $event_dispatcher
} else {
$event_dispatchers_real = $event_dispatchers
}
ceilometer_config {
'collector/udp_address': value => $udp_address;
'collector/udp_port': value => $udp_port;
'collector/workers': value => $collector_workers;
'DEFAULT/meter_dispatchers': value => join(any2array($meter_dispatchers_real), ',');
'DEFAULT/event_dispatchers': value => join(any2array($event_dispatchers_real), ',');
}
ensure_resource( 'package', [$::ceilometer::params::collector_package_name],
{
ensure => $package_ensure,
tag => ['openstack', 'ceilometer-package']
}
)
if $manage_service {
if $enabled {
$service_ensure = 'running'
} else {
$service_ensure = 'stopped'
}
}
service { 'ceilometer-collector':
ensure => $service_ensure,
name => $::ceilometer::params::collector_service_name,
enable => $enabled,
hasstatus => true,
hasrestart => true,
tag => 'ceilometer-service'
}
}