PowerVM Driver Integration (Queens)
This blueprint continues the multi-release work of bringing the out-of-tree PowerVM driver in-tree. This proposes the second phase of in-tree driver functionality for queens. Blueprint: powervm-nova-it-compute-driver Change-Id: Ibf2c792e79447851c70f08e8a192756f2c1d6fdb
This commit is contained in:
337
specs/queens/approved/powervm-nova-it-compute-driver.rst
Normal file
337
specs/queens/approved/powervm-nova-it-compute-driver.rst
Normal file
@@ -0,0 +1,337 @@
|
|||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License.
|
||||||
|
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
==========================================
|
||||||
|
PowerVM Driver Integration - Queens
|
||||||
|
==========================================
|
||||||
|
|
||||||
|
`<https://blueprints.launchpad.net/nova/+spec/powervm-nova-it-compute-driver>`_
|
||||||
|
|
||||||
|
The PowerVM driver provides OpenStack enablement for AIX, IBM i and Linux
|
||||||
|
virtual machines running on a PowerVM hypervisor. It has been developed
|
||||||
|
out-of-tree, but with the intention to provide an in-tree implementation.
|
||||||
|
Before it could be integrated in-tree, the Nova core teams provided several
|
||||||
|
requirements that have since been met. The integration process began in Pike
|
||||||
|
and a limited subset of functionality was implemented in-tree. This blueprint
|
||||||
|
will expand on that beginning by integrating additional PowerVM driver
|
||||||
|
functionality for Queens.
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
The out-of-tree driver has grown to contain a significant amount of function
|
||||||
|
and maturity over the past few OpenStack releases. The work to drive towards
|
||||||
|
full integration is expected to continue over multiple OpenStack releases. The
|
||||||
|
first blueprint provided integration of the PowerVMLiveMigrateData object into
|
||||||
|
Nova for the Ocata release, and laid out plans to incorporate minimal compute
|
||||||
|
driver functionality incrementally. During Pike some of the basic driver
|
||||||
|
functionality was introduced which is detailed below in the history section.
|
||||||
|
This blueprint continues that work.
|
||||||
|
|
||||||
|
The out-of-tree driver will be maintained, supported and extended as the
|
||||||
|
in-tree driver is being integrated. In general for this phase, it is expected
|
||||||
|
that new code will first be proposed to the out-of-tree driver and then
|
||||||
|
proposed in-tree. As the integration of the driver progresses further, that
|
||||||
|
process shifts to all code being proposed in-tree. However, for any
|
||||||
|
contribution (either in-tree or out-of-tree), the primary contributors of this
|
||||||
|
blueprint will ensure the change is proposed to the other driver during this
|
||||||
|
transition period.
|
||||||
|
|
||||||
|
Use Cases
|
||||||
|
---------
|
||||||
|
* A user should be able to deploy a glance-based image with either `Shared
|
||||||
|
Ethernet Adapter`_ (SEA) or Open vSwitch (OVS) networking on a system with
|
||||||
|
the PowerVM hypervisor.
|
||||||
|
|
||||||
|
* A user should be able to boot using config drive
|
||||||
|
|
||||||
|
* A user should be able to attach and detach `vSCSI`_ cinder volumes
|
||||||
|
|
||||||
|
.. _`Shared Ethernet Adapter`: https://www.ibm.com/support/knowledgecenter/en/POWER8/p8hb1/p8hb1_vios_concepts_network_sea.htm
|
||||||
|
|
||||||
|
.. _`vSCSI`: https://www.ibm.com/support/knowledgecenter/en/8284-21A/p8hat/p8hat_virtualscsi.htm
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
The proposed change is to submit a series of patches to build on the basic
|
||||||
|
functionality implemented in Pike. The new subset of driver code would support
|
||||||
|
the following features.
|
||||||
|
|
||||||
|
* Config drive
|
||||||
|
* SEA-based networking
|
||||||
|
* OVS-based networking
|
||||||
|
* vSCSI cinder volume attach/detach
|
||||||
|
|
||||||
|
This does not bring the entirety of the PowerVM out-of-tree driver in-tree.
|
||||||
|
There are other features that will not be implemented in-tree this release.
|
||||||
|
Implementing the PowerVM driver in-tree is a long-term process that will
|
||||||
|
continue through multiple OpenStack releases.
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
None. The multi-release goal of integrating the PowerVM driver began in Pike,
|
||||||
|
and other than abandoning this effort there is no alternative. Implementing the
|
||||||
|
rest of the driver this release is too vast of a task and would take too much
|
||||||
|
core reviewer time.
|
||||||
|
|
||||||
|
Data model impact
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
REST API impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Security impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Notifications impact
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Other end user impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Performance Impact
|
||||||
|
------------------
|
||||||
|
|
||||||
|
None. Integration has no performance effect on existing code paths.
|
||||||
|
|
||||||
|
Other deployer impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Deployers who wish to use the PowerVM driver will need to change the
|
||||||
|
``compute_driver`` in their conf to ``powervm.driver.PowerVMDriver``. The
|
||||||
|
in-tree PowerVM driver implemented a very limited set of functionality in Pike.
|
||||||
|
Deployers can install the nova-powervm out-of-tree driver to gain the
|
||||||
|
additional functionality while the team works over multiple releases to
|
||||||
|
integrate the driver.
|
||||||
|
|
||||||
|
The driver will be documented in the hypervisor support matrix (along with its
|
||||||
|
capabilities in-tree) and any additional configuration options will be
|
||||||
|
documented.
|
||||||
|
|
||||||
|
A new dependency on ``pypowervm`` was introduced in Ocata. This is a
|
||||||
|
third-party, open-source library that allows its consumers to drive PowerVM
|
||||||
|
virtualization. The pypowervm version requirement will be updated as needed
|
||||||
|
throughout the Queens release.
|
||||||
|
|
||||||
|
Developer impact
|
||||||
|
----------------
|
||||||
|
|
||||||
|
There are no changes to the driver API. The PowerVM driver will conform to the
|
||||||
|
existing Nova API.
|
||||||
|
|
||||||
|
Upgrade impact
|
||||||
|
--------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignees:
|
||||||
|
efried
|
||||||
|
esberglu
|
||||||
|
edmondsw
|
||||||
|
|
||||||
|
Other contributors:
|
||||||
|
thorst
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
* Add config drive support
|
||||||
|
|
||||||
|
* Add support for OVS-based networks
|
||||||
|
|
||||||
|
* Add support for SEA-based networks
|
||||||
|
|
||||||
|
* Add vSCSI cinder volume support
|
||||||
|
|
||||||
|
* Update PowerVM CI to stay up to date with new in-tree functionality as it is
|
||||||
|
implemented.
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
* `pypowervm`_ - third-party, open-source library that allows for control of
|
||||||
|
the PowerVM platform.
|
||||||
|
|
||||||
|
* PowerVM with `NovaLink`_ - PowerVM is the hypervisor, and the NovaLink is a
|
||||||
|
Linux based Virtualization Management VM. The Novalink virtualization
|
||||||
|
management VM is what allows the nova-compute process to run on the system
|
||||||
|
itself.
|
||||||
|
|
||||||
|
.. _`pypowervm`: http://github.com/powervm/pypowervm
|
||||||
|
.. _`NovaLink`: https://www.ibm.com/support/knowledgecenter/en/POWER8/p8eig/p8eig_kickoff.html
|
||||||
|
|
||||||
|
Testing
|
||||||
|
=======
|
||||||
|
|
||||||
|
All code paths run through the standard Tempest tests as part of our CI. The
|
||||||
|
code will also include significant unit test. This code will come from the
|
||||||
|
out-of-tree nova-powervm driver. The CI infrastructure will also continue to
|
||||||
|
support the automated testing of the out-of-tree nova-powervm driver.
|
||||||
|
|
||||||
|
PowerVM CI will post run results for both the out-of-tree and in-tree driver
|
||||||
|
for all nova changesets. All logs will be publicly available. Non-gating votes
|
||||||
|
will be provided by PowerVM CI. We have dedicated team members monitoring and
|
||||||
|
supporting the CI.
|
||||||
|
|
||||||
|
No new tests are required. The PowerVM driver is meant to conform to the
|
||||||
|
Nova model.
|
||||||
|
|
||||||
|
Documentation Impact
|
||||||
|
====================
|
||||||
|
|
||||||
|
We will continue to work with the ID team to update and create new documents
|
||||||
|
for the PowerVM driver. The hypervisor support matrix will be updated as new
|
||||||
|
functionality is implemented.
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
|
||||||
|
* nova-powervm:
|
||||||
|
* Overview: Out-of-tree Nova driver for PowerVM
|
||||||
|
* Source: `<git://git.openstack.org/openstack/nova-powervm/>`_
|
||||||
|
* Bugs: `<https://bugs.launchpad.net/nova-powervm/>`_
|
||||||
|
|
||||||
|
* pypowervm
|
||||||
|
* Overview: third-party, open-source module providing access to PowerVM
|
||||||
|
hypervisor functionality.
|
||||||
|
* Source: `<https://github.com/powervm/pypowervm/tree/develop>`_
|
||||||
|
* Bugs: `<https://bugs.launchpad.net/pypowervm/>`_
|
||||||
|
|
||||||
|
* networking-powervm:
|
||||||
|
* Overview: Neutron ML2 mechanism driver and plugin supporting PowerVM's
|
||||||
|
Shared Ethernet Adapter and (as of newton) SR-IOV virtual NIC.
|
||||||
|
* Source: `<git://git.openstack.org/openstack/networking-powervm/>`_
|
||||||
|
* Bugs: `<https://bugs.launchpad.net/networking-powervm/>`_
|
||||||
|
|
||||||
|
* ceilometer-powervm:
|
||||||
|
* Overview: Ceilometer collector for the PowerVM platform. Captures I/O,
|
||||||
|
CPU and memory statistics.
|
||||||
|
* Source: `<git://git.openstack.org/openstack/ceilometer-powervm/>`_
|
||||||
|
* Bugs: `<https://bugs.launchpad.net/ceilometer-powervm/>`_
|
||||||
|
|
||||||
|
* Continuous Integration:
|
||||||
|
* Overview: The CI server's configuration
|
||||||
|
* CI Configuration: `<https://github.com/powervm/powervm-ci/tree/master>`_
|
||||||
|
|
||||||
|
History
|
||||||
|
=======
|
||||||
|
|
||||||
|
Historically speaking, there have been a couple of other Power drivers. The
|
||||||
|
first PowerVM driver was built on PowerVM and only worked with a component
|
||||||
|
called IVM. The challenge with this was that it required the nova-compute to
|
||||||
|
run on a separate server and SSH in to issue commands. It also did not
|
||||||
|
integrate well with other OpenStack components.
|
||||||
|
|
||||||
|
There was also the PowerVC OpenStack driver. This sat on top of PowerVC and
|
||||||
|
was a clustered management model. Due to the push away from clustered
|
||||||
|
management, this was not the approved management model for OpenStack Nova
|
||||||
|
Compute. It was never pulled in-tree.
|
||||||
|
|
||||||
|
This model is different, with core changes to the PowerVM hypervisor. It has
|
||||||
|
been shipping in the field for a long period of time, and has products built on
|
||||||
|
top of it. It also matches the development model of OpenStack Nova and has
|
||||||
|
dedicated developers who have been working on it for multiple years.
|
||||||
|
|
||||||
|
Lastly, Power systems also natively run Linux. For those wishing to use KVM on
|
||||||
|
Power, the standard libvirt driver is also available. However, that support is
|
||||||
|
limited to Linux based client virtual machines.
|
||||||
|
|
||||||
|
A rough timeline is provided below.
|
||||||
|
|
||||||
|
* November 2013: PowerVM IVM driver removed due to lack of CI and development.
|
||||||
|
Also did not fit the direction of Nova core team to have the Nova compute
|
||||||
|
process running on the system itself.
|
||||||
|
|
||||||
|
* October 2014: `First commit`_ for new PowerVM driver built on NovaLink.
|
||||||
|
|
||||||
|
* May 2015: Socialized the NovaLink based PowerVM driver at the summit.
|
||||||
|
NovaLink changes the hypervisor itself to match the OpenStack model. All
|
||||||
|
OpenStack code was developed from the start as open source.
|
||||||
|
|
||||||
|
* October 2015: Liberty based out-of-tree nova-powervm driver released.
|
||||||
|
|
||||||
|
All developed openly. Support for:
|
||||||
|
* Lifecycle operations
|
||||||
|
* Spawn from glance
|
||||||
|
* Cinder FC support
|
||||||
|
* Nova with networking-powervm agent
|
||||||
|
* Live Migration
|
||||||
|
* AIX and Linux VMs
|
||||||
|
* DevStack
|
||||||
|
* TaskFlow in its core to support graceful rollbacks of failed operations
|
||||||
|
|
||||||
|
* January 2016: Continuous Integration environment live.
|
||||||
|
|
||||||
|
* April 2016: nova-powervm driver updated for Mitaka release.
|
||||||
|
|
||||||
|
All nova-powervm development done openly during the release. Initial
|
||||||
|
third-party contributions made.
|
||||||
|
|
||||||
|
Added new capabilities:
|
||||||
|
* Cold Migration / Rebuild / Resize
|
||||||
|
* Scalability testing
|
||||||
|
* Basic VNC Console
|
||||||
|
* IBM i VMs
|
||||||
|
* Scale & Resiliency testing
|
||||||
|
|
||||||
|
* July 2016: CI running against all Nova patch sets. Not voting (due to
|
||||||
|
Nova core team guidance) but logs still published to log server.
|
||||||
|
|
||||||
|
* October 2016: nova-powervm driver updated for Newton release. Updated for:
|
||||||
|
* SR-IOV via PowerVM vNIC
|
||||||
|
* Linux Bridge / OVS
|
||||||
|
* Enhancements to VNC console
|
||||||
|
* Integration with OpenStack Ansible (outside nova-powervm)
|
||||||
|
|
||||||
|
* October 2016: `First in-tree change set`_ proposed for compute driver
|
||||||
|
spawn/destroy.
|
||||||
|
|
||||||
|
* November 2016: PowerVMLiveMigrateData object introduced in-tree (Ocata).
|
||||||
|
|
||||||
|
* January 2017: pypowervm dependency introduced in requirements project
|
||||||
|
(Ocata).
|
||||||
|
|
||||||
|
* August 2017: Pike Release - `Phase 1`_ implemented including
|
||||||
|
* Full flavor spawn and destroy
|
||||||
|
* Power on/off and reboot
|
||||||
|
* VNC console support
|
||||||
|
* PowerVM Shared Storage Pool ephemeral disk support
|
||||||
|
|
||||||
|
.. _`First commit`: https://github.com/openstack/nova-powervm/commit/095e1c183baf4f9083d6b0d363818be21f64f992
|
||||||
|
|
||||||
|
.. _`First in-tree change set`: https://review.openstack.org/#/c/391288/
|
||||||
|
|
||||||
|
.. _`Phase 1`: https://blueprints.launchpad.net/nova/+spec/powervm-nova-compute-driver
|
||||||
|
|
||||||
|
.. list-table:: Revisions
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Release Name
|
||||||
|
- Description
|
||||||
|
* - Ocata
|
||||||
|
- Introduced
|
||||||
|
* - Pike
|
||||||
|
- Phase 1 implemented
|
||||||
|
* - Queens
|
||||||
|
- Phase 2 proposed
|
||||||
Reference in New Issue
Block a user