跳转到: 导航, 搜索

VMPowerOnOff

总结

在 Nova 中添加以下功能:

  1. 在不销毁实例的情况下关闭虚拟机
  2. 在选择的可用区中启动已关闭的虚拟机

发布说明

添加了以下功能

  1. 在不销毁实例的情况下关闭虚拟机
  2. 稍后在选择的可用区中,使用相同的设置启动之前关闭的虚拟机
  3. 为此添加了一种新的电源状态 POWER_OFF

原理

无法关闭虚拟机并在稍后使用相同的网络设置启动它。

用户故事

用户希望稍后使用当前设置的现有虚拟机。

设计

  1. VmPowerOnOffController 将具有扩展功能,以
    1. 关闭虚拟机
    2. 在给定的可用区中启动虚拟机

实现

代码变更

添加 VmPowerOnOffController 以支持以下 API

1. 关闭虚拟机

    URI: v2/<tenant_id>/servers/<server_id>/action
    Request Body: JSON
            {
                "vm-poweroff": {}
             }

    Normal Response Code: 202
    Error Response Code(s): Bad Request (400), Not Found(404)
    
    Response: JSON
            {
                <To be Added>
            }

    Response: XML
            <?xml version="1.0" encoding="UTF-8"?>
                <To be Added>


2. 启动虚拟机

    URI: v2/<tenant_id>/servers/<server_id>/action
    Request body: JSON
        {
            "vm-poweron": {
                "availability_zone": <availability_zone>
            }
        }

    Request body: XML
        <?xml version="1.0" encoding="UTF-8"?>
                    <To be Added>

    Normal Response Code: 202
    Error Response Code(s): Bad Request (400), Not Found(404)
    
    Response: JSON
        {
                <To be Added>
        }

    Response: XML
        <?xml version="1.0" encoding="UTF-8"?>

                <To be Added>


需要处理的可能异常

  1. 虚拟机不在 POWER_OFF 状态。
  2. 虚拟机不存在。
  3. 权限不足:API 应返回带有适当错误消息的“错误请求 (400)”响应。

迁移

没有数据库或核心 API 更改。

测试/演示计划

正在添加的测试

BoF 议程和讨论