PowerVM

Overview
The PowerVM driver provides native integration of OpenStack on PowerVM systems. This enables support of Linux, AIX and IBM i for PowerVM systems. There are currently three supported components of the PowerVM driver:
 * nova-powervm – Support for Nova use cases. Detailed information on supported use cases can be found here.
 * ceilometer-powervm – Gathers instance/VM statistics.
 * networking-powervm – An optional Neutron ML2 agent that supports PowerVM Shared Ethernet Adapters (SEAs). Users should utilize this if their environment requires Shared Ethernet.  However, they may also use the standard Open vSwitch agent from the Neutron project to support advanced functions such as Security Groups, Quality of Service (QoS), overlay networks (VXLANs) and more.

Installation Requirements
To use the PowerVM driver, the respective compute nodes must be set up with the NovaLink feature. Information on the NovaLink feature can be found here.

The NovaLink installer for Power Systems can be found here.

The NovaLink feature is supported on all Power8 PowerVM-based systems.

Glance Images
PowerVM can run Linux, AIX or IBMi operating systems. You need a cloud ready image. There is information on how to create an image through PowerVC here, but similar steps can be used to create one by hand.

The driver team has published an image for development purposes here. This can be used for stand up and testing of your cloud.

Bugs
The PowerVM projects follow the standard OpenStack bug process. To file a bug, please visit the appropriate launchpad project to file the bug.
 * nova-powervm
 * ceilometer-powervm
 * networking-powervm

Communications & Meetings
The PowerVM Driver team resides within the #openstack-powervm IRC channel on Freenode. Please hop in and ask any questions you may have!


 * MEETING: PowerVM Driver Meeting
 * MEETING TIME: Tuesdays at 14:00 UTC for 60 minutes (#openstack-powervm)
 * TOPIC: This meeting is a weekly gathering of developers working on OpenStack Compute driver for PowerVM. We cover topics such as release planning and status, bugs, reviews, and other current topics worthy of real-time discussion.


 * MEETING: PowerVM CI Meeting
 * MEETING TIME: Thursdays at 13:30 UTC for 30 minutes (#openstack-powervm)
 * TOPIC: This meeting is a weekly gathering of operators working on the PowerVM Third-Party CI system. We cover system status, bugs, upcoming changes, etc.

Contributing
Anyone that is interested in contributing to the driver is encouraged to do so. The driver follows the OpenStack process for contributions, with blueprints in Launchpad and specs stored within each driver repository tracking feature contributions. See the following links for blueprints/specs:


 * nova-powervm: Launchpad and Specs repo
 * ceilometer-powervm: Launchpad and Specs repo
 * networking-powervm: Launchpad and Specs repo

Please hop in the #openstack-powervm IRC channel and ask any questions you need to get started.

History
The PowerVM driver started its development in late 2014. It was socialized with the Nova core team in early 2015 at the Vancouver summit. Over the past few years, the driver has matured greatly, been run through performance and scale testing and has expanded its functional matrix. As of the OpenStack Newton release, it supports the following key functions:
 * VM life cycle (start, stop, resize, etc.)
 * VM console
 * Nova ephemeral storage
 * Cinder volumes (via Fibre Channel)
 * Shared Ethernet VLAN networking
 * Open vSwitch networking
 * Rebuild
 * Live Migration
 * Cold Migration
 * Full support matrix here

The driver is in use in several environments and is integrated into multiple products.

CI and Driver Status
There is currently a third-party CI for PowerVM running Tempest against the PowerVM drivers, with public Tempest configuration and publicly published results. See the PowerVM CI wiki page for further details.

The PowerVM compute driver is currently an out-of-tree driver. The driver team has been working with the Nova core team since early 2015. Now that the driver is very mature and a CI system has been running against the driver for many months, we are proposing to integrate the driver into Nova as an in-tree driver. To participate in the review, please weigh in here.

Deployment
There are multiple ways to deploy the PowerVM driver into your OpenStack cloud. For developers, there is DevStack integration via each projects’ DevStack plugins. Please see the various projects’ DevRefs for more information. The PowerVM team has been working with the OpenStack-Ansible team to provide native integration - which is available in the Newton release. This allows users to deploy production grade OpenStack utilizing PowerVM (as well as other hypervisors). See this page for details. Beyond that, various distributions/products support the PowerVM driver. If you are using a different OpenStack deployment tool, check their documentation to see if they support PowerVM. If they do not, please ask the OpenStack deployment tool authors to work with the PowerVM driver team and we’ll do all that we can to support them integrating into their deployment tool.

In-Tree Driver
During the Ocata release, the PowerVM driver team has started working to integrate our out-of-tree driver into nova. This driver will be merged over time with function going in to nova in small sets of function. It will be multiple releases until it has the full feature set of the out-of-tree driver.

Specifically in the Ocata release, the live migration object from nova_powervm has been merged into nova itself. Due to this, the PowerVM specific conductor is no longer needed and has been removed. If you had been using this, please convert to the nova specific conductor instead.

Out-of-Tree Driver
To avoid conflicts with the in-tree driver, the namespace of the out-of-tree driver in Ocata has changed from nova.virt.powervm.driver.PowerVMDriver to nova.virt.powervm_ext.driver.PowerVMDriver. Deployers of the out-of-tree driver using (or upgrading to) Ocata need to change this nova.conf line:

compute_driver = powervm.driver.PowerVMDriver

to:

compute_driver = powervm_ext.driver.PowerVMDriver