#============LICENSE_START========================================================
# ================================================================================
# Copyright (c) 2021 ZTE Corporation Intellectual Property. All rights reserved.
# ================================================================================
# 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:
  nodePortPrefixExt: 302
  msbProtocol: http
  msbServiceName: msb-iag
  msbPort: 80
  postgres:
    localCluster: false

#################################################################
# Application configuration defaults.
#################################################################
# application image
image: onap/holmes/engine-management:12.0.1
consulLoaderImage: onap/org.onap.dcaegen2.deployments.consul-loader-container:1.0.0

#################################################################
# Secrets metaconfig
#################################################################
secrets:
- uid: pg-user-creds
  type: basicAuth
  externalSecret: '{{ tpl (default "" .Values.config.pgConfig.dbUserCredsExternalSecret) . }}'
  login: '{{ .Values.config.pgConfig.dbUser }}'
  password: '{{ .Values.config.pgConfig.dbUserPassword }}'

# application configuration
config:
  logstashServiceName: log-ls
  logstashPort: 5044
  # Addresses of other ONAP entities
  address:
    consul:
      host: consul-server
      port: 8500
  pgConfig:
    dbName: defaultName
    dbHost: defaultHost
    dbPort: 1234
    dbUser: admin
    dbUserPassword: admin
    # dbUserCredsExternalSecret
  msb:
    serviceName: msb-iag
    port: 80
  aai:
    aaiPort: 80
    username: AAI
    password: AAI

service:
  type: ClusterIP
  name: holmes-engine-mgmt
  ports:
  - name: http-rest
    port: &svc_port 9102
  annotations:
    msb.onap.org/service-info: |
      {{ if .Values.global.msbEnabled -}}[
        {
          "serviceName": "holmes-engine-mgmt",
          "version": "v1",
          "url": "/api/holmes-engine-mgmt/v1",
          "path":"/api/holmes-engine-mgmt/v1",
          "protocol": "REST",
          "visualRange":"0|1",
          "port": "9102",
          "enable_ssl": false
        }
      ]{{ end }}

# probe configuration parameters
liveness:
  initialDelaySeconds: 10
  periodSeconds: 10
  path: /api/holmes-engine-mgmt/v1/healthcheck
  scheme: HTTP
  port: *svc_port
  enabled: true

readiness:
  initialDelaySeconds: 30
  periodSeconds: 30
  path: /api/holmes-engine-mgmt/v1/healthcheck
  scheme: HTTP
  port: *svc_port

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

readinessCheck:
  wait_for_global:
    jobs:
      - '{{ include "common.release" . }}-holmes-postgres-init-config-job'
  wait_for_local:
    - '{{ .Values.global.postgres.container.name }}'

#Pods Service Account
serviceAccount:
  nameOverride: holmes-engine-mgmt
  roles:
    - read
