From 298c6ec174780d97966d1724107910ab88d26def Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Tue, 6 Jul 2021 17:03:22 +0900 Subject: [PATCH] Use oslo::coordination to manage coordination parameters This change replaces current implementation to manage coordination parameters by the base class in puppet-oslo. With this change the required backend package is installed according to the backend driver used. Depends-on: https://review.opendev.org/791628 Change-Id: I5c2653475bbbf6dc0a9ce795958fd884bcdf13e8 --- manifests/coordination.pp | 32 ++++++++++++++ manifests/init.pp | 27 ++++++------ .../notes/coordination-6da1ae2202029007.yaml | 12 ++++++ spec/classes/mistral_coordination_spec.rb | 42 +++++++++++++++++++ spec/classes/mistral_init_spec.rb | 2 - 5 files changed, 101 insertions(+), 14 deletions(-) create mode 100644 manifests/coordination.pp create mode 100644 releasenotes/notes/coordination-6da1ae2202029007.yaml create mode 100644 spec/classes/mistral_coordination_spec.rb diff --git a/manifests/coordination.pp b/manifests/coordination.pp new file mode 100644 index 0000000..c6e4393 --- /dev/null +++ b/manifests/coordination.pp @@ -0,0 +1,32 @@ +# == Class: mistral::coordination +# +# Setup and configure Mistral coordination settings. +# +# === Parameters +# +# [*backend_url*] +# (Optional) Coordination backend URL. +# Defaults to $::os_service_default +# +# [*heartbeat_interval*] +# (Optional) Number of seconds between hearbeats for coordintation. +# Defaults to $::os_service_default +# +class mistral::coordination ( + $backend_url = $::os_service_default, + $heartbeat_interval = $::os_service_default, +) { + + include mistral::deps + + $backend_url_real = pick($::mistral::coordination_backend_url, $backend_url) + $heartbeat_interval_real = pick($::mistral::coordination_heartbeat_interval, $heartbeat_interval) + + oslo::coordination{ 'mistral_config': + backend_url => $backend_url_real + } + + mistral_config { + 'coordination/heartbeat_interval': value => $heartbeat_interval_real; + } +} diff --git a/manifests/init.pp b/manifests/init.pp index 0a0058c..c27c16b 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -120,14 +120,6 @@ # (Optional) Seconds to wait for a response from a call. (integer value) # Defaults to $::os_service_default # -# [*coordination_backend_url*] -# (optional) The backend URL to be used for coordination. -# Defaults to $::os_service_default -# -# [*coordination_heartbeat_interval*] -# (optional) Number of seconds between heartbeats for coordination. -# Defaults to $::os_service_default -# # [*purge_config*] # (optional) Whether to set only the specified config options # in the mistral config. @@ -166,6 +158,14 @@ # (optional) Url used to connect to database. # Defaults to undef. # +# [*coordination_backend_url*] +# (optional) The backend URL to be used for coordination. +# Defaults to $::os_service_default +# +# [*coordination_heartbeat_interval*] +# (optional) Number of seconds between heartbeats for coordination. +# Defaults to $::os_service_default +# class mistral( $package_ensure = 'present', $os_actions_endpoint_type = $::os_service_default, @@ -189,8 +189,6 @@ class mistral( $kombu_ssl_version = $::os_service_default, $kombu_reconnect_delay = $::os_service_default, $amqp_durable_queues = $::os_service_default, - $coordination_backend_url = $::os_service_default, - $coordination_heartbeat_interval = $::os_service_default, $purge_config = false, $sync_db = true, $max_missed_heartbeats = $::os_service_default, @@ -198,6 +196,8 @@ class mistral( $first_heartbeat_timeout = $::os_service_default, # DEPRECATED PARAMETERS $database_connection = undef, + $coordination_backend_url = undef, + $coordination_heartbeat_interval = undef, ){ include mistral::deps @@ -209,6 +209,11 @@ class mistral( removed in a future realse. Use mistral::db::database_connection instead') } + if $coordination_backend_url != undef or $coordination_heartbeat_interval != undef { + warning('The mistral::coordination_* parameters are deprecated. Use mistral::coordination instead') + include mistral::coordination + } + package { 'mistral-common': ensure => $package_ensure, name => $::mistral::params::common_package_name, @@ -220,8 +225,6 @@ removed in a future realse. Use mistral::db::database_connection instead') } mistral_config { - 'coordination/backend_url': value => $coordination_backend_url; - 'coordination/heartbeat_interval': value => $coordination_heartbeat_interval; 'DEFAULT/report_interval': value => $report_interval; 'DEFAULT/service_down_time': value => $service_down_time; 'action_heartbeat/max_missed_heartbeats': value => $max_missed_heartbeats; diff --git a/releasenotes/notes/coordination-6da1ae2202029007.yaml b/releasenotes/notes/coordination-6da1ae2202029007.yaml new file mode 100644 index 0000000..e0b8855 --- /dev/null +++ b/releasenotes/notes/coordination-6da1ae2202029007.yaml @@ -0,0 +1,12 @@ +--- +features: + - | + The new ``mistral::coordination`` class has been added. + +deprecations: + - | + The following parameters have been deprecated in favor of the new + ``mistral::coordination`` class. + + - ``mistral::coordination_backend_url`` + - ``mistral::coordination_heartbeat_interval`` diff --git a/spec/classes/mistral_coordination_spec.rb b/spec/classes/mistral_coordination_spec.rb new file mode 100644 index 0000000..5ce824c --- /dev/null +++ b/spec/classes/mistral_coordination_spec.rb @@ -0,0 +1,42 @@ +require 'spec_helper' + +describe 'mistral::coordination' do + shared_examples 'mistral::coordination' do + context 'with default parameters' do + it { + is_expected.to contain_oslo__coordination('mistral_config').with( + :backend_url => '' + ) + is_expected.to contain_mistral_config('coordination/heartbeat_interval').with_value('') + } + end + + context 'with specified parameters' do + let :params do + { + :backend_url => 'etcd3+http://127.0.0.1:2379', + :heartbeat_interval => 5.0, + } + end + + it { + is_expected.to contain_oslo__coordination('mistral_config').with( + :backend_url => 'etcd3+http://127.0.0.1:2379' + ) + is_expected.to contain_mistral_config('coordination/heartbeat_interval').with_value(5.0) + } + 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 + + it_behaves_like 'mistral::coordination' + end + end +end diff --git a/spec/classes/mistral_init_spec.rb b/spec/classes/mistral_init_spec.rb index a1e57f6..ba1a3d5 100644 --- a/spec/classes/mistral_init_spec.rb +++ b/spec/classes/mistral_init_spec.rb @@ -45,8 +45,6 @@ describe 'mistral' do should contain_mistral_config('oslo_messaging_rabbit/heartbeat_in_pthread').with_value('') should contain_mistral_config('oslo_messaging_rabbit/kombu_reconnect_delay').with(:value => '') should contain_mistral_config('oslo_messaging_rabbit/kombu_failover_strategy').with(:value => '') - should contain_mistral_config('coordination/backend_url').with(:value => '') - should contain_mistral_config('coordination/heartbeat_interval').with(:value => '') should contain_mistral_config('keystone_authtoken/www_authenticate_uri').with( :value => 'http://localhost:5000' )