---
# Copyright 2019 Ciena Corporation
#
# 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.

# IMAGE SELECTION
# ---------------
# By default no defaults are set and the image tags specified in the helm
# charts will be used. If you would like to use the images generated from the
# HEAD of the "master" git branches, then uncomment this below block and
# set "<VALUE>" to "master". Similarly, if you want to use the images
# generated from the HEAD of the "voltha-2.1" git branches, then uncomment
# this block and replace "<VALUE>" with "voltha-2.1".
defaults:
  image_tag: master

# OFAGENT IMPLEMENTATION
# ----------------------
# There are currently two implementations of OFAGENT: the original written in
# Python and the reimplementation written in Go. The variable `use_ofagent_go`
# can be used to optionally select the implementation. The Go version is the
# version to be part of the official release and is the default. The Python
# verison has been deprecated and is no longer being actively workes, but is
# being left as an option for this release.
#
# Along with this change you will also may need to set the Docker image
# information below (search for START_OFAGENT_GO).
use_ofagent_go: true

images:
  onos:
    repository: voltha/voltha-onos
    # IMAGE_SELECTION
    # ---------------
    # The helm chart used to deploy ONOS is the public ONOS helm chart so,
    # there is a need to specify the exact image repository and image tag.
    # If you would like to use the "master", "voltha-2.1", or other image
    # just replace the "tag" value below.
    tag: master

# IMAGE_SELECTION
# ---------------
# Below are a list of all the images utilized by kind-voltha. This list is
# provided as a conveinence if you would like to override on a per image
# basis. If you are using the defaults, master, or voltha-2.1 branch there
# is no need to utilize this list.
#  adapter_open_olt:
#    repository: voltha/voltha-openolt-adapter
#    tag: 2.1.1
#  adapter_open_onu:
#    repository: voltha/voltha-openonu-adapter
#    tag: 2.1.0
#  adapter_simulated_olt:
#    repository: voltha/voltha-adapter-simulated-olt
#    tag: 2.1.1
#  adapter_simulated_onu:
#    repository: voltha/voltha-adapter-simulated-onu
#    tag: 2.1.1
#  bbsim:
#    repository: voltha/bbsim
#    tag: master
# START_OFAGENT_GO - Comment the following block to use the Python implementation
# of the ofagent
#  ofagent:
#    repository: voltha/voltha-ofagent-go
#    tag: master
# END_OFAGENT_GO
#  ofagent:
#    repository: voltha/voltha-ofagent-py
#    tag: 2.1.1
#  rw_core:
#    repository: voltha/voltha-rw-core
#    tag: 2.1.1

deployments:
  etcdOperator: true
  backupOperator: true
  restoreOperator: true

voltha-etcd-cluster:
  clusterSize: 3
  autoCompactionRetention: 1

kafka:
  configurationOverrides:
    "default.replication.factor": 3
    "offsets.topic.replication.factor": 3
  replicas: 3

onos_env:
  - name: POD_IP
    valueFrom:
    fieldRef:
      fieldPath: status.podIP
  - name: NAMESPACE
    valueFrom:
    fieldRef:
      fieldPath: metadata.namespace
  - name: ONOS_APPS
    value: "drivers,openflow-base,hostprovider"

# Customization for BBSIM
kafka_broker: 'voltha-kafka.voltha.svc.cluster.local:9092'
pon: 1
onu: 1

# SHOCK THE MONKEY OR LET LOSE THE DOGS OF WAR
# The VOLTHA charts have support for adding extra labels to deployments and
# pods. These extra labels can be used to integrate with other utilities
# such as kube-monkey to add a bit of chaos to the cluster. Below are some
# settings that can be uncommented to opt-in VOLTHA deployments/pods to
# kube-monkey. For example, if you want ALL deployments and pods to opt-in
# then uncomment the `extra_deployment_labels` and `extra_pod_label` blocks.
# If you want to be more selected then comment the blocks that pertain to the
# targets you care about.

# extra_deployment_labels:
#   kube-monkey/enabled: enabled
#   kube-monkey/identifier: monkey-victim
#   kube-monkey/mtbf: 1
#   kube-monkey/kill-mode: fixed
#   kube-monkey/kill-value: 1
#
# extra_pod_labels:
#   kube-monkey/enabled: enabled
#   kube-monkey/identifier: monkey-victim
#   kube-monkey/mtbf: 1
#   kube-monkey/kill-mode: fixed
#   kube-monkey/kill-value: 1
#
# rw_core_deployment_labels:
#   kube-monkey/enabled: enabled
#   kube-monkey/identifier: monkey-victim
#   kube-monkey/mtbf: 1
#   kube-monkey/kill-mode: fixed
#   kube-monkey/kill-value: 1
#
# rw_core_pod_labels:
#   kube-monkey/enabled: enabled
#   kube-monkey/identifier: monkey-victim
#   kube-monkey/mtbf: 1
#   kube-monkey/kill-mode: fixed
#   kube-monkey/kill-value: 1
#
# ofagent_deployment_labels:
#   kube-monkey/enabled: enabled
#   kube-monkey/identifier: monkey-victim
#   kube-monkey/mtbf: 1
#   kube-monkey/kill-mode: fixed
#   kube-monkey/kill-value: 1
#
# ofagent_pod_labels:
#   kube-monkey/enabled: enabled
#   kube-monkey/identifier: monkey-victim
#   kube-monkey/mtbf: 1
#   kube-monkey/kill-mode: fixed
#   kube-monkey/kill-value: 1
#
# openolt_deployment_labels:
#   kube-monkey/enabled: enabled
#   kube-monkey/identifier: monkey-victim
#   kube-monkey/mtbf: 1
#   kube-monkey/kill-mode: fixed
#   kube-monkey/kill-value: 1
#
# openolt_pod_labels:
#   kube-monkey/enabled: enabled
#   kube-monkey/identifier: monkey-victim
#   kube-monkey/mtbf: 1
#   kube-monkey/kill-mode: fixed
#   kube-monkey/kill-value: 1
#
# openonu_deployment_labels:
#   kube-monkey/enabled: enabled
#   kube-monkey/identifier: monkey-victim
#   kube-monkey/mtbf: 1
#   kube-monkey/kill-mode: fixed
#   kube-monkey/kill-value: 1
#
# openonu_pod_labels:
#   kube-monkey/enabled: enabled
#   kube-monkey/identifier: monkey-victim
#   kube-monkey/mtbf: 1
#   kube-monkey/kill-mode: fixed
#   kube-monkey/kill-value: 1
#
# simolt_deployment_labels:
#   kube-monkey/enabled: enabled
#   kube-monkey/identifier: monkey-victim
#   kube-monkey/mtbf: 1
#   kube-monkey/kill-mode: fixed
#   kube-monkey/kill-value: 1
#
# simolt_pod_labels:
#   kube-monkey/enabled: enabled
#   kube-monkey/identifier: monkey-victim
#   kube-monkey/mtbf: 1
#   kube-monkey/kill-mode: fixed
#   kube-monkey/kill-value: 1
#
# simonu_deployment_labels:
#   kube-monkey/enabled: enabled
#   kube-monkey/identifier: monkey-victim
#   kube-monkey/mtbf: 1
#   kube-monkey/kill-mode: fixed
#   kube-monkey/kill-value: 1
#
# simonu_pod_labels:
#   kube-monkey/enabled: enabled
#   kube-monkey/identifier: monkey-victim
#   kube-monkey/mtbf: 1
#   kube-monkey/kill-mode: fixed
#   kube-monkey/kill-value: 1
