# Copyright © 2022 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.

#################################################################
# Global configuration defaults.
#################################################################
global:
  nodePortPrefixExt: 304
  persistence:
    mountPath: /dockerdata-nfs
  ingress:
    virtualhost:
      baseurl: &baseurl "simpledemo.onap.org"
      preaddr: &preaddr ""
      postaddr: &postaddr ""

#################################################################
# Application configuration defaults.
#################################################################
replicaCount: 3
config:
  kafkaVersion: 3.2.3
  authType: simple
  saslMechanism: &saslMech scram-sha-512
  kafkaInternalPort: &plainPort 9092
  strimziKafkaAdminUser: &adminUser strimzi-kafka-admin
  advertisedHost: kafka-api.simpledemo.onap.org
  advertizedPortBroker0: &advertizedPortBroker0 9000
  advertizedPortBroker1: &advertizedPortBroker1 9001
  advertizedPortBroker2: &advertizedPortBroker2 9002

persistence:
  enabled: &pvenabled true
  mountPath: /dockerdata-nfs
  kafka:
    enabled: *pvenabled
    # default values of 2Gi for dev env.
    # Production values should be dimensioned according to requirements. ie >= 10Gi
    size: 2Gi
    volumeReclaimPolicy: Retain
    accessMode: ReadWriteOnce
    mountPath: /dockerdata-nfs
    mountSubPath: strimzi-kafka/kafka
  zookeeper:
    enabled: *pvenabled
    size: 1Gi
    volumeReclaimPolicy: Retain
    accessMode: ReadWriteOnce
    mountPath: /dockerdata-nfs
    mountSubPath: strimzi-kafka/zk

#Pods Service Account
serviceAccount:
  nameOverride: strimzi-kafka
  roles:
    - read

ingress:
  enabled: false
  service:
  - baseaddr: "kafka-bootstrap-api"
    name: "onap-strimzi-kafka-external-bootstrap"
    port: 9094
    protocol: tcp
    exposedPort: 9010
    exposedProtocol: TLS
  - baseaddr: "kafka-api"
    tcpRoutes:
    - name: "onap-strimzi-kafka-0"
      port: 9094
      exposedPort: *advertizedPortBroker0
      exposedProtocol: TLS
    - name: "onap-strimzi-kafka-1"
      port: 9094
      exposedPort: *advertizedPortBroker1
      exposedProtocol: TLS
    - name: "onap-strimzi-kafka-2"
      port: 9094
      exposedPort: *advertizedPortBroker2
      exposedProtocol: TLS

######################
#  Component overrides
######################
strimzi-kafka-bridge:
  enabled: true
  config:
    saslMechanism: *saslMech
    kafkaInternalPort: *plainPort
    strimziKafkaAdminUser: *adminUser