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
安全影响¶
无
其他最终用户影响¶
无
可扩展性影响¶
无
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
主要负责人
brad-9 <brad@redhat.com>
其他贡献者
Romanenko_K <kromanenko@mirantis.com>
rloo <ruby.loo@intel.com>
工作项¶
待定
依赖项¶
无
测试¶
将添加单元测试。
升级和向后兼容性¶
其中一些命令已经有了实现。 少数命令可能会随着此规范而更改。 这些现有命令将经历弃用期。
文档影响¶
命令行文档将更新以显示这些新命令。