Add spec for OpenBMC driver

Currently IPMI is not fully supported by OpenBMC. Instead,
OpenBMC's power and boot device is controlled through a
RESTful interface. While IPMI may be a supported mechanism
in the future for OpenBMC, the recommended way to interact
with it will continue to be its RESTful API. This means that
servers running OpenBMC will require a new module to control
its power, a new module to set the boot device, and a hardware
type that has these modules supported. This patch adds
a spec for these items.

Partial-bug: #1634635
Change-Id: Ie272f3ad2d4ae5bcb1bd542007dfcdb4adfcb799
This commit is contained in:
Michael Turek 2016-10-18 17:03:42 -04:00
parent 0224d04313
commit e04ef0fcbe
2 changed files with 192 additions and 0 deletions

View File

@ -0,0 +1,191 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
=================
OpenBMC Driver
=================
https://bugs.launchpad.net/ironic/+bug/1634635
This proposal covers the addition of power and management interfaces for
OpenBMC and the addition of driver to the IPA and PXE driver classes.
Problem description
===================
Currently IPMI is not fully supported by OpenBMC. Instead, OpenBMC's
power is controlled through a RESTful interface. As well, the boot device can
be retrieved and set through this RESTful interface. While IPMI may be
supported by OpenBMC in the future, the recommended way to interact with it
will continue to be its `REST API <https://github.com/openbmc/docs/blob/master/rest-api.md>`_.
Servers running OpenBMC will require a new interface implementation to control
its power, another to set the boot device, and a hardware type that use
has these interfaces supported.
Proposed change
===============
The addition of an OpenBMCPower() module conforming to base.PowerInterface.
Login credentials will be specified as openbmc_address, openbmc_username, and
openbmc_password in the driver_info property of the node.
The addition of an OpenBMCManagement() module conforming to
base.ManagementInterface which also uses the openbmc_address, openbmc_username,
and openbmc_password as login credentials.
The module will login to the BMC, issue the proper command, then
log out of the BMC.
A hardware type, OpenBMCHardware, will be added. This hardware type will have
OpenBMCPower in it's 'supported_power_interfaces' list. This hardware type
will also have OpenBMCManagement in it's 'supported_management_interfaces'
list.
Alternatives
------------
Wait for IPMI functionality to be fully supported by OpenBMC. This would
allow the pxe_ipmitool and agent_ipmitool drivers to work.
The disadvantage here is that it is not the recommended method of interaction
with the BMC. As well, it is unknown when IPMI will be fully supported.
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
---------------------
None
Scalability impact
------------------
None
Performance Impact
------------------
None
Other deployer impact
---------------------
None
Developer impact
----------------
None
Implementation
==============
Assignee(s)
-----------
Primary assignee:
Michael Turek (mjturek)
Other contributors:
Mark Hamzy (mark-hamzy)
Work Items
----------
* Implement a new power interface, OpenBMCPower, conforming
to base.PowerInterface.
* Implement a new management interface, OpenBMCManagement, conforming
to base.ManagementInterface
* Add hardware type, OpenBMCHardware, that has these interfaces as supported.
* Add documentation detailing usage of interfaces and driver.
Dependencies
============
This feature will only be usable by target hardware that runs OpenBMC.
Testing
=======
The feature will be tested using the `KVM on POWER OpenStack CI <https://wiki.openstack.org/wiki/PowerKVM>`_ environment.
The job will run the ironic tempest tests, but no new integration tests will be
added. The job will test against real hardware initially.
Unit tests will be added as well.
Upgrades and Backwards Compatibility
====================================
None
Documentation Impact
====================
Documentation will be added describing the new interfaces and how to use them.
References
==========
* `OpenPOWER <https://github.com/openbmc/openbmc>`_
* `OpenBMC REST API Examples <https://github.com/openbmc/docs/blob/master/rest-api.md>`_
* `KVM on POWER OpenStack CI <https://wiki.openstack.org/wiki/PowerKVM>`_

View File

@ -0,0 +1 @@
../approved/openbmc-driver.rst