---
# 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: "8000"

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 }}'
