Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
workloadmgrclient / workloadmgrclient / v1 / managers / backup_target.py
Size: Mime:
# Copyright (c) 2014 TrilioData, Inc.
# All Rights Reserved.

"""
Backup Target interface (1.1 extension).
"""
import six

try:
    from urllib import urlencode
except ImportError:
    from urllib.parse import urlencode

from workloadmgrclient import base


class BackupTarget(base.Resource):
    def __repr__(self):
        return "<BackupTarget: %s>" % self.id


class BackupTargetManager(base.ManagerWithFind):
    """Manage :class:`BackupTarget` resources."""

    resource_class = BackupTarget

    def get(self, backup_target_id, query_string=None):
        """
        Show details of a backup target.
        :param backup_target_id: The ID of the backup_target to display.
        :rtype: :class:`BackupTarget`
        """
        return self._get("/backup_targets/%s" % backup_target_id, "backup_targets")

    def list(self, detailed=True):
        """
        Get a list of all backup targets
        :rtype: list of :class:`BackupTarget`
        """
        detail = "/detail" if detailed else ""
        return self._list("/backup_targets%s" % (detail), "backup_targets")

    def create(
        self,
        s3_endpoint_url,
        s3_bucket,
        filesystem_export,
        type,
        btt_name,
        default,
        immutable,
        metadata
    ):
        body = {
                   "backup_target" :
                    {
                        "s3_endpoint_url": s3_endpoint_url,
                        "s3_bucket": s3_bucket,
                        "filesystem_export": filesystem_export,
                        "type": type,
                        "btt_name": btt_name,
                        "is_default": 1 if default else 0,
                        "immutable": 1 if immutable else 0,
                        "metadata": metadata
                    }
                }
        return self._create("/backup_targets", body, "backup_targets")

    def delete(self, backup_target_id):
        """Delete a BT.

        :param backup_target_id: The :class:`BackupTarget` to delete.
        """
        self._delete(
            "/backup_targets/%s" % (base.getid(backup_target_id))
        )

    def set_default(self, backup_target_id):
        return self._get("/backup_targets/%s/set_default" % backup_target_id, "backup_targets")