# Copyright © 2018  AT&T Intellectual Property.  All rights reserved.
# Modifications Copyright © 2018 Amdocs,Bell Canada
#
# 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:
  - uid: pg-root-pass
    name: &pgRootPassSecretName '{{ include "common.release" . }}-dmaap-bc-pg-root-pass'
    type: password
    externalSecret: '{{ ternary "" (tpl (default "" .Values.postgres.config.pgRootPasswordExternalSecret) .) (hasSuffix "dmaap-bc-pg-root-pass" .Values.postgres.config.pgRootPasswordExternalSecret) }}'
    password: '{{ .Values.postgres.config.pgRootpassword }}'
    policy: generate
  - uid: pg-user-creds
    name: &pgUserCredsSecretName '{{ include "common.release" . }}-dmaap-bc-pg-user-creds'
    type: basicAuth
    externalSecret: '{{ ternary "" (tpl (default "" .Values.postgres.config.pgUserExternalSecret) .) (hasSuffix "dmaap-bc-pg-user-creds" .Values.postgres.config.pgUserExternalSecret) }}'
    login: '{{ .Values.postgres.config.pgUserName }}'
    password: '{{ .Values.postgres.config.pgUserPassword }}'
    passwordPolicy: generate

#################################################################
# Application configuration defaults.
#################################################################
pullPolicy: Always

# application images
image: onap/dmaap/dmaap-bc:2.0.6


# application configuration
dmaapMessageRouterService: message-router

# change the following value to point to Windriver instance maintained
# by AAF team.
# e.g.
#aafURL: https://aaf-onap-test.osaaf.org:8095/proxy/
aafURL: https://aaf-service:8100/
aafLocateUrl: https://aaf-locate:8095
topicMgrUser: dmaap-bc@dmaap-bc.onap.org
topicMgrPwd: demo123456!
adminUser: aaf_admin@people.osaaf.org
adminPwd: demo123456!

#################################################################
# AAF part
#################################################################
certInitializer:
  nameOverride: dmaap-bc-cert-initializer
  aafDeployFqi: deployer@people.osaaf.org
  aafDeployPass: demo123456!
  # aafDeployCredsExternalSecret: some secret
  fqdn: dmaap-bc
  fqi: dmaap-bc@dmaap-bc.onap.org
  publicFqdn: dmaap-bc.onap.org
  cadiLatitude: 0.0
  cadiLongitude: 0.0
  app_ns: org.osaaf.aaf
  credsPath: /opt/app/osaaf/local

persistence:
  aafCredsPath: /opt/app/osaaf/local/

# for Casablanca default deployment, leave this true to
# get a topic namespace that matches MR.  When set to false,
# it will compose the topic namespace using the kubernetes namespace value
fixedTopicNamespace: true

# for quicker deployments in dev, ability to disable using postgres
PG:
  enabled: true

nodeSelector: {}

affinity: {}

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

readiness:
  initialDelaySeconds: 10
  periodSeconds: 10
  port: api


service:
  type: NodePort
  name: dmaap-bc
  ports:
    - name: api
      port: 8443
      plain_port: 8080
      port_protocol: http
      nodePort: 42


# application configuration override for postgres
postgres:
  nameOverride: dbc-pg
  service:
    name: dbc-postgres
    name2: dbc-pg-primary
    name3: dbc-pg-replica
  container:
    name:
      primary: dbc-pg-primary
      replica: dbc-pg-replica
  config:
    pgUserName: dmaap_admin
    pgDatabase: dmaap
    pgUserExternalSecret: *pgUserCredsSecretName
    pgRootPasswordExternalSecret: *pgRootPassSecretName
  persistence:
    mountSubPath: dbc/data
    mountInitPath: dbc

ingress:
  enabled: false
  service:
    - baseaddr: "dmaapbc"
      name: "dmaap-bc"
      port: 8443
  config:
    ssl: "redirect"

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

#Pods Service Account
serviceAccount:
  nameOverride: dmaap-bc
  roles:
    - read
