Add more capabilities to ironic inspection

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

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.

Problem description

The operator may be interested to schedule and select the hardware based on many other hardware properties like cpu_vt, trusted_boot, etc.

Proposed change

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_ssd and has_rotational are two different properties as the hardware can have both kind of drives attached.

The capabilities boot_mode_* are added as a hardware could be supporting both bios and uefi and the current capability boot_mode can accept only one value. The drivers would need to adjust the deploy behaviour when the new capabilities boot_mode_bios or boot_mode_uefi are given in nova flavor. The changes required in drivers for boot_mode_* capabilities is out of scope of this spec.

Alternatives

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

None.

State Machine Impact

None.

REST API impact

None.

Client (CLI) impact

None.

RPC API impact

None.

Driver API impact

None.

Nova driver impact

None.

Ramdisk impact

None.

Security impact

None.

Other end user impact

None.

Scalability impact

None.

Performance Impact

None.

Other deployer impact

None.

Developer impact

None.

Implementation

Assignee(s)

Primary assignee:

Nisha Agarwal <agarwalnisha1980>

Work Items

  • To add the above capabilities to the inspection.

Dependencies

None.

Testing

  • Test the drivers to return above properties after inspection is done.

Upgrades and Backwards Compatibility

None.

Documentation Impact

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.

References

None.