# Copyright © 2017 Amdocs, Bell Canada
# Modifications Copyright © 2018, 2020 AT&T
#
# 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:
  env:
    tomcatDir: "/usr/local/tomcat"
  # portal frontend port
  portalPort: "8989"
  portalFEPort: "30225"
  # application's front end hostname.  Must be resolvable on the client side environment
  portalHostName: "portal.api.simpledemo.onap.org"

#################################################################
# Secrets metaconfig
#################################################################
secrets:
  - uid: portal-cass
    name: &dbSecretName '{{ include "common.release" . }}-portal-cass-creds'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.casandraCredsExternalSecret) . }}'
    login: '{{ .Values.config.cassandraUsername }}'
    password: '{{ .Values.config.cassandraPassword }}'
  - uid: portal-backend-db
    name: &backendDbSecretName '{{ include "common.release" . }}-portal-backend-creds'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.mariadb.config.backendDbExternalSecret) . }}'
    login: '{{ .Values.mariadb.config.backendUserName }}'
    password: '{{ .Values.mariadb.config.backendPassword }}'
    passwordPolicy: required

config:
  logstashServiceName: log-ls
  logstashPort: 5044
  cassandraUsername: root
  cassandraPassword: Aa123456
# casandraCredsExternalSecret: some secret

portal-mariadb:
  nameOverride: portal-db
mariadb:
  service:
    name: portal-db
  config:
#   backendDbExternalSecret: some secret
    backendUserName: portal
    backendPassword: portal

widget:
  service:
    name: portal-widget
cassandra:
  service:
    name: portal-cassandra
  config:
    cassandraExternalSecret: *dbSecretName
portal-app:
  mariadb:
    config:
      backendDbExternalSecret: *backendDbSecretName
  cassandra:
    config:
      cassandraExternalSecret: *dbSecretName
portal-sdk:
  mariadb:
    config:
      backendDbExternalSecret: *backendDbSecretName
  cassandra:
    config:
      cassandraExternalSecret: *dbSecretName
messageRouter:
  service:
    name: message-router
ingress:
  enabled: false
