Follow-up patch for the Redfish spec
This patch contains changes to the driver's properties from the original
Redfish spec[0].
Before the driver was expecting a single "redfish_uri" property which
contained two pieces of information: The URI to the root resource and
the system resource identifier.
As discussed on IRC on 14/03/2017 [1] and later on 21/03/2017 [2], it
turns out that the Redfish specification isn't very opinionated regarding
the names of the resources which may lead to some implementations to
call /Systems (as we call it in this specification) /Nodes or any other
variant. Therefore, splitting the old proposed "redfish_uri" into
"redfish_address" and "redfish_system_id" makes more sense and makes the
driver more flexible when working with different types of Redfish
systems from different vendors.
[0] 88b55d4307
[1] http://eavesdrop.openstack.org/irclogs/%23openstack-ironic/%23openstack-ironic.2017-03-14.log.html#t2017-03-14T12:05:46
[2] http://eavesdrop.openstack.org/irclogs/%23openstack-ironic/%23openstack-ironic.2017-03-21.log.html#t2017-03-21T16:36:08
Change-Id: I9cdeee2f50859d97e8ae8b8b4d528446e106eced
This commit is contained in:
parent
1a4ea22810
commit
6c8c98679a
|
@ -4,14 +4,15 @@
|
|||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
=========================
|
||||
Redfish driver interfaces
|
||||
=========================
|
||||
====================================
|
||||
Redfish hardware type and interfaces
|
||||
====================================
|
||||
|
||||
https://bugs.launchpad.net/ironic/+bug/1526477
|
||||
|
||||
This specification proposes the addition of a new driver in order to support
|
||||
Ironic deployment on Redfish compliant servers.
|
||||
This specification proposes the addition of a new ``redfish`` hardware
|
||||
type, power and management interfaces in order to support ironic
|
||||
deployment on Redfish compliant servers.
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
@ -19,25 +20,28 @@ Problem description
|
|||
The Distributed Management Task Force (DMTF) has published a new specification
|
||||
called Redfish (refer to http://www.dmtf.org/standards/redfish) to provide a
|
||||
RESTful based API to manage servers in a standard way. This specification aims
|
||||
at adding support to Ironic for controlling Redfish compliant servers.
|
||||
at adding support to ironic for controlling Redfish compliant servers.
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
Power and management interfaces will be extended with Redfish support.
|
||||
The new Redfish module can use either the python-redfish (when it is mature
|
||||
enough) or the sushy library for communicating with a Redfish system.
|
||||
(refer to https://github.com/openstack/python-redfish and
|
||||
https://github.com/openstack/sushy)
|
||||
This spec proposes adding a new ``redfish`` hardware type, power and
|
||||
management interfaces. None of which will be enabled by default.
|
||||
|
||||
The goal is to provide power management similarly to what is done
|
||||
in the pre-existing in-tree drivers.
|
||||
The new interfaces will use the `sushy`_ library in order to handle the
|
||||
communication between the driver and the Redfish controller.
|
||||
|
||||
This library may be switched to `python-redfish`_ in the future after
|
||||
re-evaluation by the ironic community. The switch to `python-redfish`_
|
||||
is outside the scope of this specification, but it should not cause
|
||||
any public interface to be changed. It would most likely involve code
|
||||
changes and new configuration options.
|
||||
|
||||
Note that no OEM specific extension will be supported.
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
No real alternative exists currently
|
||||
None
|
||||
|
||||
Data model impact
|
||||
-----------------
|
||||
|
@ -89,31 +93,49 @@ None
|
|||
|
||||
Other deployer impact
|
||||
---------------------
|
||||
The following driver_info fields are required while enrolling nodes into Ironic:
|
||||
* redfish_uri URI of the System to interact with
|
||||
(e.g.: http://x.y.z.t/redfish/v1/Systems/1 or
|
||||
https://redfishmgr/redfish/v1/Systems/CX34R87)
|
||||
* redfish_username: User account with admin/server-profile access privilege
|
||||
* redfish_password: User account password
|
||||
* redfish_verify_ca: this property contains either a boolean value,
|
||||
a path to a CA_BUNDLE file or directory with
|
||||
certificates of trusted CAs. If set to True
|
||||
the driver will verify the host certificates;
|
||||
if False the driver will ignore verifying the
|
||||
SSL certificate; If it's a path the driver will
|
||||
use the specified certificate or one of the
|
||||
certificates in the directory. Defaults to True.
|
||||
The following driver_info fields are required while enrolling nodes
|
||||
into ironic:
|
||||
|
||||
* ``redfish_address``: The URL address to the Redfish controller. It
|
||||
should include scheme and authority portion of the URL. For example:
|
||||
https://mgmt.vendor.com
|
||||
|
||||
* ``redfish_system_id``: The canonical path to the ComputerSystem
|
||||
resource that the driver will interact with. It should include the
|
||||
root service, version and the unique resource path to a ComputerSystem
|
||||
within the same authority as the redfish_address property. For
|
||||
example: /redfish/v1/Systems/1
|
||||
|
||||
* ``redfish_username``: User account with admin/server-profile
|
||||
access privilege. Although this property is not mandatory it's highly
|
||||
recommended to set a username. Optional
|
||||
|
||||
* ``redfish_password``: User account password. Although this property
|
||||
is not mandatory it's highly recommended to set a password. Optional
|
||||
|
||||
* ``redfish_verify_ca``: This property contains either a boolean
|
||||
value, a path to a CA_BUNDLE file or directory with certificates
|
||||
of trusted CAs. If set to True the driver will verify the host
|
||||
certificates; if False the driver will ignore verifying the SSL
|
||||
certificate; If it's a path the driver will use the specified
|
||||
certificate or one of the certificates in the directory. Defaults
|
||||
to True. Optional
|
||||
|
||||
For more information about the expected syntax of the
|
||||
``redfish_system_id`` property check the `Resource identifier property
|
||||
<http://redfish.dmtf.org/schemas/DSP0266_1.1.html#resource-identifier-property>`_
|
||||
section of the DMTF specification.
|
||||
|
||||
The following new configuration variables are proposed (and their default
|
||||
values) to be added to the conductor variable group:
|
||||
|
||||
* [redfish]/connection_attempts = 5
|
||||
* [redfish]/``connection_attempts``
|
||||
|
||||
Maximum number of attempts to try to connect to Redfish
|
||||
Maximum number of attempts to try to connect to Redfish.
|
||||
|
||||
* [redfish]/connection_retry_interval = 2
|
||||
* [redfish]/``connection_retry_interval``
|
||||
|
||||
Number of seconds to wait between attempts to connect to Redfish
|
||||
Number of seconds to wait between attempts to connect to Redfish.
|
||||
|
||||
Developer impact
|
||||
----------------
|
||||
|
@ -139,14 +161,14 @@ Work Items
|
|||
|
||||
* Add a new ``redfish`` hardware type, power and management interfaces.
|
||||
* Write unit-tests for the new code.
|
||||
* Modify the Ironic DevStack module to setup a virtual environment that
|
||||
* Modify the ironic DevStack module to setup a virtual environment that
|
||||
is able to test nodes using the new Redfish driver.
|
||||
* Write documentation.
|
||||
|
||||
Dependencies
|
||||
============
|
||||
This driver requires either that python-redfish or sushy installed on the
|
||||
conductor node.
|
||||
The new ``redfish`` power and management interfaces will require the
|
||||
`sushy`_ library to be installed on the conductor node.
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
@ -163,16 +185,19 @@ the RPC API.
|
|||
|
||||
Documentation Impact
|
||||
====================
|
||||
* Updating Ironic documentation section _`Enabling Drivers`:
|
||||
http://docs.openstack.org/developer/ironic/deploy/drivers.html with Redfish
|
||||
related instructions.
|
||||
* Updating Ironic install-guide documentation section
|
||||
_`Setup the drivers for the Bare Metal service`:
|
||||
http://docs.openstack.org/project-install-guide/baremetal/draft/setup-drivers.html
|
||||
* Updating ironic documentation section `Enabling Drivers
|
||||
<http://docs.openstack.org/developer/ironic/deploy/drivers.html>`_
|
||||
with Redfish related instructions.
|
||||
|
||||
* Updating ironic install-guide documentation section
|
||||
`Setup the drivers for the Bare Metal service
|
||||
<http://docs.openstack.org/project-install-guide/baremetal/draft/setup-drivers.html>`_.
|
||||
|
||||
References
|
||||
==========
|
||||
* Redfish DMTF: http://www.dmtf.org/standards/redfish
|
||||
* Sushy library: https://github.com/openstack/sushy
|
||||
* python-redfish library: https://github.com/openstack/python-redfish
|
||||
|
||||
_`Redfish DMTF`: http://www.dmtf.org/standards/redfish
|
||||
_`python-redfish`: https://github.com/openstack/python-redfish
|
||||
_`sushy`: https://github.com/openstack/sushy
|
||||
.. _`sushy`: https://github.com/openstack/sushy
|
||||
.. _`python-redfish`: https://github.com/openstack/python-redfish
|
||||
|
|
Loading…
Reference in New Issue