From 5a5326e7e52e3ad5754420ff33c7ff1919a42dc2 Mon Sep 17 00:00:00 2001 From: Radoslaw Smigielski Date: Mon, 21 Sep 2015 21:40:55 +0200 Subject: [PATCH] Ability to configure api, collector and notification workers We've been missing ability to configure two options: - collector_workers, number of workers for collector service. - notification_workers, number of workers for notification service. - api_workers, number of workers for api service. Co-Authored-By: Ivan Berezovskiy Take part of commit 6156cb49f29b13321bb719de57e4e4cd08838a3d to use os_service_default fact. Change-Id: Ifc1f1623289560f873442a702a23a5cc1c831c72 --- manifests/agent/notification.pp | 21 +++++---- manifests/api.pp | 6 +++ manifests/collector.pp | 20 ++++++--- .../ceilometer_agent_notification_spec.rb | 45 +++++++++++-------- spec/classes/ceilometer_api_spec.rb | 35 ++++++++------- spec/classes/ceilometer_collector_spec.rb | 5 ++- spec/spec_helper.rb | 3 ++ 7 files changed, 85 insertions(+), 50 deletions(-) diff --git a/manifests/agent/notification.pp b/manifests/agent/notification.pp index 00702aa..5c6af49 100644 --- a/manifests/agent/notification.pp +++ b/manifests/agent/notification.pp @@ -39,17 +39,21 @@ # (optional) Save event details. # Defaults to false # +# [*notification_workers*] +# (optional) Number of workers for notification service (integer value). +# Defaults to $::os_service_default +# # [*package_ensure*] # (optional) ensure state for package. # Defaults to 'present' # - class ceilometer::agent::notification ( - $manage_service = true, - $enabled = true, - $ack_on_event_error = true, - $store_events = false, - $package_ensure = 'present', + $manage_service = true, + $enabled = true, + $ack_on_event_error = true, + $store_events = false, + $notification_workers = $::os_service_default, + $package_ensure = 'present', ) { include ::ceilometer::params @@ -84,8 +88,9 @@ class ceilometer::agent::notification ( } ceilometer_config { - 'notification/ack_on_event_error': value => $ack_on_event_error; - 'notification/store_events' : value => $store_events; + 'notification/ack_on_event_error' : value => $ack_on_event_error; + 'notification/store_events' : value => $store_events; + 'DEFAULT/notification_workers' : value => $notification_workers; } } diff --git a/manifests/api.pp b/manifests/api.pp index cf9e9de..7c696a6 100644 --- a/manifests/api.pp +++ b/manifests/api.pp @@ -73,6 +73,10 @@ # to make ceilometer-api be a web app using apache mod_wsgi. # Defaults to '$::ceilometer::params::api_service_name' # +# [*api_workers*] +# (optional) Number of workers for Ceilometer API server (integer value). +# Defaults to $::os_service_default +# class ceilometer::api ( $manage_service = true, $enabled = true, @@ -85,6 +89,7 @@ class ceilometer::api ( $host = '0.0.0.0', $port = '8777', $service_name = $::ceilometer::params::api_service_name, + $api_workers = $::os_service_default, # DEPRECATED PARAMETERS $keystone_host = '127.0.0.1', $keystone_port = '35357', @@ -145,6 +150,7 @@ class ceilometer::api ( } ceilometer_config { + 'DEFAULT/api_workers' : value => $api_workers; 'keystone_authtoken/admin_tenant_name' : value => $keystone_tenant; 'keystone_authtoken/admin_user' : value => $keystone_user; 'keystone_authtoken/admin_password' : value => $keystone_password, secret => true; diff --git a/manifests/collector.pp b/manifests/collector.pp index 8e22a93..7085e15 100644 --- a/manifests/collector.pp +++ b/manifests/collector.pp @@ -22,12 +22,17 @@ # (optional) the ceilometer collector udp bind port. # Defaults to '4952' # +# [*collector_workers*] +# (optional) Number of workers for collector service (integer value). +# Defaults to $::os_service_default +# class ceilometer::collector ( - $manage_service = true, - $enabled = true, - $package_ensure = 'present', - $udp_address = '0.0.0.0', - $udp_port = '4952', + $manage_service = true, + $enabled = true, + $package_ensure = 'present', + $udp_address = '0.0.0.0', + $udp_port = '4952', + $collector_workers = $::os_service_default, ) { include ::ceilometer::params @@ -41,8 +46,9 @@ class ceilometer::collector ( } ceilometer_config { - 'collector/udp_address' : value => $udp_address; - 'collector/udp_port' : value => $udp_port; + 'collector/udp_address': value => $udp_address; + 'collector/udp_port': value => $udp_port; + 'DEFAULT/collector_workers': value => $collector_workers; } Package[$::ceilometer::params::collector_package_name] -> Service['ceilometer-collector'] diff --git a/spec/classes/ceilometer_agent_notification_spec.rb b/spec/classes/ceilometer_agent_notification_spec.rb index 550a755..8b7f269 100644 --- a/spec/classes/ceilometer_agent_notification_spec.rb +++ b/spec/classes/ceilometer_agent_notification_spec.rb @@ -45,6 +45,7 @@ describe 'ceilometer::agent::notification' do end it 'configures notifications parameters in ceilometer.conf' do + is_expected.to contain_ceilometer_config('DEFAULT/notification_workers').with_value('') is_expected.to contain_ceilometer_config('notification/ack_on_event_error').with_value( params[:ack_on_event_error] ) is_expected.to contain_ceilometer_config('notification/store_events').with_value( params[:store_events] ) end @@ -89,7 +90,7 @@ describe 'ceilometer::agent::notification' do context 'on Debian platforms' do let :facts do - { :osfamily => 'Debian' } + @default_facts.merge({ :osfamily => 'Debian' }) end let :platform_params do @@ -102,7 +103,7 @@ describe 'ceilometer::agent::notification' do context 'on RedHat platforms' do let :facts do - { :osfamily => 'RedHat' } + @default_facts.merge({ :osfamily => 'RedHat' }) end let :platform_params do @@ -115,10 +116,12 @@ describe 'ceilometer::agent::notification' do context 'on RHEL 7' do let :facts do - { :osfamily => 'RedHat', - :operatingsystem => 'RedHat', - :operatingsystemmajrelease => 7 - } + @default_facts.merge( + { :osfamily => 'RedHat', + :operatingsystem => 'RedHat', + :operatingsystemmajrelease => 7 + } + ) end let :platform_params do @@ -131,10 +134,12 @@ describe 'ceilometer::agent::notification' do context 'on CentOS 7' do let :facts do - { :osfamily => 'RedHat', - :operatingsystem => 'CentOS', - :operatingsystemmajrelease => 7 - } + @default_facts.merge( + { :osfamily => 'RedHat', + :operatingsystem => 'CentOS', + :operatingsystemmajrelease => 7 + } + ) end let :platform_params do @@ -147,10 +152,12 @@ describe 'ceilometer::agent::notification' do context 'on Scientific 7' do let :facts do - { :osfamily => 'RedHat', - :operatingsystem => 'Scientific', - :operatingsystemmajrelease => 7 - } + @default_facts.merge( + { :osfamily => 'RedHat', + :operatingsystem => 'Scientific', + :operatingsystemmajrelease => 7 + } + ) end let :platform_params do @@ -163,10 +170,12 @@ describe 'ceilometer::agent::notification' do context 'on Fedora 20' do let :facts do - { :osfamily => 'RedHat', - :operatingsystem => 'Fedora', - :operatingsystemrelease => 20 - } + @default_facts.merge( + { :osfamily => 'RedHat', + :operatingsystem => 'Fedora', + :operatingsystemrelease => 20 + } + ) end let :platform_params do diff --git a/spec/classes/ceilometer_api_spec.rb b/spec/classes/ceilometer_api_spec.rb index 094e218..cba6284 100644 --- a/spec/classes/ceilometer_api_spec.rb +++ b/spec/classes/ceilometer_api_spec.rb @@ -52,6 +52,7 @@ describe 'ceilometer::api' do is_expected.to contain_ceilometer_config('keystone_authtoken/auth_uri').with_value( params[:keystone_protocol] + "://" + params[:keystone_host] + ":5000/" ) is_expected.to contain_ceilometer_config('api/host').with_value( params[:host] ) is_expected.to contain_ceilometer_config('api/port').with_value( params[:port] ) + is_expected.to contain_ceilometer_config('DEFAULT/api_workers').with_value('') end context 'when specifying keystone_auth_admin_prefix' do @@ -154,12 +155,14 @@ describe 'ceilometer::api' do context 'on Debian platforms' do let :facts do - { :osfamily => 'Debian', - :operatingsystem => 'Debian', - :operatingsystemrelease => '8.0', - :concat_basedir => '/var/lib/puppet/concat', - :fqdn => 'some.host.tld', - :processorcount => 2 } + @default_facts.merge( + { :osfamily => 'Debian', + :operatingsystem => 'Debian', + :operatingsystemrelease => '8.0', + :concat_basedir => '/var/lib/puppet/concat', + :fqdn => 'some.host.tld', + :processorcount => 2 } + ) end let :platform_params do @@ -172,12 +175,14 @@ describe 'ceilometer::api' do context 'on RedHat platforms' do let :facts do - { :osfamily => 'RedHat', - :operatingsystem => 'RedHat', - :operatingsystemrelease => '7.1', - :fqdn => 'some.host.tld', - :concat_basedir => '/var/lib/puppet/concat', - :processorcount => 2 } + @default_facts.merge( + { :osfamily => 'RedHat', + :operatingsystem => 'RedHat', + :operatingsystemrelease => '7.1', + :fqdn => 'some.host.tld', + :concat_basedir => '/var/lib/puppet/concat', + :processorcount => 2 } + ) end let :platform_params do @@ -190,7 +195,7 @@ describe 'ceilometer::api' do describe 'with custom auth_uri' do let :facts do - { :osfamily => 'RedHat' } + @default_facts.merge({ :osfamily => 'RedHat' }) end before do params.merge!({ @@ -204,7 +209,7 @@ describe 'ceilometer::api' do describe "with custom keystone identity_uri" do let :facts do - { :osfamily => 'RedHat' } + @default_facts.merge({ :osfamily => 'RedHat' }) end before do params.merge!({ @@ -223,7 +228,7 @@ describe 'ceilometer::api' do describe "with custom keystone identity_uri and auth_uri" do let :facts do - { :osfamily => 'RedHat' } + @default_facts.merge({ :osfamily => 'RedHat' }) end before do params.merge!({ diff --git a/spec/classes/ceilometer_collector_spec.rb b/spec/classes/ceilometer_collector_spec.rb index 6a0ade1..a366c4b 100644 --- a/spec/classes/ceilometer_collector_spec.rb +++ b/spec/classes/ceilometer_collector_spec.rb @@ -51,6 +51,7 @@ describe 'ceilometer::collector' do it 'configures ceilometer-collector server' do is_expected.to contain_ceilometer_config('collector/udp_address').with_value( '0.0.0.0' ) is_expected.to contain_ceilometer_config('collector/udp_port').with_value( '4952' ) + is_expected.to contain_ceilometer_config('DEFAULT/collector_workers').with_value('') end it 'installs ceilometer-collector package' do @@ -109,7 +110,7 @@ describe 'ceilometer::collector' do context 'on Debian platforms' do let :facts do - { :osfamily => 'Debian' } + @default_facts.merge({ :osfamily => 'Debian' }) end let :platform_params do @@ -122,7 +123,7 @@ describe 'ceilometer::collector' do context 'on RedHat platforms' do let :facts do - { :osfamily => 'RedHat' } + @default_facts.merge({ :osfamily => 'RedHat' }) end let :platform_params do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 3df4ced..9bc7bcf 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -5,6 +5,9 @@ require 'webmock/rspec' RSpec.configure do |c| c.alias_it_should_behave_like_to :it_configures, 'configures' c.alias_it_should_behave_like_to :it_raises, 'raises' + c.before :each do + @default_facts = { :os_service_default => '' } + end end at_exit { RSpec::Puppet::Coverage.report! } -- 2.45.2