# Copyright © 2017 Amdocs
# Copyright © 2017, 2021 Bell Canada
# Modifications Copyright © 2018-2022 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 defaults.
#################################################################
global:
  nodePortPrefix: 302

#################################################################
# Secrets metaconfig
#################################################################
secrets:
  - uid: db-secret
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.db.credsExternalSecret) . }}'
    login: '{{ .Values.db.user }}'
    password: '{{ .Values.db.password }}'
    passwordPolicy: required
  - uid: telemetry-creds
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.telemetry.credsExternalSecret) . }}'
    login: '{{ .Values.telemetry.user }}'
    password: '{{ .Values.telemetry.password }}'
    passwordPolicy: required

#################################################################
# Application configuration defaults.
#################################################################
# application image
image: onap/policy-pdpd-cl:1.12.1
pullPolicy: Always

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

# default number of instances
replicaCount: 1

nodeSelector: {}

affinity: {}

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

readiness:
  initialDelaySeconds: 60
  periodSeconds: 10

service:
  type: ClusterIP
  name: policy-drools-pdp
  internalPort: 6969
  ports:
    - name: http
      port: 6969
    - name: http-2
      port: 9696

ingress:
  enabled: false

server:
  jvmOpts: -server -XshowSettings:vm

telemetry:
  user: demo@people.osaaf.org
  password: demo123456!

nexus:
  name: policy-nexus
  port: 8081
  user: admin
  password: admin123
  offline: true

db:
  name: policy-mariadb
  user: policy_user
  password: policy_user

pap:
  user: policyadmin
  password: zb!XztG34

pdp:
  user: healthcheck
  password: zb!XztG34

papl:
  user: testpap
  password: alpha123

pdpl:
  user: testpdp
  password: alpha123

aai:
  user: policy@policy.onap.org
  password: demo123456!

so:
  user: InfraPortalClient
  password: password1$

vfc:
  user:
  password:

sdnc:
  user: admin
  password: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U

dmaap:
  brmsgw:
    key:
    password:
  pap:
    key:
    password:

cds:
  grpc:
    user: ccsdkapps
    password: ccsdkapps
    svcName: cds-blueprints-processor-grpc
    svcPort: 9111

# Resource Limit flavor -By Default using small
# Segregation for Different environment (small, large, or unlimited)
flavor: small
resources:
  small:
    limits:
      cpu: 1
      memory: 4Gi
    requests:
      cpu: 100m
      memory: 1Gi
  large:
    limits:
      cpu: 2
      memory: 8Gi
    requests:
      cpu: 200m
      memory: 2Gi
  unlimited: {}

#Pods Service Account
serviceAccount:
  nameOverride: policy-drools-pdp
  roles:
    - read

metrics:
  serviceMonitor:
    # Override the labels based on the Prometheus config parameter: serviceMonitorSelector.
    # The default operator for prometheus enforces the below label.
    labels:
      release: prometheus
    enabled: true
    port: policy-drools-pdp-9696
    interval: 60s
    isHttps: false
    basicAuth:
      enabled: true
      externalSecretNameSuffix: policy-drools-pdp-telemetry-creds
      externalSecretUserKey: login
      externalSecretPasswordKey: password
    selector:
      app: '{{ include "common.name" . }}'
      chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
      release: '{{ include "common.release" . }}'
      heritage: '{{ .Release.Service }}'
