diff --git a/manifests/init.pp b/manifests/init.pp index dc1b0cb1..4adbbdd0 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -12,6 +12,10 @@ # (optional) Connection url for the gnocchi database. # Defaults to undef. # +# [*coordination_url*] +# (optional) The url to use for distributed group membership coordination. +# Defaults to $::os_service_default. +# # [*purge_config*] # (optional) Whether to set only the specified config options # in the gnocchi config. @@ -20,6 +24,7 @@ class gnocchi ( $package_ensure = 'present', $database_connection = undef, + $coordination_url = $::os_service_default, $purge_config = false, ) inherits gnocchi::params { @@ -36,4 +41,21 @@ class gnocchi ( purge => $purge_config, } + $coordination_url_real = pick($::gnocchi::storage::coordination_url, $coordination_url) + $storage_package_ensure = pick($::gnocchi::storage::package_ensure, $package_ensure) + + if $coordination_url_real { + + gnocchi_config { + 'DEFAULT/coordination_url' : value => $coordination_url_real; + } + + if ($coordination_url_real =~ /^redis/ ) { + ensure_resource('package', 'python-redis', { + ensure => $storage_package_ensure, + name => $::gnocchi::params::redis_package_name, + tag => 'openstack', + }) + } + } } diff --git a/manifests/metricd.pp b/manifests/metricd.pp index ba77071a..002cdb6a 100644 --- a/manifests/metricd.pp +++ b/manifests/metricd.pp @@ -38,10 +38,12 @@ class gnocchi::metricd ( include gnocchi::deps + $metric_processing_delay_real = pick($::gnocchi::storage::metric_processing_delay, $metric_processing_delay) + gnocchi_config { - 'metricd/workers': value => $workers; - 'metricd/metric_cleanup_delay': value => $cleanup_delay; - 'metricd/metric_processing_delay': value => $metric_processing_delay; + 'metricd/workers': value => $workers; + 'metricd/metric_cleanup_delay': value => $cleanup_delay; + 'metricd/metric_processing_delay': value => $metric_processing_delay_real; } package { 'gnocchi-metricd': diff --git a/manifests/storage.pp b/manifests/storage.pp index afb33eec..85c29a07 100644 --- a/manifests/storage.pp +++ b/manifests/storage.pp @@ -16,39 +16,41 @@ # # == Parameters # +# DEPRECATED PARAMETERS +# # [*package_ensure*] # (optional) ensure state for package. # Defaults to 'present' # # [*coordination_url*] # (optional) The url to use for distributed group membership coordination. -# Defaults to $::os_service_default. +# Defaults to undef # # [*metric_processing_delay*] # (optional) Delay between processng metrics -# Defaults to $::os_service_default. +# Defaults to undef # - class gnocchi::storage( - $package_ensure = 'present', - $coordination_url = $::os_service_default, - $metric_processing_delay = $::os_service_default, + # DEPRECATED PARAMETERS + $package_ensure = undef, + $coordination_url = undef, + $metric_processing_delay = undef, ) inherits gnocchi::params { include gnocchi::deps + if $package_ensure { + warning('The gnocchi::storage::package_ensure parameter was deprecated. \ +Use gnocchi::package_ensure instead') + } + if $coordination_url { + warning('The gnocchi::storage::coordination_url parameter was deprecated. \ +Use gnocchi::coordination_url instead') + } - gnocchi_config { - 'storage/coordination_url' : value => $coordination_url; - 'storage/metric_processing_delay' : value => $metric_processing_delay; - } - - if ($coordination_url =~ /^redis/ ) { - ensure_resource('package', 'python-redis', { - name => $::gnocchi::params::redis_package_name, - tag => 'openstack', - }) - } + if $metric_processing_delay { + warning('The gnocchi::storage::metric_processing_delay parameter was deprecated. \ +Use gnocchi::metricd::metric_processing_delay instead') } } diff --git a/releasenotes/notes/deprecate-storage-options-bff9a8cde960a8bc.yaml b/releasenotes/notes/deprecate-storage-options-bff9a8cde960a8bc.yaml new file mode 100644 index 00000000..f100b8b6 --- /dev/null +++ b/releasenotes/notes/deprecate-storage-options-bff9a8cde960a8bc.yaml @@ -0,0 +1,10 @@ +--- +deprecations: + - | + gnocchi::storage::coordination_url and gnocchi::storage::package_ensure + were deprecated because coordination_url in storage seciton was deprecated + in gnocchi. Use the parameters in gnocchi class. + - | + gnocchi::storage::metric_processing_dealy was deprecated because the + corresponding parameter under storage section was deprecated in gnocchi. + Use gnocchi::metricd::metric_processing_delay instead. diff --git a/spec/classes/gnocchi_init_spec.rb b/spec/classes/gnocchi_init_spec.rb index 93c645b2..19b9b72b 100644 --- a/spec/classes/gnocchi_init_spec.rb +++ b/spec/classes/gnocchi_init_spec.rb @@ -27,6 +27,32 @@ describe 'gnocchi' do }) end + it 'does not configure coordination_url' do + is_expected.not_to contain_gnocchi_config('DEFAUTL/coordination_url') + is_expected.not_to contain_package('python-redis') + end + end + + context 'with overriden parameters' do + let :params do + { :purge_config => true, + :coordination_url => 'redis://localhost:6379', } + end + + it 'purges gnocchi config' do + is_expected.to contain_resources('gnocchi_config').with({ + :purge => true + }) + end + + it 'cnfigures coordination' do + is_expected.to contain_gnocchi_config('DEFAULT/coordination_url').with_value('redis://localhost:6379') + is_expected.to contain_package('python-redis').with( + :name => platform_params[:redis_package_name], + :ensure => 'present', + :tag => 'openstack' + ) + end end end @@ -41,9 +67,13 @@ describe 'gnocchi' do let(:platform_params) do case facts[:osfamily] when 'Debian' - { :gnocchi_common_package => 'gnocchi-common' } + { :gnocchi_common_package => 'gnocchi-common', + :redis_package_name => 'python3-redis' + } when 'RedHat' - { :gnocchi_common_package => 'gnocchi-common' } + { :gnocchi_common_package => 'gnocchi-common', + :redis_package_name => 'python-redis' + } end end it_behaves_like 'gnocchi' diff --git a/spec/classes/gnocchi_storage_spec.rb b/spec/classes/gnocchi_storage_spec.rb index 36bd6d90..302ec673 100644 --- a/spec/classes/gnocchi_storage_spec.rb +++ b/spec/classes/gnocchi_storage_spec.rb @@ -2,35 +2,8 @@ require 'spec_helper' describe 'gnocchi::storage' do - let :params do - { :package_ensure => 'latest' } - end - shared_examples_for 'gnocchi-storage' do - - it { is_expected.to contain_class('gnocchi::deps') } - it { is_expected.to contain_class('gnocchi::params') } - - context 'with coordination' do - before do - params.merge!({ - :coordination_url => 'redis://localhost:6379', - :metric_processing_delay => 30, - }) - end - - it 'configures backend_url' do - is_expected.to contain_gnocchi_config('storage/coordination_url').with_value('redis://localhost:6379') - is_expected.to contain_gnocchi_config('storage/metric_processing_delay').with_value(30) - end - - it 'installs python-redis package' do - is_expected.to contain_package('python-redis').with( - :name => platform_params[:redis_package_name], - :tag => 'openstack' - ) - end - end + # Nothong to test end on_supported_os({