#  ============LICENSE_START=======================================================
#   Copyright (C) 2023 Nordix Foundation.
#  ================================================================================
#  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:
  persistence: {}
  #Strimzi Kafka properties
  kafkaTopics:
    acRuntimeTopic:
      name: &acRuntimeTopic policy.clamp-runtime-acm

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

#################################################################
# Application configuration defaults.
#################################################################
# application image
image: onap/policy-clamp-ac-kserve-ppnt:7.1.0
pullPolicy: Always

componentName: &componentName policy-clamp-ac-kserve-ppnt

# application configuration
restServer:
  user: participantUser
  password: zb!XztG34

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

# default number of instances
replicaCount: 1

nodeSelector: {}

affinity: {}
ingress:
  enabled: false

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

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

readiness:
  initialDelaySeconds: 60
  periodSeconds: 10
  port: kserve-api

service:
  type: ClusterIP
  name: *componentName
  ports:
    - name: kserve-api
      port: 8087

flavor: small
resources:
  small:
    limits:
      cpu: "1"
      memory: "700Mi"
    requests:
      cpu: "0.5"
      memory: "700Mi"
  large:
    limits:
      cpu: "2"
      memory: "1.4Gi"
    requests:
      cpu: "1"
      memory: "1.4Gi"
  unlimited: {}
#Pods Service Account
serviceAccount:
  nameOverride: *componentName
  roles:
    - create

config:
# Any new property can be added in the env by setting in overrides in the format mentioned below
# All the added properties must be in "key: value" format instead of yaml.
# additional:
#   spring.config.max-size: 200
#   spring.config.min-size: 10
# Strimzi Kafka config
kafkaUser:
  authenticationType: scram-sha-512
  acls:
    - name: *componentName
      type: group
      operations: [Read]
    - name: *acRuntimeTopic
      type: topic
      operations: [Read, Write]
