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

# Automated deployment configuration for Flex POD 1 , olt/onu are connected to this

# This file is used to optionally customize helm charts installations
images:
# VOLTHA
  envoy_for_etcd:
    tag: 'voltha-1.7'

  netconf:
    tag: 'voltha-1.7'

  ofagent:
    tag: 'voltha-1.7'

  vcli:
    tag: 'voltha-1.7'

  vcore:
    tag: 'voltha-1.7'

# ONOS
  onos:
    repository: 'matteoscandolo/onos'
    tag: '1.13.9-rc4'

rcord:
  image:
    tag: 'master'

att-workflow-driver:
  image:
    tag: 'master'

sadis-server:
  image:
    repository: opencord/sadis-server
    tag: latest

# ONOS applications
aaAppUrl: "http://10.90.0.101:30160/repository/aaa-app-1.9.0-SNAPSHOT.oar"
aaaAppVersion: "1.9.0.SNAPSHOT"

sadisAppUrl: "http://10.90.0.101:30160/repository/sadis-app-3.1.0-SNAPSHOT.oar"
sadisAppVersion: "3.1.0.SNAPSHOT"

dhcpl2relayAppUrl: "http://10.90.0.101:30160/repository/dhcpl2relay-app-1.6.0-SNAPSHOT.oar"
dhcpl2relayAppVersion: "1.6.0.SNAPSHOT"

oltAppUrl: "http://10.90.0.101:30160/repository/olt-app-3.0.1-SNAPSHOT.oar"
oltAppVersion: "3.0.1.SNAPSHOT"

kafkaAppUrl: "http://10.90.0.101:30160/repository/kafka-1.1.0-SNAPSHOT.oar"
kafkaAppVersion: "1.1.0.SNAPSHOT"

application_logs: |
  log4j.logger.org.opencord.olt = DEBUG
  log4j.logger.org.opencord.kafka = DEBUG
  log4j.logger.org.opencord.sadis = DEBUG
  log4j.logger.org.opencord.aaa = DEBUG
  log4j.logger.org.opencord.dhcpl2relay = DEBUG
