# Copyright © 2020 Samsung Electronics
# Copyright © 2019 Orange, Bell Canada
# Copyright © 2017 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:
  nodePortPrefix: 302
  nodePortPrefixExt: 304
  repository: nexus3.onap.org:10001
  readinessRepository: oomk8s
  readinessImage: readiness-check:2.0.2
  loggingRepository: docker.elastic.co
  loggingImage: beats/filebeat:5.5.0
  persistence:
    mountPath: /dockerdata-nfs

#################################################################
# Secrets metaconfig
#################################################################
secrets:
  - name: &dbUserSecretName '{{ include "common.release" . }}-cds-db-secret'
    uid: 'cds-db-secret'
    type: basicAuth
    externalSecret: '{{ ternary "" (tpl (default "" (index .Values "mariadb-galera" "config" "userCredentialsExternalSecret")) .) (hasSuffix "cds-db-secret" (index .Values "mariadb-galera" "config" "userCredentialsExternalSecret"))}}'
    login: '{{ index .Values "mariadb-galera" "config" "userName" }}'
    password: '{{ index .Values "mariadb-galera" "config" "userPassword" }}'
  - name: &dbRootPasswordSecretName '{{ include "common.release" . }}-cds-db-root-pass'
    uid: 'cds-db-root-pass'
    type: password
    externalSecret: '{{ ternary "" (tpl (default "" (index .Values "mariadb-galera" "config" "mariadbRootPasswordExternalSecret")) .) (hasSuffix "cds-db-root-pass" (index .Values "mariadb-galera" "config" "mariadbRootPasswordExternalSecret"))}}'
    password: '{{ index .Values "mariadb-galera" "config" "mariadbRootPassword" }}'

#################################################################
# Application configuration defaults.
#################################################################
# application images
repository: nexus3.onap.org:10001
pullPolicy: Always


subChartsOnly:
  enabled: true

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

# default number of instances
replicaCount: 1

nodeSelector: {}

affinity: {}

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

readiness:
  initialDelaySeconds: 10
  periodSeconds: 10

ingress:
  enabled: false

mariadb-galera:
  config:
    userName: sdnctl
    # userPassword: sdnctl
    userCredentialsExternalSecret: *dbUserSecretName
    mariadbRootPasswordExternalSecret: *dbRootPasswordSecretName
    mysqlDatabase: &mysqlDbName sdnctl
  nameOverride: &dbServer cds-db
  service:
    name: cds-db
    portName: cds-db
  replicaCount: 1
  persistence:
    enabled: true
    mountSubPath: cds/data

cds-blueprints-processor:
  config:
    cdsDB:
      dbServer: *dbServer
      dbPort: 3306
      dbName: *mysqlDbName
      dbCredsExternalSecret: *dbUserSecretName
      dbRootPassExternalSecret: *dbRootPasswordSecretName

#Resource Limit flavor -By Default using small
flavor: small
#segregation for different envionment (Small and Large)

resources:
  small:
    limits:
      cpu: 2
      memory: 4Gi
    requests:
      cpu: 1
      memory: 2Gi
  large:
    limits:
      cpu: 4
      memory: 8Gi
    requests:
      cpu: 2
      memory: 4Gi
  unlimited: {}
