Support pylibmc and memcache cache backend

Install relevant package for pylibmc and
memcache backend.

Depends-on: I4e965b6f5449a7104677f93b00af77ae21cba94b

Change-Id: I2e6a705971761754c59b4069b5dfdfd1dfd7f00f
This commit is contained in:
dmburmistrov 2016-05-18 18:49:52 +03:00
parent 0667a56a9a
commit 79405c9a37
3 changed files with 73 additions and 6 deletions

View File

@ -129,6 +129,8 @@ define oslo::cache(
$memcache_pool_connection_get_timeout = $::os_service_default,
){
include ::oslo::params
if !is_service_default($backend_argument) {
$backend_argument_orig = join(any2array($backend_argument), ',')
} else {
@ -147,6 +149,20 @@ define oslo::cache(
$proxies_orig = $proxies
}
if ($backend =~ /pylibmc/ ) {
ensure_packages('python-pylibmc', {
ensure => present,
name => $::oslo::params::pylibmc_package_name,
tag => 'openstack',
})
} elsif ($backend =~ /\.memcache/ ) {
ensure_packages('python-memcache', {
ensure => present,
name => $::oslo::params::python_memcache_package_name,
tag => ['openstack', 'keystone-package'],
})
}
$cache_options = {
'cache/config_prefix' => { value => $config_prefix },
'cache/expiration_time' => { value => $expiration_time },

View File

@ -4,14 +4,18 @@ class oslo::params {
case $::osfamily {
'RedHat': {
$sqlite_package_name = undef
$pymysql_package_name = undef
$pymongo_package_name = 'python-pymongo'
$sqlite_package_name = undef
$pymysql_package_name = undef
$pymongo_package_name = 'python-pymongo'
$pylibmc_package_name = 'python-pylibmc'
$python_memcache_package_name = 'python-memcached'
}
'Debian': {
$sqlite_package_name = 'python-pysqlite2'
$pymysql_package_name = 'python-pymysql'
$pymongo_package_name = 'python-pymongo'
$sqlite_package_name = 'python-pysqlite2'
$pymysql_package_name = 'python-pymysql'
$pymongo_package_name = 'python-pymongo'
$pylibmc_package_name = 'python-pylibmc'
$python_memcache_package_name = 'python-memcache'
}
default: {
fail("Unsupported osfamily: ${::osfamily} operatingsystem")

View File

@ -60,6 +60,40 @@ describe 'oslo::cache' do
end
end
context 'with pylibmc backend' do
let :params do
{
:backend => 'dogpile.cache.pylibmc',
}
end
it 'configures cache backend' do
is_expected.to contain_keystone_config('cache/backend').with_value('dogpile.cache.pylibmc')
is_expected.to contain_package('python-pylibmc').with(
:ensure => 'present',
:name => platform_params[:pylibmc_package_name],
:tag => 'openstack',
)
end
end
context 'with memcache backend' do
let :params do
{
:backend => 'dogpile.cache.memcache',
}
end
it 'configures cache backend' do
is_expected.to contain_keystone_config('cache/backend').with_value('dogpile.cache.memcache')
is_expected.to contain_package('python-memcache').with(
:ensure => 'present',
:name => platform_params[:python_memcache_package_name],
:tag => ['openstack', 'keystone-package'],
)
end
end
context 'with string in list parameters' do
let :params do
{
@ -84,6 +118,19 @@ describe 'oslo::cache' do
let (:facts) do
facts.merge!(OSDefaults.get_facts())
end
let(:platform_params) do
platform_params = { :pylibmc_package_name => 'python-pylibmc' }
case facts[:osfamily]
when 'Debian'
platform_params[:python_memcache_package_name] = 'python-memcache'
when 'RedHat'
platform_params[:python_memcache_package_name] = 'python-memcached'
end
platform_params
end
it_behaves_like 'oslo-cache'
end
end