{{/*
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_cfn }}
{{- $envAll := . }}

{{- $mounts_heat_cfn := .Values.pod.mounts.heat_cfn.heat_cfn }}
{{- $mounts_heat_cfn_init := .Values.pod.mounts.heat_cfn.init_container }}

{{- $serviceAccountName := "heat-cfn" }}
{{ tuple $envAll "cfn" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: heat-cfn
  annotations:
    {{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" }}
  labels:
{{ tuple $envAll "heat" "cfn" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
spec:
  replicas: {{ .Values.pod.replicas.cfn }}
  selector:
    matchLabels:
{{ tuple $envAll "heat" "cfn" | 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 "heat" "cfn" | 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" }}
{{ dict "envAll" $envAll "podName" "heat-cfn" "containerNames" (list "heat-cfn" "init" ) | include "helm-toolkit.snippets.kubernetes_mandatory_access_control_annotation" | indent 8 }}
    spec:
{{ with .Values.pod.priorityClassName.heat_cfn }}
      priorityClassName: {{ . }}
{{ end }}
{{ with .Values.pod.runtimeClassName.heat_cfn }}
      runtimeClassName: {{ . }}
{{ end }}
      serviceAccountName: {{ $serviceAccountName }}
{{ dict "envAll" $envAll "application" "heat" | include "helm-toolkit.snippets.kubernetes_pod_security_context" | indent 6 }}
      affinity:
{{ tuple $envAll "heat" "cfn" | include "helm-toolkit.snippets.kubernetes_pod_anti_affinity" | indent 8 }}
{{ if $envAll.Values.pod.tolerations.heat.enabled }}
{{ tuple $envAll "heat" | include "helm-toolkit.snippets.kubernetes_tolerations" | indent 6 }}
{{ end }}
      nodeSelector:
        {{ .Values.labels.cfn.node_selector_key }}: {{ .Values.labels.cfn.node_selector_value }}
      terminationGracePeriodSeconds: {{ .Values.pod.lifecycle.termination_grace_period.cfn.timeout | default "30" }}
      initContainers:
{{ tuple $envAll "cfn" $mounts_heat_cfn_init | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
      containers:
        - name: heat-cfn
{{ tuple $envAll "heat_cfn" | include "helm-toolkit.snippets.image" | indent 10 }}
{{ tuple $envAll $envAll.Values.pod.resources.cfn | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
{{ dict "envAll" $envAll "application" "heat" "container" "heat_cfn" | include "helm-toolkit.snippets.kubernetes_container_security_context" | indent 10 }}
{{- if or .Values.manifests.certificates .Values.tls.identity }}
          env:
            - name: REQUESTS_CA_BUNDLE
              value: "/etc/heat/certs/ca.crt"
{{- end }}
          command:
            - /tmp/heat-cfn.sh
            - start
          lifecycle:
            preStop:
              exec:
                command:
                  - /tmp/heat-cfn.sh
                  - stop
          ports:
            - name: h-cfn
              containerPort: {{ tuple "cloudformation" "service" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
          readinessProbe:
            httpGet:
              scheme: {{ tuple "cloudformation" "service" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_scheme_lookup" | upper }}
              path: /
              port: {{ tuple "cloudformation" "service" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
          livenessProbe:
            httpGet:
              scheme: {{ tuple "cloudformation" "service" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_scheme_lookup" | upper }}
              path: /
              port: {{ tuple "cloudformation" "service" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
            initialDelaySeconds: 10
          volumeMounts:
            - name: pod-tmp
              mountPath: /tmp
            - name: pod-etc-heat
              mountPath: /etc/heat
            - name: wsgi-heat
              mountPath: /var/www/cgi-bin/heat
            - name: heat-bin
              mountPath: /tmp/heat-cfn.sh
              subPath: heat-cfn.sh
              readOnly: true
            - name: heat-etc
              mountPath: /etc/heat/heat-api-cfn-uwsgi.ini
              subPath: heat-api-cfn-uwsgi.ini
              readOnly: true
            - name: heat-etc
              mountPath: /etc/heat/heat.conf
              subPath: heat.conf
              readOnly: true
            {{ if .Values.conf.heat.DEFAULT.log_config_append }}
            - name: heat-etc
              mountPath: {{ .Values.conf.heat.DEFAULT.log_config_append }}
              subPath: {{ base .Values.conf.heat.DEFAULT.log_config_append }}
              readOnly: true
            {{ end }}
            - name: heat-etc
              mountPath: /etc/heat/api-paste.ini
              subPath: api-paste.ini
              readOnly: true
            - name: heat-etc
              mountPath: /etc/heat/policy.yaml
              subPath: policy.yaml
              readOnly: true
            - name: heat-etc
              mountPath: /etc/heat/api_audit_map.conf
              subPath: api_audit_map.conf
              readOnly: true
            {{- if .Values.manifests.certificates }}
            - name: heat-etc
              mountPath: {{ .Values.conf.software.apache2.site_dir }}/heat-api-cfn.conf
              subPath: wsgi-cnf.conf
              readOnly: true
            - name: heat-etc
              mountPath: {{ .Values.conf.software.apache2.mods_dir }}/mpm_event.conf
              subPath: mpm_event.conf
              readOnly: true
            {{- end }}
{{- dict "enabled" (or .Values.manifests.certificates .Values.tls.identity) "name" .Values.secrets.tls.cloudformation.cfn.internal "path" "/etc/heat/certs" | include "helm-toolkit.snippets.tls_volume_mount" | indent 12 }}
{{ if $mounts_heat_cfn.volumeMounts }}{{ toYaml $mounts_heat_cfn.volumeMounts | indent 12 }}{{ end }}
      volumes:
        - name: pod-tmp
          emptyDir: {}
        - name: pod-etc-heat
          emptyDir: {}
        - name: wsgi-heat
          emptyDir: {}
        - name: heat-bin
          configMap:
            name: heat-bin
            defaultMode: 0555
        - name: heat-etc
          secret:
            secretName: heat-etc
            defaultMode: 0444
{{- dict "enabled" (or .Values.manifests.certificates .Values.tls.identity) "name" .Values.secrets.tls.cloudformation.cfn.internal | include "helm-toolkit.snippets.tls_volume" | indent 8 }}
{{ if $mounts_heat_cfn.volumes }}{{ toYaml $mounts_heat_cfn.volumes | indent 8 }}{{ end }}
{{- end }}
