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

# Default values for ONOS
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

replicaCount: 1

images:
  onos:
    repository: 'muluder/prograncontrollermcord'
    tag: '{{ .Chart.AppVersion }}'
    pullPolicy: 'Always'

  # keep in sync with: https://github.com/helm/charts/blob/master/stable/filebeat/values.yaml
  log_agent:
    repository: docker.elastic.co/beats/filebeat-oss
    tag: 6.4.2
    pullPolicy: IfNotPresent

global:
  registry: ''

log_agent:
  enabled: True
  kafka_brokers: ['cord-kafka:9092']

nameOverride: ''
fullnameOverride: ''

xos_service_label: ONOS

namespace: default
serviceAccountName: default

services:
  openflowServiceType: NodePort
  openflow:
    port: 6653
    nodePort: 31654

  sshServiceType: NodePort
  ssh:
    port: 8101
    nodePort: 30116

  uiServiceType: NodePort
  ui:
    port: 8181
    nodePort: 30121

  debuggerServiceType: NodePort
  debugger:
    port: 5005
    nodePort: 30556

  progranPort22ServiceType: NodePort
  port22:
    port: 22
    nodePort: 30022

  progranPort9876ServiceType: NodePort
  port9876:
    port: 9876
    nodePort: 30876

  progranPort4010ServiceType: NodePort
  port4010:
    port: 4010
    nodePort: 30410

  ovsdbServiceType: ClusterIP
  ovsdb:
    port: 6640

  cluster:
    port: 9876

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

resources: {}

nodeSelector: {}

tolerations: []

affinity: {}

application_logs: ''

