{{/*
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.
*/}}

{{- if .Values.manifests.deployment_api }}
{{- $envAll := . }}

{{- $mounts_magnum_api := .Values.pod.mounts.magnum_api.magnum_api }}
{{- $mounts_magnum_api_init := .Values.pod.mounts.magnum_api.init_container }}

{{- $serviceAccountName := "magnum-api" }}
{{ tuple $envAll "api" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: magnum-api
  annotations:
    {{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" }}
  labels:
{{ tuple $envAll "magnum" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
spec:
  replicas: {{ .Values.pod.replicas.api }}
  selector:
    matchLabels:
{{ tuple $envAll "magnum" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 6 }}
{{ tuple $envAll | include "helm-toolkit.snippets.kubernetes_upgrades_deployment" | indent 2 }}
  template:
    metadata:
      labels:
{{ tuple $envAll "magnum" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 8 }}
      annotations:
{{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" | indent 8 }}
        configmap-bin-hash: {{ tuple "configmap-bin.yaml" . | include "helm-toolkit.utils.hash" }}
        configmap-etc-hash: {{ tuple "configmap-etc.yaml" . | include "helm-toolkit.utils.hash" }}
    spec:
{{ with .Values.pod.priorityClassName.magnum_api }}
      priorityClassName: {{ . }}
{{ end }}
{{ with .Values.pod.runtimeClassName.magnum_api }}
      runtimeClassName: {{ . }}
{{ end }}
      serviceAccountName: {{ $serviceAccountName }}
      affinity:
{{ tuple $envAll "magnum" "api" | include "helm-toolkit.snippets.kubernetes_pod_anti_affinity" | indent 8 }}
      nodeSelector:
        {{ .Values.labels.api.node_selector_key }}: {{ .Values.labels.api.node_selector_value }}
      terminationGracePeriodSeconds: {{ .Values.pod.lifecycle.termination_grace_period.api.timeout | default "30" }}
      initContainers:
{{ tuple $envAll "api" $mounts_magnum_api_init | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
      containers:
        - name: magnum-api
{{ tuple $envAll "magnum_api" | include "helm-toolkit.snippets.image" | indent 10 }}
{{ tuple $envAll $envAll.Values.pod.resources.api | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
          securityContext:
            runAsUser: {{ .Values.pod.user.magnum.uid }}
          command:
            - /tmp/magnum-api.sh
            - start
          lifecycle:
            preStop:
              exec:
                command:
                  - /tmp/magnum-api.sh
                  - stop
          ports:
            - name: m-api
              containerPort: {{ tuple "container-infra" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
          readinessProbe:
            httpGet:
              scheme: HTTP
              path: /
              port: {{ tuple "container-infra" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
            initialDelaySeconds: 5
            periodSeconds: 10
          volumeMounts:
            - name: pod-tmp
              mountPath: /tmp
            - name: magnum-bin
              mountPath: /tmp/magnum-api.sh
              subPath: magnum-api.sh
              readOnly: true
            - name: pod-etc-magnum
              mountPath: /etc/magnum
            - name: pod-var-cache-magnum
              mountPath: /var/cache/magnum
            - name: magnum-etc
              mountPath: /etc/magnum/magnum.conf
              subPath: magnum.conf
              readOnly: true
            - name: magnum-etc
              mountPath: /etc/magnum/magnum-api-uwsgi.ini
              subPath: magnum-api-uwsgi.ini
              readOnly: true
            {{- if .Values.conf.magnum.DEFAULT.log_config_append }}
            - name: magnum-etc
              mountPath: {{ .Values.conf.magnum.DEFAULT.log_config_append }}
              subPath: {{ base .Values.conf.magnum.DEFAULT.log_config_append }}
              readOnly: true
            {{- end }}
            - name: magnum-etc
              mountPath: /etc/magnum/api-paste.ini
              subPath: api-paste.ini
              readOnly: true
            - name: magnum-etc
              mountPath: /etc/magnum/policy.yaml
              subPath: policy.yaml
              readOnly: true
            - name: magnum-lock-path
              mountPath: {{ .Values.conf.magnum.oslo_concurrency.lock_path }}
{{ if $mounts_magnum_api.volumeMounts }}{{ toYaml $mounts_magnum_api.volumeMounts | indent 12 }}{{ end }}
      volumes:
        - name: pod-tmp
          emptyDir: {}
        - name: pod-etc-magnum
          emptyDir: {}
        - name: pod-var-cache-magnum
          emptyDir: {}
        - name: magnum-bin
          configMap:
            name: magnum-bin
            defaultMode: 0555
        - name: magnum-etc
          secret:
            secretName: magnum-etc
            defaultMode: 0444
        - name: magnum-lock-path
          emptyDir: {}
{{ if $mounts_magnum_api.volumes }}{{ toYaml $mounts_magnum_api.volumes | indent 8 }}{{ end }}
{{- end }}
