Change namespace to nova.virt.powervm_ext

In order to avoid conflict with the in-tree nova.virt.powervm driver,
the namespace of out-of-tree ('ext'ernal) driver is being change to
nova.virt.powervm_ext.

Change-Id: I9c8ad22be448a724b4a62d560a0cf3021da1b9eb
This commit is contained in:
Eric Fried 2016-12-21 11:42:23 -06:00
parent d8582acb97
commit eedae5b0d4
8 changed files with 57 additions and 23 deletions

View File

@ -85,9 +85,14 @@ The driver enables the following:
* Thorough unit, syntax, and style testing is provided and enforced for the
driver.
The intention is that this driver follows the OpenStack Nova model and will
be a candidate for promotion (via a subsequent blueprint) into the nova core
project.
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 `Dual Driver
Considerations`_.
.. _`powervm-nova-compute-driver`: https://blueprints.launchpad.net/nova/+spec/powervm-nova-compute-driver
Data Model Impact
@ -159,7 +164,7 @@ Developer Impact
----------------
The code for this driver is currently contained within a powervm project.
The driver is within the /nova_powervm/virt/powervm/ package and extends the
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
@ -229,6 +234,35 @@ Dependencies
.. _pypowervm library: https://github.com/powervm/pypowervm
Upgrade Considerations
======================
Prior to Ocata, only the out-of-tree nova_powervm driver existed. The in-tree
driver is introduced in Ocata.
Namespaces
----------
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.
Live Migrate Data Object
------------------------
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.
Testing
=======
@ -242,12 +276,12 @@ 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.
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.
.. _sample Tempest test configuration: https://github.com/powervm/powervm-ci/tree/master/tempest
.. _`sample Tempest test configuration`: https://github.com/powervm/powervm-ci/tree/master/tempest
Functional Tests

View File

@ -10,7 +10,7 @@ INSTALL_PYPOWERVM=$(trueorfalse False INSTALL_PYPOWERVM)
PVM_ADMIN_GROUP=${PVM_ADMIN_GROUP:-pvm_admin}
# Nova settings
PVM_DRIVER=powervm.driver.PowerVMDriver
PVM_DRIVER=powervm_ext.driver.PowerVMDriver
INSTANCE_NAME_TEMPLATE=${INSTANCE_NAME_TEMPLATE:-"%(display_name).13s-%(uuid).8s-pvm"}
COMPUTE_MONITORS=${COMPUTE_MONITORS:-nova.compute.monitors.all_monitors}
FORCE_CONFIG_DRIVE=${FORCE_CONFIG_DRIVE:-True}

View File

@ -45,7 +45,7 @@ Configuration File Options
--------------------------
After nova-powervm has been installed the user must enable PowerVM as the
compute driver. To do so, set the ``compute_driver`` value in the ``nova.conf``
file to ``compute_driver = powervm.driver.PowerVMDriver``.
file to ``compute_driver = powervm_ext.driver.PowerVMDriver``.
The standard nova configuration options are supported. In particular, to use
PowerVM SR-IOV vNIC for networking, the ``pci_passthrough_whitelist`` option

View File

@ -20,7 +20,7 @@ from __future__ import absolute_import
import fixtures
import mock
from nova.virt.powervm import driver
from nova.virt.powervm_ext import driver
from nova.virt import fake
from pypowervm.tests import test_fixtures as pvm_fx

View File

@ -44,7 +44,7 @@ from pypowervm.wrappers import base_partition as pvm_bp
from pypowervm.wrappers import logical_partition as pvm_lpar
from pypowervm.wrappers import virtual_io_server as pvm_vios
from nova.virt.powervm import driver
from nova.virt.powervm_ext import driver
from nova_powervm.tests.virt import powervm
from nova_powervm.tests.virt.powervm import fixtures as fx
@ -300,7 +300,7 @@ class TestPowerVMDriver(test.TestCase):
'.execute')
@mock.patch('nova_powervm.virt.powervm.tasks.storage.CreateDiskForImg'
'.execute')
@mock.patch('nova.virt.powervm.driver.PowerVMDriver.'
@mock.patch('nova.virt.powervm_ext.driver.PowerVMDriver.'
'_is_booted_from_volume')
@mock.patch('nova_powervm.virt.powervm.tasks.network.PlugMgmtVif.execute')
@mock.patch('nova_powervm.virt.powervm.tasks.network.PlugVifs.execute')
@ -378,7 +378,7 @@ class TestPowerVMDriver(test.TestCase):
@mock.patch('nova.virt.block_device.DriverVolumeBlockDevice.save')
@mock.patch('nova_powervm.virt.powervm.tasks.storage.CreateDiskForImg'
'.execute')
@mock.patch('nova.virt.powervm.driver.PowerVMDriver.'
@mock.patch('nova.virt.powervm_ext.driver.PowerVMDriver.'
'_is_booted_from_volume')
@mock.patch('nova_powervm.virt.powervm.tasks.network.PlugMgmtVif.execute')
@mock.patch('nova_powervm.virt.powervm.tasks.network.PlugVifs.execute')
@ -433,7 +433,7 @@ class TestPowerVMDriver(test.TestCase):
@mock.patch('nova.virt.block_device.DriverVolumeBlockDevice.save')
@mock.patch('nova_powervm.virt.powervm.tasks.storage.CreateDiskForImg'
'.execute')
@mock.patch('nova.virt.powervm.driver.PowerVMDriver.'
@mock.patch('nova.virt.powervm_ext.driver.PowerVMDriver.'
'_is_booted_from_volume')
@mock.patch('nova_powervm.virt.powervm.tasks.network.PlugMgmtVif.execute')
@mock.patch('nova_powervm.virt.powervm.tasks.network.PlugVifs.execute')
@ -494,7 +494,7 @@ class TestPowerVMDriver(test.TestCase):
@mock.patch('nova.virt.block_device.DriverVolumeBlockDevice.save')
@mock.patch('nova_powervm.virt.powervm.tasks.storage.CreateDiskForImg'
'.execute')
@mock.patch('nova.virt.powervm.driver.PowerVMDriver.'
@mock.patch('nova.virt.powervm_ext.driver.PowerVMDriver.'
'_is_booted_from_volume')
@mock.patch('nova_powervm.virt.powervm.tasks.network.PlugMgmtVif.execute')
@mock.patch('nova_powervm.virt.powervm.tasks.network.PlugVifs.execute')
@ -548,7 +548,7 @@ class TestPowerVMDriver(test.TestCase):
@mock.patch('nova_powervm.virt.powervm.tasks.storage.ConnectVolume')
@mock.patch('nova_powervm.virt.powervm.tasks.storage.ConnectDisk')
@mock.patch('nova_powervm.virt.powervm.tasks.storage.FindDisk')
@mock.patch('nova.virt.powervm.driver.PowerVMDriver.'
@mock.patch('nova.virt.powervm_ext.driver.PowerVMDriver.'
'_is_booted_from_volume')
@mock.patch('nova_powervm.virt.powervm.tasks.network.PlugMgmtVif')
@mock.patch('nova_powervm.virt.powervm.tasks.network.PlugVifs')
@ -660,7 +660,7 @@ class TestPowerVMDriver(test.TestCase):
@mock.patch('nova.virt.block_device.DriverVolumeBlockDevice.save')
@mock.patch('nova_powervm.virt.powervm.tasks.storage.CreateDiskForImg.'
'execute')
@mock.patch('nova.virt.powervm.driver.PowerVMDriver.'
@mock.patch('nova.virt.powervm_ext.driver.PowerVMDriver.'
'_is_booted_from_volume')
@mock.patch('nova_powervm.virt.powervm.tasks.network.PlugMgmtVif.execute')
@mock.patch('nova_powervm.virt.powervm.tasks.network.PlugVifs.execute')
@ -668,7 +668,7 @@ class TestPowerVMDriver(test.TestCase):
@mock.patch('nova.objects.flavor.Flavor.get_by_id')
@mock.patch('nova_powervm.virt.powervm.tasks.vm.UpdateIBMiSettings.'
'execute')
@mock.patch('nova.virt.powervm.driver.PowerVMDriver.'
@mock.patch('nova.virt.powervm_ext.driver.PowerVMDriver.'
'_get_boot_connectivity_type')
@mock.patch('pypowervm.tasks.power.power_on')
def test_spawn_ibmi(self, mock_pwron, mock_boot_conn_type,
@ -718,7 +718,7 @@ class TestPowerVMDriver(test.TestCase):
'.execute')
@mock.patch('nova_powervm.virt.powervm.tasks.storage.CreateDiskForImg'
'.execute')
@mock.patch('nova.virt.powervm.driver.PowerVMDriver.'
@mock.patch('nova.virt.powervm_ext.driver.PowerVMDriver.'
'_is_booted_from_volume')
@mock.patch('nova_powervm.virt.powervm.tasks.network.PlugMgmtVif.execute')
@mock.patch('nova_powervm.virt.powervm.tasks.network.PlugVifs.execute')
@ -726,7 +726,7 @@ class TestPowerVMDriver(test.TestCase):
@mock.patch('nova.objects.flavor.Flavor.get_by_id')
@mock.patch('nova_powervm.virt.powervm.tasks.vm.UpdateIBMiSettings'
'.execute')
@mock.patch('nova.virt.powervm.driver.PowerVMDriver.'
@mock.patch('nova.virt.powervm_ext.driver.PowerVMDriver.'
'_get_boot_connectivity_type')
@mock.patch('pypowervm.tasks.power.power_on')
def test_spawn_ibmi_without_bdms(self, mock_pwron, mock_boot_conn_type,
@ -945,7 +945,7 @@ class TestPowerVMDriver(test.TestCase):
@mock.patch('pypowervm.wrappers.entry_wrapper.EntryWrapper.update',
new=mock.Mock())
@mock.patch('nova_powervm.virt.powervm.tasks.network.UnplugVifs.execute')
@mock.patch('nova.virt.powervm.driver.PowerVMDriver.'
@mock.patch('nova.virt.powervm_ext.driver.PowerVMDriver.'
'_is_booted_from_volume')
@mock.patch('nova_powervm.virt.powervm.vm.dlt_lpar')
@mock.patch('nova_powervm.virt.powervm.vm.power_off')
@ -1108,7 +1108,7 @@ class TestPowerVMDriver(test.TestCase):
assert_not_called()
@mock.patch('nova_powervm.virt.powervm.tasks.network.UnplugVifs.execute')
@mock.patch('nova.virt.powervm.driver.PowerVMDriver.'
@mock.patch('nova.virt.powervm_ext.driver.PowerVMDriver.'
'_is_booted_from_volume')
@mock.patch('nova_powervm.virt.powervm.vm.dlt_lpar')
@mock.patch('nova_powervm.virt.powervm.vm.power_off')
@ -1683,7 +1683,7 @@ class TestPowerVMDriver(test.TestCase):
def test_get_host_ip_addr(self):
self.assertEqual(self.drv.get_host_ip_addr(), '127.0.0.1')
@mock.patch('nova.virt.powervm.driver.LOG.warning')
@mock.patch('nova.virt.powervm_ext.driver.LOG.warning')
@mock.patch('nova.compute.utils.get_machine_ips')
def test_get_host_ip_addr_failure(self, mock_ips, mock_log):
mock_ips.return_value = ['1.1.1.1']

View File

@ -20,7 +20,7 @@ classifier =
[files]
packages =
nova_powervm
nova/virt/powervm
nova/virt/powervm_ext
[build_sphinx]
source-dir = doc/source