# 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_designate_api := .Values.pod.mounts.designate_api.designate_api }}
{{- $mounts_designate_api_init := .Values.pod.mounts.designate_api.init_container }}

{{- $serviceAccountName := "designate-api" }}
{{ tuple $envAll "api" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: designate-api
  annotations:
    {{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" }}
  labels:
{{ tuple $envAll "designate" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
spec:
  replicas: {{ .Values.pod.replicas.api }}
  selector:
    matchLabels:
{{ tuple $envAll "designate" "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 "designate" "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.designate_api }}
      priorityClassName: {{ . }}
{{ end }}
{{ with .Values.pod.runtimeClassName.designate_api }}
      runtimeClassName: {{ . }}
{{ end }}
      serviceAccountName: {{ $serviceAccountName }}
{{ dict "envAll" $envAll "application" "designate" | include "helm-toolkit.snippets.kubernetes_pod_security_context" | indent 6 }}
      affinity:
{{ tuple $envAll "designate" "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_designate_api_init | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
      containers:
        - name: designate-api
{{ tuple $envAll "designate_api" | include "helm-toolkit.snippets.image" | indent 10 }}
{{ tuple $envAll $envAll.Values.pod.resources.api | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
{{ dict "envAll" $envAll "application" "designate" "container" "designate_api" | include "helm-toolkit.snippets.kubernetes_container_security_context" | indent 10 }}
          command:
            - /tmp/designate-api.sh
          lifecycle:
            preStop:
              exec:
                command:
                  - /tmp/designate-api.sh
                  - stop
          ports:
            - name: dns-api
              containerPort: {{ tuple "dns" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
          readinessProbe:
            httpGet:
              scheme: {{ tuple "dns" "internal" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_scheme_lookup" | upper }}
              path: /
              port: {{ tuple "dns" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
          volumeMounts:
            - name: designate-bin
              mountPath: /tmp/designate-api.sh
              subPath: designate-api.sh
              readOnly: true
            - name: pod-etc-designate
              mountPath: /etc/designate
            - name: pod-var-cache-designate
              mountPath: /var/cache/designate
            - name: designate-etc
              mountPath: /etc/designate/designate.conf
              subPath: designate.conf
              readOnly: true
            - name: designate-etc
              mountPath: /etc/designate/api-paste.ini
              subPath: api-paste.ini
              readOnly: true
            - name: designate-etc
              mountPath: /etc/designate/policy.yaml
              subPath: policy.yaml
              readOnly: true
            - name: designate-etc
              mountPath: /etc/designate/designate-api-uwsgi.ini
              subPath: designate-api-uwsgi.ini
              readOnly: true
            {{- if .Values.conf.designate.DEFAULT.log_config_append }}
            - name: designate-etc
              mountPath: {{ .Values.conf.designate.DEFAULT.log_config_append }}
              subPath: {{ base .Values.conf.designate.DEFAULT.log_config_append }}
              readOnly: true
            {{- end }}
{{ if $mounts_designate_api.volumeMounts }}{{ toYaml $mounts_designate_api.volumeMounts | indent 12 }}{{ end }}
      volumes:
        - name: pod-etc-designate
          emptyDir: {}
        - name: pod-var-cache-designate
          emptyDir: {}
        - name: designate-bin
          configMap:
            name: designate-bin
            defaultMode: 0555
        - name: designate-etc
          secret:
            secretName: designate-etc
            defaultMode: 0444
{{ if $mounts_designate_api.volumes }}{{ toYaml $mounts_designate_api.volumes | indent 8 }}{{ end }}
{{- end }}
