apiVersion:  apps/v1
kind: StatefulSet
metadata:
  name: {{ template "couchdb.fullname" . }}
  labels:
    app: {{ template "couchdb.name" . }}
    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
spec:
  replicas: {{ .Values.clusterSize }}
  serviceName: {{ template "couchdb.fullname" . }}
  podManagementPolicy: {{ .Values.podManagementPolicy }}
  selector:
    matchLabels:
{{ include "couchdb.ss.selector" . | indent 6 }}
  template:
    metadata:
      labels:
{{ include "couchdb.ss.selector" . | indent 8 }}
{{- with .Values.annotations }}
      annotations:
        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
{{ toYaml . | indent 8 }}
{{- end }}
    spec:
      {{- if .Values.schedulerName }}
      schedulerName: "{{ .Values.schedulerName }}"
      {{- end }}
      {{- if .Values.serviceAccount.enabled }}
      serviceAccountName: {{ template "couchdb.serviceAccount" . }}
      {{- end }}
      initContainers:
        - name: init-copy
          image: "{{ .Values.initImage.repository }}:{{ .Values.initImage.tag }}"
          imagePullPolicy: {{ .Values.initImage.pullPolicy }}
          command: 
            - 'sh'
            - '-c'
{{- if .Values.prometheusPort.enabled }}
            - 'cp /tmp/chart.ini /default.d; cp /tmp/seedlist.ini /default.d; cp /tmp/prometheus.ini /default.d; ls -lrt /default.d;'
{{- else }}
            - 'cp /tmp/chart.ini /default.d; cp /tmp/seedlist.ini /default.d; ls -lrt /default.d;'
{{- end }}
          volumeMounts:
          - name: config
            mountPath: /tmp/
          - name: config-storage
            mountPath: /default.d
{{- if .Values.adminHash }}
        - name: admin-hash-copy
          image: "{{ .Values.initImage.repository }}:{{ .Values.initImage.tag }}"
          imagePullPolicy: {{ .Values.initImage.pullPolicy }}
          command: ['sh','-c','cp /tmp/password.ini /local.d/ ;']
          volumeMounts:
            - name: admin-password
              mountPath: /tmp/password.ini
              subPath: "password.ini"
            - name: local-config-storage
              mountPath: /local.d
{{- end }}
      containers:
        - name: couchdb
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          ports:
            - name: couchdb
              containerPort: 5984
            - name: epmd
              containerPort: 4369
            - containerPort: 9100
{{- if .Values.prometheusPort.enabled }}
            - name: metrics
              containerPort: {{ .Values.prometheusPort.port }}
{{- end }}
          env:
{{- if not .Values.allowAdminParty }}
            - name: COUCHDB_USER
              valueFrom:
                secretKeyRef:
                  name: {{ template "couchdb.fullname" . }}
                  key: adminUsername
            - name: COUCHDB_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: {{ template "couchdb.fullname" . }}
                  key: adminPassword
            - name: COUCHDB_SECRET
              valueFrom:
                secretKeyRef:
                  name: {{ template "couchdb.fullname" . }}
                  key: cookieAuthSecret
{{- end }}
            - name: ERL_FLAGS
              value: "{{ range $k, $v := .Values.erlangFlags }} -{{ $k }} {{ $v }} {{ end }}"
{{- if .Values.livenessProbe.enabled }}
          livenessProbe:
{{- if .Values.couchdbConfig.chttpd.require_valid_user }}
            exec:
              command:
                - sh
                - -c
                - curl -G --silent --fail -u ${COUCHDB_USER}:${COUCHDB_PASSWORD} http://localhost:5984/_up
{{- else }}
            httpGet:
              path: /_up
              port: 5984
{{- end }}
            failureThreshold: {{ .Values.livenessProbe.failureThreshold }}
            initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
            periodSeconds: {{ .Values.livenessProbe.periodSeconds }}
            successThreshold: {{ .Values.livenessProbe.successThreshold }}
            timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}
{{- end }}
{{- if .Values.readinessProbe.enabled }}
          readinessProbe:
{{- if .Values.couchdbConfig.chttpd.require_valid_user }}
            exec:
              command:
                - sh
                - -c
                - curl -G --silent --fail -u ${COUCHDB_USER}:${COUCHDB_PASSWORD} http://localhost:5984/_up
{{- else }}
            httpGet:
              path: /_up
              port: 5984
{{- end }}
            failureThreshold: {{ .Values.readinessProbe.failureThreshold }}
            initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }}
            periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
            successThreshold: {{ .Values.readinessProbe.successThreshold }}
            timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}
{{- end }}
          resources:
{{ toYaml .Values.resources | indent 12 }}
          volumeMounts:
          - name: config-storage
            mountPath: /opt/couchdb/etc/default.d
{{- if .Values.adminHash }}
          - name: local-config-storage
            mountPath: /opt/couchdb/etc/local.d
{{- end }}
          - name: database-storage
            mountPath: /opt/couchdb/data
{{- if .Values.enableSearch }}
        - name: clouseau
          image: "{{ .Values.searchImage.repository }}:{{ .Values.searchImage.tag }}"
          imagePullPolicy: {{ .Values.searchImage.pullPolicy }}
          volumeMounts:
          - name: database-storage
            mountPath: /opt/couchdb-search/data
{{- end }}
{{- if .Values.sidecars }}
{{ toYaml .Values.sidecars | indent 8}}
{{- end }}
{{- if .Values.nodeSelector }}
      nodeSelector:
{{ toYaml .Values.nodeSelector | indent 8 }}
{{- end }}
{{- with .Values.tolerations }}
      tolerations:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.affinity }}
      affinity:
{{ toYaml . | indent 8 }}
{{- end }}
      volumes:
        - name: config-storage
          emptyDir: {}
        - name: config
          configMap:
            name: {{ template "couchdb.fullname" . }}
            items:
              - key: inifile
                path: chart.ini
              - key: seedlistinifile
                path: seedlist.ini
{{- if .Values.prometheusPort.enabled }}
              - key: prometheusinifile 
                path: prometheus.ini
{{- end }}

{{- if .Values.adminHash }}
        - name: local-config-storage
          emptyDir: {}
        - name: admin-password
          secret:
            secretName: {{ template "couchdb.fullname" . }}
{{- end -}}

{{- if not .Values.persistentVolume.enabled }}
        - name: database-storage
          emptyDir: {}
{{- else }}
  volumeClaimTemplates:
    - metadata:
        name: database-storage
        labels:
          app: {{ template "couchdb.name" . }}
          release: {{ .Release.Name }}
      spec:
        accessModes:
        {{- range .Values.persistentVolume.accessModes }}
          - {{ . | quote }}
        {{- end }}
        resources:
          requests:
            storage: {{ .Values.persistentVolume.size | quote }}
      {{- if .Values.persistentVolume.storageClass }}
      {{- if (eq "-" .Values.persistentVolume.storageClass) }}
        storageClassName: ""
      {{- else }}
        storageClassName: "{{ .Values.persistentVolume.storageClass }}"
      {{- end }}
      {{- end }}
{{- end }}
