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.

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

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

from workloadmgrclient import base


class Migration(base.Resource):

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

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

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


class MigrationManager(base.ManagerWithFind):
    """Manage :class:`Migration` resources."""

    resource_class = Migration

    def create(self, migration_plan_id, options):
        """Create a migration for a  migration plan
        """
        body = {
            "migration": {
                "migration_plan_id": migration_plan_id,
                "options": options,
            }
        }
        return self._create("/migrations", body, "migration")

    def get(self, migration_id, query_string=None):
        """
        Show details of a migration.
        :param migration_id: The ID of the migration to display.
        :rtype: :class:`Migration`
        """
        return self._get("/migrations/%s" % migration_id, "migration")

    def list(self, detailed=True, search_opts=None):
        """
        Get a list of all migrations
        :rtype: list of :class:`Migration`
        """
        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("/migrations%s%s" % (detail, query_string), "migrations")

    def delete(self, migration_id):
        """
        Delete a migration.
        :param migration_id: The :class:`Migration` to delete.
        """
        self._delete("/migrations/%s" % base.getid(migration_id))

    def cancel(self, migration_id):
        """
        Cancel a migration.
        :param migration_id: The :class:`Migration` to cancel
        """
        self._cancel("/migrations/%s/cancel" % base.getid(migration_id))