diff --git a/defaults/main.yml b/defaults/main.yml index 58c1f453..e3fc213e 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -25,7 +25,10 @@ nova_ceilometer_enabled: "{{ (groups['ceilometer_all'] is defined) and (groups[' # Enable/Disable nova versioned notification nova_versioned_notification_enabled: False -nova_memcached_servers: "{{ memcached_servers }}" +# Caching +nova_cache_servers: "{{ nova_memcached_servers | default(memcached_servers) }}" +nova_cache_backend: "{{ openstack_cache_backend | default('oslo_cache.memcache_pool') }}" +nova_cache_backend_map: "{{ openstack_cache_backend_map | default(_nova_cache_backend_map) }}" ## Verbosity Options debug: False @@ -496,8 +499,7 @@ nova_pip_packages: - "git+{{ nova_git_repo }}@{{ nova_git_install_branch }}#egg=nova" - osprofiler - PyMySQL - - pymemcache - - python-memcached + - "{{ _nova_cache_backend_package }}" - systemd-python # Specific pip packages provided by the user diff --git a/releasenotes/notes/nova_memcached_servers-6c40d3b1714786bf.yaml b/releasenotes/notes/nova_memcached_servers-6c40d3b1714786bf.yaml new file mode 100644 index 00000000..b88d25d8 --- /dev/null +++ b/releasenotes/notes/nova_memcached_servers-6c40d3b1714786bf.yaml @@ -0,0 +1,7 @@ +--- +deprecations: + - | + Variable ``nova_memcached_servers`` has been deprecated and replaced with + ``nova_cache_servers`` that defaults to ``memcached_servers``. For + backpwards compatability ``nova_memcached_servers`` is still respected + but will be removed in future releases. diff --git a/templates/nova.conf.j2 b/templates/nova.conf.j2 index fa0cf680..f97e19fa 100644 --- a/templates/nova.conf.j2 +++ b/templates/nova.conf.j2 @@ -68,8 +68,10 @@ manager_interval = {{ nova_image_cache_manager_interval }} # Cache [cache] enabled = true -backend = oslo_cache.memcache_pool -memcache_servers = {{ nova_memcached_servers }} +backend = {{ nova_cache_backend }} +{% if nova_cache_backend in nova_cache_backend_map['dogpile'] %} +memcache_servers = {{ nova_cache_servers }} +{% endif %} # Cinder @@ -194,13 +196,15 @@ service_token_roles_required = {{ nova_service_token_roles_required | bool }} service_token_roles = {{ nova_service_token_roles | join(',') }} service_type = {{ nova_service_type }} -memcached_servers = {{ memcached_servers }} +{% if nova_cache_backend in nova_cache_backend_map['dogpile'] %} +memcached_servers = {{ nova_cache_servers }} token_cache_time = 300 # if your memcached server is shared, use these settings to avoid cache poisoning memcache_security_strategy = ENCRYPT memcache_secret_key = {{ memcached_encryption_key }} +{% endif %} {% if group_names | intersect(nova_services.keys() | difference('nova-compute') | map('extract', nova_services, 'group') | list) | count > 0 %} [database] diff --git a/vars/main.yml b/vars/main.yml index 459e67fb..0775b353 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -116,3 +116,23 @@ _qemu_default_conf_dict: |- _nova_qemu_conf: "{{ _qemu_default_conf_dict | combine(qemu_conf_dict) }}" _nova_oslomsg_heartbeat_in_pthread: "{{ (nova_services['nova-compute']['group'] in group_names) | ternary(False, True) }}" + +_nova_cache_backend_map: + dogpile: + - oslo_cache.memcache_pool + - dogpile.cache.pymemcache + - dogpile.cache.memcached + - dogpile.cache.bmemcached + mongo: + - oslo_cache.mongo + etcd3gw: + - oslo_cache.etcd3gw + +_nova_cache_backend_package: |- + {% set oslo = namespace(backend='dogpile') %} + {% for key, value in _nova_cache_backend_map.items() %} + {% if nova_cache_backend in value %} + {% set oslo.backend = key %} + {%- endif %} + {%- endfor %} + oslo.cache[{{ oslo.backend }}]