# Copyright 2019-2023 Open Networking Foundation (ONF) and the ONF Contributors
#
# 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.
---
nameOverride: ~
fullNameOverride: ~

# Default overrides
global:
  voltha_release_name: voltha
  stack_name: voltha
  log_level: "WARN"
  image_registry: ""
  image_tag: ~
  image_org: "voltha/"
  image_pullPolicy: "Always"
  core_endpoint: "{{ .Values.global.voltha_release_name }}-{{ .Values.global.stack_name }}-core.{{ .Release.Namespace }}.svc:55558"
  # timeout for RPC request
  rpc_timeout: "10s"
  adapter_open_olt:
    timeout: "5s"
    heartbeat_check_interval: "15s"
    heartbeat_fail_interval: "31s"
    check_onu_exist_on_discovery: false

  # enable OMCC encryption
  omcc_encryption: false
  # enable ONU stats
  enable_onu_stats: false
  # enable GEM stats
  enable_gem_stats: false

  # Configure Log Correlation
  log_correlation:
    enabled: true

  # Configure Tracing
  tracing:
    enabled: true

# Probe values
probe:
  liveness:
    initial_delay_seconds: 3
    period_seconds: 3
  readiness:
    initial_delay_seconds: 3
    period_seconds: 3

# Default security context under which the containers run
securityContext:
  enabled: true
  fsGroup: 1001
  runAsUser: 1001
  runAsGroup: 1001

# Node Affinity Configuration
nodeAffinityConfig:
  enabled: false
  node_label_key: "in-band"
  node_label_value: "yes"

# Define connectivity to required services
services:
  kafka:
    cluster:
      address: kafka:9092

  # Define connectivity to etcd
  etcd:
    address: etcd:2379

  # Define Tracing Agent connection details
  tracing_agent:
    address: jaeger-agent:6831

# Expose the golang pprof webserver, if enabled
profiler:
  enabled: false

# Define the replica count for everything
replicas:
  current_replica: 1
  total_replica: 1

adapter_open_olt:
  log_level: '{{ .Values.global.log_level }}'
  kv_store_timeout: '{{ .Values.global.adapter_open_olt.timeout }}'
  kv_store_data_prefix: 'service/{{ .Values.global.stack_name }}_voltha'
  heartbeat_check_interval: '{{ .Values.global.adapter_open_olt.heartbeat_check_interval }}'
  heartbeat_fail_interval: '{{ .Values.global.adapter_open_olt.heartbeat_fail_interval }}'
  check_onu_exist_on_discovery: '{{ .Values.global.adapter_open_olt.check_onu_exist_on_discovery }}'
  rpc_timeout: '{{ .Values.global.rpc_timeout }}'
  endpoints:
    # core_endpoint: '{{ .Values.global.adapter_open_olt.core_endpoint }}'
    # adapter_endpoint: '{{ template "fullname" . }}-api:55560'
    address: '{{ template "fullname" . }}-api'
    port: 50060
  topics:
    event_topic: "voltha.events"

images:
  adapter_open_olt:
    registry: '{{ .Values.global.image_registry }}'
    repository: '{{ .Values.global.image_org }}voltha-openolt-adapter'
    tag: '{{- if hasKey .Values.global "image_tag" }}{{- if .Values.global.image_tag }}{{ .Values.global.image_tag }}{{- else }}{{ .Chart.AppVersion }}{{- end }}{{- else }}{{ .Chart.AppVersion }}{{- end }}'
    pullPolicy: '{{ .Values.global.image_pullPolicy | default "Always" }}'

resources:
  requests:
    cpu: 0.5
    memory: 256Mi
  limits:
    cpu: ~
    memory: ~

# Define scheduling rules for stack pods
scheduleRules:
  preferStackPodsOnSameNode: false
  preferStacksOnDifferentNodes: false
