# 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

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