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

backup:
  description: "Do a mongodb backup"
  params:
    target:
      description: "The unit in which it should be performed the action. (ANY, PRIMARY, SECONDARY)"
      type: string
      default: "ANY"
    path:
      description: "Path for the backup inside the unit"
      type: string
      default: "/data"
restore:
  description: "Restore from a MongoDB Backup"
  params:
    path:
      description: "Path for the backup inside the unit"
      type: string
      default: "/data"
remove-backup:
  description: "Remove backup from unit"
  params:
    path:
      description: "Path for the backup inside the unit"
      type: string
      default: "/data"
is-primary:
  description: "Check if the unit is the primary"
