From e04ef0fcbead9db990477f4b83caedaad0c622d9 Mon Sep 17 00:00:00 2001 From: Michael Turek Date: Tue, 18 Oct 2016 17:03:42 -0400 Subject: [PATCH] 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 --- specs/approved/openbmc-driver.rst | 191 +++++++++++++++++++++++ specs/not-implemented/openbmc-driver.rst | 1 + 2 files changed, 192 insertions(+) create mode 100644 specs/approved/openbmc-driver.rst create mode 120000 specs/not-implemented/openbmc-driver.rst diff --git a/specs/approved/openbmc-driver.rst b/specs/approved/openbmc-driver.rst new file mode 100644 index 00000000..34e22d40 --- /dev/null +++ b/specs/approved/openbmc-driver.rst @@ -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 `_. + +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 `_ 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 `_ +* `OpenBMC REST API Examples `_ +* `KVM on POWER OpenStack CI `_ diff --git a/specs/not-implemented/openbmc-driver.rst b/specs/not-implemented/openbmc-driver.rst new file mode 120000 index 00000000..b137f1f5 --- /dev/null +++ b/specs/not-implemented/openbmc-driver.rst @@ -0,0 +1 @@ +../approved/openbmc-driver.rst \ No newline at end of file