{{/*
# Copyright © 2018 Amdocs, AT&T, 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.
*/}}
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: {{ include "common.fullname" . }}-primary
  namespace: {{ include "common.namespace" . }}
  labels:
    app: {{ include "common.name" . }}-primary
    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
    release: {{ include "common.release" . }}
    heritage: {{ .Release.Service }}
    name: "{{ .Values.container.name.primary }}"
spec:
  serviceName: {{ .Values.service.name }}
  replicas: 1
  template:
    metadata:
      labels:
        app: {{ include "common.name" . }}-primary
        release: {{ include "common.release" . }}
        name: "{{ .Values.container.name.primary }}"
    spec:
      initContainers:
      - name: init-sysctl
        command:
        - /bin/sh
        - -c
        - |
          chown 26:26 /podroot/;
          chmod 700 /podroot/;
        image: {{ .Values.global.busyboxRepository | default .Values.busyboxRepository }}/{{ .Values.busyboxImage }}
        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
        volumeMounts:
        - name: {{ include "common.fullname" . }}-data
          mountPath: /podroot/
      containers:
      - name: {{ include "common.name" . }}
        image: "{{ .Values.postgresRepository }}/{{ .Values.image }}"
        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
        ports:
        - containerPort: {{ .Values.service.internalPort }}
          name: {{ .Values.service.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 }}
          timeoutSeconds: {{ .Values.liveness.timeoutSeconds }}
        {{- end }}
        readinessProbe:
          tcpSocket:
            port: {{ .Values.service.internalPort }}
          initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
          periodSeconds: {{ .Values.readiness.periodSeconds }}
        env:
        - name: PGHOST
          value: /tmp
        - name: PG_PRIMARY_USER
          value: primaryuser
        - name: PG_MODE
          value: primary
        - name: PG_PRIMARY_HOST
          value: "{{ .Values.container.name.primary }}"
        - name: PG_REPLICA_HOST
          value: "{{ .Values.container.name.replica }}"
        - name: PG_PRIMARY_PORT
          value: "{{ .Values.service.internalPort }}"
        - name: PG_PRIMARY_PASSWORD
          valueFrom:
            secretKeyRef:
              name: {{ template "common.fullname" . }}
              key: pg-primary-password
        - name: PG_USER
          value: "{{ .Values.config.pgUserName }}"
        - name: PG_PASSWORD
          valueFrom:
            secretKeyRef:
              name: {{ template "common.fullname" . }}
              key: pg-user-password
        - name: PG_DATABASE
          value: "{{ .Values.config.pgDatabase }}"
        - name: PG_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: {{ template "common.fullname" . }}
              key: pg-root-password
        volumeMounts:
        - name: pool-hba-conf
          mountPath: /pgconf/pool_hba.conf
          subPath: pool_hba.conf
        - mountPath: /pgdata
          name: {{ include "common.fullname" . }}-data
        - mountPath: /backup
          name: {{ include "common.fullname" . }}-backup
          readOnly: true
        resources:
{{ include "common.resources" . | indent 12 }}
        {{- if .Values.nodeSelector }}
        nodeSelector:
{{ toYaml .Values.nodeSelector | indent 10 }}
        {{- end -}}
        {{- if .Values.affinity }}
        affinity:
{{ toYaml .Values.affinity | indent 10 }}
        {{- end }}
      volumes:
      - name: localtime
        hostPath:
          path: /etc/localtime
      - name: {{ include "common.fullname" . }}-backup
        emptyDir: {}
      - name: {{ include "common.fullname" . }}-data
{{- if .Values.persistence.enabled }}
        persistentVolumeClaim:
            claimName: {{ include "common.fullname" . }}-primary
{{- else }}
        emptyDir: {}
{{ end }}
      - name: pool-hba-conf
        configMap:
          name: {{ include "common.fullname" . }}
