diff --git a/manifests/management/redis.pp b/manifests/management/redis.pp new file mode 100644 index 0000000..5fcb994 --- /dev/null +++ b/manifests/management/redis.pp @@ -0,0 +1,30 @@ +# == class: zaqar::management::redis +# +# [*uri*] +# Redis connection URI. Required. +# +# [*max_reconnect_attempts*] +# Maximum number of times to retry an operation that failed due to a redis +# node failover. +# Defaults to $::os_service_default +# +# [*reconnect_sleep*] +# Base sleep interval between attempts to reconnect after a redis node +# failover. +# Defaults to $::os_service_default +# +class zaqar::management::redis( + $uri, + $max_reconnect_attempts = $::os_service_default, + $reconnect_sleep = $::os_service_default, +) { + + include zaqar::deps + + zaqar_config { + 'drivers:management_store:redis/uri': value => $uri, secret => true; + 'drivers:management_store:redis/max_reconnect_attempts': value => $max_reconnect_attempts; + 'drivers:management_store:redis/reconnect_sleep': value => $reconnect_sleep; + } + +} diff --git a/releasenotes/notes/redis-management-store-a06031ff32e5cd12.yaml b/releasenotes/notes/redis-management-store-a06031ff32e5cd12.yaml new file mode 100644 index 0000000..29d6c3b --- /dev/null +++ b/releasenotes/notes/redis-management-store-a06031ff32e5cd12.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + The new ``zaqar::management::redis`` class has been added. This class can + be used to manage parameters to use the redis management store driver. diff --git a/spec/classes/zaqar_management_redis_spec.rb b/spec/classes/zaqar_management_redis_spec.rb new file mode 100644 index 0000000..09a6a92 --- /dev/null +++ b/spec/classes/zaqar_management_redis_spec.rb @@ -0,0 +1,62 @@ +require 'spec_helper' + +describe 'zaqar::management::redis' do + + shared_examples_for 'zaqar::management::redis' do + let :pre_condition do + "class { 'zaqar::keystone::authtoken': + password =>'foo', + } + class { 'zaqar': + management_store =>'redis', + }" + + end + let :req_params do + { + :uri => 'redis://127.0.0.1:6379', + } + end + + describe 'with only required params' do + let :params do + req_params + end + + it 'should config redis management driver' do + is_expected.to contain_zaqar_config('drivers/management_store').with_value('redis') + is_expected.to contain_zaqar_config('drivers:management_store:redis/uri').with_value('redis://127.0.0.1:6379') + is_expected.to contain_zaqar_config('drivers:management_store:redis/max_reconnect_attempts').with_value('') + is_expected.to contain_zaqar_config('drivers:management_store:redis/reconnect_sleep').with_value('') + end + + end + + describe 'with custom values' do + let :params do + req_params.merge!({ + :max_reconnect_attempts => 10, + :reconnect_sleep => 1, + }) + end + + it 'configures custom values' do + is_expected.to contain_zaqar_config('drivers:management_store:redis/max_reconnect_attempts').with_value(10) + is_expected.to contain_zaqar_config('drivers:management_store:redis/reconnect_sleep').with_value(1) + end + 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_configures 'zaqar::management::redis' + end + end + +end