Ironic 命令作为 OSC 插件的实现

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

OpenStackClient 正在成为 OpenStack 的事实上的 CLI 客户端。 本规范将详细说明命令结构应该是什么样子,包括参数和命令名称。

问题描述

OpenStackClient [1] 已经成为创建 OpenStack API 客户端的首选方法。 初始实现已经完成。 需要做的是定义命令结构应该是什么样子。 关于这些命令应该是什么样子,已经存在一些混淆/讨论 [2],因此创建规范似乎是正确的事情。

OpenStackClient 的目标是使 CLI 客户端对最终用户来说更加“自然”。 本规范将指定最终用户在与 Ironic 交互时将使用的命令。

提议的变更

提议的实现将实现以下 客户端 (CLI) 影响 部分中指定的全部命令。

此外(或作为澄清)OpenStackClient 命令结构 [3]

  • OpenStackClient 命令结构被描述为 <object1> <action> <object2>。 如果存在形式为 <object1> <action> 的命令,这不起作用。 相反,我们将使用形式 <object1> <object2> <action>。 (也许可以把它看作一个有两个部分的物体)。 例如,与其使用“openstack baremetal node set maintenance”(因为我们有“openstack baremetal node set”),我们将使用“openstack baremetal node maintenance set”。

  • 不要使用连字符名词,因为命令应该更“自然”,并且目前还没有命令(尚未)使用连字符。 例如,与其使用“openstack baremetal node boot-device set”,我们将使用“openstack baremetal node boot device set”。

  • 仅提供一个 OpenStackClient 命令来执行某项操作;避免使用别名

  • 对于命名,趋势是使用美式拼写,例如 ‘favor’ 而不是 ‘favour’。 也就是说,重要的是要考虑到 OpenStack 之外的术语/用法,例如操作员和管理员。

备选方案

继续使用当前的客户端并删除现有的 OSC 插件部分。

数据模型影响

状态机影响

REST API 影响

客户端 (CLI) 影响

openstack baremetal chassis

  • openstack baremetal chassis show <uuid>

    --fields <field,[field,…]>

    选择要获取和显示的字段

  • openstack baremetal chassis list

    --long

    显示详细的机箱信息(与 –fields 互斥)

    --limit <limit>

    限制返回的项目数量

    --marker <uuid>

    从哪个机箱 uuid 开始

    --sort <key[:direction]>

    排序的键和方向。 <direction> 是可选的。 默认按升序排列。

    --fields <field,[field,…]>

    选择要获取和显示的字段。 (与 –long 互斥)

  • openstack baremetal chassis create

    --description <description>

    机箱描述

    --extra <key=value>

    额外的机箱属性。 可以多次指定。

    --uuid <uuid>

    机箱的 UUID

  • openstack baremetal chassis delete <uuid> [<uuid> …]

  • openstack baremetal chassis set <uuid>

    --extra <key=value>

    要设置或更新的属性。 可以多次指定。

    --description <description>

    机箱描述

  • openstack baremetal chassis unset <uuid>

    --extra <key>

    要取消设置的属性的键。 可以多次指定。

    --description <description>

    将取消设置机箱描述(‘’)

ironic CLI 用户想要查看给定机箱所属的节点列表,应使用 openstack baremetal node list --chassis,因为我们不会提供 openstack baremetal chassis xxx 等效于 ironic chassis-node-list

openstack baremetal driver

  • openstack baremetal driver list

  • openstack baremetal driver show <driver>

  • openstack baremetal driver passthru list <driver>

  • openstack baremetal driver passthru call <driver> <method>

    <method> 供应商 passthru 方法调用。

    --arg <key=value>

    要添加到 passthru 方法的 key=value。 可以多次指定。

    --http-method <http_method>

    ‘POST’、‘PUT’、‘GET’、‘DELETE’、‘PATCH’ 中的一个

openstack baremetal node

  • openstack baremetal node show <uuid>

    已弃用:openstack baremetal show

    --instance

    将 <uuid> 解释为实例 UUID

    --fields <field,[field,…]>

    选择要获取和显示的字段。

  • openstack baremetal node list

    已弃用:openstack baremetal list

    --limit <limit>

    限制返回的项目数量

    --marker <uuid>

    从哪个节点开始

    --sort <key[:direction]>

    排序的键和方向。 <direction> 是可选的。

    --maintenance

    列出处于维护模式的节点

    --associated

    列出与实例关联的节点

    --chassis <uuid>

    用于限制节点列表的机箱 UUID

    --provision-state <state>

    显示指定 <state> 中的节点

    --fields <field,[field,…]>

    选择要获取和显示的字段。 (与 –long 互斥)

  • openstack baremetal node create

    已弃用:openstack baremetal create

    --chassis-uuid <uuid>

    此节点所属的机箱

    --driver <driver>

    用于控制节点的驱动程序

    --driver-info <key=value>

    驱动程序使用的 key=value 对。 可以多次指定。

    --property <key=value>

    节点的属性。 可以多次指定。

    --extra <key=value>

    任意元数据。 可以多次指定。

    --uuid <uuid>

    节点的唯一 UUID。 可选。

    --name <name>

    节点的唯一名称。

  • openstack baremetal node delete <uuid> [<uuid> …]

    已弃用:openstack baremetal delete

  • openstack baremetal node set <uuid>

    已弃用:openstack baremetal set

    --name <name>

    节点的名称

    --instance-uuid <uuid>

    实例 UUID

    --driver <driverid>

    驱动程序名称或 UUID

    --property <key=value>

    要设置/更新的节点上的属性。 可以多次指定。

    --extra <key=value>

    要设置/更新的节点上的额外信息。 可以多次指定。

    --driver-info <key=value>

    要设置/更新的节点上的 driver-info。 可以多次指定。

    --instance-info <key=value>

    要设置/更新的节点上的 instance-info。 可以多次指定。

    --target-raid-config <config>

    设置节点的 target RAID 配置(JSON)。 这可以是:1. 包含 RAID 配置 JSON 数据的 gzip 压缩、base64 编码的字符串;2. “-” 以从标准输入读取内容;或 3. 有效的 JSON 字符串。

  • openstack baremetal node unset <uuid>

    已弃用:openstack baremetal unset

    --property <key>

    要从节点上取消设置的键。 可以多次指定。

    --extra <key>

    要从额外信息中取消设置的键。 可以多次指定。

    --driver-info <key>

    要从 driver-info 中取消设置的键。 可以多次指定。

    --instance-info <key>

    要从 instance-info 中取消设置的键。 可以多次指定。

    --instance-uuid <uuid>

    实例 uuid。

    --name

    节点的名称。

    --target-raid_config

    target RAID 配置

  • openstack baremetal node passthru list <uuid>

  • openstack baremetal node passthru call <uuid> <method>

    <method> 要调用的供应商 passthru 方法

    --arg <key=value>

    要发送到 passthru 方法的参数。 可以多次指定。

    --http-method <http_method>

    ‘POST’、‘PUT’、‘GET’、‘DELETE’、‘PATCH’ 中的一个

  • openstack baremetal node console show <uuid>

  • openstack baremetal node console enable <uuid>

  • openstack baremetal node console disable <uuid>

  • openstack baremetal node boot device show <uuid>

    --supported

    显示支持的启动设备

  • openstack baremetal node boot device set <uuid> <device>

    <device> 其中之一:‘pxe’、‘disk’、‘cdrom’、‘bios’、‘safe’

    --persistent

    使更改在所有未来的启动中持久化。

  • openstack baremetal node deploy <uuid>

    --config-drive <config_drive>

    gzip 压缩、base64 编码的配置驱动字符串,或者配置驱动文件的路径,或者包含配置驱动文件的目录的路径。 如果是目录,将从目录生成配置驱动。

  • openstack baremetal node undeploy <uuid>

  • openstack baremetal node rebuild <uuid>

  • openstack baremetal node inspect <uuid>

  • openstack baremetal node provide <uuid>

  • openstack baremetal node manage <uuid>

  • openstack baremetal node abort <uuid>

  • openstack baremetal node maintenance set <uuid>

    --reason <reason>

    设置为维护模式的原因

  • openstack baremetal node maintenance unset <uuid>

  • openstack baremetal node power on <uuid>

  • openstack baremetal node power off <uuid>

  • openstack baremetal node reboot <uuid>

  • openstack baremetal node validate <uuid>

ironic CLI 用户想要查看给定机箱所属的节点列表,应使用 openstack baremetal port list --node,因为我们不会提供 openstack baremetal node xxx 等效于 ironic node-port-list

ironic CLI 用户想要等效于 ironic node-show-states,应使用以下命令

openstack baremetal node show <node> --fields console_enabled last_error
power_state provision_state provision_updated_at raid_config
target_power_state target_provision_state target_raid_config

openstack baremetal port

  • openstack baremetal port show <uuid|mac>

    --address <mac>

    MAC 地址而不是 uuid

    --fields <field[,field,…]>

    要显示的字段

  • openstack baremetal port list

    --limit <limit>

    限制返回的项目数量

    --marker <marker>

    从哪个端口开始

    --sort <key[:direction]>

    排序的键和方向

    --long

    显示端口的详细信息。 与 –fields 互斥。

    --fields <field[,field,…]>

    要显示的字段。 与 –long 互斥。

    --node <nodeid>

    用于限制端口显示的节点 UUID 或名称

  • openstack baremetal port create <address>

    --node <uuid>

    要将端口添加到的节点 uuid

    --extra <key=value>

    任意 key=value 元数据。 可以多次指定。

  • openstack baremetal port delete <uuid> [<uuid> …]

  • openstack baremetal port set <uuid>

    --extra <key=value>

    要设置的属性。 可以多次指定。

    --address <macaddress>

    设置端口的新 MAC 地址

    --node <nodeid>

    设置端口分配到的节点 UUID 或名称

  • openstack baremetal port unset <uuid>

    --extra <key>

    要删除的键。 可以多次指定。

未解决

这些 ironic CLI 命令对应的 OpenStackClient 命令尚未通过此提案解决。 它们将在未来的版本中解决。

  • ironic driver-raid-logical-disk-properties。 获取驱动程序的 RAID 逻辑磁盘

    属性。

  • ironic driver-properties。 获取驱动程序的属性(node.driver_info 键和

    描述)。

RPC API 影响

驱动程序 API 影响

Nova 驱动程序影响

Ramdisk 影响

N/A

安全影响

其他最终用户影响

可扩展性影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

其他贡献者

工作项

待定

依赖项

测试

将添加单元测试。

升级和向后兼容性

其中一些命令已经有了实现。 少数命令可能会随着此规范而更改。 这些现有命令将经历弃用期。

文档影响

命令行文档将更新以显示这些新命令。

参考资料