# Copyright © 2018 Amdocs, Bell Canada, AT&T
#
# 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.

# Default values for cassandra.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
global: # global defaults
  nodePortPrefix: 302
  persistence:
    mountPath: /dockerdata-nfs
    backup:
      mountPath: /dockerdata-nfs/backup

# application image
image: cassandra:3.11.4
pullPolicy: Always

# flag to enable debugging - application support required
debugEnabled: false

# application configuration
config:
  cluster_domain: cluster.local
  heap:
    max: 2048M
    min: 100M
  jvmOpts: -Dcassandra.consistent.rangemovement=false
  clusterName: cassandra
  dataCenter: Pod
  rackName: Rack
  autoBootstrap: true
  # If hostNetwork is true then provide the comma separated list of seeds.
  #seeds:seed1,seed2

# default number of instances
replicaCount: 3

hostNetwork: false

nodeSelector: {}

affinity: {}

# probe configuration parameters
liveness:
  initialDelaySeconds: 60
  periodSeconds: 10
  timeoutSeconds: 3
  successThreshold: 1
  failureThreshold: 3
  # necessary to disable liveness probe when setting breakpoints
  # in debugger so K8s doesn't restart unresponsive container
  enabled: true

readiness:
  initialDelaySeconds: 120
  periodSeconds: 10
  timeoutSeconds: 3
  successThreshold: 1
  failureThreshold: 3

service:
  name: cassandra
  headless:
    suffix: ""
    annotations:
      service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
    publishNotReadyAddresses: true
  headlessPorts:
  - name: tcp-intra
    port: 7000
  - name: tls
    port: 7001
  - name: tcp-jmx
    port: 7199
  - name: tcp-cql
    port: 9042
    ## thrift protocol is  deprecated . Should be removed. Being left until all project removes it.
  - name: tcp-thrift
    port: 9160
  - name: tcp-agent
    port: 61621

podAnnotations: {}
podManagementPolicy: OrderedReady
updateStrategy:
  type: RollingUpdate

ingress:
  enabled: false

persistence:
  enabled: true

  ## A manually managed Persistent Volume and Claim
  ## Requires persistence.enabled: true
  ## If defined, PVC must be created manually before volume will be bound
  # existingClaim:
  volumeReclaimPolicy: Retain

  ## database data Persistent Volume Storage Class
  ## If defined, storageClassName: <storageClass>
  ## If set to "-", storageClassName: "", which disables dynamic provisioning
  ## If undefined (the default) or set to null, no storageClassName spec is
  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
  ##   GKE, AWS & OpenStack)
  ##
  ## storageClass: "-"
  ## Not set as it depends of the backup enabledment or not.
  accessMode: ReadWriteOnce
  size: 2Gi
  mountPath: /dockerdata-nfs
  mountSubPath: cassandra
  storageType: local
  backup:
      mountPath: /dockerdata-nfs/backup

configOverrides: {}

# resources: {}
  # We usually recommend not to specify default resources and to leave this as a conscious
  # choice for the user. This also increases chances charts run on environments with little
  # resources, such as Minikube. If you do want to specify resources, uncomment the following
  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
  #
  # Example:
  # Configure resource requests and limits
  # ref: http://kubernetes.io/docs/user-guide/compute-resources/
  # Minimum memory for development is 2 CPU cores and 4GB memory
  # Minimum memory for production is 4 CPU cores and 8GB memory
resources:
  limits:
    cpu: 0.8
    memory: 4Gi
  requests:
    cpu: 0.2
    memory: 2.5Gi
backup:
  enabled: false
  cron: "00 00 * * *"
  retentionPeriod: 3
  dbSize: 1
  keyspacesToSkip:
  - name: system_traces
  - name: system_auth
  - name: system_distributed
