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:
parent
86c7eb7ffa
commit
a82a8f644e
212
specs/approved/redfish-inspection.rst
Normal file
212
specs/approved/redfish-inspection.rst
Normal 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
|
1
specs/not-implemented/redfish-inspection.rst
Symbolic link
1
specs/not-implemented/redfish-inspection.rst
Symbolic link
@ -0,0 +1 @@
|
||||
../approved/redfish-inspection.rst
|
Loading…
Reference in New Issue
Block a user