OOB inspection support for `redfish` hardware type

This spec adds support for out-of-band inspection of Redfish
compliant servers using `redfish` hardware type. It fetches
node's essential properties and capabilities available on the
given hardware using DMTF standard Redfish resources.

Change-Id: I156e4610dc0e166c41c46b26fe23aedeb2f00129
Partial-bug: #1668487
This commit is contained in:
Shivanand Tendulker 2017-02-28 01:33:29 -08:00
parent 86c7eb7ffa
commit a82a8f644e
2 changed files with 213 additions and 0 deletions

View File

@ -0,0 +1,212 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
============================================================
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.
References
==========
* `Introspect spec`_
* `Common Ironic Capabilities spec`_
* `Sushy library`_
* `Redfish hardware type`_
.. _`Introspect spec`: https://github.com/openstack/ironic-specs/blob/master/specs/kilo/ironic-node-properties-discovery.rst
.. _`Common Ironic Capabilities spec`: https://specs.openstack.org/openstack/ironic-specs/specs/not-implemented/add-new-oob-properties-to-ilo-drivers.html
.. _`DMTF standard Redfish schemas`: https://www.dmtf.org/standards/redfish
.. _`Sushy library`: https://pypi.python.org/pypi/sushy
.. _`Ironic Inspector`: https://docs.openstack.org/ironic-inspector/latest/
.. _`Redfish hardware type`: https://docs.openstack.org/ironic/latest/admin/drivers/redfish.html

View File

@ -0,0 +1 @@
../approved/redfish-inspection.rst