发现 iLO 驱动程序的节点属性和功能

蓝图 URL: https://blueprints.launchpad.net/ironic/+spec/ilo-properties-capabilities-discovery

本提案增加了使用 iLO 客户端 python 库(如参考部分中给出的 proliantutils 库)来内省/更新硬件属性并通过 iLO 为 HP ProLiant 服务器自动创建端口的能力。

问题描述

建议使用 iLO 驱动程序来发现节点属性,无论是否在裸机节点上部署操作系统。

提议的变更

以下强制属性将被发现并更新到 node.properties 中,如 https://specs.openstack.org/openstack/ironic-specs/specs/kilo/ironic-node-properties-discovery.html 中讨论的那样

  • 内存大小

  • CPU

  • CPU 架构

  • 网卡(s) MAC 地址

  • 磁盘

以下附加属性对 iLO 驱动程序感兴趣,并将作为功能被发现并更新到 node.properties 中

  • 支持的启动模式

    功能名称:supported_boot_mode 可能的值:bios, uefi, secure_boot

  • iLO 固件版本

    功能名称:ilo_firmware_version 可能的值:硬件不同,版本可能不同。

  • ROM 固件版本

    功能名称:rom_firmware_version 可能的值:硬件不同,版本可能不同。

  • 服务器名称/型号

    功能名称:server_model 可能的值:硬件不同,可能有所不同。

  • RAID 级别

    功能名称:max_raid_level 可能的值:0,1,2,3,4,5,6,10

  • 安全启动功能

    功能名称:support_secure_boot 可能的值:True, False

  • PCI (GPU) 设备

    功能名称:pci_gpu_devices 可能的值:此类设备的数量。

  • SR-IOV 功能

    功能名称:sr_iov_devices 可能的值:此类设备的数量。

  • NIC 容量

    功能名称:nic_capacity 可能的值:带有单位的值。

已经设置的属性将在重新调用 inspect_hardware() 时被覆盖。如果某个属性不适用于硬件或无法从硬件中检索到,则该属性将不会被添加到 node.properties 中作为功能。即使由于某些未知原因无法从硬件中检索到该属性,内省也不会返回失败,这与属性不适用于硬件的情况相同。

iLO 特定模块更改:

  • 实现 InspectInterface 方法 inspect_hardware()。

备选方案

这些属性可以在 ironic 之外手动发现,并相应地更新 node.properties 中的已发现属性。

数据模型影响

无。

Ironic CLI 影响

无。

REST API 影响

无。

RPC API 影响

无。

驱动程序 API 影响

无。

Nova 驱动程序影响

无。

安全影响

无。

其他最终用户影响

无。

可扩展性影响

无。

性能影响

无。

其他部署者影响

无。

开发人员影响

无。

实现

负责人

主要负责人

agarwalnisha1980

其他贡献者

wan-yen-hsu

工作项

  • 实现 InspectInterface 类及其方法 inspect_hardware()、validate() 和 get_properties()。

依赖项

测试

将添加符合 ironic 测试要求的单元测试,并模拟 proliantutils。iLO 团队将使用团队可用的硬件在实际硬件上进行测试。

升级和向后兼容性

没有影响。

文档影响

无。

参考资料

1. proliantUtils 库。(https://github.com/stackforge/proliantutils) (https://pypi.python.org/pypi/proliantutils)

2. 内省规范。 https://specs.openstack.org/openstack/ironic-specs/specs/kilo/ironic-node-properties-discovery.html