# Copyright 2020-2023 Open Networking Foundation (ONF) and the ONF Contributors
#
# 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.
---
apiVersion: v2
description: A Helm chart to install the required infrastructure for VOLTHA
keywords:
  - "onf"
  - "voltha"
  - "onos"
  - "radius"
  - "sadis-server"
home: "https://www.opennetworking.org/voltha"
icon: "https://guide.opencord.org/logos/voltha.svg"
maintainers:
  - name: "Open Networking Foundation"
    email: "info@opennetworking.org"
    url: "https://www.opennetworking.org"
name: voltha-infra

appVersion: "2.11"
version: 2.11.0

dependencies:
  - name: onos-classic
    repository: https://charts.onosproject.org
    version: 0.1.29
    condition: onos-classic.enabled
  - name: redis
    repository: https://charts.bitnami.com/bitnami
    version: 17.0.10
    condition: redis.enabled
  - name: bbsim-sadis-server
    repository: file://../bbsim-sadis-server
    version: 0.3.2
    condition: bbsim-sadis-server.enabled
  - name: etcd
    repository: https://charts.bitnami.com/bitnami
    version: 8.5.11
    condition: etcd.enabled
  - name: kafka
    repository: https://charts.bitnami.com/bitnami
    version: 20.0.2
    condition: kafka.enabled
  - name: freeradius
    repository: https://charts.opencord.org
    version: 1.0.2
    condition: radius.enabled
  - name: voltha-tracing
    repository: https://charts.opencord.org
    version: 1.0.0
    condition: voltha-tracing.enabled
  - name: elasticsearch
    repository: https://helm.elastic.co
    version: 7.10.1
    condition: efk.enabled
  - name: kibana
    repository: https://helm.elastic.co
    version: 7.10.1
    condition: efk.enabled
  - name: fluentd-elasticsearch
    repository: https://kiwigrid.github.io
    version: 9.6.2
    # TODO kiwigrid is deprecated, use: https://github.com/kokuwaio/helm-charts/tree/main/charts/fluentd-elasticsearch
    # repository: https://kokuwaio.github.io/helm-charts
    # version: 11.7.1
    condition: efk.enabled
