# ============LICENSE_START=======================================================
# Copyright (C) 2021 Nordix Foundation
# ================================================================================
# 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.
#
# SPDX-License-Identifier: Apache-2.0
# ============LICENSE_END=========================================================

#################################################################
# Secrets.
#################################################################
secrets:
  - uid: app-user-creds
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.appUserExternalSecret) . }}'
    login: '{{ .Values.config.appUserName }}'
    password: '{{ .Values.config.appUserPassword }}'
    passwordPolicy: generate
  - uid: sdnc-creds
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.odlCredsExternalSecret) . }}'
    login: '{{ .Values.config.sdnc.username }}'
    password: '{{ .Values.config.sdnc.password }}'
    passwordPolicy: required
  - uid: cps-core-creds
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.cpsCore.credsExternalSecret) . }}'
    login: '{{ .Values.config.cpsCore.username }}'
    password: '{{ .Values.config.cpsCore.password }}'
    passwordPolicy: generate

#################################################################
# Global configuration defaults.
#################################################################
global:
  ingress:
    virtualhost:
      baseurl: "simpledemo.onap.org"

image: onap/ncmp-dmi-plugin:1.3.0
containerPort: &svc_port 8080
managementPort: &mgt_port 8081

prometheus:
  enabled: false

service:
  type: ClusterIP
  name: &svc_name ncmp-dmi-plugin
  ports:
    - name: &port http
      port: *svc_port
    - name: http-management
      port: *mgt_port
      targetPort: *mgt_port

metrics:
  serviceMonitor:
    port: http-management
      ## specify target port if name is not given to the port in the service definition
      ##
    # targetPort: 8080
    path: /manage/prometheus
    interval: 60s
    basicAuth:
      enabled: false

pullPolicy: IfNotPresent
# flag to enable debugging - application support required
debugEnabled: false
nodeSelector: {}
affinity: {}
# Resource Limit flavor -By Default using small
flavor: small
# default number of instances
replicaCount: 1
# Segregation for Different environment (Small and Large)
resources:
  small:
    limits:
      cpu: 2
      memory: 2Gi
    requests:
      cpu: 1
      memory: 1Gi
  large:
    limits:
      cpu: 4
      memory: 4Gi
    requests:
      cpu: 2
      memory: 2Gi
  unlimited: {}
# probe configuration parameters
liveness:
  initialDelaySeconds: 20
  periodSeconds: 20
  # necessary to disable liveness probe when setting breakpoints
  # in debugger so K8s doesn't restart unresponsive container
  enabled: true
  path: /manage/health
  port: *mgt_port

readiness:
  initialDelaySeconds: 15
  periodSeconds: 15
  path: /manage/health
  port: *mgt_port

ingress:
  enabled: true
  service:
    - baseaddr: "cps-ncmp-dmi-plugin-api"
      path: "/"
      name: *svc_name
      port: *svc_port

serviceAccount:
  nameOverride: ncmp-dmi-plugin
  roles:
    - read

securityContext:
  user_id: 100
  group_id: 655533

#################################################################
# Application configuration defaults.
#################################################################

config:

  # REST API basic authentication credentials (passsword is generated if not provided)
  appUserName: ncmpuser
  #appUserPassword:
  spring:
    profile: helm

  dmiServiceUrl: http://*svc_name:*svc_port
  sdnc:
    url: http://sdnc:8181
    username: admin
    password: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
    topologyId: topology-netconf
  cpsCore:
    url: http://cps-core:8080
    username: cpsuser
    #password:

# Any new property can be added in the env by setting in overrides in the format mentioned below
# All the added properties must be in "key: value" format insead of yaml.
#  additional:
#    spring.config.max-size: 200
#    spring.config.min-size: 10

logging:
  level: DEBUG
  cps: DEBUG
  path: /tmp

readinessCheck:
  wait_for:
    - cps-core

minReadySeconds: 10
updateStrategy:
  type: RollingUpdate
  maxUnavailable: 0
  maxSurge: 1

# Strimzi KafkaUser and Topic config
kafkaTopic:
  - name: &ncmpDmiCmAvcSubscriptionNcmpDmiPluginTopic ncmp-dmi-cm-avc-subscription-ncmp-dmi-plugin
    retentionMs: 7200000
    segmentBytes: 1073741824
  - name: &dmiNcmpCmAvcSubscriptionTopic dmi-ncmp-cm-avc-subscription
    retentionMs: 7200000
    segmentBytes: 1073741824
  - name: &ncmpAsyncM2MTopic ncmp-async-m2m
    retentionMs: 7200000
    segmentBytes: 1073741824

kafkaUser:
  authenticationType: scram-sha-512
  acls:
    - name: ncmp-dmi-plugin-group
      type: group
      operations: [Read]
    - name: *ncmpDmiCmAvcSubscriptionNcmpDmiPluginTopic
      type: topic
      operations: [Read]
    - name: *dmiNcmpCmAvcSubscriptionTopic
      type: topic
      operations: [Write]
    - name: *ncmpAsyncM2MTopic
      type: topic
      operations: [Write]

topics:
  config:
    app.ncmp.async.topic: *ncmpAsyncM2MTopic
    app.dmi.avc.subscription-topic: *ncmpDmiCmAvcSubscriptionNcmpDmiPluginTopic
    app.dmi.avc.subscription-response-topic: *dmiNcmpCmAvcSubscriptionTopic
