# Copyright 2022 Canonical Ltd.
#
# 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.
#
# For those usages not covered by the Apache License, Version 2.0 please
# contact: legal@canonical.com
#
# To get in touch with the maintainers, please contact:
# osm-charmers@lists.launchpad.net
#
#
# This file populates the Overview on Charmhub.
# See https://juju.is/docs/some-url-to-be-determined/ for a checklist and guidance.

name: osm-ro

# The following metadata are human-readable and will be published prominently on Charmhub.

display-name: OSM RO

summary: OSM Resource Orchestrator (RO)

description: |
  A Kubernetes operator that deploys the Resource Orchestrator of OSM.

  Resource orchestrator module's main responsibility is managing the
  VIM and SDN operations by taking orders through the LCM and Kafka
  message queue.

  This charm doesn't make sense on its own.
  See more:
    - https://charmhub.io/osm

containers:
  ro:
    resource: ro-image

# This file populates the Resources tab on Charmhub.

resources:
  ro-image:
    type: oci-image
    description: OCI image for ro
    upstream-source: opensourcemano/ro

requires:
  kafka:
    interface: kafka
    limit: 1
  mongodb:
    interface: mongodb_client
    limit: 1

provides:
  ro:
    interface: ro
