# 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: esr
    version: ~8.x-0
    repository: '@local'
    condition: esr.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
