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

# onos
images:
  onos:
    repository: 'onosproject/onos'
    tag: 'latest'

onos_env:
- name: POD_IP
  valueFrom:
  fieldRef:
    fieldPath: status.podIP
- name: NAMESPACE
  valueFrom:
  fieldRef:
    fieldPath: metadata.namespace
- name: ONOS_APPS
  value: "drivers,openflow-base"
- name: DEFAULT_JAVA_DEBUG_OPTS
  value: "-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=0.0.0.0:5005"

# ONOS applications
sadisAppUrl: "http://10.90.0.101:30160/repository/sadis-app-4.0.0-SNAPSHOT.oar"
sadisAppVersion: "4.0.0.SNAPSHOT"

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

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

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

aaaAppUrl: "http://10.90.0.101:30160/repository/aaa-app-2.0.0-SNAPSHOT.oar"
aaaAppVersion: "2.0.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
