# yaml-language-server: $schema=./values.schema.json
image:
  repository: docker.io/bitnamisecure/valkey
  pullPolicy: IfNotPresent
  tag: latest@sha256:ddde14f88afb0d0e054fca3b635304ce39701e20cc5404a7c46951e201a90588

workload:
  main:
    replicas: 1
    type: StatefulSet
    strategy: RollingUpdate
    podSpec:
      containers:
        main:
          env:
            # DEVNOTE: Bitnami Valkey keeps VALKEY_* env variable names for compatibility.
            # VALKEY_REPLICATION_MODE: master
            ALLOW_EMPTY_PASSWORD: '{{ ternary "yes" "no" (empty .Values.password) }}'
            VALKEY_PORT: "{{ .Values.service.main.ports.main.targetPort }}"
            VALKEY_PASSWORD: "{{ .Values.password }}"
          probes:
            liveness:
              enabled: true
              type: exec
              command:
                - sh
                - -c
                - /health/ping_liveness_local.sh 2
            readiness:
              enabled: true
              type: exec
              command:
                - sh
                - -c
                - /health/ping_readiness_local.sh 2
            # -- Startup probe configuration
            # @default -- See below
            startup:
              # -- Enable the startup probe
              enabled: true
              type: exec
              command:
                - sh
                - -c
                - /health/ping_readiness_local.sh 2
securityContext:
  container:
    readOnlyRootFilesystem: false
    runAsGroup: 0
configmap:
  health:
    enabled: true
    data:
      ping_readiness_local.sh: |-
        #!/bin/bash
        [[ -n "$VALKEY_PASSWORD" ]] && export VALKEYCLI_AUTH="$VALKEY_PASSWORD"
        response=$(
          timeout -s 3 $1 \
          valkey-cli \
            -h localhost \
            -p $VALKEY_PORT \
            ping
        )
        if [ "$response" != "PONG" ]; then
          echo "failed to connect using password: $VALKEY_PASSWORD response: $response"
          exit 1
        fi
      ping_liveness_local.sh: |-
        #!/bin/bash
        [[ -n "$VALKEY_PASSWORD" ]] && export VALKEYCLI_AUTH="$VALKEY_PASSWORD"
        response=$(
          timeout -s 3 $1 \
          valkey-cli \
            -h localhost \
            -p $VALKEY_PORT \
            ping
        )
        if [ "$response" != "PONG" ] && [ "$response" != "LOADING Valkey is loading the dataset in memory" ]; then
          echo "$response"
          exit 1
        fi
      ping_readiness_master.sh: |-
        #!/bin/bash
        [[ -n "$VALKEY_MASTER_PASSWORD" ]] && export VALKEYCLI_AUTH="$VALKEY_MASTER_PASSWORD"
        response=$(
          timeout -s 3 $1 \
          valkey-cli \
            -h $VALKEY_MASTER_HOST \
            -p $VALKEY_MASTER_PORT_NUMBER \
            ping
        )
        if [ "$response" != "PONG" ]; then
          echo "$response"
          exit 1
        fi
      ping_liveness_master.sh: |-
        #!/bin/bash
        [[ -n "$VALKEY_MASTER_PASSWORD" ]] && export VALKEYCLI_AUTH="$VALKEY_MASTER_PASSWORD"
        response=$(
          timeout -s 3 $1 \
          valkey-cli \
            -h $VALKEY_MASTER_HOST \
            -p $VALKEY_MASTER_PORT_NUMBER \
            ping
        )
        if [ "$response" != "PONG" ] && [ "$response" != "LOADING Valkey is loading the dataset in memory" ]; then
          echo "$response"
          exit 1
        fi
      ping_readiness_local_and_master.sh: |-
        script_dir="$(dirname "$0")"
        exit_status=0
        "$script_dir/ping_readiness_local.sh" $1 || exit_status=$?
        "$script_dir/ping_readiness_master.sh" $1 || exit_status=$?
        exit $exit_status
      ping_liveness_local_and_master.sh: |-
        script_dir="$(dirname "$0")"
        exit_status=0
        "$script_dir/ping_liveness_local.sh" $1 || exit_status=$?
        "$script_dir/ping_liveness_master.sh" $1 || exit_status=$?
        exit $exit_status

## DEVNOTE: This password needs to match the one set in Common if ever changing defaults
password: "PLACEHOLDERPASSWORD"
service:
  main:
    ports:
      main:
        port: 6379
        targetPort: 6379
volumeClaimTemplates:
  data:
    enabled: true
    accessModes:
      - ReadWriteOnce
    mountPath: "/bitnami/valkey"
persistence:
  valkey-health:
    enabled: true
    type: configmap
    objectName: health
    mountPath: "/health"
    defaultMode: "0755"
    items:
      - key: ping_readiness_local.sh
        path: ping_readiness_local.sh
      - key: ping_liveness_local.sh
        path: ping_liveness_local.sh
      - key: ping_readiness_master.sh
        path: ping_readiness_master.sh
      - key: ping_liveness_master.sh
        path: ping_liveness_master.sh
      - key: ping_liveness_local_and_master.sh
        path: ping_liveness_local_and_master.sh
      - key: ping_readiness_local_and_master.sh
        path: ping_readiness_local_and_master.sh
