# Copyright © 2019 Amdocs, Bell Canada
# Copyright (c) 2020 Nordix Foundation, Modifications
# Modifications Copyright © 2020 Nokia
#
# 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.

# Referencing a named repo called 'local'.
# Can add this repo by running commands like:
# > helm serve
# > helm repo add local http://127.0.0.1:8879
dependencies:
  - name: aaf
    version: ~8.x-0
    repository: '@local'
    condition: aaf.enabled
  - name: aai
    version: ~8.x-0
    repository: '@local'
    condition: aai.enabled
  - name: appc
    version: ~8.x-0
    repository: '@local'
    condition: appc.enabled
  - name: cassandra
    version: ~8.x-0
    repository: '@local'
    condition: cassandra.enabled
  - name: cds
    version: ~8.x-0
    repository: '@local'
    condition: cds.enabled
  - name: cli
    version: ~8.x-0
    repository: '@local'
    condition: cli.enabled
  - name: common
    version: ~8.x-0
    repository: '@local'
  - name: consul
    version: ~8.x-0
    repository: '@local'
    condition: consul.enabled
  - name: contrib
    version: ~8.x-0
    repository: '@local'
    condition: global.addTestingComponents
  - name: cps
    version: ~8.x-0
    repository: '@local'
    condition: cps.enabled
  - name: dcaegen2
    version: ~8.x-0
    repository: '@local'
    condition: dcaegen2.enabled
  - name: dcaegen2-services
    version: ~8.x-0
    repository: '@local'
    condition: dcaegen2-services.enabled
  - name: dcaemod
    version: ~8.x-0
    repository: '@local'
    condition: dcaemod.enabled
  - name: holmes
    version: ~8.x-0
    repository: '@local'
    condition: holmes.enabled
  - name: dmaap
    version: ~8.x-0
    repository: '@local'
    condition: dmaap.enabled
  - name: log
    version: ~8.x-0
    repository: '@local'
    condition: log.enabled
  - name: sniro-emulator
    version: ~8.x-0
    repository: '@local'
    condition: sniro-emulator.enabled
  - name: mariadb-galera
    version: ~8.x-0
    repository: '@local'
    condition: mariadb-galera.enabled
  - name: msb
    version: ~8.x-0
    repository: '@local'
    condition: msb.enabled
  - name: multicloud
    version: ~8.x-0
    repository: '@local'
    condition: multicloud.enabled
  - name: nbi
    version: ~8.x-0
    repository: '@local'
    condition: nbi.enabled
  - name: policy
    version: ~8.x-0
    repository: '@local'
    condition: policy.enabled
  - name: portal
    version: ~8.x-0
    repository: '@local'
    condition: portal.enabled
  - name: oof
    version: ~8.x-0
    repository: '@local'
    condition: oof.enabled
  - name: repository-wrapper
    version: ~8.x-0
    repository: '@local'
  - name: robot
    version: ~8.x-0
    repository: '@local'
    condition: robot.enabled
  - name: sdc
    version: ~8.x-0
    repository: '@local'
    condition: sdc.enabled
  - name: sdnc
    version: ~8.x-0
    repository: '@local'
    condition: sdnc.enabled
  - name: so
    version: ~8.x-0
    repository: '@local'
    condition: so.enabled
  - name: uui
    version: ~8.x-0
    repository: '@local'
    condition: uui.enabled
  - name: vfc
    version: ~8.x-0
    repository: '@local'
    condition: vfc.enabled
  - name: vid
    version: ~8.x-0
    repository: '@local'
    condition: vid.enabled
  - name: vnfsdk
    version: ~8.x-0
    repository: '@local'
    condition: vnfsdk.enabled
  - name: modeling
    version: ~8.x-0
    repository: '@local'
    condition: modeling.enabled
  - name: platform
    version: ~8.x-0
    repository: '@local'
    condition: platform.enabled
  - name: a1policymanagement
    version: ~8.x-0
    repository: '@local'
    condition: a1policymanagement.enabled
  - name: cert-wrapper
    version: ~8.x-0
    repository: '@local'
    condition: cert-wrapper.enabled
  - name: roles-wrapper
    version: ~8.x-0
    repository: '@local'
    condition: roles-wrapper.enabled
