{{/*
# Copyright © 2022 Amdocs, AT&T, Bell Canada, Bitnami
#
# 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 not .Values.k8ssandraOperator.enabled }}
apiVersion: apps/v1
kind: StatefulSet
metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
spec:
  selector: {{- include "common.selectors" . | nindent 4 }}
  serviceName: {{ include "common.servicename" . }}
  replicas: {{ .Values.replicaCount }}
  podManagementPolicy: {{ .Values.podManagementPolicy }}
  updateStrategy:
    type: {{ .Values.updateStrategy.type }}
  template:
    metadata: {{- include "common.templateMetadata" . | nindent 6 }}
      {{- if or .Values.podAnnotations (and .Values.metrics.serviceMonitor.enabled .Values.metrics.podAnnotations) }}
      annotations:
        {{- if .Values.podAnnotations }}
        {{- include "common.tplValue" (dict "value" .Values.podAnnotations "context" $) | nindent 8 }}
        {{- end }}
        {{- if and .Values.metrics.serviceMonitor.enabled .Values.metrics.podAnnotations }}
        {{- include "common.tplValue" (dict "value" .Values.metrics.podAnnotations "context" $) | nindent 8 }}
        {{- end }}
      {{- end }}
    spec:
      hostNetwork: {{ .Values.hostNetwork }}
      imagePullSecrets:
      - name: "{{ include "common.namespace" . }}-docker-registry-key"
      containers:
      - name: {{ include "common.name" . }}
        image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image }}
        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
        ports: {{ include "common.containerPorts" . | nindent 8  }}
        volumeMounts:
          - name: {{ include "common.fullname" . }}-data
            mountPath: /var/lib/cassandra
          - name: localtime
            mountPath: /etc/localtime
            readOnly: true
          - name: cassandra-entrypoint
            mountPath: /docker-entrypoint.sh
            subPath: docker-entrypoint.sh
          {{- range $key, $value := .Values.configOverrides }}
          - name: cassandra-config-{{ $key | replace "." "-" }}
            mountPath: /etc/cassandra/{{ $key }}
            subPath: {{ $key }}
          {{- end }}
        {{- if eq .Values.liveness.enabled true }}
        livenessProbe:
          exec:
            command:
            - /bin/bash
            - -c
            - nodetool status | grep $POD_IP | awk '$1!="UN" { exit 1; }'
          initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
          periodSeconds: {{ .Values.liveness.periodSeconds }}
          timeoutSeconds: {{ .Values.liveness.timeoutSeconds }}
          successThreshold: {{ .Values.liveness.successThreshold }}
          failureThreshold: {{ .Values.liveness.failureThreshold }}
        {{ end }}
        readinessProbe:
          exec:
            command:
            - /bin/bash
            - -c
            - nodetool status | grep $POD_IP | awk '$1!="UN" { exit 1; }'
          initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
          periodSeconds: {{ .Values.readiness.periodSeconds }}
          timeoutSeconds: {{ .Values.readiness.timeoutSeconds }}
          successThreshold: {{ .Values.readiness.successThreshold }}
          failureThreshold: {{ .Values.readiness.failureThreshold }}
        startupProbe:
          exec:
            command:
            - /bin/bash
            - -c
            - nodetool status | grep $POD_IP | awk '$1!="UN" { exit 1; }'
          initialDelaySeconds: {{ .Values.startup.initialDelaySeconds }}
          periodSeconds: {{ .Values.startup.periodSeconds }}
          timeoutSeconds: {{ .Values.startup.timeoutSeconds }}
          successThreshold: {{ .Values.startup.successThreshold }}
          failureThreshold: {{ .Values.startup.failureThreshold }}
        env:
          {{- $seed_size := default 1 .Values.replicaCount | int -}}
          {{- $global := . }}
          - name: CASSANDRA_SEEDS
          {{- if .Values.hostNetwork }}
            value: {{ required "You must fill \".Values.config.seeds\" with list of Cassandra seeds when hostNetwork is set to true" .Values.config.seeds | quote }}
          {{- else }}
            value: "{{- range $i, $e := until $seed_size }}{{ template "common.fullname" $global }}-{{ $i }}.{{ template "common.servicename" $global }}.{{ $global.Release.Namespace }}.svc.{{ $global.Values.config.cluster_domain }}{{- if (lt ( add1 $i ) $seed_size ) }},{{- end }}{{- end }}"
          {{- end }}
          - name: MAX_HEAP_SIZE
            value: {{ .Values.config.heap.max }}
          - name: HEAP_NEWSIZE
            value: {{ .Values.config.heap.min }}
          - name: JVM_OPTS
            value: {{ .Values.config.jvmOpts | quote }}
          - name: CASSANDRA_CLUSTER_NAME
            value: {{ .Values.config.clusterName | quote }}
          - name: CASSANDRA_DC
            value: {{ .Values.config.dataCenter | quote }}
          - name: CASSANDRA_RACK
            value: {{ .Values.config.rackName | quote }}
          - name: CASSANDRA_AUTO_BOOTSTRAP
            value: {{ .Values.config.autoBootstrap | quote }}
          - name: CASSANDRA_START_RPC
            value: {{ default "true" .Values.config.start_rpc | quote }}
          - name: CASSANDRA_ENDPOINT_SNITCH
            value: {{ default "GossipingPropertyFileSnitch" .Values.config.endpoint_snitch | quote }}
          - name: CASSANDRA_AUTHENTICATOR
            value: {{ default "PasswordAuthenticator" .Values.config.authenticator | quote }}
          - name: POD_IP
            valueFrom:
              fieldRef:
                fieldPath: status.podIP
        lifecycle:
          preStop:
            exec:
        {{- if not .Values.persistence.enabled }}
              command: ["/bin/sh", "-c", "exec nodetool decommission"]
        {{- else }}
              command: ["/bin/sh", "-c", "PID=$(pidof java) && kill $PID && while ps -p $PID > /dev/null; do sleep 1; done"]
        {{- end }}
        resources: {{ toYaml .Values.resources | nindent 10 }}
      {{- if .Values.metrics.serviceMonitor.enabled }}
      - name: {{ include "common.name" . }}-metrics
        image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.metrics.image }}
        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.metrics.pullPolicy | quote}}
        {{- if (.Values.metrics.enabled) }}
        ports:
        {{- range $index, $metricPort := .Values.metrics.ports }}
        - name: {{ $metricPort.name }}
          containerPort: {{ $metricPort.port }}
          protocol: TCP
        {{- end }}
        livenessProbe:
          httpGet:
            path: {{ .Values.metrics.livenessProbe.httpGet.path }}
            port: {{ .Values.metrics.livenessProbe.httpGet.port }}
          initialDelaySeconds: {{ .Values.metrics.livenessProbe.initialDelaySeconds }}
          periodSeconds: {{ .Values.metrics.livenessProbe.periodSeconds }}
          timeoutSeconds: {{ .Values.metrics.livenessProbe.timeoutSeconds }}
          successThreshold: {{ .Values.metrics.livenessProbe.successThreshold }}
          failureThreshold: {{ .Values.metrics.livenessProbe.failureThreshold }}
        readinessProbe:
          httpGet:
            path: {{ .Values.metrics.readinessProbe.httpGet.path }}
            port: {{ .Values.metrics.readinessProbe.httpGet.port }}
          initialDelaySeconds: {{ .Values.metrics.readinessProbe.initialDelaySeconds }}
          periodSeconds: {{ .Values.metrics.readinessProbe.periodSeconds }}
          timeoutSeconds: {{ .Values.metrics.readinessProbe.timeoutSeconds }}
          successThreshold: {{ .Values.metrics.readinessProbe.successThreshold }}
          failureThreshold: {{ .Values.metrics.readinessProbe.failureThreshold }}
        {{- end }}
        {{ include "common.containerSecurityContext" . | indent 10 | trim }}
        {{- if .Values.metrics.resources }}
        resources: {{- toYaml .Values.metrics.resources | nindent 10 }}
        {{- end }}
      {{- end }}
      {{- if .Values.nodeSelector }}
      nodeSelector: {{ toYaml .Values.nodeSelector | nindent 8 }}
      {{- end -}}
      {{- if .Values.affinity }}
      affinity: {{ toYaml .Values.affinity | nindent 8 }}
      {{- end }}
      serviceAccountName: {{ include "common.fullname" (dict "suffix" "nothing" "dot" . )}}
      volumes:
      - name: localtime
        hostPath:
          path: /etc/localtime
      {{- range $key, $value := .Values.configOverrides }}
      - name: cassandra-config-{{ $key | replace "." "-" }}
        configMap:
          name: {{ include "common.fullname" . }}-configOverrides
      {{- end }}
      - name: cassandra-entrypoint
        configMap:
          name: {{ include "common.fullname" . }}-entrypoint
          defaultMode: 0755
  {{- if not .Values.persistence.enabled }}
      - name: {{ include "common.fullname" . }}-data
        emptyDir: {}
  {{- else }}
  volumeClaimTemplates:
    - metadata:
        name: {{ include "common.fullname" . }}-data
        labels:
          name: {{ include "common.fullname" . }}
          chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
          release: "{{ include "common.release" . }}"
          heritage: "{{ .Release.Service }}"
      spec:
        accessModes:
        {{- if .Values.backup.enabled }}
        - ReadWriteMany
        {{- else }}
        - ReadWriteOnce
        {{- end }}
        storageClassName: {{ include "common.storageClass" . }}
        resources:
          requests:
            storage: {{ .Values.persistence.size | quote }}
  {{- end }}
{{- end }}