# Copyright © 2017 Amdocs, Bell Canada
# Modifications Copyright © 2021 Nordix 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.

apiVersion: v2
name: onap
version: 11.0.0
appVersion: Kohn
description: Open Network Automation Platform (ONAP)
home: https://www.onap.org/
sources:
- https://gerrit.onap.org/r/#/admin/projects/
icon: https://wiki.onap.org/download/thumbnails/1015829/onap_704x271%20copy.png?version=1&modificationDate=1488326334000&api=v2
kubeVersion: ">=1.19.11-0"

dependencies:
  - name: aaf
    version: ~11.x-0
    repository: '@local'
    condition: aaf.enabled
  - name: aai
    version: ~11.x-0
    repository: '@local'
    condition: aai.enabled
  - name: appc
    version: ~11.x-0
    repository: '@local'
    condition: appc.enabled
  - name: cassandra
    version: ~11.x-0
    repository: '@local'
    condition: cassandra.enabled
  - name: cds
    version: ~11.x-0
    repository: '@local'
    condition: cds.enabled
  - name: cli
    version: ~11.x-0
    repository: '@local'
    condition: cli.enabled
  - name: common
    version: ~11.x-0
    repository: '@local'
  - name: consul
    version: ~11.x-0
    repository: '@local'
    condition: consul.enabled
  - name: contrib
    version: ~11.x-0
    repository: '@local'
    condition: global.addTestingComponents
  - name: cps
    version: ~11.x-0
    repository: '@local'
    condition: cps.enabled
  - name: dcaegen2-services
    version: ~11.x-0
    repository: '@local'
    condition: dcaegen2-services.enabled
  - name: dcaemod
    version: ~11.x-0
    repository: '@local'
    condition: dcaemod.enabled
  - name: holmes
    version: ~11.x-0
    repository: '@local'
    condition: holmes.enabled
  - name: dmaap
    version: ~11.x-0
    repository: '@local'
    condition: dmaap.enabled
  - name: log
    version: ~11.x-0
    repository: '@local'
    condition: log.enabled
  - name: sniro-emulator
    version: ~11.x-0
    repository: '@local'
    condition: sniro-emulator.enabled
  - name: mariadb-galera
    version: ~11.x-0
    repository: '@local'
    condition: mariadb-galera.enabled
  - name: msb
    version: ~11.x-0
    repository: '@local'
    condition: msb.enabled
  - name: multicloud
    version: ~11.x-0
    repository: '@local'
    condition: multicloud.enabled
  - name: nbi
    version: ~11.x-0
    repository: '@local'
    condition: nbi.enabled
  - name: policy
    version: ~11.x-0
    repository: '@local'
    condition: policy.enabled
  - name: portal
    version: ~11.x-0
    repository: '@local'
    condition: portal.enabled
  - name: postgres
    version: ~11.x-0
    repository: '@local'
    condition: postgres.enabled
  - name: oof
    version: ~11.x-0
    repository: '@local'
    condition: oof.enabled
  - name: repository-wrapper
    version: ~11.x-0
    repository: '@local'
  - name: robot
    version: ~11.x-0
    repository: '@local'
    condition: robot.enabled
  - name: sdc
    version: ~11.x-0
    repository: '@local'
    condition: sdc.enabled
  - name: sdnc
    version: ~11.x-0
    repository: '@local'
    condition: sdnc.enabled
  - name: so
    version: ~11.x-0
    repository: '@local'
    condition: so.enabled
  - name: strimzi
    version: ~11.x-0
    repository: '@local'
    condition: strimzi.enabled
  - name: uui
    version: ~11.x-0
    repository: '@local'
    condition: uui.enabled
  - name: vfc
    version: ~11.x-0
    repository: '@local'
    condition: vfc.enabled
  - name: vid
    version: ~11.x-0
    repository: '@local'
    condition: vid.enabled
  - name: vnfsdk
    version: ~11.x-0
    repository: '@local'
    condition: vnfsdk.enabled
  - name: modeling
    version: ~11.x-0
    repository: '@local'
    condition: modeling.enabled
  - name: platform
    version: ~11.x-0
    repository: '@local'
    condition: platform.enabled
  - name: a1policymanagement
    version: ~11.x-0
    repository: '@local'
    condition: a1policymanagement.enabled
  - name: cert-wrapper
    version: ~11.x-0
    repository: '@local'
    condition: cert-wrapper.enabled
  - name: roles-wrapper
    version: ~11.x-0
    repository: '@local'
    condition: roles-wrapper.enabled
