{{/*
# Copyright (c) 2018 Amdocs, Bell Canada, AT&T
# Modifications Copyright (c) 2020 Nokia, Orange
# Modifications Copyright © 2023 Nordix Foundation
#
# 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: Deployment
metadata:
  name: {{ include "common.fullname" . }}
  namespace: {{ include "common.namespace" . }}
  labels:
    app: {{ include "common.name" . }}
    app.kubernetes.io/name: {{ include "common.name" . }}
    {{- if .Chart.AppVersion }}
    version: "{{ .Chart.AppVersion | replace "+" "_" }}"
    {{- else }}
    version: "{{ .Chart.Version | replace "+" "_" }}"
    {{- end }}
    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
    release: {{ include "common.release" . }}
    heritage: {{ .Release.Service }}
spec:
  selector:
    matchLabels:
      app: {{ include "common.name" . }}
  replicas: {{ .Values.replicaCount }}
  strategy:
    type: {{ .Values.updateStrategy.type }}
    {{- if (eq "RollingUpdate" .Values.updateStrategy.type) }}
    rollingUpdate:
      maxUnavailable: {{ .Values.updateStrategy.maxUnavailable }}
      maxSurge: {{ .Values.updateStrategy.maxSurge }}
    {{- end }}
  template:
    metadata:
      labels:
        app: {{ include "common.name" . }}
        release: {{ include "common.release" . }}
        app.kubernetes.io/name: {{ include "common.name" . }}
        {{- if .Chart.AppVersion }}
        version: "{{ .Chart.AppVersion | replace "+" "_" }}"
        {{- else }}
        version: "{{ .Chart.Version | replace "+" "_" }}"
        {{- end }}
      name: {{ include "common.release" . }}
      annotations:
        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
    spec:
      terminationGracePeriodSeconds: {{ .Values.service.terminationGracePeriodSeconds }}
      initContainers:
      - command:
        - /app/ready.py
        args:
        - --container-name
        - aai-resources
        - --container-name
        - aai-traversal
        - --container-name
        - aai-graphadmin
        env:
        - name: NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        image: {{ include "repositoryGenerator.image.readiness" . }}
        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
        name: {{ include "common.name" . }}-readiness
        resources:
          requests:
            memory: {{ .Values.haproxy.initContainers.resources.memory }}
            cpu: {{ .Values.haproxy.initContainers.resources.cpu }}
          limits:
            memory: {{ .Values.haproxy.initContainers.resources.memory }}
            cpu: {{ .Values.haproxy.initContainers.resources.cpu }}
      containers:
      - name: {{ include "common.name" . }}
        image: "{{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image }}"
        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
        volumeMounts:
        - mountPath: /etc/localtime
          name: localtime
          readOnly: true
        - mountPath: /dev/log
          name: aai-service-log
        - mountPath: /usr/local/etc/haproxy/haproxy.cfg
        {{ if .Values.global.installSidecarSecurity }}
          subPath: haproxy-pluggable-security.cfg
        {{ else }}
          subPath: haproxy.cfg
        {{ end }}
          name: haproxy-cfg
        ports:
        - containerPort: {{ .Values.service.internalPort }}
          name: {{ .Values.service.portName }}
        - containerPort: {{ .Values.metricsService.internalPort }}
          name: {{ .Values.metricsService.portName }}
        # disable liveness probe when breakpoints set in debugger
        # so K8s doesn't restart unresponsive container
        {{- if eq .Values.liveness.enabled true }}
        livenessProbe:
          tcpSocket:
            port: {{ .Values.service.internalPort }}
          initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
          periodSeconds: {{ .Values.liveness.periodSeconds }}
        {{ end -}}
        readinessProbe:
          httpGet:
            path: /aai/util/echo
            port: {{ .Values.service.internalPort }}
            scheme: HTTP
            httpHeaders:
            - name: X-FromAppId
              value: OOM_ReadinessCheck
      {{ if .Values.global.installSidecarSecurity }}
            - name: Authorization
              value: Basic YWFpQGFhaS5vbmFwLm9yZzpkZW1vMTIzNDU2IQ==
      {{ end }}
            - name: X-TransactionId
              value: OOM_ReadinessCheck_TID
            - name: Accept
              value: application/json
          initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
          periodSeconds: {{ .Values.readiness.periodSeconds }}
        resources: {{ include "common.resources" . | nindent 10 }}
      {{- if .Values.nodeSelector }}
      nodeSelector:
{{ toYaml .Values.nodeSelector | indent 8 }}
      {{- end -}}
      {{- if .Values.affinity }}
      affinity:
{{ toYaml .Values.affinity | indent 8 }}
      {{- end }}
      serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
      volumes:
        - name: localtime
          hostPath:
            path: /etc/localtime
        - name: aai-service-log
          hostPath:
            path: "/dev/log"
        - name: haproxy-cfg
          configMap:
            name: aai-deployment-configmap
      imagePullSecrets:
      - name: "{{ include "common.namespace" . }}-docker-registry-key"
