# ================================ LICENSE_START =============================
# ============================================================================
#  Copyright (C) 2021 Wipro Limited.
# ============================================================================
# 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.
# ================================= LICENSE_END ==============================

#################################################################
# Global Configuration Defaults.
#################################################################
global:
  nodePortPrefix: 302
  nodePortPrefixExt: 304
  centralizedLoggingEnabled: true

#################################################################
# Filebeat Configuration Defaults.
#################################################################
filebeatConfig:
  logstashServiceName: log-ls
  logstashPort: 5044

#################################################################
# Secrets Configuration.
#################################################################
secrets:
  - uid: &aafCredsUID aafcreds
    type: basicAuth
    login: '{{ .Values.aafCreds.identity }}'
    password: '{{ .Values.aafCreds.password }}'
    passwordPolicy: required
  - uid: &pgUserCredsSecretUid pg-user-creds
    name: &pgUserCredsSecretName '{{ include "common.release" . }}-datalake-pg-user-creds'
    type: basicAuth
    externalSecret: '{{ ternary "" (tpl (default "" .Values.postgres.config.pgUserExternalSecret) .) (hasSuffix "datalake-pg-user-creds" .Values.postgres.config.pgUserExternalSecret) }}'
    login: '{{ .Values.postgres.config.pgUserName }}'
    password: '{{ .Values.postgres.config.pgUserPassword }}'
    passwordPolicy: generate

#################################################################
# InitContainer Images.
#################################################################
tlsImage: onap/org.onap.dcaegen2.deployments.tls-init-container:2.1.0
consulLoaderImage: onap/org.onap.dcaegen2.deployments.consul-loader-container:1.1.1

#################################################################
# Application Configuration Defaults.
#################################################################
# Application Image
image: onap/org.onap.dcaegen2.services.datalakefeeder:1.1.1
pullPolicy: Always

# Log directory where logging sidecar should look for log files
# if path is set to null sidecar won't be deployed in spite of
# global.centralizedLoggingEnabled setting.
log:
  path: /var/log/ONAP/dcaegen2/services/datalake
logConfigMapNamePrefix: '{{ include "common.fullname" . }}'

# Directory where TLS certs should be stored
# if absent, no certs will be retrieved and stored
certDirectory: /opt/app/datalake/etc/certs

# TLS role -- set to true if microservice acts as server
# If true, an init container will retrieve a server cert
# and key from AAF and mount them in certDirectory.
tlsServer: true

# Dependencies
readinessCheck:
  wait_for:
    - dcae-config-binding-service
    - aaf-cm
    - &postgresName dcae-datalake-postgres

# Probe Configuration
readiness:
  initialDelaySeconds: 90
  periodSeconds: 90
  timeoutSeconds: 10
  path: /datalake/v1/topics
  scheme: HTTP
  port: 1680

# Service Configuration
service:
  type: ClusterIP
  name: dl-feeder
  ports:
    - name: http
      port: 1680
      port_protocol: http

# AAF Credentials
aafCreds:
  identity: dcae@dcae.onap.org
  password: demo123456!

credentials:
- name: PG_USER
  uid:  *pgUserCredsSecretUid
  key: login
- name: PG_PASSWORD
  uid: *pgUserCredsSecretUid
  key: password

# Initial Application Configuration
applicationConfig:
  PG_HOST: dcae-datalake-pg-primary
  PG_PORT: 5432
  PG_USER: ${PG_USER}
  PG_PASSWORD: ${PG_PASSWORD}
  PG_DB: datalake
  HOSTNAME: dcae-datalake-feeder
  CONSUL_HOST: consul
  CONFIG_BINDING_SERVICE: 30408

applicationEnv:
  PG_HOST: dcae-datalake-pg-primary
  PG_PORT: '5432'
  PG_USER:
    secretUid: *pgUserCredsSecretUid
    key: login
  PG_PASSWORD:
    secretUid: *pgUserCredsSecretUid
    key: password
  PG_DB: datalake

# Resource Limit Flavor -By Default Using Small
flavor: small

# Segregation for Different Environment (Small and Large)
resources:
  small:
    limits:
      cpu: 1
      memory: 1Gi
    requests:
      cpu: 1
      memory: 1Gi
  large:
    limits:
      cpu: 2
      memory: 2Gi
    requests:
      cpu: 2
      memory: 2Gi
  unlimited: {}

#################################################################
# Application configuration Overriding Defaults in the Postgres.
#################################################################
postgres:
  nameOverride: *postgresName
  service:
    name: *postgresName
    name2: dcae-datalake-pg-primary
    name3: dcae-datalake-pg-replica
  container:
    name:
      primary: dcae-datalake-pg-primary
      replica: dcae-datalake-pg-replica
  persistence:
    mountSubPath: datalake/data
    mountInitPath: datalake
  config:
    pgUserName: datalake
    pgDatabase: datalake
    pgUserExternalSecret: *pgUserCredsSecretName

#Pods Service Account
serviceAccount:
  nameOverride: dcae-datalake-feeder
  roles:
    - read
