Add support for Redis management store driver

Change-Id: I29b7a7e16ea1f8a2b5a80bb44cdd8e902a3b3350
This commit is contained in:
Takashi Kajinami 2021-11-09 20:23:44 +09:00
parent f88fa279bb
commit 484d14fb2c
3 changed files with 97 additions and 0 deletions

@ -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;
}
}

@ -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.

@ -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('<SERVICE DEFAULT>')
is_expected.to contain_zaqar_config('drivers:management_store:redis/reconnect_sleep').with_value('<SERVICE DEFAULT>')
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