#  ============LICENSE_START=======================================================
#   Copyright (C) 2018 Ericsson. All rights reserved.
#   Modifications Copyright (C) 2019-2021 AT&T Intellectual Property.
#   Modifications Copyright © 2022 Nordix Foundation
#   Modification (C) 2023 Deutsche Telekom. All rights reserved.
#  ================================================================================
#  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.
#
#  SPDX-License-Identifier: Apache-2.0
#  ============LICENSE_END=========================================================

#################################################################
# Global configuration defaults.
#################################################################
global:
  nodePortPrefix: 302
  persistence: {}

#################################################################
# Secrets metaconfig
#################################################################
secrets:
  - uid: restserver-creds
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.restServer.credsExternalSecret) . }}'
    login: '{{ .Values.restServer.user }}'
    password: '{{ .Values.restServer.password }}'
  - uid: policy-kafka-user
    externalSecret: '{{ tpl (default "" .Values.config.jaasConfExternalSecret) . }}'
    type: genericKV
    envs:
      - name: sasl.jaas.config
        value: '{{ .Values.config.someConfig }}'
        policy: generate

#################################################################
# Application configuration defaults.
#################################################################
# application image
image: onap/policy-apex-pdp:3.1.3
pullPolicy: Always

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

# application configuration

restServer:
  user: healthcheck
  password: zb!XztG34

# default number of instances
replicaCount: 1

nodeSelector: {}

affinity: {}

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

readiness:
  initialDelaySeconds: 20
  periodSeconds: 10

service:
  type: ClusterIP
  name: policy-apex-pdp
  internalPort: 6969
  ports:
    - name: http
      port: 6969

ingress:
  enabled: false

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

# Resource Limit flavor -By Default using small
# Segregation for Different environment (Small and Large)
flavor: small
resources:
  small:
    limits:
      cpu: "1"
      memory: "1Gi"
    requests:
      cpu: "0.5"
      memory: "1Gi"
  large:
    limits:
      cpu: "2"
      memory: "2Gi"
    requests:
      cpu: "1"
      memory: "2Gi"
  unlimited: {}

#Pods Service Account
serviceAccount:
  nameOverride: policy-apex-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-apex-pdp
    interval: 60s
    isHttps: false
    basicAuth:
      enabled: true
      externalSecretNameSuffix: policy-apex-pdp-restserver-creds
      externalSecretUserKey: login
      externalSecretPasswordKey: password
    selector:
      app: '{{ include "common.name" . }}'
      chart: '{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}'
      release: '{{ include "common.release" . }}'
      heritage: '{{ .Release.Service }}'

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

kafkaUser:
  authenticationType: scram-sha-512
  acls:
    - name: policy-apex
      type: group
      operations: [Create, Describe, Read, Write]
    - name: policy-pdp-pap
      type: topic
      patternType: prefix
      operations: [Create, Describe, Read, Write]
    - name: policy-heartbeat
      type: topic
      patternType: prefix
      operations: [Create, Describe, Read, Write]
