---
# 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.

# Values file for deploying SEBA with Ponsim and Stratum
# Use this file to deploy the service versions specified in the Helm charts.

images:
  # Mininet image
  mininet:
    repository: 'opencord/mn-stratum-siab'
    tag: 'master'
    pullPolicy: Always
  onos:
    repository: 'onosproject/onos'
    tag: '2.2-latest'
    pullPolicy: Always
  rg:
#    TODO: Modify when this docker image is published
    repository: 'dmoro92/voltha-tester'
    tag: 'latest'
    pullPolicy: Always

# ONOS activate debug
onos_env:
  - name: JAVA_DEBUG_PORT
    value: "0.0.0.0:5005"

# voltha
etcd-cluster:
  clusterSize: 1

# Set topics for KPI-exporter, adding the bng.stats
kpi_exporter:
# Select DT-Workflow
workflow: dt-workflow

dt-workflow-driver:
  image:
#    TODO: modify when DT workflow synchronizer is published
    repository: "dmoro92/dt-workflow-driver-synchronizer"
    tag: "1.0.0-dev"
  # this is mandatory, it's needed to correctly configure the kafka endpoint
  kafkaService: cord-kafka

# in mininet chart
# FIXME: make multicast working
enableMulticast: false
topoScript: '/toposcripts/topo_sdbng.py'
stratumEnabled: true

# in ponsim-pod chart
bandwidthProfiles: true
legacyPonsim: false

# fabric
fabric:
  enabled: true
  stratum:
    # BMv2 drivers will activate also stratum drivers
    driverAppId: 'org.onosproject.drivers.bmv2'
    # Enable stratum
    enabled: true
    # Use BMv2 pipeconf (already in ONOS)
    pipeconfAppExternal: false
    pipeconfAppId: 'org.onosproject.pipelines.fabric'
bng:
  external:
    enabled: false
  embedded:
    enabled: true
    # ONOS app to provide the BNG control plane
    bngAppId: "org.opencord.bng"
    bngAppUrl: "https://oss.sonatype.org/service/local/artifact/maven/redirect?r=snapshots&g=org.opencord&a=bng-app&v=1.0.0-SNAPSHOT&e=oar"
    bngAppVersion: "1.0.0.SNAPSHOT"

# ONOS applications
kafkaAppUrl: "https://oss.sonatype.org/service/local/artifact/maven/redirect?r=snapshots&g=org.opencord&a=kafka&v=2.0.1-SNAPSHOT&e=oar"
kafkaAppVersion: "2.0.1.SNAPSHOT"
