# 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.10


# 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

securityContext:
  user_id: 1000
  group_id: 101

# 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

wait_for_job_container:
  containers:
    - 'dmaap-provisioning-job'

