# Copyright © 2017 Amdocs, Bell Canada
#
# 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.
dependencies:
  - name: common
    version: ~6.x-0
    # local reference to common chart, as it is
    # a part of this chart's package and will not
    # be published independently to a repo (at this point)
    repository: '@local'
  - name: readinessCheck
    version: ~6.x-0
    repository: '@local'
  - name: mariadb-galera
    version: ~6.x-0
    repository: '@local'
    condition: global.mariadbGalera.localCluster
  - name: repositoryGenerator
    version: ~6.x-0
    repository: '@local'
  - name: soHelpers
    version: ~6.x-0
    repository: 'file://components/soHelpers'
  - name: so-appc-orchestrator
    version: ~6.x-0
    repository: 'file://components/so-appc-orchestrator'
    condition: so-appc-orchestrator.enabled
  - name: so-bpmn-infra
    version: ~6.x-0
    repository: 'file://components/so-bpmn-infra'
  - name: so-catalog-db-adapter
    version: ~6.x-0
    repository: 'file://components/so-catalog-db-adapter'
    condition: so-catalog-db-adapter.enabled
  - name: so-etsi-nfvo-ns-lcm
    version: ~6.x-0
    repository: 'file://components/so-etsi-nfvo-ns-lcm'
    condition: so-etsi-nfvo-ns-lcm.enabled
  - name: so-mariadb
    version: ~6.x-0
    repository: 'file://components/so-mariadb'
  - name: so-monitoring
    version: ~6.x-0
    repository: 'file://components/so-monitoring'
    condition: so-monitoring.enabled
  - name: so-nssmf-adapter
    version: ~6.x-0
    repository: 'file://components/so-nssmf-adapter'
    condition: so-nssmf-adapter.enabled
  - name: so-oof-adapter
    version: ~6.x-0
    repository: 'file://components/so-oof-adapter'
    condition: so-oof-adapter.enabled
  - name: so-openstack-adapter
    version: ~6.x-0
    repository: 'file://components/so-openstack-adapter'
    condition: so-openstack-adapter.enabled
  - name: so-request-db-adapter
    version: ~6.x-0
    repository: 'file://components/so-request-db-adapter'
  - name: so-sdc-controller
    version: ~6.x-0
    repository: 'file://components/so-sdc-controller'
  - name: so-sdnc-adapter
    version: ~6.x-0
    repository: 'file://components/so-sdnc-adapter'
    condition: so-sdnc-adapter.enabled
  - name: so-ve-vnfm-adapter
    version: ~6.x-0
    repository: 'file://components/so-ve-vnfm-adapter'
    condition: so-ve-vnfm-adapter.enabled
  - name: so-vfc-adapter
    version: ~6.x-0
    repository: 'file://components/so-vfc-adapter'
    condition: so-vfc-adapter.enabled
  - name: so-vnfm-adapter
    version: ~6.x-0
    repository: 'file://components/so-vnfm-adapter'
    condition: so-vnfm-adapter.enabled
