Add more capabilities to ironic inspection¶
This spec adds a few more capabilities to ironic drivers. The capabilities can be implemented in-band or out-of-band as per driver maintainer’s technical decision.
The operator may be interested to schedule and select the hardware based on many other hardware properties like cpu_vt, trusted_boot, etc.
Following properties will be discovered:
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
The other drivers/vendors may require the below list of capabilities. These are already implemented by iLO drivers:
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.
Few which are already implemented by ironic-inspector:
capability name : cpu_aes possible values : true|false capability name : cpu_txt capability name : cpu_hugepages capability name : cpu_hugepages_1g
These may not be part of capabilities specifically, but required to be inspected. The ironic-inspector already inspects these properties:
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_rotational are two different properties
as the hardware can have both kind of drives attached.
boot_mode_* are added as a hardware could be
supporting both bios and uefi and the current capability
can accept only one value. The drivers would need to adjust the
deploy behaviour when the new capabilities
boot_mode_uefi are given in nova flavor. The changes required
in drivers for
boot_mode_* capabilities is out of scope of
Operator may need to manually configure the node with above properties for nova scheduler to be able to select the desired node for deploy.
Data model impact¶
State Machine Impact¶
REST API impact¶
Client (CLI) impact¶
RPC API impact¶
Driver API impact¶
Nova driver impact¶
Other end user impact¶
Other deployer impact¶
- Primary assignee:
Nisha Agarwal <agarwalnisha1980>
To add the above capabilities to the inspection.
Test the drivers to return above properties after inspection is done.
Upgrades and Backwards Compatibility¶
Following will be documented:
The new properties which would be added as part of this spec.
The nova flavor samples how these properties can be used in creation of required nova flavors.