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

#################################################################
# Global configuration defaults.
#################################################################
global:
  mariadbGalera:
    nameOverride: mariadb-galera
    servicePort: 3306
    # set these two values if you want to access an 'out of ONAP' mariadb
    # userRootPassword: some-password
    # userRootSecret: some-secret-name
    # userRootSecretKey: password

#################################################################
# Secrets metaconfig
#################################################################
secrets:
  - uid: root-password
    type: password
    externalSecret: '{{ tpl (ternary (default "" .Values.mariadbGalera.userRootSecret) (default (include "mariadbInit.mariadbClusterSecret" .) .Values.global.mariadbGalera.userRootSecret) (not (empty (default "" .Values.mariadbGalera.serviceName)))) . }}'
    password: '{{ tpl (ternary (default "" .Values.mariadbGalera.userRootPassword) (default "" .Values.global.mariadbGalera.userRootPassword) (not (empty (default "" .Values.mariadbGalera.serviceName)))) . }}'
  - uid: '{{ .Values.config.mysqlDatabase }}'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.userCredentialsExternalSecret) . }}'
    login: '{{ .Values.config.userName }}'
    password: '{{ .Values.config.userPassword }}'
    passwordPolicy: required

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

pullPolicy: IfNotPresent

# These two values are used to supply commands that are run after the DB is created.
# Components using the shared DB can either pass a string which has a set of commands
# or a config map that contains a shell script. If both are specified only the config
# map will be executed. For reference, please see the VID components for config map
dbScript: ""
dbScriptConfigMap: ""

# Set it if you want to change the name of the different components
# nameOverride:

mariadbGalera: {}
#  serviceName: some-name
#  containerName: some-name
#  servicePort: 3306
#  userRootPassword: some-password
#  userRootSecret: some-secret-name
#  userRootSecretKey: password

# These are default settings, required for a chart compilation with "local" cluster
# setting. These values need to be overwritten in the component's values.yaml, e.g.
# global:
#   mariadbGalera: &mariadbGalera
#     #This flag allows SO to instantiate its own mariadb-galera cluster
#     localCluster: true
#     service: nbi-galera
#     internalPort: 3306
#     nameOverride: nbi-galera
# mariadb-init:
#   mariadb-galera:
#     nameOverride: nbi-galera
#     service:
#       internalPort: 3306
mariadb-galera:
  service:
    internalPort: 3306
  nameOverride: mariadb-galera
  mariadbOperator:
    galera:
      enabled: false

config:
  userPassword: Ci@shsOd3pky1Vji
  userName: u5WZ1GMSIS1wHZF
  # set this value if you would like to use external secret instead of providing a password
  # userCredentialsExternalsecret: some-secret-name
  mysqlDatabase: ynsaUCru6mUNwGal
  mysqlAdditionalDatabases: {}
  # add addtional dabases
  # this is an dict
  # Example:
  # mysqlAdditionalDatabases:
  #   dbOne:
  #     user: one
  #     password: pwd1
  #     externalSecret: some-secret-name
  #   dbTwo:
  #     user: two
  #     password: pwd2
  #     externalSecret: some-secret-name
  config_map: default

nodeSelector: {}

affinity: {}

#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
flavor: small
resources:
  small:
    limits:
      cpu: "100m"
      memory: "500Mi"
    requests:
      cpu: "10m"
      memory: "10Mi"
  large:
    limits:
      cpu: "200m"
      memory: "500Mi"
    requests:
      cpu: "20m"
      memory: "20Mi"
  unlimited: {}

#Pods Service Account
serviceAccount:
  nameOverride: mariadb-init
  roles:
    - read

wait_for_job_container:
  containers:
    - '{{ include "common.name" . }}'

readinessCheck:
  wait_for_global_operator:
    pods:
      - '{{ .Values.global.mariadbGalera.nameOverride }}-0'
  wait_for_local_operator:
    pods:
      - '{{ index .Values "mariadb-galera" "nameOverride" }}-0'
  wait_for_global:
    apps:
      - '{{ include "common.mariadbAppName" . }}'
  wait_for_local:
    apps:
      - '{{ include "common.mariadbAppName" . }}'
