From a1dec55c25cd64670796996fb0d78be0f187b53c Mon Sep 17 00:00:00 2001 From: okozachenko Date: Thu, 20 Aug 2020 19:28:16 +0300 Subject: [PATCH] Rearrange magnum templates Change-Id: I9c5d0899e056fe45773389981fd619ced3e16c26 --- openstack_operator/magnum.py | 15 ++- .../magnum/{ => api}/daemonset.yml.j2 | 32 ++----- .../templates/magnum/{ => api}/service.yml.j2 | 2 +- .../magnum/conductor/daemonset.yml.j2 | 91 +++++++++++++++++++ openstack_operator/tests/unit/test_magnum.py | 13 ++- 5 files changed, 117 insertions(+), 36 deletions(-) rename openstack_operator/templates/magnum/{ => api}/daemonset.yml.j2 (74%) rename openstack_operator/templates/magnum/{ => api}/service.yml.j2 (93%) create mode 100644 openstack_operator/templates/magnum/conductor/daemonset.yml.j2 diff --git a/openstack_operator/magnum.py b/openstack_operator/magnum.py index aa00dd8e..e4b38609 100644 --- a/openstack_operator/magnum.py +++ b/openstack_operator/magnum.py @@ -41,16 +41,15 @@ def create_or_resume(name, spec, **_): password=utils.generate_password()) utils.create_or_update('magnum/rabbitmq.yml.j2', spec=spec) - # deploy magnum config_hash = utils.generate_hash(spec) - for component in ("api", "conductor"): - utils.create_or_update('magnum/daemonset.yml.j2', - name=name, spec=spec, - component=component, - config_hash=config_hash) + # deploy magnum api + utils.create_or_update('magnum/api/daemonset.yml.j2', spec=spec, + config_hash=config_hash) + utils.create_or_update('magnum/api/service.yml.j2') - utils.create_or_update('magnum/service.yml.j2', - name=name) + # deploy magnum conductor + utils.create_or_update('magnum/conductor/daemonset.yml.j2', + spec=spec, config_hash=config_hash) url = None if "ingress" in spec: diff --git a/openstack_operator/templates/magnum/daemonset.yml.j2 b/openstack_operator/templates/magnum/api/daemonset.yml.j2 similarity index 74% rename from openstack_operator/templates/magnum/daemonset.yml.j2 rename to openstack_operator/templates/magnum/api/daemonset.yml.j2 index 184dc3f4..51c76e02 100644 --- a/openstack_operator/templates/magnum/daemonset.yml.j2 +++ b/openstack_operator/templates/magnum/api/daemonset.yml.j2 @@ -16,10 +16,10 @@ apiVersion: apps/v1 kind: DaemonSet metadata: - name: magnum-{{ component }} + name: magnum-api namespace: openstack labels: - {{ labels("magnum", name, component) | indent(4) }} + {{ labels("magnum", component="api") | indent(4) }} spec: updateStrategy: rollingUpdate: @@ -27,30 +27,18 @@ spec: type: RollingUpdate selector: matchLabels: - {{ labels("magnum", name, component) | indent(6) }} + {{ labels("magnum", component="api") | indent(6) }} template: metadata: labels: - {{ labels("magnum", name, component) | indent(8) }} + {{ labels("magnum", component="api") | indent(8) }} annotations: checksum/config: "{{ config_hash }}" spec: automountServiceAccountToken: false - {% if 'conductor' in component %} - initContainers: - - name: db-sync - image: vexxhost/magnum-{{ component }}:latest - imagePullPolicy: Always - command: - - magnum-db-manage - - upgrade - volumeMounts: - - mountPath: /etc/magnum - name: config - {% endif %} containers: - - name: magnum-{{ component }} - image: vexxhost/magnum-{{ component }}:latest + - name: magnum-api + image: vexxhost/magnum-api:latest imagePullPolicy: Always {% if env is defined and env|length %} env: @@ -63,22 +51,20 @@ spec: value: "{{ v.value }}" {% endfor %} {% endif %} - {% if 'api' in component %} ports: - - name: magnum-{{ component }} + - name: magnum-api protocol: TCP containerPort: 9511 livenessProbe: tcpSocket: - port: magnum-{{ component }} + port: magnum-api readinessProbe: tcpSocket: - port: magnum-{{ component }} + port: magnum-api lifecycle: preStop: exec: command: ["/bin/sleep", "5"] - {% endif %} securityContext: runAsUser: 65534 runAsGroup: 65534 diff --git a/openstack_operator/templates/magnum/service.yml.j2 b/openstack_operator/templates/magnum/api/service.yml.j2 similarity index 93% rename from openstack_operator/templates/magnum/service.yml.j2 rename to openstack_operator/templates/magnum/api/service.yml.j2 index 458b16ee..79ba1a76 100644 --- a/openstack_operator/templates/magnum/service.yml.j2 +++ b/openstack_operator/templates/magnum/api/service.yml.j2 @@ -25,4 +25,4 @@ spec: port: 80 targetPort: magnum-api selector: - {{ labels("magnum", name, "api") | indent(4) }} + {{ labels("magnum", component="api") | indent(4) }} diff --git a/openstack_operator/templates/magnum/conductor/daemonset.yml.j2 b/openstack_operator/templates/magnum/conductor/daemonset.yml.j2 new file mode 100644 index 00000000..53704f77 --- /dev/null +++ b/openstack_operator/templates/magnum/conductor/daemonset.yml.j2 @@ -0,0 +1,91 @@ +--- +# 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: apps/v1 +kind: DaemonSet +metadata: + name: magnum-conductor + namespace: openstack + labels: + {{ labels("magnum", component="conductor") | indent(4) }} +spec: + updateStrategy: + rollingUpdate: + maxUnavailable: 1 + type: RollingUpdate + selector: + matchLabels: + {{ labels("magnum", component="conductor") | indent(6) }} + template: + metadata: + labels: + {{ labels("magnum", component="conductor") | indent(8) }} + annotations: + checksum/config: "{{ config_hash }}" + spec: + automountServiceAccountToken: false + initContainers: + - name: db-sync + image: vexxhost/magnum-conductor:latest + imagePullPolicy: Always + command: + - magnum-db-manage + - upgrade + volumeMounts: + - mountPath: /etc/magnum + name: config + containers: + - name: magnum-conductor + image: vexxhost/magnum-conductor:latest + imagePullPolicy: Always + {% if env is defined and env|length %} + env: + {% if 'sentryDSN' in spec %} + - name: SENTRY_DSN + value: {{ spec.sentryDSN }} + {% endif %} + {% for v in env %} + - name: "{{ v.name }}" + value: "{{ v.value }}" + {% endfor %} + {% endif %} + securityContext: + runAsUser: 65534 + runAsGroup: 65534 + volumeMounts: + - mountPath: /etc/magnum + name: config + - name: uwsgi-config + mountPath: /etc/uwsgi + volumes: + - name: config + secret: + secretName: magnum-config + - name: uwsgi-config + configMap: + defaultMode: 420 + name: uwsgi-default +{% if 'nodeSelector' in spec %} + nodeSelector: + {{ spec.nodeSelector | to_yaml | indent(8) }} +{% endif %} +{% if 'tolerations' in spec %} + tolerations: + {{ spec.tolerations | to_yaml | indent(8) }} +{% endif %} +{% if 'hostAliases' in spec %} + hostAliases: + {{ spec.hostAliases | to_yaml | indent(8) }} +{% endif %} diff --git a/openstack_operator/tests/unit/test_magnum.py b/openstack_operator/tests/unit/test_magnum.py index a3743848..20619c26 100644 --- a/openstack_operator/tests/unit/test_magnum.py +++ b/openstack_operator/tests/unit/test_magnum.py @@ -24,14 +24,19 @@ class MagnumAPIDaemonsetTestCase(base.DaemonSetTestCase): """Basic tests for the API Daemonset.""" RELEASE_TYPE = 'magnum' - TEMPLATE_FILE = 'magnum/daemonset.yml.j2' - TEMPLATE_PARAMS = {'component': 'api'} + TEMPLATE_FILE = 'magnum/api/daemonset.yml.j2' class MagnumConductorDaemonsetTestCase(base.DaemonSetTestCase): """Basic tests for the Conductor Daemonset.""" RELEASE_TYPE = 'magnum' - TEMPLATE_FILE = 'magnum/daemonset.yml.j2' - TEMPLATE_PARAMS = {'component': 'conductor'} + TEMPLATE_FILE = 'magnum/conductor/daemonset.yml.j2' PORT_EXPOSED = False + + +class MagnumAPIServiceTestCase(base.ServiceTestCase): + """Basic tests for the Service.""" + + RELEASE_TYPE = 'magnum' + TEMPLATE_FILE = 'magnum/api/service.yml.j2'