# 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
    #When changing it to "true", also set "globalCluster: false"
    #as the dependency check will not work otherwise (Chart.yaml)
    localCluster: false
    globalCluster: true
    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.4.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: https://policy-xacml-pdp:6969/policy/pdpx/v1/decision
    http: http://policy-xacml-pdp:6969/policy/pdpx/v1/decision
  polEnv: TEST
  polReqId: xx
  disableHostVerification: true
  aaiCertPass: changeit
  aaiCertPath: /opt/etc/config/aai_keystore
  aaiAuth: QUFJOkFBSQ==
  aaiUri:
    https: https://aai:8443/aai/v14/
    http: http://aai:80/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: http
  internalPort: 8080
  externalPort: 8080

ingress:
  enabled: false

resources: {}
