This spec proposes to add few more capabilities which can be implemented inband or out-of-band as per driver's need. Related-Bug: 1599425 Change-Id: I4213668273ffa954dd30818b74a58d11153d5f97
7.5 KiB
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.