---
# Copyright 2018-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
# Use this file to deploy the service versions speecified in the Helm charts.

# voltha
etcd-cluster:
  clusterSize: 1

# in workflow/att-workflow service chart
att-workflow-driver:
  # this is mandatory, it's needed to correctly configure the kafka endpoint
  kafkaService: cord-kafka

# in workflow/tt-workflow service chart
tt-workflow-driver:
  image:
    repository: andybavier/test-image-synchronizer
    tag: tt-workflow-driver

  # this is mandatory, it's needed to correctly configure the kafka endpoint
  kafkaService: cord-kafka

images:
  vcore:
    tag: 'latest'
  vcli:
    tag: 'latest'
  ofagent:
    tag: 'latest'
  netconf:
    tag: 'latest'
  envoy_for_etcd:
    tag: 'latest'
  alarm_generator:
    tag: 'latest'
  freeradius:
    tag: 'latest'
  olt:
    repository: "voltha/voltha-ponsim"
    tag: "latest"
  onu:
    repository: "voltha/voltha-ponsim"
    tag: "latest"
  onos:
#    tag: "1.13.8"
    repository: "andybavier/test-image"
    tag: "onos-1.13.9-rc3"


sadis-server:
  image:
    repository: "andybavier/sadis-server"
    tag: "dev"

# Grab https://gerrit.opencord.org/#/c/13330/
rcord:
  image:
    tag: 'master'
  bandwidthprofile:
    name: "Default"

aaaAppUrl: "https://oss.sonatype.org/content/repositories/snapshots/org/opencord/aaa/1.9.0-SNAPSHOT/aaa-1.9.0-20190325.071418-15.oar"
aaaAppVersion: "1.9.0.SNAPSHOT"

sadisAppUrl: "https://oss.sonatype.org/content/repositories/snapshots/org/opencord/sadis-app/3.1.0-SNAPSHOT/sadis-app-3.1.0-20190325.071529-14.oar"
sadisAppVersion: "3.1.0.SNAPSHOT"

dhcpl2relayAppUrl: "https://oss.sonatype.org/content/repositories/snapshots/org/opencord/dhcpl2relay/1.6.0-SNAPSHOT/dhcpl2relay-1.6.0-20190325.071457-14.oar"
dhcpl2relayAppVersion: "1.6.0.SNAPSHOT"

oltAppUrl: "https://oss.sonatype.org/content/repositories/snapshots/org/opencord/olt-app/3.0.1-SNAPSHOT/olt-app-3.0.1-20190325.071518-14.oar"
oltAppVersion: "3.0.1.SNAPSHOT"

kafkaAppUrl: "https://oss.sonatype.org/content/repositories/snapshots/org/opencord/kafka/1.1.0-SNAPSHOT/kafka-1.1.0-20190325.071504-14.oar"
kafkaAppVersion: "1.1.0.SNAPSHOT"