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