# Copyright 2021 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-mariadb
summary: MariaDB is a popular database server made by the developers of MySQL.
# docs: https://discourse.charmhub.io/t/mariadb-documentation-overview/4116
maintainers:
  - OSM Charmers <osm-charmers@lists.launchpad.net>
description: |
  MariaDB Server is one of the most popular database servers in the world.
  It's made by the original developers of MySQL and guaranteed to stay open
  source. Notable users include Wikipedia, WordPress.com and Google.
  https://mariadb.org/
tags:
  - database
  - openstack
provides:
  mysql:
    interface: mysql
series:
  - kubernetes
storage:
  database:
    type: filesystem
    location: /var/lib/mysql
deployment:
  type: stateful
  service: cluster
