diff --git a/manifests/evaluator.pp b/manifests/evaluator.pp index 1b2f9df0..9bf6eb68 100644 --- a/manifests/evaluator.pp +++ b/manifests/evaluator.pp @@ -13,6 +13,10 @@ # (optional) ensure state for package. # Defaults to 'present' # +# [*workers*] +# (optional) Number of workers for evaluator service. +# Defaults to $::os_workers. +# # [*coordination_url*] # (optional) The url to use for distributed group membership coordination. # Defaults to undef. @@ -25,6 +29,7 @@ class aodh::evaluator ( $manage_service = true, $enabled = true, $package_ensure = 'present', + $workers = $::os_workers, $coordination_url = undef, $evaluation_interval = $::os_service_default, ) { @@ -32,9 +37,18 @@ class aodh::evaluator ( include aodh::deps include aodh::params + if $coordination_url == undef and !is_service_default($workers) and $workers > 1 { + warning('coordination_url should be set to use multiple workers') + $workers_real = $::os_service_default + } else { + $workers_real = $workers + } + aodh_config { 'DEFAULT/evaluation_interval' : value => $evaluation_interval; + 'evaluator/workers' : value => $workers_real; } + if $coordination_url { aodh_config { 'coordination/backend_url' : value => $coordination_url; diff --git a/manifests/listener.pp b/manifests/listener.pp index 33be0ed1..d67ade3e 100644 --- a/manifests/listener.pp +++ b/manifests/listener.pp @@ -13,15 +13,24 @@ # (optional) ensure state for package. # Defaults to 'present' # +# [*workers*] +# (optional) Number of workers for evaluator service. +# Defaults to $::os_workers. +# class aodh::listener ( $manage_service = true, $enabled = true, $package_ensure = 'present', + $workers = $::os_workers, ) { include aodh::deps include aodh::params + aodh_config { + 'listener/workers': value => $workers + } + ensure_resource( 'package', [$::aodh::params::listener_package_name], { ensure => $package_ensure, tag => ['openstack', 'aodh-package'] } diff --git a/manifests/notifier.pp b/manifests/notifier.pp index 58a637f2..7075503e 100644 --- a/manifests/notifier.pp +++ b/manifests/notifier.pp @@ -13,15 +13,24 @@ # (optional) ensure state for package. # Defaults to 'present' # +# [*workers*] +# (optional) Number of workers for notifier service. +# Defaults to $::os_workers. +# class aodh::notifier ( $manage_service = true, $enabled = true, $package_ensure = 'present', + $workers = $::os_workers, ) { include aodh::deps include aodh::params + aodh_config { + 'notifier/workers': value => $workers; + } + ensure_resource( 'package', [$::aodh::params::notifier_package_name], { ensure => $package_ensure, tag => ['openstack', 'aodh-package'] } diff --git a/releasenotes/notes/workers-054d3bafa34171d9.yaml b/releasenotes/notes/workers-054d3bafa34171d9.yaml new file mode 100644 index 00000000..fbf07dc7 --- /dev/null +++ b/releasenotes/notes/workers-054d3bafa34171d9.yaml @@ -0,0 +1,9 @@ +--- +features: + - | + The new parameters have been added to support workers option in each aodh + services. + + - ``aodh::evaluator::workers`` + - ``aodh::listener::workers`` + - ``aodh::notifier::workers`` diff --git a/spec/classes/aodh_evaluator_spec.rb b/spec/classes/aodh_evaluator_spec.rb index 55ca1e37..16f19fc5 100644 --- a/spec/classes/aodh_evaluator_spec.rb +++ b/spec/classes/aodh_evaluator_spec.rb @@ -21,14 +21,35 @@ describe 'aodh::evaluator' do is_expected.to contain_aodh_config('coordination/backend_url').with_value('redis://localhost:6379') end + it 'configures workers' do + is_expected.to contain_aodh_config('evaluator/workers').with_value(4) + end + it 'installs python-redis package' do is_expected.to contain_package('python-redis').with( :name => platform_params[:redis_package_name], - :tag => 'openstack' + :tag => 'openstack' ) end end + context 'with coordination and workers' do + before do + params.merge!({ + :coordination_url => 'redis://localhost:6379', + :workers => 8, + }) + end + + it 'configures backend_url' do + is_expected.to contain_aodh_config('coordination/backend_url').with_value('redis://localhost:6379') + end + + it 'configures workers' do + is_expected.to contain_aodh_config('evaluator/workers').with_value(8) + end + end + context 'with evaluation interval' do before do params.merge!({ :evaluation_interval => '10' }) @@ -38,6 +59,14 @@ describe 'aodh::evaluator' do end end + context 'with workers' do + before do + params.merge!({ :workers => 8 }) + end + it 'does not configure workers' do + is_expected.to contain_aodh_config('evaluator/workers').with_value('') + end + end context 'when enabled' do it { is_expected.to contain_class('aodh::params') } @@ -60,6 +89,10 @@ describe 'aodh::evaluator' do ) end + it 'sets default values' do + is_expected.to contain_aodh_config('DEFAULT/evaluation_interval').with_value('') + is_expected.to contain_aodh_config('evaluator/workers').with_value('') + end end context 'when disabled' do @@ -98,10 +131,7 @@ describe 'aodh::evaluator' do }).each do |os,facts| context "on #{os}" do let (:facts) do - facts.merge!(OSDefaults.get_facts({ - :fqdn => 'some.host.tld', - :concat_basedir => '/var/lib/puppet/concat' - })) + facts.merge!(OSDefaults.get_facts({ :os_workers => 4 })) end let(:platform_params) do diff --git a/spec/classes/aodh_listener_spec.rb b/spec/classes/aodh_listener_spec.rb index c0731b7b..84b4cc04 100644 --- a/spec/classes/aodh_listener_spec.rb +++ b/spec/classes/aodh_listener_spec.rb @@ -8,6 +8,16 @@ describe 'aodh::listener' do shared_examples_for 'aodh-listener' do + context 'with workers' do + let :params do + { :workers => 8 } + end + + it 'configures workers' do + is_expected.to contain_aodh_config('listener/workers').with_value(8) + end + end + context 'when enabled' do it { is_expected.to contain_class('aodh::params') } @@ -29,6 +39,9 @@ describe 'aodh::listener' do ) end + it 'sets default values' do + is_expected.to contain_aodh_config('listener/workers').with_value(4) + end end context 'when disabled' do @@ -67,7 +80,7 @@ describe 'aodh::listener' do }).each do |os,facts| context "on #{os}" do let (:facts) do - facts.merge!(OSDefaults.get_facts()) + facts.merge!(OSDefaults.get_facts({ :os_workers => 4 })) end let(:platform_params) do diff --git a/spec/classes/aodh_notifier_spec.rb b/spec/classes/aodh_notifier_spec.rb index 2ecb7161..b174e952 100644 --- a/spec/classes/aodh_notifier_spec.rb +++ b/spec/classes/aodh_notifier_spec.rb @@ -8,6 +8,16 @@ describe 'aodh::notifier' do shared_examples_for 'aodh-notifier' do + context 'with workers' do + let :params do + { :workers => 8 } + end + + it 'configures workers' do + is_expected.to contain_aodh_config('notifier/workers').with_value(8) + end + end + context 'when enabled' do it { is_expected.to contain_class('aodh::params') } @@ -29,6 +39,9 @@ describe 'aodh::notifier' do ) end + it 'sets default values' do + is_expected.to contain_aodh_config('notifier/workers').with_value(4) + end end context 'when disabled' do @@ -67,7 +80,7 @@ describe 'aodh::notifier' do }).each do |os,facts| context "on #{os}" do let (:facts) do - facts.merge!(OSDefaults.get_facts()) + facts.merge!(OSDefaults.get_facts({ :os_workers => 4 })) end let(:platform_params) do