---
# Copyright 2019-present Open Networking 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.

# Default Values
# The following are the default values used for every container in the
# template.
defaults:
  log_level: "WARN"
  image_registry: ''
  image_org: "voltha/"
  image_tag: ~
  image_pullPolicy: "Always"
  rw_core:
    timeout: "10s"
  topics:
    core_topic: "rwcore"

  # Define prefix path for etcd
  # If you're running multiple voltha stacks the this value
  # should be unique across the stacks.
  kv_store_data_prefix: "service/voltha"

securityContext:
  enabled: true
  fsGroup: 1001
  runAsUser: 1001
  runAsGroup: 1001

# Define connectivity to services on which VOLTHA depends
services:
  kafka:
    adapter:
      service: kafka
      port: 9092
    cluster:
      service: kafka
      port: 9092

  # Define connectivity to etcd
  etcd:
    service: etcd
    port: 2379

  # Define the list of controllers to connect to
  controller:
    - service: onos-openflow
      port: 6653

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

# Define the recplica count for everything
replicas:
  # For R/W cores the templates translate the number of replicas
  # into the number of RW core pairs with two pods per pair
  rw_core: 1

  # For everything else replicas are replicas
  ofagent: 1

rw_core:
  log_level: '{{ .Values.defaults.log_level }}'
  core_timeout: '{{ .Values.defaults.rw_core.timeout }}'
  timeout_long_request: '{{ .Values.defaults.rw_core.timeout }}'
  timeout_request: '{{ .Values.defaults.rw_core.timeout }}'

ofagent:
  log_level: '{{ .Values.defaults.log_level }}'

# Define Docker images to be used
images:
  ofagent:
    registry: '{{ .Values.defaults.image_registry }}'
    repository: '{{ .Values.defaults.image_org }}voltha-ofagent-go'
    tag: '{{- if hasKey .Values.defaults "image_tag" }}{{- if .Values.defaults.image_tag }}{{ .Values.defaults.image_tag }}{{- else }}1.2.0{{- end }}{{- else }}1.2.0{{- end }}'
    pullPolicy: '{{ .Values.defaults.image_pullPolicy }}'

  rw_core:
    registry: '{{ .Values.defaults.image_registry }}'
    repository: '{{ .Values.defaults.image_org }}voltha-rw-core'
    tag: '{{- if hasKey .Values.defaults "image_tag" }}{{- if .Values.defaults.image_tag }}{{ .Values.defaults.image_tag }}{{- else }}2.4.1{{- end }}{{- else }}2.4.1{{- end }}'
    pullPolicy: '{{ .Values.defaults.image_pullPolicy }}'
