# 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 repositories
  repository: nexus3.onap.org:10001


  # readiness check
  readinessRepository: oomk8s
  readinessImage: readiness-check:2.0.0

  # image pull policy
  pullPolicy: IfNotPresent

#################################################################
# Secrets metaconfig
#################################################################
secrets:
  - uid: "db-user-creds"
    externalSecret: '{{- include "common.mariadb.secret.userCredentialsSecretName" (dict "dot" . "chartName" (index .Values "mariadb-galera" "nameOverride")) }}'
    type: basicAuth
  - uid: "db-root-pass"
    externalSecret: '{{- include "common.mariadb.secret.rootPassSecretName" (dict "dot" . "chartName" (index .Values "mariadb-galera" "nameOverride")) }}'
    type: password

# sub-chart config
mariadb-galera:
  config:
      userName: nenguser
      userPassword: nenguser123
      mariadbRootPassword: nenguser123
      mysqlDatabase: nengdb
  nameOverride: nengdb
  service:
    name: nengdb
    portName: nengdbport
  replicaCount: 1
  persistence:
    enabled: true
    mountSubPath: network-name-gen/data


#################################################################
# Application configuration defaults.
#################################################################
# application image
repository: nexus3.onap.org:10001
image: onap/ccsdk-apps-ms-neng:0.6.3
pullPolicy: IfNotPresent

# application configuration
config:
  dbUrl: jdbc:mysql://nengdb:3306/nengdb
  springProfile: live
  polClientAuth: cHl0aG9uOnRlc3Q=
  polBasicAuth: dGVzdHBkcDphbHBoYTEyMw==
  polUrl: https://pdp:8081/pdp/api/getConfig
  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: {}
