List/show all server migration types

https://blueprints.launchpad.net/nova/+spec/list-show-all-server-migration-types

以下 API 用于列出正在进行的服务器实时迁移并显示正在进行的实时迁移的详细信息。因此,此蓝图使我们能够列出并显示其他迁移类型(‘evacuation’,‘resize’,‘migration’)。

  • GET /servers/{server_id}/migrations

  • GET /servers/{server_id}/migrations/{migration_id}

问题描述

为了中止冷迁移 [1],管理员必须列出/显示正在进行的冷迁移。但目前他们只能在服务器迁移 API 中列出/显示正在进行的实时迁移。

用例

操作员希望列出云中所有正在进行的迁移 [1]

提议的变更

修改以下用于实时迁移的现有 2 个 API,以列出并显示其他迁移类型(‘evacuation’,‘resize’,‘migration’)。

  • GET /servers/{server_id}/migrations

  • GET /servers/{server_id}/migrations/{migration_id}

前一个 API 返回正在进行的迁移。后一个 API 如果指定的迁移未进行中,则返回 404 错误。行为保持不变。

迁移状态转换如下

  • Migration/resize

    • ‘pre-migrating’ –> ‘migrating’ –> ‘post-migrating’ –> ‘finished’

  • Confirm resize

    • ‘finished’ –> ‘confirming’ –> ‘confirmed’

  • Revert resize

    • ‘finished’ –> ‘reverting’ –> ‘reverted’

  • Evacuation

    • ‘accepted’ –> ‘pre-migrating’ –> ‘done’

  • 实时迁移

    • (Skip the definition)

正在进行的迁移状态定义如下

  • migration/resize

    • ‘pre-migrating’, ‘migrating’, ‘post-migrating’

  • confirm resize

    • ‘confirming’

  • revert resize

    • ‘reverting’

  • evacuation

    • ‘accepted’, ‘pre-migrating’

  • 实时迁移

    • ‘queued’, ‘preparing’, ‘running’, ‘post-migrating’

    • 现有定义。保持不变。

这些正在进行的迁移将被列出/显示,但迁移状态将不会在响应中返回。

除了上述更改之外,当迁移类型为 ‘migration’、‘resize’ 或 ‘evacuation’(除了 ‘live-migration’)并且迁移状态正在进行中时,以下 API 的响应中也可用 ‘links’ 参数。

  • GET /os-migrations

备选方案

数据模型影响

REST API 影响

以下更改将在新的 API 微版本中引入。

  • GET /servers/{server_id}/migrations

    它列出正在进行的迁移。 可以将迁移类型指定为 ‘type’ 查询参数以过滤结果。 ‘type’ 查询参数是可选的。 如果未指定 ‘type’ 参数,则将列出所有迁移类型。

    有效的 ‘type’ 参数为 ‘live-migration’、‘migration’、‘resize’ 和 ‘evacuation’。 如果 ‘type’ 参数错误,nova-api 将返回 400 错误。 因此,将 badRequest(400) 添加到错误响应代码中。

    ‘type’ 参数已添加到响应中。 迁移状态未包含在响应中。

    JSON 响应体示例

    {
        "migrations": [
            {
                "dest_host": "10.0.2.15",
                "memory_processed_bytes": null,
                "type": "migration",
                "updated_at": "2017-01-31T08:03:25.000000",
                "created_at": "2017-01-31T08:03:21.000000",
                "memory_remaining_bytes": null,
                "dest_compute": "devstack-master2",
                "id": 11,
                "source_node": "devstack-master1",
                "server_uuid": "a333ee8a-367f-4841-bdc9-c8d92a6adfe4",
                "memory_total_bytes": null,
                "dest_node": "devstack-master2",
                "disk_total_bytes": null,
                "disk_processed_bytes": null,
                "disk_remaining_bytes": null,
                "source_compute": "devstack-master1"
            }
        ]
    }
    
  • GET /servers/{server_id}/migrations/{migration_id}

    响应代码未修改。 显示具有任何迁移类型的迁移。 ‘type’ 参数已添加到响应中。 迁移状态未包含在响应中。

    JSON 响应体示例

    {
        "migration": {
            "dest_host": "10.0.2.15",
            "memory_processed_bytes": null,
            "type": "migration",
            "updated_at": "2017-01-31T08:03:25.000000",
            "created_at": "2017-01-31T08:03:21.000000",
            "memory_remaining_bytes": null,
            "dest_compute": "devstack-master2",
            "id": 11,
            "source_node": "devstack-master1",
            "server_uuid": "a333ee8a-367f-4841-bdc9-c8d92a6adfe4",
            "memory_total_bytes": null,
            "dest_node": "devstack-master2",
            "disk_total_bytes": null,
            "disk_processed_bytes": null,
            "disk_remaining_bytes": null,
            "source_compute": "devstack-master1"
        }
    }
    

    如果迁移未处于进行中状态,则返回 404 错误。

  • POST /servers/{server_id}/migrations/{migration_id}/action

    这是一个“强制迁移完成操作”API。 如果迁移不是 ‘live-migration’,它将返回 400 错误而不是 404 错误。

  • DELETE /servers/{server_id}/migrations/{migration_id}

    如果迁移不是 ‘live-migration’,它将返回 400 错误。 这是当前行为。(未更改。)

  • GET /os-migrations

    当迁移类型为 ‘migration’、‘resize’ 或 ‘evacuation’(除了 ‘live-migration’)并且迁移状态正在进行中时,响应中也可用 ‘links’ 参数。

安全影响

默认情况下,只有管理员可以操作建议的功能。 因此,没有安全影响。

通知影响

其他最终用户影响

novaclient 和 openstackclient 已修改为指定迁移类型。

性能影响

其他部署者影响

开发人员影响

升级影响

实现

负责人

主要负责人

natsume-takashi

其他贡献者

工作项

  • 将 ‘type’ 查询参数添加到列出服务器迁移(‘evacuation’,‘resize’,‘migration’)API

  • 修改显示服务器迁移(‘evacuation’,‘resize’ 或 ‘migration’)API

  • 在 novaclient/openstackclient 中添加可选的 ‘type’ 参数

  • API 文档包括可能类型的说明

依赖项

测试

添加以下测试。

  • 功能测试

  • tempest test

文档影响

  • API 参考

  • CLI 参考

参考资料

历史

修订

发布名称

描述

Pike

已批准

Queens

重新批准

Rocky

重新提出