{{/*
# ============LICENSE_START=======================================================
#  Copyright (c) 2021-2022 Bell Canada.
# ================================================================================
# 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.
#
#  SPDX-License-Identifier: Apache-2.0
# ============LICENSE_END=========================================================
*/}}

apiVersion: apps/v1
kind: StatefulSet
metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector: {{- include "common.selectors" . | nindent 4 }}
  serviceName: {{ include "common.servicename" . }}
  template:
    metadata: {{- include "common.templateMetadata" (dict "ignoreHelmChart" true "dot" . ) | nindent 6 }}
    spec:
      serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . ) }}
      {{ include "common.podSecurityContext" . | indent 10 | trim}}
      initContainers:
        # we shouldn't need this but for unknown reason, it's fsGroup is not
        # applied
        - name: fix-permission
          command:
            - /bin/sh
          args:
            - -c
            - chown -R {{ .Values.securityContext.user_id }}:{{ .Values.securityContext.group_id }} /var/lib/postgresql/data
          image: {{ include "repositoryGenerator.image.busybox" . }}
          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
          securityContext:
            runAsUser: 0
          volumeMounts:
            - mountPath: /var/lib/postgresql/data
              name: {{ include "common.fullname" . }}
      containers:
        - name: {{ include "common.name" . }}
          image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image }}
          imagePullPolicy: {{ .Values.pullPolicy }}
          ports: {{ include "common.containerPorts" . | nindent 12  }}
          livenessProbe:
            exec:
              command: ["psql", "-w", "-U", "{{ .Values.config.pgRootUserName }}", "-c", "select 1"]
            initialDelaySeconds: 5
            periodSeconds: 60
          readinessProbe:
            exec:
              command: ["psql", "-w", "-U", "{{ .Values.config.pgRootUserName }}",  "-c", "select 1"]
            initialDelaySeconds: 5
            periodSeconds: 30
          env:
            - name: DB_USERNAME
            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "user-creds" "key" "login") | indent 14 }}
            - name: DB_PASSWORD
            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "user-creds" "key" "password") | indent 14 }}
            - name: POSTGRES_DB
              value: {{ .Values.config.pgDatabase }}
            - name: POSTGRES_USER
            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "root-creds" "key" "login") | indent 14 }}
            - name: POSTGRES_PASSWORD
            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "root-creds" "key" "password") | indent 14 }}
            - name: PGDATA
              value: /var/lib/postgresql/data/pgdata
          resources:
{{ include "common.resources" . | indent 12 }}
          volumeMounts:
            - name: {{ include "common.fullname" . }}-init
              mountPath: /docker-entrypoint-initdb.d
            - name: {{ include "common.fullname" . }}
              mountPath: /var/lib/postgresql/data
      volumes:
        - name: {{ include "common.fullname" . }}-init
          configMap:
            name: {{ include "common.fullname" . }}-init
      {{- with .Values.nodeSelector }}
      nodeSelector:
      {{- toYaml . | nindent 8 }}
      {{- end }}
      {{- with .Values.affinity }}
      affinity:
      {{- toYaml . | nindent 8 }}
      {{- end }}
      {{- with .Values.tolerations }}
      tolerations:
    {{- toYaml . | nindent 8 }}
  {{- end }}
 {{if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
  volumeClaimTemplates:
    - {{ include "common.PVCTemplate" (dict "dot" . "suffix" "data" "persistenceInfos" .Values.persistence "ignoreHelmChart" true) | indent 6 | trim }}
{{- end }}
