# 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:2.1.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

serviceMesh:
  authorizationPolicy:
    authorizedPrincipals:
      - serviceAccount: strimzi-kafka-read

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: "800Mi"
    requests:
      cpu: "0.5"
      memory: "800Mi"
  large:
    limits:
      cpu: "2"
      memory: "1.6Gi"
    requests:
      cpu: "1"
      memory: "1.6Gi"
  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 }}'

config:
  # Event consumption (kafka) properties
  kafka:
    consumer:
      groupId: policy-drools-pdp
  app:
    listener:
      policyPdpPapTopic: policy-pdp-pap

# Strimzi Kafka config
kafkaUser:
  authenticationType: scram-sha-512
  acls:
    - name: policy-drools-pdp
      type: group
      operations: [ Create, Describe, Read, Write ]
    - name: policy-pdp-pap
      type: topic
      patternType: prefix
      operations: [ Create, Describe, Read, Write ]
