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

# Aggregation chart of SEBA charts

# configuration for kafka
voltha-kafka:
  replicas: 1
  persistence:
    enabled: false
  zookeeper:
    servers: 1
    persistence:
      enabled: false

voltha:
  etcd-operator:
    customResources:
      createEtcdClusterCRD: false
  kafkaReleaseName: "seba-substrate-voltha-kafka"

# from configs/onos-voltha.yaml
onos-voltha:
  nameOverride: "onosv"
  fullnameOverride: "onos-voltha"

  namespace: voltha
  serviceAccountName: voltha-serviceaccount

  onosImage: 'voltha/voltha-onos:latest'

  services:
    openflowServiceType: ClusterIP
    ovsdbServiceType: ClusterIP
    sshServiceType: NodePort
    uiServiceType: NodePort
    ssh:
      nodePort: 30115
    ui:
      nodePort: 30120

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


# from configs/onos-fabric.yaml
onos-fabric:
  services:
    openflowServiceType: NodePort
    ovsdbServiceType: NodePort
    sshServiceType: NodePort
    uiServiceType: NodePort
    ovsdb:
      nodePort: 31640
    openflow:
      nodePort: 31653
    ssh:
      nodePort: 31101
    ui:
      nodePort: 31181

  onos_env:
    - name: ONOS_APPS
      value: "openflow"

