Support separate polling agents
This change introduces capability to use separate polling agents (central, compute and ipmi) instead of the single polling service. Change-Id: Idaa46ad71f4bedaca91b75a732649de967663659
This commit is contained in:
@@ -12,6 +12,10 @@
|
||||
# (Optional) Whether the service should be managed by Puppet.
|
||||
# Defaults to true.
|
||||
#
|
||||
# [*separate_services*]
|
||||
# (Optional) Use separate services for individual namespace.
|
||||
# Defaults to false.
|
||||
#
|
||||
# [*package_ensure*]
|
||||
# (Optional) ensure state for package.
|
||||
# Defaults to 'present'
|
||||
@@ -80,6 +84,7 @@
|
||||
class ceilometer::agent::polling (
|
||||
$manage_service = true,
|
||||
$enabled = true,
|
||||
$separate_services = false,
|
||||
$package_ensure = 'present',
|
||||
$manage_user = true,
|
||||
$central_namespace = true,
|
||||
@@ -161,10 +166,37 @@ class ceilometer::agent::polling (
|
||||
$ipmi_namespace_name = undef
|
||||
}
|
||||
|
||||
package { 'ceilometer-polling':
|
||||
ensure => $package_ensure,
|
||||
name => $::ceilometer::params::agent_polling_package_name,
|
||||
tag => ['openstack', 'ceilometer-package'],
|
||||
if $separate_services {
|
||||
if $central_namespace {
|
||||
package { 'ceilometer-central':
|
||||
ensure => $package_ensure,
|
||||
name => $::ceilometer::params::agent_central_package_name,
|
||||
tag => ['openstack', 'ceilometer-package'],
|
||||
}
|
||||
}
|
||||
|
||||
if $compute_namespace {
|
||||
package { 'ceilometer-compute':
|
||||
ensure => $package_ensure,
|
||||
name => $::ceilometer::params::agent_compute_package_name,
|
||||
tag => ['openstack', 'ceilometer-package'],
|
||||
}
|
||||
}
|
||||
|
||||
if $ipmi_namespace {
|
||||
package { 'ceilometer-ipmi':
|
||||
ensure => $package_ensure,
|
||||
name => $::ceilometer::params::agent_ipmi_package_name,
|
||||
tag => ['openstack', 'ceilometer-package'],
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
package { 'ceilometer-polling':
|
||||
ensure => $package_ensure,
|
||||
name => $::ceilometer::params::agent_polling_package_name,
|
||||
tag => ['openstack', 'ceilometer-package'],
|
||||
}
|
||||
}
|
||||
|
||||
$namespaces_real = delete_undef_values([
|
||||
@@ -173,7 +205,7 @@ class ceilometer::agent::polling (
|
||||
$ipmi_namespace_name
|
||||
])
|
||||
|
||||
if empty($namespaces_real) {
|
||||
if empty($namespaces_real) or $separate_services {
|
||||
ceilometer_config {
|
||||
'DEFAULT/polling_namespaces': ensure => absent
|
||||
}
|
||||
@@ -194,13 +226,46 @@ class ceilometer::agent::polling (
|
||||
$service_ensure = 'stopped'
|
||||
}
|
||||
|
||||
service { 'ceilometer-polling':
|
||||
ensure => $service_ensure,
|
||||
name => $::ceilometer::params::agent_polling_service_name,
|
||||
enable => $enabled,
|
||||
hasstatus => true,
|
||||
hasrestart => true,
|
||||
tag => 'ceilometer-service',
|
||||
if $separate_services {
|
||||
if $central_namespace {
|
||||
service { 'ceilometer-central':
|
||||
ensure => $service_ensure,
|
||||
name => $::ceilometer::params::agent_central_service_name,
|
||||
enable => $enabled,
|
||||
hasstatus => true,
|
||||
hasrestart => true,
|
||||
tag => 'ceilometer-service',
|
||||
}
|
||||
}
|
||||
if $compute_namespace {
|
||||
service { 'ceilometer-compute':
|
||||
ensure => $service_ensure,
|
||||
name => $::ceilometer::params::agent_compute_service_name,
|
||||
enable => $enabled,
|
||||
hasstatus => true,
|
||||
hasrestart => true,
|
||||
tag => 'ceilometer-service',
|
||||
}
|
||||
}
|
||||
if $ipmi_namespace {
|
||||
service { 'ceilometer-ipmi':
|
||||
ensure => $service_ensure,
|
||||
name => $::ceilometer::params::agent_ipmi_service_name,
|
||||
enable => $enabled,
|
||||
hasstatus => true,
|
||||
hasrestart => true,
|
||||
tag => 'ceilometer-service',
|
||||
}
|
||||
}
|
||||
} else {
|
||||
service { 'ceilometer-polling':
|
||||
ensure => $service_ensure,
|
||||
name => $::ceilometer::params::agent_polling_service_name,
|
||||
enable => $enabled,
|
||||
hasstatus => true,
|
||||
hasrestart => true,
|
||||
tag => 'ceilometer-service',
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -54,20 +54,32 @@ class ceilometer::params {
|
||||
'RedHat': {
|
||||
# package names
|
||||
$agent_polling_package_name = 'openstack-ceilometer-polling'
|
||||
$agent_central_package_name = 'openstack-ceilometer-central'
|
||||
$agent_compute_package_name = 'openstack-ceilometer-compute'
|
||||
$agent_ipmi_package_name = 'openstack-ceilometer-ipmi'
|
||||
$agent_notification_package_name = 'openstack-ceilometer-notification'
|
||||
$common_package_name = 'openstack-ceilometer-common'
|
||||
# service names
|
||||
$agent_polling_service_name = 'openstack-ceilometer-polling'
|
||||
$agent_central_service_name = 'openstack-ceilometer-central'
|
||||
$agent_compute_service_name = 'openstack-ceilometer-compute'
|
||||
$agent_ipmi_service_name = 'openstack-ceilometer-ipmi'
|
||||
$agent_notification_service_name = 'openstack-ceilometer-notification'
|
||||
$libvirt_group = undef
|
||||
}
|
||||
'Debian': {
|
||||
# package names
|
||||
$agent_polling_package_name = 'ceilometer-polling'
|
||||
$agent_central_package_name = 'ceilometer-agent-central'
|
||||
$agent_compute_package_name = 'ceilometer-agent-compute'
|
||||
$agent_ipmi_package_name = 'ceilometer-agent-ipmi'
|
||||
$agent_notification_package_name = 'ceilometer-agent-notification'
|
||||
$common_package_name = 'ceilometer-common'
|
||||
# service names
|
||||
$agent_polling_service_name = 'ceilometer-polling'
|
||||
$agent_central_service_name = 'ceilometer-agent-central'
|
||||
$agent_compute_service_name = 'ceilometer-agent-compute'
|
||||
$agent_ipmi_service_name = 'ceilometer-agent-ipmi'
|
||||
$agent_notification_service_name = 'ceilometer-agent-notification'
|
||||
$libvirt_group = 'libvirt'
|
||||
}
|
||||
|
||||
7
releasenotes/notes/separate-agents-be9220cfe6cf473c.yaml
Normal file
7
releasenotes/notes/separate-agents-be9220cfe6cf473c.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The ``ceilometer::agents::polling::separate_services`` parameter has been
|
||||
added. When this parameter is set to `true`, the class configures separate
|
||||
agent services for individual namespaces, instead of the single polling
|
||||
agent service.
|
||||
@@ -44,22 +44,32 @@ describe 'ceilometer::agent::polling' do
|
||||
should contain_ceilometer_config('compute/resource_cache_expiry').with_value('<SERVICE DEFAULT>')
|
||||
}
|
||||
|
||||
it { should contain_package('ceilometer-polling').with(
|
||||
:ensure => 'present',
|
||||
:name => platform_params[:agent_package_name],
|
||||
:tag => ['openstack', 'ceilometer-package'],
|
||||
)}
|
||||
it 'shoud install the polling package' do
|
||||
should contain_package('ceilometer-polling').with(
|
||||
:ensure => 'present',
|
||||
:name => platform_params[:agent_polling_package_name],
|
||||
:tag => ['openstack', 'ceilometer-package'],
|
||||
)
|
||||
should_not contain_package('ceilometer-central')
|
||||
should_not contain_package('ceilometer-compute')
|
||||
should_not contain_package('ceilometer-ipmi')
|
||||
end
|
||||
|
||||
it { should contain_ceilometer_config('DEFAULT/polling_namespaces').with_value('central,compute,ipmi') }
|
||||
|
||||
it { should contain_service('ceilometer-polling').with(
|
||||
:ensure => 'running',
|
||||
:name => platform_params[:agent_service_name],
|
||||
:enable => true,
|
||||
:hasstatus => true,
|
||||
:hasrestart => true,
|
||||
:tag => 'ceilometer-service',
|
||||
)}
|
||||
it 'should enable the polling service' do
|
||||
should contain_service('ceilometer-polling').with(
|
||||
:ensure => 'running',
|
||||
:name => platform_params[:agent_polling_service_name],
|
||||
:enable => true,
|
||||
:hasstatus => true,
|
||||
:hasrestart => true,
|
||||
:tag => 'ceilometer-service',
|
||||
)
|
||||
should_not contain_service('ceilometer-central')
|
||||
should_not contain_service('ceilometer-compute')
|
||||
should_not contain_service('ceilometer-ipmi')
|
||||
end
|
||||
|
||||
it { should contain_ceilometer_config('polling/batch_size').with_value('<SERVICE DEFAULT>') }
|
||||
it { should_not contain_file('polling') }
|
||||
@@ -161,7 +171,7 @@ describe 'ceilometer::agent::polling' do
|
||||
|
||||
it { should contain_service('ceilometer-polling').with(
|
||||
:ensure => 'stopped',
|
||||
:name => platform_params[:agent_service_name],
|
||||
:name => platform_params[:agent_polling_service_name],
|
||||
:enable => false,
|
||||
:hasstatus => true,
|
||||
:hasrestart => true,
|
||||
@@ -295,6 +305,61 @@ sources:
|
||||
|
||||
it { should contain_ceilometer_config('polling/batch_size').with_value(50) }
|
||||
end
|
||||
|
||||
context 'with separate agents' do
|
||||
before do
|
||||
params.merge!( :separate_services => true )
|
||||
end
|
||||
|
||||
it 'should install the agent packages' do
|
||||
should_not contain_package('ceilometer-polling')
|
||||
should contain_package('ceilometer-central').with(
|
||||
:ensure => 'present',
|
||||
:name => platform_params[:agent_central_package_name],
|
||||
:tag => ['openstack', 'ceilometer-package'],
|
||||
)
|
||||
should contain_package('ceilometer-compute').with(
|
||||
:ensure => 'present',
|
||||
:name => platform_params[:agent_compute_package_name],
|
||||
:tag => ['openstack', 'ceilometer-package'],
|
||||
)
|
||||
should contain_package('ceilometer-ipmi').with(
|
||||
:ensure => 'present',
|
||||
:name => platform_params[:agent_ipmi_package_name],
|
||||
:tag => ['openstack', 'ceilometer-package'],
|
||||
)
|
||||
end
|
||||
|
||||
it { should contain_ceilometer_config('DEFAULT/polling_namespaces').with_ensure('absent') }
|
||||
|
||||
it 'should enable the agent services' do
|
||||
should_not contain_service('ceilometer-polling')
|
||||
should contain_service('ceilometer-central').with(
|
||||
:ensure => 'running',
|
||||
:name => platform_params[:agent_central_service_name],
|
||||
:enable => true,
|
||||
:hasstatus => true,
|
||||
:hasrestart => true,
|
||||
:tag => 'ceilometer-service',
|
||||
)
|
||||
should contain_service('ceilometer-compute').with(
|
||||
:ensure => 'running',
|
||||
:name => platform_params[:agent_compute_service_name],
|
||||
:enable => true,
|
||||
:hasstatus => true,
|
||||
:hasrestart => true,
|
||||
:tag => 'ceilometer-service',
|
||||
)
|
||||
should contain_service('ceilometer-ipmi').with(
|
||||
:ensure => 'running',
|
||||
:name => platform_params[:agent_ipmi_service_name],
|
||||
:enable => true,
|
||||
:hasstatus => true,
|
||||
:hasrestart => true,
|
||||
:tag => 'ceilometer-service',
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
on_supported_os({
|
||||
@@ -309,16 +374,28 @@ sources:
|
||||
case facts[:osfamily]
|
||||
when 'Debian'
|
||||
{
|
||||
:agent_package_name => 'ceilometer-polling',
|
||||
:agent_service_name => 'ceilometer-polling',
|
||||
:libvirt_group => 'libvirt',
|
||||
:ceilometer_groups => ['nova', 'libvirt'],
|
||||
:agent_polling_package_name => 'ceilometer-polling',
|
||||
:agent_polling_service_name => 'ceilometer-polling',
|
||||
:agent_central_package_name => 'ceilometer-agent-central',
|
||||
:agent_central_service_name => 'ceilometer-agent-central',
|
||||
:agent_compute_package_name => 'ceilometer-agent-compute',
|
||||
:agent_compute_service_name => 'ceilometer-agent-compute',
|
||||
:agent_ipmi_package_name => 'ceilometer-agent-ipmi',
|
||||
:agent_ipmi_service_name => 'ceilometer-agent-ipmi',
|
||||
:libvirt_group => 'libvirt',
|
||||
:ceilometer_groups => ['nova', 'libvirt'],
|
||||
}
|
||||
when 'RedHat'
|
||||
{
|
||||
:agent_package_name => 'openstack-ceilometer-polling',
|
||||
:agent_service_name => 'openstack-ceilometer-polling',
|
||||
:ceilometer_groups => ['nova'],
|
||||
:agent_polling_package_name => 'openstack-ceilometer-polling',
|
||||
:agent_polling_service_name => 'openstack-ceilometer-polling',
|
||||
:agent_central_package_name => 'openstack-ceilometer-central',
|
||||
:agent_central_service_name => 'openstack-ceilometer-central',
|
||||
:agent_compute_package_name => 'openstack-ceilometer-compute',
|
||||
:agent_compute_service_name => 'openstack-ceilometer-compute',
|
||||
:agent_ipmi_package_name => 'openstack-ceilometer-ipmi',
|
||||
:agent_ipmi_service_name => 'openstack-ceilometer-ipmi',
|
||||
:ceilometer_groups => ['nova'],
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user