Out of Band Inspection support for redfish hardware type

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

This proposal adds the ability to inspect/update hardware properties and auto-create ports in OOB manner for Redfish hardware type.

Problem description

Node inspection automatically collects and updates node properties. These properties can be used to seggregate bare metal nodes into appropriate resource classes that could be used in nova scheduling. Node inspection also creates ironic ports for all discovered NIC(s). The redfish hardware type has support for inband inspection using inspector (Ironic Inspector). The DMTF standard Redfish schemas supports OOB interfaces to fetch most of the inspection properties supported by ironic. By adding support for OOB inspection, the overall time needed to introspect a bare metal can be reduced.

Proposed change

This spec proposes add OOB inspection support for redfish hardware type. It would discover ironic supported node properties and capabilities for Redfish compliant servers. This will be done by enhancing Sushy library to fetch the required properties from Redfish controller running on the bare metal BMC.

The following mandatory properties will be discovered and updated in node.properties for redfish hardware type, as discussed in Introspect spec

  • memory size
  • CPUs
  • CPU architecture
  • NIC(s) MAC address
  • disks

It would also implement the additional capabilities discussed in Common Ironic Capabilities spec and available using DMTF standard Redfish schemas for redfish hardware type.

The properties which are already set will be overridden upon invocation of inspect_hardware() except for ironic ports. If a ironic port already exists, it will not create a new port for that MAC address. It will take care of adding as well as deleting of the ports for NIC changes as discussed in Introspect spec. Not all the capabilities supported by ironic are available in all Redfish compliant servers. If a property is not available in the hardware, the property will not be added/updated in node.properties as capabilities.

Inspection would return failure in the following cases:

  • Failed to get basic properties.
  • Failed to get capabilities, due to service configuration errors.
  • Communication errors with Redfish manager.

Sushy changes

Implement InspectInterface method inspect_hardware in Sushy library.

Alternatives

One can continue to discover these properties using inband mechanism of inspector supported by redfish hardware type.

Data model impact

None

State Machine Impact

None

REST API impact

None

Client (CLI) impact

None

“ironic” CLI

None

“openstack baremetal” CLI

None

RPC API impact

None

Driver API impact

None

Nova driver impact

None

Ramdisk impact

None

Security impact

None

Other end user impact

With OOB inspection, time required for hardware introspection would be reduced.

Scalability impact

None

Performance Impact

None

Other deployer impact

With OOB inspection, time required for hardware introspection would be reduced.

Developer impact

None

Implementation

Assignee(s)

Primary assignee:
stendulker
Other contributors:
agarwalnisha1980

Work Items

  • Implementation of the InspectInterface class and its methods inspect_hardware(), validate() and get_properties().
  • Enhance Sushy library to discover required hardware properties.

Dependencies

  • Depends on Sushy library

Testing

  • Unit tests will be added conforming to ironic testing requirements.
  • CI support will be added for inspection server using virtual CI based on sushy-tools.

Upgrades and Backwards Compatibility

None

Documentation Impact

Redfish hardware type document would be updated for OOB inspection feature.