コード例 #1
0
ファイル: migrations.py プロジェクト: atoaca/coriolis
    def create(self, req, body):
        # TODO(alexpilotti): validate body
        migration_body = body.get("migration", {})
        context = req.environ['coriolis.context']
        context.can(migration_policies.get_migrations_policy_label("create"))

        replica_id = migration_body.get("replica_id")
        if replica_id:
            clone_disks = migration_body.get("clone_disks", True)
            force = migration_body.get("force", False)
            skip_os_morphing = migration_body.get("skip_os_morphing", False)

            # NOTE: destination environment for replica should have been
            # validated upon its creation.
            migration = self._migration_api.deploy_replica_instances(
                context, replica_id, clone_disks, force, skip_os_morphing)
        else:
            (origin_endpoint_id, destination_endpoint_id, source_environment,
             destination_environment, instances, notes, skip_os_morphing,
             network_map, storage_mappings) = self._validate_migration_input(
                 context, migration_body)
            migration = self._migration_api.migrate_instances(
                context, origin_endpoint_id, destination_endpoint_id,
                source_environment, destination_environment, instances,
                network_map, storage_mappings, notes, skip_os_morphing)

        return migration_view.single(req, migration)
コード例 #2
0
ファイル: migrations.py プロジェクト: atoaca/coriolis
 def detail(self, req):
     context = req.environ["coriolis.context"]
     context.can(
         migration_policies.get_migrations_policy_label("show_execution"))
     return migration_view.collection(
         req, self._migration_api.get_migrations(context,
                                                 include_tasks=True))
コード例 #3
0
ファイル: migrations.py プロジェクト: atoaca/coriolis
    def show(self, req, id):
        context = req.environ["coriolis.context"]
        context.can(migration_policies.get_migrations_policy_label("show"))
        migration = self._migration_api.get_migration(context, id)
        if not migration:
            raise exc.HTTPNotFound()

        return migration_view.single(req, migration)
コード例 #4
0
ファイル: migrations.py プロジェクト: atoaca/coriolis
 def delete(self, req, id):
     context = req.environ['coriolis.context']
     context.can(migration_policies.get_migrations_policy_label("delete"))
     try:
         self._migration_api.delete(context, id)
         raise exc.HTTPNoContent()
     except exception.NotFound as ex:
         raise exc.HTTPNotFound(explanation=ex.msg)
コード例 #5
0
 def index(self, req):
     show_deleted = api_utils._get_show_deleted(
         req.GET.get("show_deleted", None))
     context = req.environ["coriolis.context"]
     context.show_deleted = show_deleted
     context.can(migration_policies.get_migrations_policy_label("show"))
     return migration_view.collection(
         req, self._migration_api.get_migrations(
             context, include_tasks=False))
コード例 #6
0
    def _cancel(self, req, id, body):
        context = req.environ['coriolis.context']
        context.can(migration_policies.get_migrations_policy_label("cancel"))
        try:
            force = (body["cancel"] or {}).get("force", False)

            self._migration_api.cancel(context, id, force)
            raise exc.HTTPNoContent()
        except exception.NotFound as ex:
            raise exc.HTTPNotFound(explanation=ex.msg)
        except exception.InvalidParameterValue as ex:
            raise exc.HTTPNotFound(explanation=ex.msg)
コード例 #7
0
    def create(self, req, body):
        migration_body = body.get("migration", {})
        context = req.environ['coriolis.context']
        context.can(migration_policies.get_migrations_policy_label("create"))
        user_scripts = migration_body.get('user_scripts', {})
        api_utils.validate_user_scripts(user_scripts)
        user_scripts = api_utils.normalize_user_scripts(
            user_scripts, migration_body.get("instances", []))
        replica_id = migration_body.get("replica_id")
        if replica_id:
            clone_disks = migration_body.get("clone_disks", True)
            force = migration_body.get("force", False)
            skip_os_morphing = migration_body.get("skip_os_morphing", False)
            instance_osmorphing_minion_pool_mappings = migration_body.get(
                'instance_osmorphing_minion_pool_mappings', {})

            # NOTE: destination environment for replica should have been
            # validated upon its creation.
            migration = self._migration_api.deploy_replica_instances(
                context, replica_id, instance_osmorphing_minion_pool_mappings, clone_disks,
                force, skip_os_morphing, user_scripts=user_scripts)
        else:
            (origin_endpoint_id,
             destination_endpoint_id,
             origin_minion_pool_id,
             destination_minion_pool_id,
             instance_osmorphing_minion_pool_mappings,
             source_environment,
             destination_environment,
             instances,
             notes,
             skip_os_morphing,
             replication_count,
             shutdown_instances,
             network_map,
             storage_mappings) = self._validate_migration_input(
                 context, body)
            migration = self._migration_api.migrate_instances(
                context, origin_endpoint_id, destination_endpoint_id,
                origin_minion_pool_id, destination_minion_pool_id,
                instance_osmorphing_minion_pool_mappings,
                source_environment, destination_environment, instances,
                network_map, storage_mappings, replication_count,
                shutdown_instances, notes=notes,
                skip_os_morphing=skip_os_morphing,
                user_scripts=user_scripts)

        return migration_view.single(req, migration)
コード例 #8
0
ファイル: migrations.py プロジェクト: atoaca/coriolis
 def index(self, req):
     context = req.environ["coriolis.context"]
     context.can(migration_policies.get_migrations_policy_label("show"))
     return migration_view.collection(
         req,
         self._migration_api.get_migrations(context, include_tasks=False))