# Copyright © 2017 Amdocs, AT&T, Bell Canada, VMware
# Modifications Copyright © 2018 Intel Corporation
#
# 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:
  commonConfigPrefix: onap-oof-has
  image:
    optf_has: onap/optf-has:2.3.1
  persistence:
    enabled: true

#################################################################
# Secrets metaconfig
#################################################################
secrets:
  - uid: oof-onap-certs
    name: &oof-certs  '{{ include "common.release" . }}-oof-onap-certs'
    externalSecret: '{{ tpl (default "" .Values.certSecret) . }}'
    type: generic
    filePaths: '{{ .Values.secretsFilePaths }}'
  - uid: oof-has-etcd-root-password
    name: &root-password '{{ include "common.release" . }}-has-etcd-root-password'
    type: password
    password: '{{ .Values.config.etcd.rootPassword }}'
    policy: generate
  - uid: oof-has-etcd-secret
    name: &user-creds '{{ include "common.release" . }}-oof-has-etcd-secret'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.etcd.userCredentialsExternalSecret) . }}'
    login: '{{ .Values.config.etcd.appUser }}'
    password: '{{ .Values.config.etcd.appPassword }}'
    passwordPolicy: generate

pullPolicy: Always
nodePortPrefix: 302
dataRootDir: /dockerdata-nfs
config:
  dbBackend: etcd
  aaf:
    serviceName: aaf-service
    port: 8100
  aai:
    serviceName: aai
    port: 8443
  msb:
    serviceName: msb-iag
    port: 80
  music:
    serviceName: music
    port: 8443
  sms:
    serviceName: aaf-sms
    port: 10443
  sdc:
    serviceName: sdc-be
    port: 8443
  cps:
    service: cps-tbdmt
    port: 8080
  dcae:
    service: dcae-slice-analysis-ms
    port: 8080
  etcd:
    serviceName: &etcd-service oof-has-etcd
    port: 2379
    appUser: conductor
#    rootPassword:
#    appPassword:
#    userCredentialsExternalSecret:
# Resource Limit flavor -By Default using small
flavor: small
# Segregation for Different environment (Small and Large)
resources:
  small:
    limits:
      memory: 2Gi
      cpu: 1000m
    requests:
      memory: 1Gi
      cpu: 500m
  large:
    limits:
      memory: 4Gi
      cpu: 2000m
    requests:
      memory: 2Gi
      cpu: 1000m
  unlimited: {}

#component overrides
oof-has-api: &has-config
  enabled: true
  certSecret: *oof-certs
  config:
    etcd:
      userCredentialsExternalSecret: *user-creds
      configJobNameOverride: &job-name oof-has-etcd-config
oof-has-controller: *has-config
oof-has-data: *has-config
oof-has-reservation: *has-config
oof-has-solver: *has-config
music:
  enabled: false

#etcd subchart configurations
etcd:
  enabled: true
  replicaCount: 3
  nameOverride: &etcd-container oof-has-etcd
  service:
    name: *etcd-service
  persistence:
    mountSubPath: oof/etcd/data
    enabled: true
  flavor: &etcd-flavor large
  resources: &etcd-resources
    small:
      limits:
        cpu: 100m
        memory: 300Mi
      requests:
        cpu: 10m
        memory: 75Mi
    large:
      limits:
        cpu: 200m
        memory: 1Gi
      requests:
        cpu: 50m
        memory: 300Mi
    unlimited: {}

etcd-init:
  enabled: true
  nameOverride: *job-name
  etcd:
    serviceName: *etcd-service
    port : 2379
    containerName: *etcd-container
  config:
    userRootSecret: *root-password
    userCredentialsExternalSecret: *user-creds
    appRole: conductor
    keyPrefix: conductor
  flavor: *etcd-flavor
  resources: *etcd-resources

# Python doesn't support well dollar sign in password
passwordStrengthOverride: basic
