# Copyright 2020 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
##

name: nbi
summary: OSM Northbound Interface (NBI)
description: |
  A CAAS charm to deploy OSM's Northbound Interface (NBI).
series:
  - kubernetes
tags:
  - kubernetes
  - osm
  - nbi
min-juju-version: 2.8.0
deployment:
  type: stateless
  service: cluster
resources:
  image:
    type: oci-image
    description: OSM docker image for NBI
    upstream-source: "opensourcemano/nbi:latest"
requires:
  kafka:
    interface: kafka
    limit: 1
  mongodb:
    interface: mongodb
    limit: 1
  keystone:
    interface: keystone
    limit: 1
  prometheus:
    interface: prometheus
    limit: 1
provides:
  nbi:
    interface: http
