OSC 命令获取驱动程序相关信息的描述¶
几乎所有 ironic CLI 命令都有相应的 OpenStack Client (OSC) 命令。这在 将 ironic 命令作为 OSC 插件实现 中完成。
有两个 ironic CLI 命令
ironic driver-properties和ironic driver-raid-logical-disk-properties
没有相应的 OSC 命令。本规范为它们提出了 OSC 命令。
具有非默认接口的硬件类型属性在 获取动态驱动程序和非默认接口属性的 RFE 中讨论。该提案很可能会导致更丰富的 REST API(以及相应的 OSC 命令)。鉴于此,我们建议简单的 OSC 命令,目标是提供与 ironic CLI 命令等效的行为,仅此而已。
问题描述¶
下表显示了 ironic 驱动程序相关的命令及其关联的 OSC 命令。
ironic |
openstack baremetal |
|---|---|
driver-get-vendor-passthru-methods <driver> |
driver passthru list <driver> |
driver-list |
driver list |
driver-show <driver> |
driver show <driver> |
driver-vendor-passthru <driver> <method> … |
driver passthru call <driver> <method> … |
driver-properties <driver> |
? |
driver-raid-logical-disk-properties <driver> |
? |
问题在于如何使用与这些 ironic 命令对应的 OSC 命令
ironic driver-properties <driver>ironic driver-raid-logical-disk-properties <driver>.
这些命令返回包含两列的表格;驱动程序相关信息的名称和描述。
使情况复杂化的是,缺乏对称性。虽然名称(和描述)可以通过驱动程序获得,但这些值是通过使用这些驱动程序的节点指定的,而不是直接通过驱动程序指定的。
围绕此问题进行了一些讨论
http://lists.openstack.org/pipermail/openstack-dev/2016-September/103490.html
在 2017 年 2 月于亚特兰大举行的 OpenStack PTG 上简要讨论,参见 PTG operations etherpad 中的“如何调用(为其命名)列出 RAID 属性的 OSC 命令? (dtantsur)”
具有非默认接口的硬件类型属性在 获取动态驱动程序和非默认接口属性的 RFE 中讨论。该提案很可能会导致更丰富的 REST API(以及相应的 OSC 命令)。鉴于此,我们建议简单的 OSC 命令,目标是提供与 ironic CLI 命令等效的行为,仅此而已。
ironic driver-properties <driver>¶
命令 ironic driver-properties <driver> 返回一个驱动程序的“属性”,这些属性必须通过使用该驱动程序的节点指定。
例如,ironic driver-properties agent_ipmitool 返回一个信息表
+--------------------------+---------------------------------------------+
| Property | Description |
+--------------------------+---------------------------------------------+
| deploy_forces_oob_reboot | Whether Ironic should force a reboot of t...|
| deploy_kernel | UUID (from Glance) of the deployment kern...|
| deploy_ramdisk | UUID (from Glance) of the ramdisk that is...|
| image_http_proxy | URL of a proxy server for HTTP connection...|
| image_https_proxy | URL of a proxy server for HTTPS connectio...|
| image_no_proxy | A comma-separated list of host names, IP ...|
| ... | ... |
+--------------------------+---------------------------------------------+
这些驱动程序属性的值是按节点设置的,对于使用该驱动程序的每个节点。这些信息位于节点的 driver_info 字典字段中。它们可以在创建节点或 更新节点 时设置,例如使用 openstack baremetal node set <node> --driver-info。
ironic driver-raid-logical-disk-properties <driver>¶
命令 ironic driver-raid-logical-disk-properties <driver> 返回可以为特定驱动程序指定的 RAID 逻辑磁盘属性。
例如,ironic driver-raid-logical-disk-properties agent_ipmitool 返回一个信息表
+--------------------------+---------------------------------------------+
| Property | Description |
+--------------------------+---------------------------------------------+
| controller | Controller to use for this logical disk. ...|
| disk_type | The type of disk preferred. Valid values ...|
| interface_type | The interface type of disk. Valid values ...|
| is_root_volume | Specifies whether this disk is a root vol...|
| number_of_physical_disks | Number of physical disks to use for this ...|
| physical_disks | The physical disks to use for this logica...|
| raid_level | RAID level for the logical disk. Valid va...|
| share_physical_disks | Specifies whether other logical disks can...|
| size_gb | Size in GiB (Integer) for the logical dis...|
| ... | ... |
+--------------------------+---------------------------------------------+
这些磁盘属性的值是按节点设置的,对于使用驱动程序和 RAID 的每个节点。此信息位于节点的 target_raid_config 字段中,可以通过 节点的 set raid config API 或通过 openstack baremetal node set <node> --target-raid-config 设置(以 JSON 格式)。
提议的变更¶
OpenStackClient 命令结构是
openstack [<global-options>] <object-1> <action> [<object-2>] [<command-arguments>]
ironic driver-properties <driver>¶
<object-1> 部分将是“baremetal driver property”。
对于 <action>,PTG 上讨论了使用“list”与“show”的优点。在现有 OSC 命令使用这两个操作词的上下文中,这两个操作词似乎都不适合这两个命令,因为它们返回有关可用内容的描述(或文档)。但是,由于这很可能会被更丰富的 OSC 命令集取代(由 获取动态驱动程序和非默认接口属性的 RFE 产生),我们保持简单并使用“list”。(使用“list”可能意味着存在相应的“show”来深入了解更多信息。反之亦然;使用“show”可能意味着存在相应的“list”命令。)
OSC 命令是
openstack baremetal driver property list <driver>
例如
$ openstack baremetal driver property list agent_ipmitool
+--------------------------+---------------------------------------------+
| Property | Description |
+--------------------------+---------------------------------------------+
| deploy_forces_oob_reboot | Whether Ironic should force a reboot of t...|
| deploy_kernel | UUID (from Glance) of the deployment kern...|
| deploy_ramdisk | UUID (from Glance) of the ramdisk that is...|
| image_http_proxy | URL of a proxy server for HTTP connection...|
| image_https_proxy | URL of a proxy server for HTTPS connectio...|
| image_no_proxy | A comma-separated list of host names, IP ...|
| ... | ... |
+--------------------------+---------------------------------------------+
ironic driver-raid-logical-disk-properties <driver>¶
同样,由于这很可能会被更丰富的 OSC 命令集取代(将由 获取动态驱动程序和非默认接口属性的 RFE 产生),我们建议一个简单的 OSC 命令。
<object-1> 将是“baremetal driver raid property”,<action> 将是“list”
openstack baremetal driver raid property list <driver>
备选方案¶
还有其他选择,但在保持简单并弃用它时 获取动态驱动程序和非默认接口属性的 RFE 可用,我们专注于仅提供与 ironic CLI 命令等效的命令,这些命令可能不灵活或可扩展,但提供与 ironic CLI 命令的等效性。
数据模型影响¶
无。
状态机影响¶
无。
REST API 影响¶
无。
客户端 (CLI) 影响¶
本规范是关于 OSC CLI 的。
“ironic” CLI¶
无。
“openstack baremetal” CLI¶
见上文。
RPC API 影响¶
无。
驱动程序 API 影响¶
无。
Nova 驱动程序影响¶
无。
Ramdisk 影响¶
无。
安全影响¶
无。
其他最终用户影响¶
无。
可扩展性影响¶
无。
性能影响¶
无。
其他部署者影响¶
无。
开发人员影响¶
无。
实现¶
负责人¶
主要负责人:rloo (Ruby Loo)
其他贡献者:galyna (Galyna Zholtkevych)
工作项¶
在 python-ironicclient 中编写这两个 OSC 命令。
依赖项¶
无。
测试¶
类似于其他 OSC 命令的单元和功能测试。
升级和向后兼容性¶
无。
文档影响¶
无。 ironic 没有与 OSC 命令相关的文档。