From e87e2bd737467d4d1c1225f52cb7fad5a4d2cd5d Mon Sep 17 00:00:00 2001 From: Jean-Philippe Evrard Date: Mon, 5 Feb 2018 16:56:19 +0000 Subject: [PATCH] Use the good configuration directive for memcache servers Under Pike, both the backend argument and memcache_servers work. They both end-up with connections to the backend of memcache. The latter doesn't have the bug when multiple servers are given, though. So let's use this one exclusively. This massive template change is for backwards compatibility: If a deployer has set on of those keystone variables, the servers used won't change. Change-Id: I7e29aa0a9055b737dd4cf171c40e2105e4b32e94 Related-Bug: #1743036 --- defaults/main.yml | 5 ----- templates/keystone.conf.j2 | 20 ++++++++++++++++++-- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/defaults/main.yml b/defaults/main.yml index 940dfba03..98952a8a4 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -88,11 +88,6 @@ keystone_resource_driver: sql keystone_bind_address: 0.0.0.0 -## Memcached servers used within keystone. -# String or Comma separated list of servers. -keystone_memcached_servers: 127.0.0.1 -keystone_memcached_max_compare_and_set_retry: 16 - ## DB info keystone_galera_user: keystone keystone_galera_database: keystone diff --git a/templates/keystone.conf.j2 b/templates/keystone.conf.j2 index 490617c7d..fbb871e24 100644 --- a/templates/keystone.conf.j2 +++ b/templates/keystone.conf.j2 @@ -32,16 +32,32 @@ driver = messagingv2 transport_url = rabbit://{% for host in keystone_rabbitmq_telemetry_servers.split(',') %}{{ keystone_rabbitmq_telemetry_userid }}:{{ keystone_rabbitmq_telemetry_password }}@{{ host }}:{{ keystone_rabbitmq_telemetry_port }}{% if not loop.last %},{% else %}/{{ keystone_rabbitmq_telemetry_vhost }}{% endif %}{% endfor %} {% endif %} +{% set _memcached_servers = '' %} {% if keystone_cache_backend_argument is defined %} +{% set _memcached_servers_cleaned = keystone_cache_backend_argument | replace('url:','') %} +{% set _memcached_servers_listsrc = _memcached_servers_cleaned.split(',') %} +{% set _memcached_servers_listdest = [] %} +{% for _server in _memcached_servers_listsrc %} +{% if ":" not in _server %} +{% set _server = _server ~ ':' ~ memcached_port %} +{% endif %} +{% set _ = _memcached_servers_listdest.append(_server) %} +{% endfor %} +{% set _memcached_servers = _memcached_servers_listdest | join(',') %} +{% elif keystone_memcached_servers is defined %} +{% set _memcached_servers = keystone_memcached_servers %} +{% elif memcached_servers is defined %} +{% set _memcached_servers = memcached_servers %} +{% endif %} +{% if _memcached_servers | length > 0 %} [cache] backend = dogpile.cache.memcached -backend_argument = {{ keystone_cache_backend_argument }} +memcache_servers = {{ _memcached_servers }} config_prefix = cache.keystone distributed_lock = True enabled = true {% endif %} - [revoke] caching = true driver = {{ keystone_revocation_driver }}