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

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]
