为 ironic 检查添加更多功能

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

本规范为 ironic 驱动程序添加了一些额外的功能。这些功能可以根据驱动程序维护者的技术决策,通过带内或带外方式实现。

问题描述

操作员可能希望根据许多其他硬件属性(如 cpu_vt、trusted_boot 等)来调度和选择硬件。

提议的变更

将发现以下属性

capability name: trusted_boot
possible values: true|false
explanation    : The hardware supports trusted boot or not.

capability name: iscsi_boot
possible values: true|false
explanation    : The hardware supports iscsi boot or not.

capability name : boot_mode_uefi
possible values : true|false
explanation     : The hardware supports uefi boot or not.
                  It is not the current boot mode. This
                  may not be discovered through inband
                  inspection.

capability name : boot_mode_bios
possible values : true|false
explanation     : The hardware supports bios boot or not.
                  It is not the current boot mode.

capability name : sriov_enabled
possible values : true|false

capability_name : has_ssd
possible values : true|false

capability_name : has_rotational
possible_values : true|false

capability name : rotational_drive_<rpm_value>_rpm
possible values : true|false
explanation     : The capabilities will turn out to be
                  rotational_drive_4800_rpm,
                  rotational_drive_5400_rpm,
                  rotational_drive_7200_rpm,
                  rotational_drive_10000_rpm, and
                  rotational_drive_15000_rpm. These
                  looks to be the only and standard values
                  for rotational drive rpms.

capability name : logical_raid_level_<num>
possible values : true|false
explanation     : The capabilities ``logical_raid_level_<num>``
                  will have "num" as the dynamic number and
                  will have names as ``logical_raid_level_1``,
                  ``logical_raid_level_2``, and so on. There can
                  be multiple RAIDs configured on a hardware. This
                  gives flexibility to the operator to choose a
                  hardware which has the desired raid configured.
                  So if RAID level 1 is configured, the
                  variable becomes ``logical_raid_level_1`` set
                  to ``true``. if RAID level 5 is configured,
                  the variable becomes ``logical_raid_level_5``
                  set to ``true``. These capabilities would be
                  used only for scheduling, and ironic is
                  not supposed to create RAID level as per these
                  capabilities.
                  These capabilities should be added via RAID
                  interfaces also. These are added via inspection
                  as there can be baremetals added to ironic which
                  have RAID pre-configured.

capability name : cpu_vt
possible values : true|false

capability name : hardware_supports_raid
possible values : true|false

capability name : boot_mode
possible values : bios, uefi
explanation     : This represents the deploy boot mode of
                  the system.

capability name : has_nvme_ssd
possible values : true|false

capability name : persistent_memory
possible values : true|false

capability name : nvdimm_n
possible values : true|false

capability name : logical_nvdimm_n
possible values : true|false

其他驱动程序/供应商可能需要以下功能列表。这些功能已经由 iLO 驱动程序实现

capability name : <driver>_firmware_version
possible values : varies from hardware to hardware
explanation     : Here driver means ilo or irmc or any other
                  vendor. Hence the capability becomes
                  ilo_firmware_version or irmc_firmware_version.

capability name : server_model
possible values : varies from hardware to hardware.

capability name : secure_boot
possible values : true|false

capability name : pci_gpu_devices
possible values : count of total GPU devices.

capability name : nic_capacity
possible values : Maximum NIC capacity value with unit.

capability name : rom_firmware_version
possible values : vary from hardware to hardware.

以下功能已经由 ironic-inspector 实现

capability name : cpu_aes
possible values : true|false

capability name : cpu_txt

capability name : cpu_hugepages

capability name : cpu_hugepages_1g

这些可能不属于特定功能的一部分,但需要进行检查。ironic-inspector 已经检查了这些属性

property name   : switch_id
explanation     : Identifies a switch and can be a MAC address
                  or an OpenFlow-based ``datapath_id``

property_name   : port_id
explanation     : Port ID on the switch, for example, Gig0/1

property_name   : switch_info
explanation     : Used to distinguish different switch models
                  or other vendor-specific identifier.

has_ssdhas_rotational 是两个不同的属性,因为硬件可以同时连接这两种类型的驱动器。

添加了 boot_mode_* 功能,因为硬件可以同时支持 bios 和 uefi,而当前的功能 boot_mode 只能接受一个值。当 nova flavor 中提供新的功能 boot_mode_biosboot_mode_uefi 时,驱动程序需要调整部署行为。本规范范围之外的是驱动程序对 boot_mode_* 功能所需的更改。

备选方案

操作员可能需要手动配置节点,以便 nova 调度器能够选择用于部署的所需节点。

数据模型影响

无。

状态机影响

无。

REST API 影响

无。

客户端 (CLI) 影响

无。

RPC API 影响

无。

驱动程序 API 影响

无。

Nova 驱动程序影响

无。

Ramdisk 影响

无。

安全影响

无。

其他最终用户影响

无。

可扩展性影响

无。

性能影响

无。

其他部署者影响

无。

开发人员影响

无。

实现

负责人

主要负责人

Nisha Agarwal <agarwalnisha1980>

工作项

  • 为了将上述功能添加到检查中。

依赖项

无。

测试

  • 测试驱动程序,以便在完成检查后返回上述属性。

升级和向后兼容性

无。

文档影响

将记录以下内容

  • 将作为本规范的一部分添加的新属性。

  • nova flavor 示例说明如何在创建所需的 nova flavor 中使用这些属性。

参考资料

无。