# Copyright © 2020 Huawei Technologies Co., Ltd.
#
# 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
  nodePortPrefixExt: 304
  repository: nexus3.onap.org:10001
  readinessImage: onap/oom/readiness:3.0.1
  aafAgentImage: onap/aaf/aaf_agent:2.1.20
  envsubstImage: dibi/envsubst
  persistence:
    mountPath: /dockerdata-nfs
  security:
    aaf:
      enabled: false
  aaf:
    auth:
      header: Basic c29Ac28ub25hcC5vcmc6ZGVtbzEyMzQ1Ngo=
  mariadbGalera:
    serviceName: mariadb-galera
    servicePort: '3306'

#################################################################
# Secrets metaconfig
#################################################################
secrets:
  - uid: db-user-creds
    name: '{{ include "common.release" . }}-so-bpmn-infra-db-user-creds'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.db.userCredsExternalSecret) . }}'
    login: '{{ .Values.db.userName }}'
    password: '{{ .Values.db.userPassword }}'
    passwordPolicy: required
  - uid: db-admin-creds
    name: '{{ include "common.release" . }}-so-bpmn-infra-db-admin-creds'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.db.adminCredsExternalSecret) . }}'
    login: '{{ .Values.db.adminName }}'
    password: '{{ .Values.db.adminPassword }}'
    passwordPolicy: required
  - uid: server-bpel-creds
    name: '{{ include "common.release" . }}-so-server-bpel-creds'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.server.bpelCredsExternalSecret) . }}'
    login: '{{ .Values.server.bpel.username }}'
    password: '{{ .Values.server.bpel.password }}'
    passwordPolicy: required
  - uid: server-actuator-creds
    name: '{{ include "common.release" . }}-so-server-actuator-creds'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.server.actuatorCredsExternalSecret) . }}'
    login: '{{ .Values.server.actuator.username }}'
    password: '{{ .Values.server.actuator.password }}'
    passwordPolicy: required

#secretsFilePaths: |
#  - 'my file 1'
#  - '{{ include "templateThatGeneratesFileName" . }}'

#################################################################
# Application configuration defaults.
#################################################################
repository: nexus3.onap.org:10001
image: onap/so/nssmf-adapter:1.6.4
pullPolicy: Always

db:
  userName: so_user
  userPassword: so_User123
  # userCredsExternalSecret: some secret
  adminName: so_admin
  adminPassword: so_Admin123
  # adminCredsExternalSecret: some secret
server:
  actuator:
    username: mso_admin
    password: password1$
  bpel:
    username: bpel
    password: password1$
aai:
  auth: 2A11B07DB6214A839394AA1EC5844695F5114FC407FF5422625FB00175A3DCB8A1FF745F22867EFA72D5369D599BBD88DA8BED4233CF5586
mso:
  adapters:
    requestDb:
      auth: Basic YnBlbDpwYXNzd29yZDEk

replicaCount: 1
minReadySeconds: 10
containerPort: &containerPort 8088
logPath: ./logs/nssmf/
app: nssmf-adapter
service:
  type: ClusterIP
  ports:
    - name: api
      port: *containerPort
updateStrategy:
    type: RollingUpdate
    maxUnavailable: 1
    maxSurge: 1

soHelpers:
  nameOverride: so-nssmf-cert-init
  certInitializer:
    nameOverride: so-nssmf-cert-init
    credsPath: /opt/app/osaaf/local
  cadi:
    apiEnforcement: org.onap.so.nssmfAdapterPerm
  containerPort: *containerPort

# Resource Limit flavor -By Default using small
flavor: small
# Segregation for Different environment (Small and Large)
resources:
  small:
    limits:
      memory: 4Gi
      cpu: 2000m
    requests:
      memory: 1Gi
      cpu: 500m
  large:
    limits:
      memory: 8Gi
      cpu: 4000m
    requests:
      memory: 2Gi
      cpu: 1000m
  unlimited: {}
livenessProbe:
    path: /manage/health
    port: 8088
    scheme: HTTP
    initialDelaySeconds: 600
    periodSeconds: 60
    timeoutSeconds: 10
    successThreshold: 1
    failureThreshold: 3
ingress:
  enabled: false
nodeSelector: {}
tolerations: []
affinity: {}
