# 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

# app version is NOT used in this chart for application versions or image tags
# but represents the voltha release version itself
appVersion: "2.12"

## Chart version for package: voltha-infra
##   Increment when Chart.yaml changes
version: "2.12.3"

dependencies:
  - name       : "onos-classic"
    repository : "https://charts.onosproject.org"
    version    : "0.1.31"
    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.4"
    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.2"
    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

# [EOF]
