# 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

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