diff --git a/deployment/Puppetfile b/deployment/Puppetfile index 68d6b2a4f7..6928e7dd05 100644 --- a/deployment/Puppetfile +++ b/deployment/Puppetfile @@ -134,7 +134,7 @@ mod 'swift', # Pull in puppet-ceilometer mod 'ceilometer', :git => 'https://review.fuel-infra.org/p/puppet-modules/puppet-ceilometer.git', - :ref => '7.0.0-mos-rc2' + :ref => '7.0.0-rc3' # Pull in openstack-cinder mod 'cinder', diff --git a/deployment/puppet/openstack/manifests/ceilometer.pp b/deployment/puppet/openstack/manifests/ceilometer.pp index ec6b2619eb..5c9d11f3ef 100644 --- a/deployment/puppet/openstack/manifests/ceilometer.pp +++ b/deployment/puppet/openstack/manifests/ceilometer.pp @@ -44,6 +44,9 @@ class openstack::ceilometer ( $event_time_to_live = '604800', $metering_time_to_live = '604800', $http_timeout = '600', + $api_workers = '1', + $collector_workers = '1', + $notification_workers = '1', ) { # Add the base ceilometer class & parameters @@ -128,6 +131,7 @@ class openstack::ceilometer ( keystone_tenant => $keystone_tenant, host => $host, port => $port, + api_workers => $api_workers, } # Clean up expired data once a week @@ -139,7 +143,9 @@ class openstack::ceilometer ( weekday => '0', } - class { '::ceilometer::collector': } + class { '::ceilometer::collector': + collector_workers => $collector_workers, + } class { '::ceilometer::agent::central': } @@ -150,7 +156,8 @@ class openstack::ceilometer ( class { '::ceilometer::alarm::notifier': } class { '::ceilometer::agent::notification': - store_events => true, + notification_workers => $notification_workers, + store_events => true, } if $ha_mode { diff --git a/deployment/puppet/osnailyfacter/modular/ceilometer/controller.pp b/deployment/puppet/osnailyfacter/modular/ceilometer/controller.pp index 1069f88f38..f6d7313615 100644 --- a/deployment/puppet/osnailyfacter/modular/ceilometer/controller.pp +++ b/deployment/puppet/osnailyfacter/modular/ceilometer/controller.pp @@ -59,6 +59,7 @@ $rabbit_ha_queues = true $service_endpoint = hiera('service_endpoint') $ha_mode = pick($ceilometer_hash['ha_mode'], true) $ssl_hash = hiera_hash('use_ssl', {}) +$service_workers = pick($ceilometer_hash['workers'], min(max($::processorcount, 2), 16)) prepare_network_config(hiera('network_scheme', {})) $api_bind_address = get_network_role_property('ceilometer/api', 'ipaddr') @@ -118,5 +119,8 @@ if ($ceilometer_enabled) { event_time_to_live => $ceilometer_hash['event_time_to_live'], metering_time_to_live => $ceilometer_hash['metering_time_to_live'], http_timeout => $ceilometer_hash['http_timeout'], + api_workers => $service_workers, + collector_workers => $service_workers, + notification_workers => $service_workers, } } diff --git a/tests/noop/spec/hosts/ceilometer/controller_spec.rb b/tests/noop/spec/hosts/ceilometer/controller_spec.rb index 83bf2e7cbb..16fb19955b 100644 --- a/tests/noop/spec/hosts/ceilometer/controller_spec.rb +++ b/tests/noop/spec/hosts/ceilometer/controller_spec.rb @@ -6,6 +6,14 @@ describe manifest do shared_examples 'catalog' do # TODO All this stuff should be moved to shared examples controller* tests. + let(:facts) { + Noop.ubuntu_facts.merge({ + :processorcount => '6' + }) + } + let(:processorcount) do + 6 + end rabbit_user = Noop.hiera_structure 'rabbit/user', 'nova' rabbit_password = Noop.hiera_structure 'rabbit/password' @@ -46,6 +54,15 @@ describe manifest do it 'should configure default log levels' do should contain_ceilometer_config('DEFAULT/default_log_levels').with_value(default_log_levels.sort.join(',')) end + + it 'should configure workers for API, Collector and Agent Notification services' do + fallback_workers = [[processorcount, 2].max, 16].min + service_workers = Noop.puppet_function 'pick', ceilometer_hash['workers'], fallback_workers + + should contain_ceilometer_config('DEFAULT/api_workers').with(:value => service_workers) + should contain_ceilometer_config('DEFAULT/collector_workers').with(:value => service_workers) + should contain_ceilometer_config('DEFAULT/notification_workers').with(:value => service_workers) + end end end # end of shared_examples