# Copyright © 2018 Amdocs, Bell Canada
# Copyright © 2019 Samsung Electronics
#
# 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.

#################################################################
# Secrets metaconfig
#################################################################
secrets:
  - uid: '{{ include "common.mariadb.secret.rootPassUID" . }}'
    type: password
    externalSecret: '{{ tpl (default "" .Values.config.mariadbRootPasswordExternalSecret) . }}'
    password: '{{ .Values.config.mariadbRootPassword }}'
  - uid: '{{ include "common.mariadb.secret.userCredentialsUID" . }}'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.userCredentialsExternalSecret) . }}'
    login: '{{ .Values.config.userName }}'
    password: '{{ .Values.config.userPassword }}'


#################################################################
# Global configuration defaults.
#################################################################
global:
  nodePortPrefix: 302
  persistence:
    mountPath: /dockerdata-nfs
    backup:
      mountPath: /dockerdata-nfs/backup

  repository: nexus3.onap.org:10001

  readinessRepository: oomk8s
  readinessImage: readiness-check:2.0.2


#################################################################
# Application configuration defaults.
#################################################################

#repository: mysql
repository: nexus3.onap.org:10001
image: adfinissygroup/k8s-mariadb-galera-centos:v002
backupImage: library/mariadb:10.1.38
imageInit: busybox
pullPolicy: IfNotPresent

# application configuration
config:
  # .mariadbRootPasswordExternalSecret: 'some-external-secret'
  mariadbRootPassword: secretpassword
  # .userCredentialsExternalSecret: 'some-external-secret'
  userName: my-user
  # userPassword: my-password
  # mysqlDatabase: my-database

# default number of instances in the StatefulSet
replicaCount: 3

nodeSelector: {}

affinity: {}

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

readiness:
  initialDelaySeconds: 15
  periodSeconds: 10
  timeoutSeconds: 5

## Persist data to a persitent volume
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: "-"
  accessMode: ReadWriteOnce
  size: 2Gi
  mountPath: /dockerdata-nfs
  mountSubPath: "mariadb-galera/data"
  mysqlPath: /var/lib/mysql
  backup:
    mountPath: /dockerdata-nfs/backup{{- if or (or .Values.storageClassOverride .Values.persistence.storageClass) .Values.global.persistence.storageClass -}}

service:
  internalPort: 3306
  name: mariadb-galera
  portName: mariadb-galera
  sstPort: 4444
  sstPortName: sst
  replicationPort: 4567
  replicationName: replication
  istPort: 4568
  istPortName: ist

ingress:
  enabled: false


## Configure MariaDB-Galera with a custom my.cnf file
## ref: https://mariadb.com/kb/en/mariadb/configuring-mariadb-with-mycnf/#example-of-configuration-file
##
externalConfig: {}
# externalConfig: |-
  # [mysqld]
  # innodb_buffer_pool_size=2G

#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:
  small:
    limits:
      cpu: 2
      memory: 4Gi
    requests:
      cpu: 1
      memory: 2Gi
  large:
    limits:
      cpu: 2
      memory: 4Gi
    requests:
      cpu: 1
      memory: 2Gi
  unlimited: {}

# Name for mariadb-galera cluster - should be unique accross all projects or other clusters
nameOverride: mariadb-galera

# DNS name for mariadb-galera cluster - should be unique accross all projects other clusters
#dnsnameOverride: mariadb-galera

backup:
  enabled: false
  cron: "00 00 * * *"
  retentionPeriod: 3
