|Zuul 376d9493e2||9 months ago|
|devstack||1 year ago|
|doc||1 year ago|
|nova||3 years ago|
|nova_powervm||9 months ago|
|.gitignore||1 year ago|
|.gitreview||1 year ago|
|.stestr.conf||2 years ago|
|.zuul.yaml||1 year ago|
|CONTRIBUTING.rst||2 years ago|
|HACKING.rst||2 years ago|
|LICENSE||5 years ago|
|README.rst||2 years ago|
|babel.cfg||4 years ago|
|lower-constraints.txt||9 months ago|
|openstack-common.conf||5 years ago|
|requirements.txt||9 months ago|
|setup.cfg||1 year ago|
|setup.py||3 years ago|
|sonar-project.properties||5 years ago|
|test-requirements.txt||1 year ago|
|tox.ini||1 year ago|
The IBM PowerVM hypervisor provides virtualization on POWER hardware. PowerVM admins can see benefits in their environments by making use of OpenStack. This driver (along with a Neutron ML2 compatible agent and Ceilometer agent) provides the capability for operators of PowerVM to use OpenStack natively.
As ecosystems continue to evolve around the POWER platform, a single OpenStack driver does not meet all of the needs for the various hypervisors. The standard libvirt driver provides support for KVM on POWER systems. This nova driver provides PowerVM support to OpenStack environment.
This driver meets the following:
This driver makes the following use cases available for PowerVM:
To use the driver, install the nova-powervm project on your NovaLink-based PowerVM system. The nova-powervm project has a minimal set of configuration. See the configuration options section of the dev-ref for more information.
It is recommended that operators also make use of the networking-powervm project. The project ensures that the network bridge supports the VLAN-based networks required for the workloads.
There is also a ceilometer-powervm project that can be included.
Future work will be done to include PowerVM into the various OpenStack deployment models.
The driver enables the following:
The intention is that this driver follows the OpenStack Nova model.
The driver is being promoted into the nova core project in stages, the first of which is represented by blueprint powervm-nova-compute-driver. The coexistence of these two incarnations of the driver raises some Upgrade Considerations.
No REST API impacts.
No known security impacts.
No new notifications. The driver does expect that the Neutron agent will return an event when the VIF plug has occurred, assuming that Neutron is the network service.
The administrator may notice new logging messages in the nova compute logs.
The driver has a similar deployment speed and agility to other hypervisors. It has been tested with up to 10 concurrent deploys with several hundred VMs on a given server.
Most operations are comparable in speed. Deployment, attach/detach volumes, lifecycle, etc... are quick.
Due to the nature of the project, any performance impacts are limited to the Compute Driver. The API processes for instance are not impacted.
The cloud administrator will need to refer to documentation on how to configure OpenStack for use with a PowerVM hypervisor.
A 'powervm' configuration group is used to contain all the PowerVM specific configuration settings. Existing configuration file attributes will be reused as much as possible (e.g. vif_plugging_timeout). This reduces the number of PowerVM specific items that will be needed.
It is the goal of the project to only require minimal additional attributes. The deployer may specify additional attributes to fit their configuration.
The code for this driver is currently contained within a powervm project. The driver is within the /nova/virt/powervm_ext/ package and extends the nova.virt.driver.ComputeDriver class.
The code interacts with PowerVM through the pypowervm library. This python binding is a wrapper to the PowerVM REST API. All hypervisor operations interact with the PowerVM REST API via this binding. The driver is maintained to support future revisions of the PowerVM REST API as needed.
For ephemeral disk support, either a Virtual I/O Server hosted local disk or a Shared Storage Pool (a PowerVM clustered file system) is supported. For volume attachments, the driver supports Cinder-based attachments via protocols supported by the hypervisor (e.g. Fibre Channel).
For networking, the networking-powervm project provides Neutron ML2 Agents. The agents provide the necessary configuration on the Virtual I/O Server for networking. The PowerVM Nova driver code creates the VIF for the client VM, but the Neutron agent creates the VIF for VLANs.
Automated functional testing is provided through a third party continuous integration system. It monitors for incoming Nova change sets, runs a set of functional tests (lifecycle operations) against the incoming change, and provides a non-gating vote (+1 or -1).
Developers should not be impacted by these changes unless they wish to try the driver.
The intent of this project is to bring another driver to OpenStack that aligns with the ideals and vision of the community. The intention is to promote this to core Nova.
No alternatives appear viable to bring PowerVM support into the OpenStack community.
adreznec efried kyleh thorst
Prior to Ocata, only the out-of-tree nova_powervm driver existed. The in-tree driver is introduced in Ocata.
In Liberty and Mitaka, the namespace of the out-of-tree driver is
nova_powervm.virt.powervm. In Newton, it was moved to
nova.virt.powervm. In Ocata, the new in-tree driver occupies the
nova.virt.powervm namespace, and the out-of-tree driver is moved to
nova.virt.powervm_ext. Ocata consumers have the option of using the in-tree driver, which will provide limited functionality until it is fully integrated; or the out-of-tree driver, which provides full functionality. Refer to the documentation for the
nova.conf settings required to load the desired driver.
In order to use live migration prior to Ocata, it was necessary to run the customized nova_powervm conductor to bring in the
PowerVMLiveMigrateData object. In Ocata, this object is included in core nova, so no custom conductor is necessary.
Since the tempest tests should be implementation agnostic, the existing tempest tests should be able to run against the PowerVM driver without issue.
Tempest tests that require function that the platform does not yet support (e.g. iSCSI or Floating IPs) will not pass. These should be ommitted from the Tempest test suite.
A sample Tempest test configuration for the PowerVM driver has been provided.
Thorough unit tests exist within the project to validate specific functions within this implementation.
A third party functional test environment has been created. It monitors for incoming nova change sets. Once it detects a new change set, it will execute the existing lifecycle API tests. A non-gating vote (+1 or -1) will be provided with information provided (logs) based on the result.
Existing APIs should be valid. All testing is planned within the functional testing system and via unit tests.
See the dev-ref for documentation on how to configure, contribute, use, etc. this driver implementation.
The existing Nova developer documentation should typically suffice. However, until merge into Nova, we will maintain a subset of dev-ref documentation.