From 646eeea9d518a4a86e19b3266d95f7bc0423e61e Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Tue, 2 Apr 2024 23:36:36 +0900 Subject: [PATCH] Test redis (sentinel) cache backend oslo.cache 3.7.0 introduced new options to use redis or redis sentinel as backend. To test the functionality to configure this backend, switch the cache backend in scenario001(Redis) and scenario002(Sentinel). The switch is made only in CentOS because Caracal (or master) packages are not available for Ubuntu, but may be later made in Ubuntu as well once UCA Caracal is released. Change-Id: Ieb681f5bbbf28e1963ab346c17e07265769da4e6 --- README.md | 2 ++ fixtures/scenario001.pp | 7 +++++-- fixtures/scenario002.pp | 9 ++++++--- manifests/ceilometer.pp | 6 ++++++ manifests/config.pp | 18 ++++++++++++++++++ manifests/heat.pp | 6 +++++- manifests/keystone.pp | 6 +++++- manifests/neutron.pp | 6 +++++- manifests/nova.pp | 6 +++++- manifests/trove.pp | 6 +++++- manifests/watcher.pp | 6 +++++- manifests/zaqar.pp | 6 +++++- 12 files changed, 72 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 85fd463b9..0f50814ec 100644 --- a/README.md +++ b/README.md @@ -77,11 +77,13 @@ scenario](#all-in-one). | taas | | | | X | | | | bgpvpn-api | | | | X | | | | bgp-dr | | | | X | | | +| memcached | X | X | X | X | X | X | | redis | X | X | X | X | X | | | l2gw | | | | X | | | | octavia | | | | X | X | | | om rpc | rabbit | rabbit | rabbit | rabbit | rabbit | rabbit | | om notify | rabbit | rabbit | rabbit | rabbit | rabbit | rabbit | +| oslo.cache | redis | sentinel | memcache | memcache | memcache | memcache | When the Jenkins slave is created, the *run_tests.sh* script will be executed. This script will execute *install_modules.sh* that prepare /etc/puppet/modules diff --git a/fixtures/scenario001.pp b/fixtures/scenario001.pp index 68e653e66..73aa38a94 100644 --- a/fixtures/scenario001.pp +++ b/fixtures/scenario001.pp @@ -23,9 +23,11 @@ if $facts['os']['name'] == 'Ubuntu' { case $facts['os']['family'] { 'Debian': { $ipv6 = false + $cache_backend = 'memcached' } 'RedHat': { $ipv6 = true + $cache_backend = 'redis' } default: { fail("Unsupported osfamily (${facts['os']['family']})") @@ -39,8 +41,9 @@ $notification_topics = ['notifications'] include openstack_integration class { 'openstack_integration::config': - ssl => $ssl, - ipv6 => $ipv6, + ssl => $ssl, + ipv6 => $ipv6, + cache_backend => $cache_backend, } if $ssl { include openstack_integration::cacert diff --git a/fixtures/scenario002.pp b/fixtures/scenario002.pp index 55c7650c7..6f5da52eb 100644 --- a/fixtures/scenario002.pp +++ b/fixtures/scenario002.pp @@ -23,9 +23,11 @@ if $facts['os']['name'] == 'Ubuntu' { case $facts['os']['family'] { 'Debian': { $ipv6 = false + $cache_backend = 'memcached' } 'RedHat': { - $ipv6 = true + $ipv6 = false + $cache_backend = 'redis_sentinel' } default: { fail("Unsupported osfamily (${facts['os']['family']})") @@ -34,8 +36,9 @@ case $facts['os']['family'] { include openstack_integration class { 'openstack_integration::config': - ssl => $ssl, - ipv6 => $ipv6, + ssl => $ssl, + ipv6 => $ipv6, + cache_backend => $cache_backend, } if $ssl { include openstack_integration::cacert diff --git a/manifests/ceilometer.pp b/manifests/ceilometer.pp index a2dbea530..ba971bb27 100644 --- a/manifests/ceilometer.pp +++ b/manifests/ceilometer.pp @@ -30,7 +30,13 @@ class openstack_integration::ceilometer ( debug => true, } class { 'ceilometer::cache': + backend => $::openstack_integration::config::cache_driver, + enabled => true, memcache_servers => $::openstack_integration::config::memcached_servers, + redis_server => $::openstack_integration::config::redis_server, + redis_password => 'a_big_secret', + redis_sentinels => $::openstack_integration::config::redis_sentinel_server, + tls_enabled => $::openstack_integration::config::cache_tls_enabled, } class { 'ceilometer': telemetry_secret => 'secrete', diff --git a/manifests/config.pp b/manifests/config.pp index 88f70ac30..6ca5291d9 100644 --- a/manifests/config.pp +++ b/manifests/config.pp @@ -16,11 +16,16 @@ # (optional) The oslo.messaging backend to configure for notify. # Defaults to 'rabbit'. # +# [*cache_backend*] +# (optional) The oslo.cache backend +# Defaults to 'memcached'. +# class openstack_integration::config ( $ssl = false, $ipv6 = false, $rpc_backend = 'rabbit', $notify_backend = 'rabbit', + $cache_backend = 'memcached', ) { include openstack_integration::params @@ -71,6 +76,19 @@ class openstack_integration::config ( $keystone_auth_uri = "${base_url}:5000" $keystone_admin_uri = "${base_url}:5000" + $redis_server = "${ip_for_url}:6379" + $redis_sentinel_server = "${ip_for_url}:26379" + $cache_driver = $cache_backend ? { + 'redis' => 'dogpile.cache.redis', + 'redis_sentinel' => 'dogpile.cache.redis_sentinel', + default => 'dogpile.cache.pymemcache' + } + $cache_tls_enabled = $cache_backend ? { + 'redis' => $ssl, + 'redis_sentinel' => $ssl, + default => false, + } + $tooz_url = os_url({ 'scheme' => 'redis', 'password' => 'a_big_secret', diff --git a/manifests/heat.pp b/manifests/heat.pp index 952036d3a..42d54d2cf 100644 --- a/manifests/heat.pp +++ b/manifests/heat.pp @@ -47,9 +47,13 @@ class openstack_integration::heat ( debug => true, } class { 'heat::cache': - backend => 'dogpile.cache.pymemcache', + backend => $::openstack_integration::config::cache_driver, enabled => true, memcache_servers => $::openstack_integration::config::memcache_servers, + redis_server => $::openstack_integration::config::redis_server, + redis_password => 'a_big_secret', + redis_sentinels => $::openstack_integration::config::redis_sentinel_server, + tls_enabled => $::openstack_integration::config::cache_tls_enabled, } class { 'heat::db': database_connection => os_database_connection({ diff --git a/manifests/keystone.pp b/manifests/keystone.pp index d02099f63..563d74c55 100644 --- a/manifests/keystone.pp +++ b/manifests/keystone.pp @@ -63,9 +63,13 @@ class openstack_integration::keystone ( debug => true, } class { 'keystone::cache': - backend => 'dogpile.cache.pymemcache', + backend => $::openstack_integration::config::cache_driver, enabled => true, memcache_servers => $::openstack_integration::config::memcache_servers, + redis_server => $::openstack_integration::config::redis_server, + redis_password => 'a_big_secret', + redis_sentinels => $::openstack_integration::config::redis_sentinel_server, + tls_enabled => $::openstack_integration::config::cache_tls_enabled, } class { 'keystone': enabled => true, diff --git a/manifests/neutron.pp b/manifests/neutron.pp index 29d626920..da271faca 100644 --- a/manifests/neutron.pp +++ b/manifests/neutron.pp @@ -260,9 +260,13 @@ class openstack_integration::neutron ( } class { 'neutron::cache': - backend => 'dogpile.cache.pymemcache', + backend => $::openstack_integration::config::cache_driver, enabled => true, memcache_servers => $::openstack_integration::config::memcache_servers, + redis_server => $::openstack_integration::config::redis_server, + redis_password => 'a_big_secret', + redis_sentinels => $::openstack_integration::config::redis_sentinel_server, + tls_enabled => $::openstack_integration::config::cache_tls_enabled, } class { 'neutron::db': database_connection => os_database_connection({ diff --git a/manifests/nova.pp b/manifests/nova.pp index fd5de0466..3fd4e120e 100644 --- a/manifests/nova.pp +++ b/manifests/nova.pp @@ -163,9 +163,13 @@ class openstack_integration::nova ( service_name => 'httpd', } class { 'nova::cache': - backend => 'dogpile.cache.pymemcache', + backend => $::openstack_integration::config::cache_driver, enabled => true, memcache_servers => $::openstack_integration::config::memcache_servers, + redis_server => $::openstack_integration::config::redis_server, + redis_password => 'a_big_secret', + redis_sentinels => $::openstack_integration::config::redis_sentinel_server, + tls_enabled => $::openstack_integration::config::cache_tls_enabled, } class { 'nova::db::sync': extra_params => '--debug', diff --git a/manifests/trove.pp b/manifests/trove.pp index a5be83101..6b11af167 100644 --- a/manifests/trove.pp +++ b/manifests/trove.pp @@ -20,9 +20,13 @@ class openstack_integration::trove { debug => true, } class { 'trove::cache': - backend => 'dogpile.cache.pymemcache', + backend => $::openstack_integration::config::cache_driver, enabled => true, memcache_servers => $::openstack_integration::config::memcache_servers, + redis_server => $::openstack_integration::config::redis_server, + redis_password => 'a_big_secret', + redis_sentinels => $::openstack_integration::config::redis_sentinel_server, + tls_enabled => $::openstack_integration::config::cache_tls_enabled, } class { 'trove::db': database_connection => os_database_connection({ diff --git a/manifests/watcher.pp b/manifests/watcher.pp index 1a6a2b3c5..9881c1360 100644 --- a/manifests/watcher.pp +++ b/manifests/watcher.pp @@ -22,9 +22,13 @@ class openstack_integration::watcher { host => $::openstack_integration::config::host, } class { 'watcher::cache': - backend => 'dogpile.cache.pymemcache', + backend => $::openstack_integration::config::cache_driver, enabled => true, memcache_servers => $::openstack_integration::config::memcache_servers, + redis_server => $::openstack_integration::config::redis_server, + redis_password => 'a_big_secret', + redis_sentinels => $::openstack_integration::config::redis_sentinel_server, + tls_enabled => $::openstack_integration::config::cache_tls_enabled, } class { 'watcher::db': database_connection => os_database_connection({ diff --git a/manifests/zaqar.pp b/manifests/zaqar.pp index 7c6b76821..34176d874 100644 --- a/manifests/zaqar.pp +++ b/manifests/zaqar.pp @@ -35,9 +35,13 @@ class openstack_integration::zaqar { password => 'a_big_secret' } class { 'zaqar::cache': - backend => 'dogpile.cache.pymemcache', + backend => $::openstack_integration::config::cache_driver, enabled => true, memcache_servers => $::openstack_integration::config::memcache_servers, + redis_server => $::openstack_integration::config::redis_server, + redis_password => 'a_big_secret', + redis_sentinels => $::openstack_integration::config::redis_sentinel_server, + tls_enabled => $::openstack_integration::config::cache_tls_enabled, } class { 'zaqar::management::sqlalchemy': uri => os_database_connection({