# 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: osm-pol
summary: OSM Policy Module (POL)
description: |
  A CAAS charm to deploy OSM's Policy Module (POL).
series:
  - kubernetes
tags:
  - kubernetes
  - osm
  - pol
min-juju-version: 2.8.0
deployment:
  type: stateless
  service: cluster
resources:
  image:
    type: oci-image
    description: OSM docker image for POL
    upstream-source: "opensourcemano/pol:latest"
requires:
  kafka:
    interface: kafka
  mongodb:
    interface: mongodb
  mysql:
    interface: mysql
    limit: 1
