# 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:
  repository: nexus3.onap.org:10001
  readinessImage: onap/oom/readiness:3.0.1
  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.
#################################################################

image: mariadb:10.1.38
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


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: {}
