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    
Size: Mime:
# Copyright (c) 2014 TrilioData, Inc.
# All Rights Reserved.

"""
Restores interface (1.1 extension).
"""
import six

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

from workloadmgrclient import base


class Restore(base.Resource):
    """A snapshot restore either test or production"""

    def __repr__(self):
        return "<Restore: %s>" % self.id

    def delete(self):
        """Delete this restore."""
        return self.manager.delete(self)

    def cancel(self):
        """Cancel this restore."""
        return self.manager.cancel(self)


class RestoreManager(base.ManagerWithFind):
    """Manage :class:`Restore` resources."""

    resource_class = Restore

    def get(self, restore_id, query_string=None):
        """
        Show details of a snapshot restore.
        :param restore_id: The ID of the snapshot restore to display.
        :rtype: :class:`Restore`
        """
        return self._get("/restores/%s" % restore_id, "restore")

    def list(self, detailed=True, search_opts=None):
        """
        Get a list of all snapshot restores
        :rtype: list of :class:`Restore`
        """
        if not search_opts:
            search_opts = {}
        qparams = {opt: val for opt, val in six.iteritems(search_opts) if val}
        query_string = "?%s" % urlencode(qparams) if qparams else ""
        detail = "/detail" if detailed else ""
        return self._list("/restores%s%s" % (detail, query_string), "restores")

    def delete(self, restore_id):
        """
        Delete a snapshot restore.
        :param restore_id: The :class:`Restore` to delete.
        """
        self._delete("/restores/%s" % base.getid(restore_id))

    def cancel(self, restore_id):
        """
        Cancel a snapshot restore.
        :param restore_id: The :class:`Restore` to cancel
        """
        self._cancel("/restores/%s/cancel" % base.getid(restore_id))