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.
|
# (Optional) Whether the service should be managed by Puppet.
|
||||||
# Defaults to true.
|
# Defaults to true.
|
||||||
#
|
#
|
||||||
|
# [*separate_services*]
|
||||||
|
# (Optional) Use separate services for individual namespace.
|
||||||
|
# Defaults to false.
|
||||||
|
#
|
||||||
# [*package_ensure*]
|
# [*package_ensure*]
|
||||||
# (Optional) ensure state for package.
|
# (Optional) ensure state for package.
|
||||||
# Defaults to 'present'
|
# Defaults to 'present'
|
||||||
@@ -80,6 +84,7 @@
|
|||||||
class ceilometer::agent::polling (
|
class ceilometer::agent::polling (
|
||||||
$manage_service = true,
|
$manage_service = true,
|
||||||
$enabled = true,
|
$enabled = true,
|
||||||
|
$separate_services = false,
|
||||||
$package_ensure = 'present',
|
$package_ensure = 'present',
|
||||||
$manage_user = true,
|
$manage_user = true,
|
||||||
$central_namespace = true,
|
$central_namespace = true,
|
||||||
@@ -161,10 +166,37 @@ class ceilometer::agent::polling (
|
|||||||
$ipmi_namespace_name = undef
|
$ipmi_namespace_name = undef
|
||||||
}
|
}
|
||||||
|
|
||||||
package { 'ceilometer-polling':
|
if $separate_services {
|
||||||
ensure => $package_ensure,
|
if $central_namespace {
|
||||||
name => $::ceilometer::params::agent_polling_package_name,
|
package { 'ceilometer-central':
|
||||||
tag => ['openstack', 'ceilometer-package'],
|
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([
|
$namespaces_real = delete_undef_values([
|
||||||
@@ -173,7 +205,7 @@ class ceilometer::agent::polling (
|
|||||||
$ipmi_namespace_name
|
$ipmi_namespace_name
|
||||||
])
|
])
|
||||||
|
|
||||||
if empty($namespaces_real) {
|
if empty($namespaces_real) or $separate_services {
|
||||||
ceilometer_config {
|
ceilometer_config {
|
||||||
'DEFAULT/polling_namespaces': ensure => absent
|
'DEFAULT/polling_namespaces': ensure => absent
|
||||||
}
|
}
|
||||||
@@ -194,13 +226,46 @@ class ceilometer::agent::polling (
|
|||||||
$service_ensure = 'stopped'
|
$service_ensure = 'stopped'
|
||||||
}
|
}
|
||||||
|
|
||||||
service { 'ceilometer-polling':
|
if $separate_services {
|
||||||
ensure => $service_ensure,
|
if $central_namespace {
|
||||||
name => $::ceilometer::params::agent_polling_service_name,
|
service { 'ceilometer-central':
|
||||||
enable => $enabled,
|
ensure => $service_ensure,
|
||||||
hasstatus => true,
|
name => $::ceilometer::params::agent_central_service_name,
|
||||||
hasrestart => true,
|
enable => $enabled,
|
||||||
tag => 'ceilometer-service',
|
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': {
|
'RedHat': {
|
||||||
# package names
|
# package names
|
||||||
$agent_polling_package_name = 'openstack-ceilometer-polling'
|
$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'
|
$agent_notification_package_name = 'openstack-ceilometer-notification'
|
||||||
$common_package_name = 'openstack-ceilometer-common'
|
$common_package_name = 'openstack-ceilometer-common'
|
||||||
# service names
|
# service names
|
||||||
$agent_polling_service_name = 'openstack-ceilometer-polling'
|
$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'
|
$agent_notification_service_name = 'openstack-ceilometer-notification'
|
||||||
$libvirt_group = undef
|
$libvirt_group = undef
|
||||||
}
|
}
|
||||||
'Debian': {
|
'Debian': {
|
||||||
# package names
|
# package names
|
||||||
$agent_polling_package_name = 'ceilometer-polling'
|
$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'
|
$agent_notification_package_name = 'ceilometer-agent-notification'
|
||||||
$common_package_name = 'ceilometer-common'
|
$common_package_name = 'ceilometer-common'
|
||||||
# service names
|
# service names
|
||||||
$agent_polling_service_name = 'ceilometer-polling'
|
$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'
|
$agent_notification_service_name = 'ceilometer-agent-notification'
|
||||||
$libvirt_group = 'libvirt'
|
$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>')
|
should contain_ceilometer_config('compute/resource_cache_expiry').with_value('<SERVICE DEFAULT>')
|
||||||
}
|
}
|
||||||
|
|
||||||
it { should contain_package('ceilometer-polling').with(
|
it 'shoud install the polling package' do
|
||||||
:ensure => 'present',
|
should contain_package('ceilometer-polling').with(
|
||||||
:name => platform_params[:agent_package_name],
|
:ensure => 'present',
|
||||||
:tag => ['openstack', 'ceilometer-package'],
|
: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_ceilometer_config('DEFAULT/polling_namespaces').with_value('central,compute,ipmi') }
|
||||||
|
|
||||||
it { should contain_service('ceilometer-polling').with(
|
it 'should enable the polling service' do
|
||||||
:ensure => 'running',
|
should contain_service('ceilometer-polling').with(
|
||||||
:name => platform_params[:agent_service_name],
|
:ensure => 'running',
|
||||||
:enable => true,
|
:name => platform_params[:agent_polling_service_name],
|
||||||
:hasstatus => true,
|
:enable => true,
|
||||||
:hasrestart => true,
|
:hasstatus => true,
|
||||||
:tag => 'ceilometer-service',
|
: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 contain_ceilometer_config('polling/batch_size').with_value('<SERVICE DEFAULT>') }
|
||||||
it { should_not contain_file('polling') }
|
it { should_not contain_file('polling') }
|
||||||
@@ -161,7 +171,7 @@ describe 'ceilometer::agent::polling' do
|
|||||||
|
|
||||||
it { should contain_service('ceilometer-polling').with(
|
it { should contain_service('ceilometer-polling').with(
|
||||||
:ensure => 'stopped',
|
:ensure => 'stopped',
|
||||||
:name => platform_params[:agent_service_name],
|
:name => platform_params[:agent_polling_service_name],
|
||||||
:enable => false,
|
:enable => false,
|
||||||
:hasstatus => true,
|
:hasstatus => true,
|
||||||
:hasrestart => true,
|
:hasrestart => true,
|
||||||
@@ -295,6 +305,61 @@ sources:
|
|||||||
|
|
||||||
it { should contain_ceilometer_config('polling/batch_size').with_value(50) }
|
it { should contain_ceilometer_config('polling/batch_size').with_value(50) }
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
on_supported_os({
|
on_supported_os({
|
||||||
@@ -309,16 +374,28 @@ sources:
|
|||||||
case facts[:osfamily]
|
case facts[:osfamily]
|
||||||
when 'Debian'
|
when 'Debian'
|
||||||
{
|
{
|
||||||
:agent_package_name => 'ceilometer-polling',
|
:agent_polling_package_name => 'ceilometer-polling',
|
||||||
:agent_service_name => 'ceilometer-polling',
|
:agent_polling_service_name => 'ceilometer-polling',
|
||||||
:libvirt_group => 'libvirt',
|
:agent_central_package_name => 'ceilometer-agent-central',
|
||||||
:ceilometer_groups => ['nova', 'libvirt'],
|
: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'
|
when 'RedHat'
|
||||||
{
|
{
|
||||||
:agent_package_name => 'openstack-ceilometer-polling',
|
:agent_polling_package_name => 'openstack-ceilometer-polling',
|
||||||
:agent_service_name => 'openstack-ceilometer-polling',
|
:agent_polling_service_name => 'openstack-ceilometer-polling',
|
||||||
:ceilometer_groups => ['nova'],
|
: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
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user