暴露支持的电源状态

https://bugs.launchpad.net/ironic/+bug/1734827

本 SPEC 建议添加一个新的 API 来暴露节点支持的电源状态。此 API 将有助于判断节点是否支持某个电源操作,因为它取决于电源接口是否支持软关机和软重启等电源操作。

问题描述

Ironic 自 Ocata 版本以来支持软关机和软重启。但是,并非所有电源接口都支持这些新的电源操作。因此,需要一个新的 API 来查看节点是否支持某个电源操作。该提议的 API 与获取节点支持的启动设备 API 类似,该 API 的描述见 此处

提议的变更

将引入新的 API 来获取节点的当前电源状态和支持的电源状态。详情请参见“REST API 影响”部分

  • GET /v1/nodes/{node_ident}/states/power

  • GET /v1/nodes/{node_ident}/states/power/supported

还将为新的 API 添加新的 CLI。详情请参见“客户端 (CLI) 影响”部分

  • openstack baremetal node power show [--supported] <node>

备选方案

另一种选择是仅添加一个新的 API 来获取支持的电源状态。还有一些其他选项可以通过 CLI 支持该 API

  • 将一个新的选项添加到 openstack baremetal node show 以显示支持的电源状态。

  • 添加一个新的子命令来显示支持的电源状态,例如:openstack baremetal node supported power show

但是,当前的设计更符合现有 API 和启动设备的 CLI 的一致性。

数据模型影响

状态机影响

REST API 影响

我们将引入两个 API。它们将从一个新的 Bare Metal API 版本开始可用。

  • 获取节点的当前电源状态

    GET /v1/nodes/{node_ident}/states/power

    响应如下

    {
      "power_state": "power on"
    }
    
  • 获取节点的支持的电源状态

    GET /v1/nodes/{node_ident}/states/power/supported

    响应包含节点的支持的电源状态:例如

    {
      "supported_power_states": [
        "power on",
        "power off",
        "rebooting",
        "soft rebooting",
        "soft power off"
      ]
    }
    

客户端 (CLI) 影响

openstack baremetal CLI 将支持新的 API。

“ironic” CLI

不再向“ironic” CLI 添加新功能。

“openstack baremetal” CLI

将添加一个新的子命令

openstack baremetal node power show [--supported] <node>

在不使用 --supported 选项的情况下,此命令将显示指定节点的电源状态。当指定 --supported 选项时,此命令将显示支持的电源状态。

RPC API 影响

将添加一个新的 RPC API,get_supported_power_states。这将同步返回指定节点支持的电源状态列表。

驱动程序 API 影响

驱动程序 API get_suuported_power_states 已经在基本的电源接口中定义。如果电源接口没有覆盖该方法,则将返回默认列表,其中包含上电、关机和重启。

Nova 驱动程序影响

新的 API 可用于查看是否支持请求的电源操作。虽然这可能对 Nova 驱动程序有所帮助,但目前没有计划进行更改。

Ramdisk 影响

安全影响

其他最终用户影响

可扩展性影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

shiina-hironori (irc:hshiina)

其他贡献者

工作项

  • 添加新的 RPC API。

  • 添加新的 Baremetal API。

  • 添加 OSC baremetal 子命令。

  • 为 tempest 添加一个新的 API 测试。

  • 将新的 API 添加到 API 参考中。

依赖项

测试

将在 Tempest 中添加一个 API 测试。

升级和向后兼容性

文档影响

新的 API 将被添加到 Baremetal API 参考中。

参考资料

此变更最初是在审查支持软关机的 SPEC 时提到的:https://review.opendev.org/#/c/186700/