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

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.3
    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: file://../voltha-tracing
    version: 2.12.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
