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

# To-Do: Add SEBA platform here

dependencies:
- name: etcd-cluster
  version: 0.1.2
  repository: https://charts.opencord.org
  condition: etcd-cluster.enabled
- name: mcord
  version: 1.1.8
  repository: https://charts.opencord.org
  condition: profile.mcord.enabled
- name: base-kubernetes
  version: 1.2.1
  repository: https://charts.opencord.org
  condition: profile.base-kubernetes.enabled
- name: mcord-setup
  version: 0.1.2
  repository: https://charts.opencord.org
  condition: mcord-setup.enabled