From 88b55d4307cdc9e6ff37d8cbfea228c1c281e79f Mon Sep 17 00:00:00 2001 From: Bruno Cornec Date: Thu, 21 May 2015 01:43:07 +0200 Subject: [PATCH] Propose Redfish support into Ironic - Adding the spec - Ref: https://bugs.launchpad.net/ironic/+bug/1526477 Related-Bug: #1526477 Change-Id: I87a0072227d656da94b2ab216d8d17b30249fe1f --- specs/approved/ironic-redfish.rst | 180 +++++++++++++++++++++++ specs/not-implemented/ironic-redfish.rst | 1 + 2 files changed, 181 insertions(+) create mode 100644 specs/approved/ironic-redfish.rst create mode 120000 specs/not-implemented/ironic-redfish.rst diff --git a/specs/approved/ironic-redfish.rst b/specs/approved/ironic-redfish.rst new file mode 100644 index 00000000..886418c9 --- /dev/null +++ b/specs/approved/ironic-redfish.rst @@ -0,0 +1,180 @@ +.. + This work is licensed under a Creative Commons Attribution 3.0 Unported + License. + + http://creativecommons.org/licenses/by/3.0/legalcode + +========================= +Redfish driver 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. + +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. + +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) + +The goal is to provide power management similarly to what is done +in the pre-existing in-tree drivers. + +Note that no OEM specific extension will be supported. + +Alternatives +------------ +No real alternative exists currently + +Data model impact +----------------- +None + +RPC API impact +-------------- +None + +State Machine Impact +-------------------- +None + +REST API impact +--------------- +None + +Driver API impact +----------------- +None + +Nova driver impact +------------------ +None + +Ramdisk impact +-------------- +None + +Security impact +--------------- +None + +Client (CLI) impact +------------------- +None + +Other end user impact +--------------------- +None + +Scalability impact +------------------ +None + +Performance Impact +------------------ +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 new configuration variables are proposed (and their default +values) to be added to the conductor variable group: + +* [redfish]/connection_attempts = 5 + + Maximum number of attempts to try to connect to Redfish + +* [redfish]/connection_retry_interval = 2 + + Number of seconds to wait between attempts to connect to Redfish + +Developer impact +---------------- +None + +Implementation +============== + +Assignee(s) +----------- + +Primary assignee: +bcornec +lucasagomes + +Other contributors: +ribaudr + +Work Items +---------- + +* Add new Redfish hardware type, supporting power and management interface + APIs and providing PXE, virtual media boot and standard deployment + methods. +* Writing unit-test cases for the Redfish type. +* Adaptation of the devstack Ironic module to add this capability, based + on the virtualbmc work, adding to it the minimal required Redfish REST + API support. +* Writing configuration documents. + +Dependencies +============ +This driver requires either that python-redfish or sushy installed on the +conductor node. + +Testing +======= +Unit-tests will be implemented for Redfish support. + +DevStack will be update to setup the nodes with the redfish driver and +the libvirt mockup that is shipped with Sushy allowing it to be tests +in gate against virtual machines. + +Upgrades and Backwards Compatibility +==================================== +This driver will not break any compatibility with either the REST API or +the RPC API. + +Documentation Impact +==================== +* Writing configuration documents. +* 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 +_`python-redfish`: https://github.com/openstack/python-redfish +_`sushy`: https://github.com/openstack/sushy diff --git a/specs/not-implemented/ironic-redfish.rst b/specs/not-implemented/ironic-redfish.rst new file mode 120000 index 00000000..95ed6487 --- /dev/null +++ b/specs/not-implemented/ironic-redfish.rst @@ -0,0 +1 @@ +../approved/ironic-redfish.rst \ No newline at end of file