# Copyright © 2017 Amdocs
# Copyright © 2017, 2021 Bell Canada
# Modifications Copyright © 2018-2021 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

#################################################################
# Application configuration defaults.
#################################################################
# application image
image: onap/policy-pdpd-cl:1.10.0
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: 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
  portName: policy-drools-pdp
  internalPort: 6969
  externalPort: 6969
  nodePort: 17
  internalPort2: 9696
  externalPort2: 9696
  nodePort2: 21

ingress:
  enabled: false

# Default installation values to be overridden

certInitializer:
  nameOverride: policy-drools-pdp-cert-initializer
  aafDeployFqi: deployer@people.osaaf.org
  aafDeployPass: demo123456!
  fqdn: policy
  fqi: policy@policy.onap.org
  public_fqdn: policy.onap.org
  cadi_latitude: "0.0"
  cadi_longitude: "0.0"
  credsPath: /opt/app/osaaf/local
  app_ns: org.osaaf.aaf
  uid: 100
  gid: 101
  aaf_add_config: >
    echo "export KEYSTORE='{{ .Values.credsPath }}/org.onap.policy.p12'" >> {{ .Values.credsPath }}/.ci;
    echo "export KEYSTORE_PASSWD='${cadi_keystore_password_p12}'" >> {{ .Values.credsPath }}/.ci;
    echo "export CADI_KEYFILE='{{ .Values.credsPath }}/org.onap.policy.keyfile'" >> {{ .Values.credsPath }}/.ci;
    chown -R {{ .Values.uid }}:{{ .Values.gid }} $(dirname {{ .Values.credsPath }});

server:
  jvmOpts: -server -XshowSettings:vm

aaf:
  enabled: "false"

keystore:
  password: Pol1cy_0nap

truststore:
  password: Pol1cy_0nap

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
