# Copyright (C) 2018  AT&T Intellectual Property.
#
# 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 default values that can be inherited by
# all subcharts.
#################################################################
global:

  # Change to an unused port prefix range to prevent port conflicts
  # with other instances running within the same k8s cluster
  nodePortPrefix: 302

  # image pull policy
  pullPolicy: IfNotPresent

  mariadbGalera: &mariadbGalera
    #This flag allows SO to instantiate its own mariadb-galera cluster
    localCluster: false
    service: mariadb-galera
    internalPort: 3306
    nameOverride: mariadb-galera

#################################################################
# Secrets metaconfig
#################################################################
secrets:
  - uid: neng-db-secret
    name: &dbUserSecretName '{{ include "common.release" . }}-neng-db-secret'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.db.externalSecret) . }}'
    login: '{{ .Values.config.db.userName }}'
    password: '{{ .Values.config.db.userPassword }}'
  - uid: pol-basic-auth-secret
    name: '{{ include "common.release" . }}-pol-basic-auth-secret'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.polBasicAuthSecret) . }}'
    login: '{{ .Values.config.polBasicAuthUser }}'
    password: '{{ .Values.config.polBasicAuthPassword }}'

# sub-chart config
mariadb-galera:
  db:
    user: sdnctl
    # password:
    externalSecret: *dbUserSecretName
    name: &mysqlDbName nengdb
  nameOverride: nengdb
  service:
    name: nengdb
    portName: nengdbport
  replicaCount: 1
  persistence:
    enabled: true
    mountSubPath: network-name-gen/data

mariadb-init:
  config:
    userCredentialsExternalSecret: *dbUserSecretName
    mysqlDatabase: *mysqlDbName
  nameOverride: nengdb-init

#################################################################
# Application configuration defaults.
#################################################################
# application image
image: onap/ccsdk-apps-ms-neng:1.2.0
pullPolicy: IfNotPresent

# application configuration
config:
  db:
    userName: nenguser
    # userPassword: password
    # userCredentialsExternalSecret: some-secret
  springProfile: live
  polClientAuth: cHl0aG9uOnRlc3Q=
  polBasicAuthUser: healthcheck
  polBasicAuthPassword: zb!XztG34
  polUrl: https://policy-xacml-pdp:6969/policy/pdpx/v1/decision
  polEnv: TEST
  polReqId: xx
  aaiCertPass: changeit
  aaiCertPath: /opt/etc/config/aai_keystore
  aaiAuth: QUFJOkFBSQ==
  aaiUri: https://aai:8443/aai/v14/

# default number of instances
replicaCount: 1

nodeSelector: {}

affinity: {}

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

readiness:
  initialDelaySeconds: 10
  periodSeconds: 10

service:
  type: ClusterIP
  name: neng-serv
  portName: neng-serv-port
  internalPort: 8080
  externalPort: 8080

ingress:
  enabled: false

resources: {}
