The default polling interval was updated from 600 to 300 in ceilometer itself[1] but the default value in the polling class wasn't updated. This updates the default value in our module so that we use the value consistent with what is maintained in ceilometer repo. [1] fc086ba3b38683765eabcdb45613463d85cb38fa Change-Id: I7bcbbebf093228b0885b2647d86e47e2b673e518
389 lines
12 KiB
Ruby
389 lines
12 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe 'ceilometer::agent::polling' do
|
|
|
|
let :pre_condition do
|
|
"include nova
|
|
include nova::compute
|
|
class { 'ceilometer': telemetry_secret => 's3cr3t' }"
|
|
end
|
|
|
|
let :params do
|
|
{}
|
|
end
|
|
|
|
shared_examples 'ceilometer::agent::polling' do
|
|
context 'with default params' do
|
|
it { should contain_class('ceilometer::deps') }
|
|
it { should contain_class('ceilometer::params') }
|
|
|
|
it {
|
|
if platform_params[:libvirt_group]
|
|
should contain_user('ceilometer').with_groups(['nova', "#{platform_params[:libvirt_group]}"])
|
|
else
|
|
should contain_user('ceilometer').with_groups(['nova'])
|
|
end
|
|
}
|
|
|
|
it { should contain_user('ceilometer').with(
|
|
:ensure => 'present',
|
|
:name => 'ceilometer',
|
|
:gid => 'ceilometer',
|
|
:groups => platform_params[:ceilometer_groups],
|
|
:require => 'Anchor[ceilometer::install::end]',
|
|
) }
|
|
|
|
it { should contain_package('nova-common').with(
|
|
:before => /User\[ceilometer\]/
|
|
)}
|
|
|
|
it {
|
|
should contain_ceilometer_config('compute/instance_discovery_method').with_value('<SERVICE DEFAULT>')
|
|
should contain_ceilometer_config('compute/resource_update_interval').with_value('<SERVICE DEFAULT>')
|
|
should contain_ceilometer_config('compute/resource_cache_expiry').with_value('<SERVICE DEFAULT>')
|
|
}
|
|
|
|
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 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') }
|
|
it { should contain_ceilometer_config('polling/tenant_name_discovery').with_value('<SERVICE DEFAULT>') }
|
|
end
|
|
|
|
context 'when setting package_ensure' do
|
|
before do
|
|
params.merge!( :package_ensure => 'latest' )
|
|
end
|
|
|
|
it { should contain_package('ceilometer-polling').with(
|
|
:ensure => 'latest',
|
|
)}
|
|
end
|
|
|
|
context 'when compute parameters set' do
|
|
before do
|
|
params.merge!(
|
|
:instance_discovery_method => 'naive',
|
|
:resource_update_interval => 0,
|
|
:resource_cache_expiry => 3600,
|
|
)
|
|
end
|
|
|
|
it {
|
|
should contain_ceilometer_config('compute/instance_discovery_method').with_value('naive')
|
|
should contain_ceilometer_config('compute/resource_update_interval').with_value(0)
|
|
should contain_ceilometer_config('compute/resource_cache_expiry').with_value(3600)
|
|
}
|
|
end
|
|
|
|
context 'when tenant_name_discovery is set' do
|
|
before do
|
|
params.merge!(
|
|
:tenant_name_discovery => true
|
|
)
|
|
end
|
|
|
|
it {
|
|
should contain_ceilometer_config('polling/tenant_name_discovery').with_value(true)
|
|
}
|
|
end
|
|
|
|
context 'with compute namespace disabled' do
|
|
before do
|
|
params.merge!(
|
|
:compute_namespace => false
|
|
)
|
|
end
|
|
|
|
it {
|
|
should contain_ceilometer_config('DEFAULT/polling_namespaces').with_value('central,ipmi')
|
|
should contain_ceilometer_config('compute/instance_discovery_method').with_ensure('absent')
|
|
should contain_ceilometer_config('compute/resource_update_interval').with_ensure('absent')
|
|
should contain_ceilometer_config('compute/resource_cache_expiry').with_ensure('absent')
|
|
}
|
|
end
|
|
|
|
context 'with central namespace disabled' do
|
|
before do
|
|
params.merge!(
|
|
:central_namespace => false,
|
|
)
|
|
end
|
|
|
|
it {
|
|
should contain_ceilometer_config('DEFAULT/polling_namespaces').with_value('compute,ipmi')
|
|
}
|
|
end
|
|
|
|
context 'with central and ipmi polling namespaces disabled' do
|
|
before do
|
|
params.merge!(
|
|
:central_namespace => false,
|
|
:ipmi_namespace => false
|
|
)
|
|
end
|
|
|
|
it { should contain_ceilometer_config('DEFAULT/polling_namespaces').with_value('compute') }
|
|
end
|
|
|
|
context 'with all namespaces disabled' do
|
|
before do
|
|
params.merge!(
|
|
:compute_namespace => false,
|
|
:central_namespace => false,
|
|
:ipmi_namespace => false
|
|
)
|
|
end
|
|
|
|
it { should contain_ceilometer_config('DEFAULT/polling_namespaces').with_ensure('absent') }
|
|
end
|
|
|
|
context 'with service disabled' do
|
|
before do
|
|
params.merge!( :enabled => false )
|
|
end
|
|
|
|
it { should contain_service('ceilometer-polling').with(
|
|
:ensure => 'stopped',
|
|
:name => platform_params[:agent_polling_service_name],
|
|
:enable => false,
|
|
:hasstatus => true,
|
|
:hasrestart => true,
|
|
:tag => 'ceilometer-service',
|
|
)}
|
|
end
|
|
|
|
context 'with service unmanaged' do
|
|
before do
|
|
params.merge!( :manage_service => false )
|
|
end
|
|
|
|
it { should_not contain_service('ceilometer-polling') }
|
|
end
|
|
|
|
context 'with polling management enabled and default meters' do
|
|
before do
|
|
params.merge!( :manage_polling => true )
|
|
end
|
|
|
|
it { should contain_file('polling').with(
|
|
:ensure => 'present',
|
|
:path => '/etc/ceilometer/polling.yaml',
|
|
:content => '---
|
|
sources:
|
|
- name: some_pollsters
|
|
interval: 300
|
|
meters:
|
|
- cpu
|
|
- cpu_l3_cache
|
|
- memory.usage
|
|
- network.incoming.bytes
|
|
- network.incoming.packets
|
|
- network.outgoing.bytes
|
|
- network.outgoing.packets
|
|
- disk.device.read.bytes
|
|
- disk.device.read.requests
|
|
- disk.device.write.bytes
|
|
- disk.device.write.requests
|
|
- volume.size
|
|
- volume.snapshot.size
|
|
- volume.backup.size
|
|
',
|
|
:selinux_ignore_defaults => true,
|
|
:tag => 'ceilometer-yamls',
|
|
)}
|
|
end
|
|
|
|
context 'with polling and basic custom settings' do
|
|
before do
|
|
params.merge!( :manage_polling => true,
|
|
:polling_interval => 30,
|
|
:polling_meters => ['meter1', 'meter2'] )
|
|
end
|
|
|
|
it { should contain_file('polling').with(
|
|
:ensure => 'present',
|
|
:path => '/etc/ceilometer/polling.yaml',
|
|
:content => '---
|
|
sources:
|
|
- name: some_pollsters
|
|
interval: 30
|
|
meters:
|
|
- meter1
|
|
- meter2
|
|
',
|
|
:selinux_ignore_defaults => true,
|
|
:tag => 'ceilometer-yamls',
|
|
)}
|
|
end
|
|
|
|
context 'with polling and custom config' do
|
|
before do
|
|
params.merge!( :manage_polling => true,
|
|
:polling_config => {
|
|
'sources' => [
|
|
'name' => 'my_pollsters',
|
|
'interval' => 60,
|
|
'meters' => [
|
|
'meterfoo',
|
|
'meterbar',
|
|
],
|
|
],
|
|
} )
|
|
end
|
|
|
|
it { should contain_file('polling').with(
|
|
:ensure => 'present',
|
|
:path => '/etc/ceilometer/polling.yaml',
|
|
:content => '---
|
|
sources:
|
|
- name: my_pollsters
|
|
interval: 60
|
|
meters:
|
|
- meterfoo
|
|
- meterbar
|
|
',
|
|
)}
|
|
end
|
|
|
|
context 'with polling management disabled' do
|
|
before do
|
|
params.merge!( :manage_polling => false )
|
|
end
|
|
|
|
it { should_not contain_file('polling') }
|
|
end
|
|
|
|
context 'when batch_size is set' do
|
|
before do
|
|
params.merge!( :batch_size => 50 )
|
|
end
|
|
|
|
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({
|
|
:supported_os => OSDefaults.get_supported_os
|
|
}).each do |os,facts|
|
|
context "on #{os}" do
|
|
let (:facts) do
|
|
facts.merge!(OSDefaults.get_facts())
|
|
end
|
|
|
|
let :platform_params do
|
|
case facts[:os]['family']
|
|
when 'Debian'
|
|
{
|
|
: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_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
|
|
|
|
it_behaves_like 'ceilometer::agent::polling'
|
|
end
|
|
end
|
|
|
|
end
|