# Copyright (c) 2021 J. F. Lucas.  All rights reserved.
# Copyright (c) 2021 AT&T. All rights reserved.
#
# 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: ~8.x-0
    repository: '@local'
  - name: dcae-heartbeat
    version: ~8.x-0
    repository: '@local'
    condition: dcae-heartbeat.enabled
  - name: dcae-hv-ves-collector
    version: ~8.x-0
    repository: '@local'
    condition: dcae-hv-ves-collector.enabled
  - name: dcae-kpi-ms
    version: ~8.x-0
    repository: '@local'
    condition: dcae-kpi-ms.enabled
  - name: dcae-ms-healthcheck
    version: ~8.x-0
    repository: '@local'
    condition: dcae-ms-healthcheck.enabled
  - name: dcae-pmsh
    version: ~8.x-0
    repository: '@local'
    condition: dcae-pmsh.enabled
  - name: dcae-prh
    version: ~8.x-0
    repository: '@local'
    condition: dcae-prh.enabled
  - name: dcae-slice-analysis-ms
    version: ~8.x-0
    repository: '@local'
    condition: dcae-slice-analysis-ms.enabled
  - name: dcae-son-handler
    version: ~8.x-0
    repository: '@local'
    condition: dcae-son-handler.enabled
  - name: dcae-tcagen2
    version: ~8.x-0
    repository: '@local'
    condition: dcae-tcagen2.enabled
  - name: dcae-ves-collector
    version: ~8.x-0
    repository: '@local'
    condition: dcae-ves-collector.enabled
