diff --git a/devstack/lib/heat b/devstack/lib/heat index 2d060fe8..c7d3c14b 100644 --- a/devstack/lib/heat +++ b/devstack/lib/heat @@ -168,7 +168,8 @@ function configure_heat { fi iniset $HEAT_CONF cache enabled "True" - iniset $HEAT_CONF cache backend "dogpile.cache.memory" + iniset $HEAT_CONF cache backend "dogpile.cache.memcached" + iniset $HEAT_CONF cache memcache_servers "mcrouter-memcached-heat:11211" if ! is_service_enabled c-bak; then iniset $HEAT_CONF volumes backups_enabled false @@ -250,6 +251,10 @@ function start_heat { proxy_pass_to_kubernetes /heat-api heat-api heat-wsgi-api proxy_pass_to_kubernetes /heat-api-cfn heat-api-cfn heat-wsgi-api-cfn + + # (re)start memcached to make sure we have a clean memcache. + kubectl rollout restart statefulset/memcached-heat + sleep 10 } # stop_heat() - Stop running processes diff --git a/openstack_operator/heat.py b/openstack_operator/heat.py index 98474a24..a5521000 100644 --- a/openstack_operator/heat.py +++ b/openstack_operator/heat.py @@ -46,6 +46,7 @@ def create_or_resume(name, spec, **_): utils.create_or_update('heat/cronjob-service-clean.yml.j2', name=name, spec=spec) + utils.create_or_update('heat/memcached.yml.j2', spec=spec) # deploy rabbitmq if not utils.ensure_secret("openstack", "heat-rabbitmq"): utils.create_or_update('heat/secret-rabbitmq.yml.j2', diff --git a/openstack_operator/templates/heat/memcached.yml.j2 b/openstack_operator/templates/heat/memcached.yml.j2 new file mode 100644 index 00000000..cebc8e7e --- /dev/null +++ b/openstack_operator/templates/heat/memcached.yml.j2 @@ -0,0 +1,32 @@ +--- +# Copyright 2020 VEXXHOST, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: infrastructure.vexxhost.cloud/v1alpha1 +kind: Memcached +metadata: + name: heat + namespace: openstack + labels: + {{ labels("heat") | indent(4) }} +spec: + megabytes: 128 +{% if 'nodeSelector' in spec %} + nodeSelector: + {{ spec.nodeSelector | to_yaml | indent(4) }} +{% endif %} +{% if 'tolerations' in spec %} + tolerations: + {{ spec.tolerations | to_yaml | indent(4) }} +{% endif %}