Deprecate CinderUtils and CinderWrapper
BlockStorage class was introduced some time ago. It includes all required latest methods. Change-Id: Ice48514caba4372ac5205c370d58f6c427888724
This commit is contained in:
parent
e85facaf05
commit
a9d86b1d12
@ -17,7 +17,8 @@ import random
|
|||||||
|
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
|
|
||||||
from rally.common.i18n import _
|
from rally.common.i18n import _, _LW
|
||||||
|
from rally.common import logging
|
||||||
from rally import exceptions
|
from rally import exceptions
|
||||||
from rally.plugins.openstack import scenario
|
from rally.plugins.openstack import scenario
|
||||||
from rally.plugins.openstack.services.storage import block
|
from rally.plugins.openstack.services.storage import block
|
||||||
@ -27,6 +28,7 @@ from rally.task import atomic
|
|||||||
from rally.task import utils as bench_utils
|
from rally.task import utils as bench_utils
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class CinderBasic(scenario.OpenStackScenario):
|
class CinderBasic(scenario.OpenStackScenario):
|
||||||
@ -49,6 +51,14 @@ class CinderBasic(scenario.OpenStackScenario):
|
|||||||
class CinderScenario(scenario.OpenStackScenario):
|
class CinderScenario(scenario.OpenStackScenario):
|
||||||
"""Base class for Cinder scenarios with basic atomic actions."""
|
"""Base class for Cinder scenarios with basic atomic actions."""
|
||||||
|
|
||||||
|
def __init__(self, context=None, admin_clients=None, clients=None):
|
||||||
|
super(CinderScenario, self).__init__(context, admin_clients, clients)
|
||||||
|
LOG.warning(_LW(
|
||||||
|
"Class %s is deprecated since Rally 0.10.0 and will be removed "
|
||||||
|
"soon. Use "
|
||||||
|
"rally.plugins.openstack.services.storage.block.BlockStorage "
|
||||||
|
"instead.") % self.__class__)
|
||||||
|
|
||||||
@atomic.action_timer("cinder.list_volumes")
|
@atomic.action_timer("cinder.list_volumes")
|
||||||
def _list_volumes(self, detailed=True):
|
def _list_volumes(self, detailed=True):
|
||||||
"""Returns user volumes list."""
|
"""Returns user volumes list."""
|
||||||
|
@ -41,7 +41,7 @@ LOG = logging.getLogger(__name__)
|
|||||||
@validation.add("required_platform", platform="openstack", users=True)
|
@validation.add("required_platform", platform="openstack", users=True)
|
||||||
@scenario.configure(context={"cleanup": ["nova"]},
|
@scenario.configure(context={"cleanup": ["nova"]},
|
||||||
name="NovaServers.boot_and_list_server")
|
name="NovaServers.boot_and_list_server")
|
||||||
class BootAndListServer(utils.NovaScenario, cinder_utils.CinderScenario):
|
class BootAndListServer(utils.NovaScenario):
|
||||||
|
|
||||||
def run(self, image, flavor, detailed=True, **kwargs):
|
def run(self, image, flavor, detailed=True, **kwargs):
|
||||||
"""Boot a server from an image and then list all servers.
|
"""Boot a server from an image and then list all servers.
|
||||||
@ -75,7 +75,7 @@ class BootAndListServer(utils.NovaScenario, cinder_utils.CinderScenario):
|
|||||||
@validation.add("required_platform", platform="openstack", users=True)
|
@validation.add("required_platform", platform="openstack", users=True)
|
||||||
@scenario.configure(context={"cleanup": ["nova"]},
|
@scenario.configure(context={"cleanup": ["nova"]},
|
||||||
name="NovaServers.list_servers")
|
name="NovaServers.list_servers")
|
||||||
class ListServers(utils.NovaScenario, cinder_utils.CinderScenario):
|
class ListServers(utils.NovaScenario):
|
||||||
|
|
||||||
def run(self, detailed=True):
|
def run(self, detailed=True):
|
||||||
"""List all servers.
|
"""List all servers.
|
||||||
@ -97,7 +97,7 @@ class ListServers(utils.NovaScenario, cinder_utils.CinderScenario):
|
|||||||
@validation.add("required_platform", platform="openstack", users=True)
|
@validation.add("required_platform", platform="openstack", users=True)
|
||||||
@scenario.configure(context={"cleanup": ["nova"]},
|
@scenario.configure(context={"cleanup": ["nova"]},
|
||||||
name="NovaServers.boot_and_delete_server")
|
name="NovaServers.boot_and_delete_server")
|
||||||
class BootAndDeleteServer(utils.NovaScenario, cinder_utils.CinderScenario):
|
class BootAndDeleteServer(utils.NovaScenario):
|
||||||
|
|
||||||
def run(self, image, flavor, min_sleep=0, max_sleep=0,
|
def run(self, image, flavor, min_sleep=0, max_sleep=0,
|
||||||
force_delete=False, **kwargs):
|
force_delete=False, **kwargs):
|
||||||
@ -128,8 +128,7 @@ class BootAndDeleteServer(utils.NovaScenario, cinder_utils.CinderScenario):
|
|||||||
admin=True, users=True)
|
admin=True, users=True)
|
||||||
@scenario.configure(context={"cleanup": ["nova"]},
|
@scenario.configure(context={"cleanup": ["nova"]},
|
||||||
name="NovaServers.boot_and_delete_multiple_servers")
|
name="NovaServers.boot_and_delete_multiple_servers")
|
||||||
class BootAndDeleteMultipleServers(utils.NovaScenario,
|
class BootAndDeleteMultipleServers(utils.NovaScenario):
|
||||||
cinder_utils.CinderScenario):
|
|
||||||
|
|
||||||
def run(self, image, flavor, count=2, min_sleep=0,
|
def run(self, image, flavor, count=2, min_sleep=0,
|
||||||
max_sleep=0, force_delete=False, **kwargs):
|
max_sleep=0, force_delete=False, **kwargs):
|
||||||
@ -162,7 +161,7 @@ class BootAndDeleteMultipleServers(utils.NovaScenario,
|
|||||||
@scenario.configure(context={"cleanup": ["nova", "cinder"]},
|
@scenario.configure(context={"cleanup": ["nova", "cinder"]},
|
||||||
name="NovaServers.boot_server_from_volume_and_delete")
|
name="NovaServers.boot_server_from_volume_and_delete")
|
||||||
class BootServerFromVolumeAndDelete(utils.NovaScenario,
|
class BootServerFromVolumeAndDelete(utils.NovaScenario,
|
||||||
cinder_utils.CinderScenario):
|
cinder_utils.CinderBasic):
|
||||||
|
|
||||||
def run(self, image, flavor, volume_size, volume_type=None,
|
def run(self, image, flavor, volume_size, volume_type=None,
|
||||||
min_sleep=0, max_sleep=0, force_delete=False, **kwargs):
|
min_sleep=0, max_sleep=0, force_delete=False, **kwargs):
|
||||||
@ -183,7 +182,7 @@ class BootServerFromVolumeAndDelete(utils.NovaScenario,
|
|||||||
:param force_delete: True if force_delete should be used
|
:param force_delete: True if force_delete should be used
|
||||||
:param kwargs: Optional additional arguments for server creation
|
:param kwargs: Optional additional arguments for server creation
|
||||||
"""
|
"""
|
||||||
volume = self._create_volume(volume_size, imageRef=image,
|
volume = self.cinder.create_volume(volume_size, imageRef=image,
|
||||||
volume_type=volume_type)
|
volume_type=volume_type)
|
||||||
block_device_mapping = {"vda": "%s:::1" % volume.id}
|
block_device_mapping = {"vda": "%s:::1" % volume.id}
|
||||||
server = self._boot_server(None, flavor,
|
server = self._boot_server(None, flavor,
|
||||||
@ -201,7 +200,7 @@ class BootServerFromVolumeAndDelete(utils.NovaScenario,
|
|||||||
@validation.add("required_platform", platform="openstack", users=True)
|
@validation.add("required_platform", platform="openstack", users=True)
|
||||||
@scenario.configure(context={"cleanup": ["nova"]},
|
@scenario.configure(context={"cleanup": ["nova"]},
|
||||||
name="NovaServers.boot_and_bounce_server")
|
name="NovaServers.boot_and_bounce_server")
|
||||||
class BootAndBounceServer(utils.NovaScenario, cinder_utils.CinderScenario):
|
class BootAndBounceServer(utils.NovaScenario):
|
||||||
|
|
||||||
def run(self, image, flavor, force_delete=False, actions=None, **kwargs):
|
def run(self, image, flavor, force_delete=False, actions=None, **kwargs):
|
||||||
"""Boot a server and run specified actions against it.
|
"""Boot a server and run specified actions against it.
|
||||||
@ -242,7 +241,7 @@ class BootAndBounceServer(utils.NovaScenario, cinder_utils.CinderScenario):
|
|||||||
@validation.add("required_platform", platform="openstack", users=True)
|
@validation.add("required_platform", platform="openstack", users=True)
|
||||||
@scenario.configure(context={"cleanup": ["nova"]},
|
@scenario.configure(context={"cleanup": ["nova"]},
|
||||||
name="NovaServers.boot_lock_unlock_and_delete")
|
name="NovaServers.boot_lock_unlock_and_delete")
|
||||||
class BootLockUnlockAndDelete(utils.NovaScenario, cinder_utils.CinderScenario):
|
class BootLockUnlockAndDelete(utils.NovaScenario):
|
||||||
|
|
||||||
def run(self, image, flavor, min_sleep=0,
|
def run(self, image, flavor, min_sleep=0,
|
||||||
max_sleep=0, force_delete=False, **kwargs):
|
max_sleep=0, force_delete=False, **kwargs):
|
||||||
@ -277,7 +276,7 @@ class BootLockUnlockAndDelete(utils.NovaScenario, cinder_utils.CinderScenario):
|
|||||||
@validation.add("required_platform", platform="openstack", users=True)
|
@validation.add("required_platform", platform="openstack", users=True)
|
||||||
@scenario.configure(context={"cleanup": ["nova", "glance"]},
|
@scenario.configure(context={"cleanup": ["nova", "glance"]},
|
||||||
name="NovaServers.snapshot_server")
|
name="NovaServers.snapshot_server")
|
||||||
class SnapshotServer(utils.NovaScenario, cinder_utils.CinderScenario):
|
class SnapshotServer(utils.NovaScenario):
|
||||||
|
|
||||||
def run(self, image, flavor, force_delete=False, **kwargs):
|
def run(self, image, flavor, force_delete=False, **kwargs):
|
||||||
"""Boot a server, make its snapshot and delete both.
|
"""Boot a server, make its snapshot and delete both.
|
||||||
@ -305,7 +304,7 @@ class SnapshotServer(utils.NovaScenario, cinder_utils.CinderScenario):
|
|||||||
@validation.add("required_platform", platform="openstack", users=True)
|
@validation.add("required_platform", platform="openstack", users=True)
|
||||||
@scenario.configure(context={"cleanup": ["nova"]},
|
@scenario.configure(context={"cleanup": ["nova"]},
|
||||||
name="NovaServers.boot_server")
|
name="NovaServers.boot_server")
|
||||||
class BootServer(utils.NovaScenario, cinder_utils.CinderScenario):
|
class BootServer(utils.NovaScenario):
|
||||||
|
|
||||||
def run(self, image, flavor, auto_assign_nic=False, **kwargs):
|
def run(self, image, flavor, auto_assign_nic=False, **kwargs):
|
||||||
"""Boot a server.
|
"""Boot a server.
|
||||||
@ -330,7 +329,7 @@ class BootServer(utils.NovaScenario, cinder_utils.CinderScenario):
|
|||||||
@validation.add("required_platform", platform="openstack", users=True)
|
@validation.add("required_platform", platform="openstack", users=True)
|
||||||
@scenario.configure(context={"cleanup": ["nova", "cinder"]},
|
@scenario.configure(context={"cleanup": ["nova", "cinder"]},
|
||||||
name="NovaServers.boot_server_from_volume")
|
name="NovaServers.boot_server_from_volume")
|
||||||
class BootServerFromVolume(utils.NovaScenario, cinder_utils.CinderScenario):
|
class BootServerFromVolume(utils.NovaScenario, cinder_utils.CinderBasic):
|
||||||
|
|
||||||
def run(self, image, flavor, volume_size,
|
def run(self, image, flavor, volume_size,
|
||||||
volume_type=None, auto_assign_nic=False, **kwargs):
|
volume_type=None, auto_assign_nic=False, **kwargs):
|
||||||
@ -347,7 +346,7 @@ class BootServerFromVolume(utils.NovaScenario, cinder_utils.CinderScenario):
|
|||||||
:param auto_assign_nic: True if NICs should be assigned
|
:param auto_assign_nic: True if NICs should be assigned
|
||||||
:param kwargs: Optional additional arguments for server creation
|
:param kwargs: Optional additional arguments for server creation
|
||||||
"""
|
"""
|
||||||
volume = self._create_volume(volume_size, imageRef=image,
|
volume = self.cinder.create_volume(volume_size, imageRef=image,
|
||||||
volume_type=volume_type)
|
volume_type=volume_type)
|
||||||
block_device_mapping = {"vda": "%s:::1" % volume.id}
|
block_device_mapping = {"vda": "%s:::1" % volume.id}
|
||||||
self._boot_server(None, flavor, auto_assign_nic=auto_assign_nic,
|
self._boot_server(None, flavor, auto_assign_nic=auto_assign_nic,
|
||||||
@ -364,7 +363,7 @@ class BootServerFromVolume(utils.NovaScenario, cinder_utils.CinderScenario):
|
|||||||
@validation.add("required_platform", platform="openstack", users=True)
|
@validation.add("required_platform", platform="openstack", users=True)
|
||||||
@scenario.configure(context={"cleanup": ["nova"]},
|
@scenario.configure(context={"cleanup": ["nova"]},
|
||||||
name="NovaServers.resize_server")
|
name="NovaServers.resize_server")
|
||||||
class ResizeServer(utils.NovaScenario, cinder_utils.CinderScenario):
|
class ResizeServer(utils.NovaScenario):
|
||||||
|
|
||||||
def run(self, image, flavor, to_flavor, force_delete=False, **kwargs):
|
def run(self, image, flavor, to_flavor, force_delete=False, **kwargs):
|
||||||
"""Boot a server, then resize and delete it.
|
"""Boot a server, then resize and delete it.
|
||||||
@ -434,10 +433,10 @@ class ResizeShutoffServer(utils.NovaScenario):
|
|||||||
consts.Service.CINDER])
|
consts.Service.CINDER])
|
||||||
@validation.add("required_platform", platform="openstack", users=True)
|
@validation.add("required_platform", platform="openstack", users=True)
|
||||||
@scenario.configure(context={"cleanup": ["cinder", "nova"]},
|
@scenario.configure(context={"cleanup": ["cinder", "nova"]},
|
||||||
name=("NovaServers.boot_server"
|
name=("NovaServers."
|
||||||
"_attach_created_volume_and_resize"))
|
"boot_server_attach_created_volume_and_resize"))
|
||||||
class BootServerAttachCreatedVolumeAndResize(utils.NovaScenario,
|
class BootServerAttachCreatedVolumeAndResize(utils.NovaScenario,
|
||||||
cinder_utils.CinderScenario):
|
cinder_utils.CinderBasic):
|
||||||
|
|
||||||
def run(self, image, flavor, to_flavor, volume_size, min_sleep=0,
|
def run(self, image, flavor, to_flavor, volume_size, min_sleep=0,
|
||||||
max_sleep=0, force_delete=False, confirm=True, do_delete=True,
|
max_sleep=0, force_delete=False, confirm=True, do_delete=True,
|
||||||
@ -466,7 +465,7 @@ class BootServerAttachCreatedVolumeAndResize(utils.NovaScenario,
|
|||||||
create_volume_kwargs = create_volume_kwargs or {}
|
create_volume_kwargs = create_volume_kwargs or {}
|
||||||
|
|
||||||
server = self._boot_server(image, flavor, **boot_server_kwargs)
|
server = self._boot_server(image, flavor, **boot_server_kwargs)
|
||||||
volume = self._create_volume(volume_size, **create_volume_kwargs)
|
volume = self.cinder.create_volume(volume_size, **create_volume_kwargs)
|
||||||
|
|
||||||
attachment = self._attach_volume(server, volume)
|
attachment = self._attach_volume(server, volume)
|
||||||
self.sleep_between(min_sleep, max_sleep)
|
self.sleep_between(min_sleep, max_sleep)
|
||||||
@ -479,7 +478,7 @@ class BootServerAttachCreatedVolumeAndResize(utils.NovaScenario,
|
|||||||
|
|
||||||
if do_delete:
|
if do_delete:
|
||||||
self._detach_volume(server, volume, attachment)
|
self._detach_volume(server, volume, attachment)
|
||||||
self._delete_volume(volume)
|
self.cinder.delete_volume(volume)
|
||||||
self._delete_server(server, force=force_delete)
|
self._delete_server(server, force=force_delete)
|
||||||
|
|
||||||
|
|
||||||
@ -494,7 +493,7 @@ class BootServerAttachCreatedVolumeAndResize(utils.NovaScenario,
|
|||||||
@scenario.configure(context={"cleanup": ["nova", "cinder"]},
|
@scenario.configure(context={"cleanup": ["nova", "cinder"]},
|
||||||
name="NovaServers.boot_server_from_volume_and_resize")
|
name="NovaServers.boot_server_from_volume_and_resize")
|
||||||
class BootServerFromVolumeAndResize(utils.NovaScenario,
|
class BootServerFromVolumeAndResize(utils.NovaScenario,
|
||||||
cinder_utils.CinderScenario):
|
cinder_utils.CinderBasic):
|
||||||
|
|
||||||
def run(self, image, flavor, to_flavor, volume_size, min_sleep=0,
|
def run(self, image, flavor, to_flavor, volume_size, min_sleep=0,
|
||||||
max_sleep=0, force_delete=False, confirm=True, do_delete=True,
|
max_sleep=0, force_delete=False, confirm=True, do_delete=True,
|
||||||
@ -528,7 +527,7 @@ class BootServerFromVolumeAndResize(utils.NovaScenario,
|
|||||||
if boot_server_kwargs.get("block_device_mapping"):
|
if boot_server_kwargs.get("block_device_mapping"):
|
||||||
LOG.warning("Using already existing volume is not permitted.")
|
LOG.warning("Using already existing volume is not permitted.")
|
||||||
|
|
||||||
volume = self._create_volume(volume_size, imageRef=image,
|
volume = self.cinder.create_volume(volume_size, imageRef=image,
|
||||||
**create_volume_kwargs)
|
**create_volume_kwargs)
|
||||||
boot_server_kwargs["block_device_mapping"] = {
|
boot_server_kwargs["block_device_mapping"] = {
|
||||||
"vda": "%s:::1" % volume.id}
|
"vda": "%s:::1" % volume.id}
|
||||||
@ -554,7 +553,7 @@ class BootServerFromVolumeAndResize(utils.NovaScenario,
|
|||||||
@validation.add("required_platform", platform="openstack", users=True)
|
@validation.add("required_platform", platform="openstack", users=True)
|
||||||
@scenario.configure(context={"cleanup": ["nova"]},
|
@scenario.configure(context={"cleanup": ["nova"]},
|
||||||
name="NovaServers.suspend_and_resume_server")
|
name="NovaServers.suspend_and_resume_server")
|
||||||
class SuspendAndResumeServer(utils.NovaScenario, cinder_utils.CinderScenario):
|
class SuspendAndResumeServer(utils.NovaScenario):
|
||||||
|
|
||||||
def run(self, image, flavor, force_delete=False, **kwargs):
|
def run(self, image, flavor, force_delete=False, **kwargs):
|
||||||
"""Create a server, suspend, resume and then delete it
|
"""Create a server, suspend, resume and then delete it
|
||||||
@ -578,8 +577,7 @@ class SuspendAndResumeServer(utils.NovaScenario, cinder_utils.CinderScenario):
|
|||||||
@validation.add("required_platform", platform="openstack", users=True)
|
@validation.add("required_platform", platform="openstack", users=True)
|
||||||
@scenario.configure(context={"cleanup": ["nova"]},
|
@scenario.configure(context={"cleanup": ["nova"]},
|
||||||
name="NovaServers.pause_and_unpause_server")
|
name="NovaServers.pause_and_unpause_server")
|
||||||
class PauseAndUnpauseServer(utils.NovaScenario,
|
class PauseAndUnpauseServer(utils.NovaScenario):
|
||||||
cinder_utils.CinderScenario):
|
|
||||||
|
|
||||||
def run(self, image, flavor, force_delete=False, **kwargs):
|
def run(self, image, flavor, force_delete=False, **kwargs):
|
||||||
"""Create a server, pause, unpause and then delete it
|
"""Create a server, pause, unpause and then delete it
|
||||||
@ -603,8 +601,7 @@ class PauseAndUnpauseServer(utils.NovaScenario,
|
|||||||
@validation.add("required_platform", platform="openstack", users=True)
|
@validation.add("required_platform", platform="openstack", users=True)
|
||||||
@scenario.configure(context={"cleanup": ["nova"]},
|
@scenario.configure(context={"cleanup": ["nova"]},
|
||||||
name="NovaServers.shelve_and_unshelve_server")
|
name="NovaServers.shelve_and_unshelve_server")
|
||||||
class ShelveAndUnshelveServer(utils.NovaScenario,
|
class ShelveAndUnshelveServer(utils.NovaScenario):
|
||||||
cinder_utils.CinderScenario):
|
|
||||||
|
|
||||||
def run(self, image, flavor, force_delete=False, **kwargs):
|
def run(self, image, flavor, force_delete=False, **kwargs):
|
||||||
"""Create a server, shelve, unshelve and then delete it
|
"""Create a server, shelve, unshelve and then delete it
|
||||||
@ -629,8 +626,7 @@ class ShelveAndUnshelveServer(utils.NovaScenario,
|
|||||||
admin=True, users=True)
|
admin=True, users=True)
|
||||||
@scenario.configure(context={"cleanup": ["nova"]},
|
@scenario.configure(context={"cleanup": ["nova"]},
|
||||||
name="NovaServers.boot_and_live_migrate_server")
|
name="NovaServers.boot_and_live_migrate_server")
|
||||||
class BootAndLiveMigrateServer(utils.NovaScenario,
|
class BootAndLiveMigrateServer(utils.NovaScenario):
|
||||||
cinder_utils.CinderScenario):
|
|
||||||
|
|
||||||
def run(self, image, flavor, block_migration=False, disk_over_commit=False,
|
def run(self, image, flavor, block_migration=False, disk_over_commit=False,
|
||||||
min_sleep=0, max_sleep=0, **kwargs):
|
min_sleep=0, max_sleep=0, **kwargs):
|
||||||
@ -675,7 +671,7 @@ class BootAndLiveMigrateServer(utils.NovaScenario,
|
|||||||
name=("NovaServers.boot_server_from_volume"
|
name=("NovaServers.boot_server_from_volume"
|
||||||
"_and_live_migrate"))
|
"_and_live_migrate"))
|
||||||
class BootServerFromVolumeAndLiveMigrate(utils.NovaScenario,
|
class BootServerFromVolumeAndLiveMigrate(utils.NovaScenario,
|
||||||
cinder_utils.CinderScenario):
|
cinder_utils.CinderBasic):
|
||||||
|
|
||||||
def run(self, image, flavor, volume_size, volume_type=None,
|
def run(self, image, flavor, volume_size, volume_type=None,
|
||||||
block_migration=False, disk_over_commit=False, force_delete=False,
|
block_migration=False, disk_over_commit=False, force_delete=False,
|
||||||
@ -704,7 +700,7 @@ class BootServerFromVolumeAndLiveMigrate(utils.NovaScenario,
|
|||||||
:param max_sleep: Maximum sleep time in seconds (non-negative)
|
:param max_sleep: Maximum sleep time in seconds (non-negative)
|
||||||
:param kwargs: Optional additional arguments for server creation
|
:param kwargs: Optional additional arguments for server creation
|
||||||
"""
|
"""
|
||||||
volume = self._create_volume(volume_size, imageRef=image,
|
volume = self.cinder.create_volume(volume_size, imageRef=image,
|
||||||
volume_type=volume_type)
|
volume_type=volume_type)
|
||||||
block_device_mapping = {"vda": "%s:::1" % volume.id}
|
block_device_mapping = {"vda": "%s:::1" % volume.id}
|
||||||
server = self._boot_server(None, flavor,
|
server = self._boot_server(None, flavor,
|
||||||
@ -731,7 +727,7 @@ class BootServerFromVolumeAndLiveMigrate(utils.NovaScenario,
|
|||||||
name=("NovaServers.boot_server_attach_created_volume"
|
name=("NovaServers.boot_server_attach_created_volume"
|
||||||
"_and_live_migrate"))
|
"_and_live_migrate"))
|
||||||
class BootServerAttachCreatedVolumeAndLiveMigrate(utils.NovaScenario,
|
class BootServerAttachCreatedVolumeAndLiveMigrate(utils.NovaScenario,
|
||||||
cinder_utils.CinderScenario):
|
cinder_utils.CinderBasic):
|
||||||
|
|
||||||
def run(self, image, flavor, size, block_migration=False,
|
def run(self, image, flavor, size, block_migration=False,
|
||||||
disk_over_commit=False, boot_server_kwargs=None,
|
disk_over_commit=False, boot_server_kwargs=None,
|
||||||
@ -763,7 +759,7 @@ class BootServerAttachCreatedVolumeAndLiveMigrate(utils.NovaScenario,
|
|||||||
create_volume_kwargs = {}
|
create_volume_kwargs = {}
|
||||||
|
|
||||||
server = self._boot_server(image, flavor, **boot_server_kwargs)
|
server = self._boot_server(image, flavor, **boot_server_kwargs)
|
||||||
volume = self._create_volume(size, **create_volume_kwargs)
|
volume = self.cinder.create_volume(size, **create_volume_kwargs)
|
||||||
|
|
||||||
attachment = self._attach_volume(server, volume)
|
attachment = self._attach_volume(server, volume)
|
||||||
|
|
||||||
@ -775,7 +771,7 @@ class BootServerAttachCreatedVolumeAndLiveMigrate(utils.NovaScenario,
|
|||||||
|
|
||||||
self._detach_volume(server, volume, attachment)
|
self._detach_volume(server, volume, attachment)
|
||||||
|
|
||||||
self._delete_volume(volume)
|
self.cinder.delete_volume(volume)
|
||||||
self._delete_server(server)
|
self._delete_server(server)
|
||||||
|
|
||||||
|
|
||||||
@ -788,7 +784,7 @@ class BootServerAttachCreatedVolumeAndLiveMigrate(utils.NovaScenario,
|
|||||||
admin=True, users=True)
|
admin=True, users=True)
|
||||||
@scenario.configure(context={"cleanup": ["nova"]},
|
@scenario.configure(context={"cleanup": ["nova"]},
|
||||||
name="NovaServers.boot_and_migrate_server")
|
name="NovaServers.boot_and_migrate_server")
|
||||||
class BootAndMigrateServer(utils.NovaScenario, cinder_utils.CinderScenario):
|
class BootAndMigrateServer(utils.NovaScenario):
|
||||||
|
|
||||||
def run(self, image, flavor, **kwargs):
|
def run(self, image, flavor, **kwargs):
|
||||||
"""Migrate a server.
|
"""Migrate a server.
|
||||||
@ -825,7 +821,7 @@ class BootAndMigrateServer(utils.NovaScenario, cinder_utils.CinderScenario):
|
|||||||
admin=True, users=True)
|
admin=True, users=True)
|
||||||
@scenario.configure(context={"cleanup": ["nova"]},
|
@scenario.configure(context={"cleanup": ["nova"]},
|
||||||
name="NovaServers.boot_and_rebuild_server")
|
name="NovaServers.boot_and_rebuild_server")
|
||||||
class BootAndRebuildServer(utils.NovaScenario, cinder_utils.CinderScenario):
|
class BootAndRebuildServer(utils.NovaScenario):
|
||||||
|
|
||||||
def run(self, from_image, to_image, flavor, **kwargs):
|
def run(self, from_image, to_image, flavor, **kwargs):
|
||||||
"""Rebuild a server.
|
"""Rebuild a server.
|
||||||
@ -852,8 +848,7 @@ class BootAndRebuildServer(utils.NovaScenario, cinder_utils.CinderScenario):
|
|||||||
@validation.add("required_contexts", contexts=("network"))
|
@validation.add("required_contexts", contexts=("network"))
|
||||||
@scenario.configure(context={"cleanup": ["nova", "neutron.floatingip"]},
|
@scenario.configure(context={"cleanup": ["nova", "neutron.floatingip"]},
|
||||||
name="NovaServers.boot_and_associate_floating_ip")
|
name="NovaServers.boot_and_associate_floating_ip")
|
||||||
class BootAndAssociateFloatingIp(utils.NovaScenario,
|
class BootAndAssociateFloatingIp(utils.NovaScenario):
|
||||||
cinder_utils.CinderScenario):
|
|
||||||
|
|
||||||
def run(self, image, flavor, **kwargs):
|
def run(self, image, flavor, **kwargs):
|
||||||
"""Boot a server and associate a floating IP to it.
|
"""Boot a server and associate a floating IP to it.
|
||||||
@ -910,7 +905,7 @@ class BootServerAndAttachInterface(utils.NovaScenario,
|
|||||||
@validation.add("required_platform", platform="openstack", users=True)
|
@validation.add("required_platform", platform="openstack", users=True)
|
||||||
@scenario.configure(context={"cleanup": ["nova"]},
|
@scenario.configure(context={"cleanup": ["nova"]},
|
||||||
name="NovaServers.boot_and_show_server")
|
name="NovaServers.boot_and_show_server")
|
||||||
class BootAndShowServer(utils.NovaScenario, cinder_utils.CinderScenario):
|
class BootAndShowServer(utils.NovaScenario):
|
||||||
|
|
||||||
def run(self, image, flavor, **kwargs):
|
def run(self, image, flavor, **kwargs):
|
||||||
"""Show server details.
|
"""Show server details.
|
||||||
@ -935,7 +930,7 @@ class BootAndShowServer(utils.NovaScenario, cinder_utils.CinderScenario):
|
|||||||
@validation.add("required_platform", platform="openstack", users=True)
|
@validation.add("required_platform", platform="openstack", users=True)
|
||||||
@scenario.configure(context={"cleanup": ["nova"]},
|
@scenario.configure(context={"cleanup": ["nova"]},
|
||||||
name="NovaServers.boot_and_get_console_output")
|
name="NovaServers.boot_and_get_console_output")
|
||||||
class BootAndGetConsoleOutput(utils.NovaScenario, cinder_utils.CinderScenario):
|
class BootAndGetConsoleOutput(utils.NovaScenario):
|
||||||
|
|
||||||
def run(self, image, flavor, length=None, **kwargs):
|
def run(self, image, flavor, length=None, **kwargs):
|
||||||
"""Get text console output from server.
|
"""Get text console output from server.
|
||||||
@ -962,7 +957,7 @@ class BootAndGetConsoleOutput(utils.NovaScenario, cinder_utils.CinderScenario):
|
|||||||
@validation.add("required_platform", platform="openstack", users=True)
|
@validation.add("required_platform", platform="openstack", users=True)
|
||||||
@scenario.configure(context={"cleanup": ["nova"]},
|
@scenario.configure(context={"cleanup": ["nova"]},
|
||||||
name="NovaServers.boot_and_update_server")
|
name="NovaServers.boot_and_update_server")
|
||||||
class BootAndUpdateServer(utils.NovaScenario, cinder_utils.CinderScenario):
|
class BootAndUpdateServer(utils.NovaScenario):
|
||||||
|
|
||||||
def run(self, image, flavor, description=None, **kwargs):
|
def run(self, image, flavor, description=None, **kwargs):
|
||||||
"""Boot a server, then update its name and description.
|
"""Boot a server, then update its name and description.
|
||||||
@ -989,7 +984,7 @@ class BootAndUpdateServer(utils.NovaScenario, cinder_utils.CinderScenario):
|
|||||||
@scenario.configure(context={"cleanup": ["nova", "cinder"]},
|
@scenario.configure(context={"cleanup": ["nova", "cinder"]},
|
||||||
name="NovaServers.boot_server_from_volume_snapshot")
|
name="NovaServers.boot_server_from_volume_snapshot")
|
||||||
class BootServerFromVolumeSnapshot(utils.NovaScenario,
|
class BootServerFromVolumeSnapshot(utils.NovaScenario,
|
||||||
cinder_utils.CinderScenario):
|
cinder_utils.CinderBasic):
|
||||||
|
|
||||||
def run(self, image, flavor, volume_size, volume_type=None,
|
def run(self, image, flavor, volume_size, volume_type=None,
|
||||||
auto_assign_nic=False, **kwargs):
|
auto_assign_nic=False, **kwargs):
|
||||||
@ -1008,9 +1003,9 @@ class BootServerFromVolumeSnapshot(utils.NovaScenario,
|
|||||||
:param auto_assign_nic: True if NICs should be assigned
|
:param auto_assign_nic: True if NICs should be assigned
|
||||||
:param kwargs: Optional additional arguments for server creation
|
:param kwargs: Optional additional arguments for server creation
|
||||||
"""
|
"""
|
||||||
volume = self._create_volume(volume_size, imageRef=image,
|
volume = self.cinder.create_volume(volume_size, imageRef=image,
|
||||||
volume_type=volume_type)
|
volume_type=volume_type)
|
||||||
snapshot = self._create_snapshot(volume.id, False)
|
snapshot = self.cinder.create_snapshot(volume.id, force=False)
|
||||||
block_device_mapping = {"vda": "%s:snap::1" % snapshot.id}
|
block_device_mapping = {"vda": "%s:snap::1" % snapshot.id}
|
||||||
self._boot_server(None, flavor, auto_assign_nic=auto_assign_nic,
|
self._boot_server(None, flavor, auto_assign_nic=auto_assign_nic,
|
||||||
block_device_mapping=block_device_mapping,
|
block_device_mapping=block_device_mapping,
|
||||||
|
@ -680,7 +680,7 @@ class NovaScenario(scenario.OpenStackScenario):
|
|||||||
def _detach_volume(self, server, volume, attachment=None):
|
def _detach_volume(self, server, volume, attachment=None):
|
||||||
server_id = server.id
|
server_id = server.id
|
||||||
# NOTE(chenhb): Recommend the use of attachment.The use of
|
# NOTE(chenhb): Recommend the use of attachment.The use of
|
||||||
# volume.id is retained mainly for backwoard compatible.
|
# volume.id is retained mainly for backward compatibility.
|
||||||
attachment_id = attachment.id if attachment else volume.id
|
attachment_id = attachment.id if attachment else volume.id
|
||||||
|
|
||||||
self.clients("nova").volumes.delete_server_volume(server_id,
|
self.clients("nova").volumes.delete_server_volume(server_id,
|
||||||
|
@ -24,7 +24,6 @@ import six
|
|||||||
from rally.common.i18n import _
|
from rally.common.i18n import _
|
||||||
from rally.common import logging
|
from rally.common import logging
|
||||||
from rally.common import sshutils
|
from rally.common import sshutils
|
||||||
from rally.plugins.openstack.scenarios.cinder import utils as cinder_utils
|
|
||||||
from rally.plugins.openstack.scenarios.nova import utils as nova_utils
|
from rally.plugins.openstack.scenarios.nova import utils as nova_utils
|
||||||
from rally.plugins.openstack.wrappers import network as network_wrapper
|
from rally.plugins.openstack.wrappers import network as network_wrapper
|
||||||
from rally.task import atomic
|
from rally.task import atomic
|
||||||
@ -82,7 +81,7 @@ class Host(object):
|
|||||||
return not self.__eq__(other)
|
return not self.__eq__(other)
|
||||||
|
|
||||||
|
|
||||||
class VMScenario(nova_utils.NovaScenario, cinder_utils.CinderScenario):
|
class VMScenario(nova_utils.NovaScenario):
|
||||||
"""Base class for VM scenarios with basic atomic actions.
|
"""Base class for VM scenarios with basic atomic actions.
|
||||||
|
|
||||||
VM scenarios are scenarios executed inside some launched VM instance.
|
VM scenarios are scenarios executed inside some launched VM instance.
|
||||||
|
@ -21,6 +21,7 @@ from rally.common import sshutils
|
|||||||
from rally import consts
|
from rally import consts
|
||||||
from rally import exceptions
|
from rally import exceptions
|
||||||
from rally.plugins.openstack import scenario
|
from rally.plugins.openstack import scenario
|
||||||
|
from rally.plugins.openstack.scenarios.cinder import utils as cinder_utils
|
||||||
from rally.plugins.openstack.scenarios.vm import utils as vm_utils
|
from rally.plugins.openstack.scenarios.vm import utils as vm_utils
|
||||||
from rally.plugins.openstack.services import heat
|
from rally.plugins.openstack.services import heat
|
||||||
from rally.task import atomic
|
from rally.task import atomic
|
||||||
@ -50,7 +51,7 @@ LOG = logging.getLogger(__name__)
|
|||||||
@scenario.configure(context={"cleanup": ["nova", "cinder"],
|
@scenario.configure(context={"cleanup": ["nova", "cinder"],
|
||||||
"keypair": {}, "allow_ssh": None},
|
"keypair": {}, "allow_ssh": None},
|
||||||
name="VMTasks.boot_runcommand_delete")
|
name="VMTasks.boot_runcommand_delete")
|
||||||
class BootRuncommandDelete(vm_utils.VMScenario):
|
class BootRuncommandDelete(vm_utils.VMScenario, cinder_utils.CinderBasic):
|
||||||
|
|
||||||
def run(self, flavor, username, password=None,
|
def run(self, flavor, username, password=None,
|
||||||
image=None,
|
image=None,
|
||||||
@ -146,7 +147,8 @@ class BootRuncommandDelete(vm_utils.VMScenario):
|
|||||||
errors: str, raw data from the script's stderr stream
|
errors: str, raw data from the script's stderr stream
|
||||||
"""
|
"""
|
||||||
if volume_args:
|
if volume_args:
|
||||||
volume = self._create_volume(volume_args["size"], imageRef=None)
|
volume = self.cinder.create_volume(volume_args["size"],
|
||||||
|
imageRef=None)
|
||||||
kwargs["block_device_mapping"] = {"vdrally": "%s:::1" % volume.id}
|
kwargs["block_device_mapping"] = {"vdrally": "%s:::1" % volume.id}
|
||||||
|
|
||||||
if not image:
|
if not image:
|
||||||
|
@ -47,21 +47,22 @@ class CinderV1Service(service.Service, cinder_common.CinderMixin):
|
|||||||
|
|
||||||
:returns: Return a new volume.
|
:returns: Return a new volume.
|
||||||
"""
|
"""
|
||||||
kwargs = {"display_name": display_name or self.generate_random_name(),
|
|
||||||
"display_description": display_description,
|
|
||||||
"snapshot_id": snapshot_id,
|
|
||||||
"source_volid": source_volid,
|
|
||||||
"volume_type": volume_type,
|
|
||||||
"user_id": user_id,
|
|
||||||
"project_id": project_id,
|
|
||||||
"availability_zone": availability_zone,
|
|
||||||
"metadata": metadata,
|
|
||||||
"imageRef": imageRef}
|
|
||||||
if isinstance(size, dict):
|
if isinstance(size, dict):
|
||||||
size = random.randint(size["min"], size["max"])
|
size = random.randint(size["min"], size["max"])
|
||||||
|
|
||||||
volume = (self._get_client()
|
volume = self._get_client().volumes.create(
|
||||||
.volumes.create(size, **kwargs))
|
size,
|
||||||
|
display_name=(display_name or self.generate_random_name()),
|
||||||
|
display_description=display_description,
|
||||||
|
snapshot_id=snapshot_id,
|
||||||
|
source_volid=source_volid,
|
||||||
|
volume_type=volume_type,
|
||||||
|
user_id=user_id,
|
||||||
|
project_id=project_id,
|
||||||
|
availability_zone=availability_zone,
|
||||||
|
metadata=metadata,
|
||||||
|
imageRef=imageRef
|
||||||
|
)
|
||||||
|
|
||||||
# NOTE(msdubov): It is reasonable to wait 5 secs before starting to
|
# NOTE(msdubov): It is reasonable to wait 5 secs before starting to
|
||||||
# check whether the volume is ready => less API calls.
|
# check whether the volume is ready => less API calls.
|
||||||
|
@ -80,6 +80,10 @@ class CinderV2Wrapper(CinderWrapper):
|
|||||||
|
|
||||||
def wrap(client, owner):
|
def wrap(client, owner):
|
||||||
"""Returns cinderclient wrapper based on cinder client version."""
|
"""Returns cinderclient wrapper based on cinder client version."""
|
||||||
|
LOG.warning("Method wrap from %s and whole Cinder wrappers are "
|
||||||
|
"deprecated since Rally 0.10.0 and will be removed soon. Use "
|
||||||
|
"rally.plugins.openstack.services.storage.block.BlockStorage "
|
||||||
|
"instead." % __file__)
|
||||||
version = client.choose_version()
|
version = client.choose_version()
|
||||||
if version == "1":
|
if version == "1":
|
||||||
return CinderV1Wrapper(client(), owner)
|
return CinderV1Wrapper(client(), owner)
|
||||||
|
@ -345,39 +345,45 @@ class NovaServersTestCase(test.ScenarioTestCase):
|
|||||||
scenario.run(True)
|
scenario.run(True)
|
||||||
scenario._list_servers.assert_called_once_with(True)
|
scenario._list_servers.assert_called_once_with(True)
|
||||||
|
|
||||||
def test_boot_server_from_volume(self):
|
@mock.patch("rally.plugins.openstack.services.storage.block.BlockStorage")
|
||||||
|
def test_boot_server_from_volume(self, mock_block_storage):
|
||||||
fake_server = object()
|
fake_server = object()
|
||||||
scenario = servers.BootServerFromVolume(self.context)
|
scenario = servers.BootServerFromVolume(
|
||||||
|
self.context, clients=mock.Mock())
|
||||||
scenario._boot_server = mock.MagicMock(return_value=fake_server)
|
scenario._boot_server = mock.MagicMock(return_value=fake_server)
|
||||||
|
|
||||||
fake_volume = fakes.FakeVolumeManager().create()
|
fake_volume = fakes.FakeVolumeManager().create()
|
||||||
fake_volume.id = "volume_id"
|
fake_volume.id = "volume_id"
|
||||||
scenario._create_volume = mock.MagicMock(return_value=fake_volume)
|
cinder = mock_block_storage.return_value
|
||||||
|
cinder.create_volume.return_value = fake_volume
|
||||||
|
|
||||||
scenario.run("img", 0, 5, volume_type=None,
|
scenario.run("img", 0, 5, volume_type=None,
|
||||||
auto_assign_nic=False, fakearg="f")
|
auto_assign_nic=False, fakearg="f")
|
||||||
|
|
||||||
scenario._create_volume.assert_called_once_with(5, imageRef="img",
|
cinder.create_volume.assert_called_once_with(5, imageRef="img",
|
||||||
volume_type=None)
|
volume_type=None)
|
||||||
scenario._boot_server.assert_called_once_with(
|
scenario._boot_server.assert_called_once_with(
|
||||||
None, 0, auto_assign_nic=False,
|
None, 0, auto_assign_nic=False,
|
||||||
block_device_mapping={"vda": "volume_id:::1"},
|
block_device_mapping={"vda": "volume_id:::1"},
|
||||||
fakearg="f")
|
fakearg="f")
|
||||||
|
|
||||||
def test_boot_server_from_volume_and_delete(self):
|
@mock.patch("rally.plugins.openstack.services.storage.block.BlockStorage")
|
||||||
|
def test_boot_server_from_volume_and_delete(self, mock_block_storage):
|
||||||
fake_server = object()
|
fake_server = object()
|
||||||
scenario = servers.BootServerFromVolumeAndDelete(self.context)
|
scenario = servers.BootServerFromVolumeAndDelete(
|
||||||
|
self.context, clients=mock.Mock())
|
||||||
scenario._boot_server = mock.MagicMock(return_value=fake_server)
|
scenario._boot_server = mock.MagicMock(return_value=fake_server)
|
||||||
scenario.sleep_between = mock.MagicMock()
|
scenario.sleep_between = mock.MagicMock()
|
||||||
scenario._delete_server = mock.MagicMock()
|
scenario._delete_server = mock.MagicMock()
|
||||||
|
|
||||||
fake_volume = fakes.FakeVolumeManager().create()
|
fake_volume = fakes.FakeVolumeManager().create()
|
||||||
fake_volume.id = "volume_id"
|
fake_volume.id = "volume_id"
|
||||||
scenario._create_volume = mock.MagicMock(return_value=fake_volume)
|
cinder = mock_block_storage.return_value
|
||||||
|
cinder.create_volume.return_value = fake_volume
|
||||||
|
|
||||||
scenario.run("img", 0, 5, None, 10, 20, fakearg="f")
|
scenario.run("img", 0, 5, None, 10, 20, fakearg="f")
|
||||||
|
|
||||||
scenario._create_volume.assert_called_once_with(5, imageRef="img",
|
cinder.create_volume.assert_called_once_with(5, imageRef="img",
|
||||||
volume_type=None)
|
volume_type=None)
|
||||||
scenario._boot_server.assert_called_once_with(
|
scenario._boot_server.assert_called_once_with(
|
||||||
None, 0,
|
None, 0,
|
||||||
@ -511,24 +517,27 @@ class NovaServersTestCase(test.ScenarioTestCase):
|
|||||||
@ddt.data({"confirm": True, "do_delete": True},
|
@ddt.data({"confirm": True, "do_delete": True},
|
||||||
{"confirm": False, "do_delete": True})
|
{"confirm": False, "do_delete": True})
|
||||||
@ddt.unpack
|
@ddt.unpack
|
||||||
def test_boot_server_attach_created_volume_and_resize(self, confirm=False,
|
@mock.patch("rally.plugins.openstack.services.storage.block.BlockStorage")
|
||||||
do_delete=False):
|
def test_boot_server_attach_created_volume_and_resize(
|
||||||
|
self, mock_block_storage, confirm=False, do_delete=False):
|
||||||
fake_volume = mock.MagicMock()
|
fake_volume = mock.MagicMock()
|
||||||
fake_server = mock.MagicMock()
|
fake_server = mock.MagicMock()
|
||||||
flavor = mock.MagicMock()
|
flavor = mock.MagicMock()
|
||||||
to_flavor = mock.MagicMock()
|
to_flavor = mock.MagicMock()
|
||||||
fake_attachment = mock.MagicMock()
|
fake_attachment = mock.MagicMock()
|
||||||
|
|
||||||
scenario = servers.BootServerAttachCreatedVolumeAndResize(self.context)
|
cinder = mock_block_storage.return_value
|
||||||
|
cinder.create_volume.return_value = fake_volume
|
||||||
|
|
||||||
|
scenario = servers.BootServerAttachCreatedVolumeAndResize(
|
||||||
|
self.context, clients=mock.Mock())
|
||||||
scenario.generate_random_name = mock.MagicMock(return_value="name")
|
scenario.generate_random_name = mock.MagicMock(return_value="name")
|
||||||
scenario._boot_server = mock.MagicMock(return_value=fake_server)
|
scenario._boot_server = mock.MagicMock(return_value=fake_server)
|
||||||
scenario._create_volume = mock.MagicMock(return_value=fake_volume)
|
|
||||||
scenario._attach_volume = mock.MagicMock(return_value=fake_attachment)
|
scenario._attach_volume = mock.MagicMock(return_value=fake_attachment)
|
||||||
scenario._resize_confirm = mock.MagicMock()
|
scenario._resize_confirm = mock.MagicMock()
|
||||||
scenario._resize_revert = mock.MagicMock()
|
scenario._resize_revert = mock.MagicMock()
|
||||||
scenario._resize = mock.MagicMock()
|
scenario._resize = mock.MagicMock()
|
||||||
scenario._detach_volume = mock.MagicMock()
|
scenario._detach_volume = mock.MagicMock()
|
||||||
scenario._delete_volume = mock.MagicMock()
|
|
||||||
scenario._delete_server = mock.MagicMock()
|
scenario._delete_server = mock.MagicMock()
|
||||||
scenario.sleep_between = mock.MagicMock()
|
scenario.sleep_between = mock.MagicMock()
|
||||||
|
|
||||||
@ -537,7 +546,7 @@ class NovaServersTestCase(test.ScenarioTestCase):
|
|||||||
max_sleep=20, confirm=confirm, do_delete=do_delete)
|
max_sleep=20, confirm=confirm, do_delete=do_delete)
|
||||||
|
|
||||||
scenario._boot_server.assert_called_once_with("img", flavor)
|
scenario._boot_server.assert_called_once_with("img", flavor)
|
||||||
scenario._create_volume.assert_called_once_with(volume_size)
|
cinder.create_volume.assert_called_once_with(volume_size)
|
||||||
scenario._attach_volume.assert_called_once_with(fake_server,
|
scenario._attach_volume.assert_called_once_with(fake_server,
|
||||||
fake_volume)
|
fake_volume)
|
||||||
scenario._detach_volume.assert_called_once_with(fake_server,
|
scenario._detach_volume.assert_called_once_with(fake_server,
|
||||||
@ -555,19 +564,21 @@ class NovaServersTestCase(test.ScenarioTestCase):
|
|||||||
scenario._detach_volume.assert_called_once_with(fake_server,
|
scenario._detach_volume.assert_called_once_with(fake_server,
|
||||||
fake_volume,
|
fake_volume,
|
||||||
fake_attachment)
|
fake_attachment)
|
||||||
scenario._delete_volume.assert_called_once_with(fake_volume)
|
cinder.delete_volume.assert_called_once_with(fake_volume)
|
||||||
scenario._delete_server.assert_called_once_with(fake_server,
|
scenario._delete_server.assert_called_once_with(fake_server,
|
||||||
force=False)
|
force=False)
|
||||||
|
|
||||||
@ddt.data({"confirm": True, "do_delete": True},
|
@ddt.data({"confirm": True, "do_delete": True},
|
||||||
{"confirm": False, "do_delete": True})
|
{"confirm": False, "do_delete": True})
|
||||||
@ddt.unpack
|
@ddt.unpack
|
||||||
def test_boot_server_from_volume_and_resize(self, confirm=False,
|
@mock.patch("rally.plugins.openstack.services.storage.block.BlockStorage")
|
||||||
do_delete=False):
|
def test_boot_server_from_volume_and_resize(
|
||||||
|
self, mock_block_storage, confirm=False, do_delete=False):
|
||||||
fake_server = object()
|
fake_server = object()
|
||||||
flavor = mock.MagicMock()
|
flavor = mock.MagicMock()
|
||||||
to_flavor = mock.MagicMock()
|
to_flavor = mock.MagicMock()
|
||||||
scenario = servers.BootServerFromVolumeAndResize(self.context)
|
scenario = servers.BootServerFromVolumeAndResize(self.context,
|
||||||
|
clients=mock.Mock())
|
||||||
scenario._boot_server = mock.MagicMock(return_value=fake_server)
|
scenario._boot_server = mock.MagicMock(return_value=fake_server)
|
||||||
scenario.generate_random_name = mock.MagicMock(return_value="name")
|
scenario.generate_random_name = mock.MagicMock(return_value="name")
|
||||||
scenario._resize_confirm = mock.MagicMock()
|
scenario._resize_confirm = mock.MagicMock()
|
||||||
@ -578,13 +589,14 @@ class NovaServersTestCase(test.ScenarioTestCase):
|
|||||||
|
|
||||||
fake_volume = fakes.FakeVolumeManager().create()
|
fake_volume = fakes.FakeVolumeManager().create()
|
||||||
fake_volume.id = "volume_id"
|
fake_volume.id = "volume_id"
|
||||||
scenario._create_volume = mock.MagicMock(return_value=fake_volume)
|
cinder = mock_block_storage.return_value
|
||||||
|
cinder.create_volume.return_value = fake_volume
|
||||||
|
|
||||||
volume_size = 10
|
volume_size = 10
|
||||||
scenario.run("img", flavor, to_flavor, volume_size, min_sleep=10,
|
scenario.run("img", flavor, to_flavor, volume_size, min_sleep=10,
|
||||||
max_sleep=20, confirm=confirm, do_delete=do_delete)
|
max_sleep=20, confirm=confirm, do_delete=do_delete)
|
||||||
|
|
||||||
scenario._create_volume.assert_called_once_with(10, imageRef="img")
|
cinder.create_volume.assert_called_once_with(10, imageRef="img")
|
||||||
scenario._boot_server.assert_called_once_with(
|
scenario._boot_server.assert_called_once_with(
|
||||||
None, flavor,
|
None, flavor,
|
||||||
block_device_mapping={"vda": "volume_id:::1"})
|
block_device_mapping={"vda": "volume_id:::1"})
|
||||||
@ -626,10 +638,13 @@ class NovaServersTestCase(test.ScenarioTestCase):
|
|||||||
False, False)
|
False, False)
|
||||||
scenario._delete_server.assert_called_once_with(fake_server)
|
scenario._delete_server.assert_called_once_with(fake_server)
|
||||||
|
|
||||||
def test_boot_server_from_volume_and_live_migrate(self):
|
@mock.patch("rally.plugins.openstack.services.storage.block.BlockStorage")
|
||||||
|
def test_boot_server_from_volume_and_live_migrate(self,
|
||||||
|
mock_block_storage):
|
||||||
fake_server = mock.MagicMock()
|
fake_server = mock.MagicMock()
|
||||||
|
|
||||||
scenario = servers.BootServerFromVolumeAndLiveMigrate(self.context)
|
scenario = servers.BootServerFromVolumeAndLiveMigrate(
|
||||||
|
self.context, clients=mock.Mock())
|
||||||
scenario.generate_random_name = mock.MagicMock(return_value="name")
|
scenario.generate_random_name = mock.MagicMock(return_value="name")
|
||||||
scenario._boot_server = mock.MagicMock(return_value=fake_server)
|
scenario._boot_server = mock.MagicMock(return_value=fake_server)
|
||||||
scenario.sleep_between = mock.MagicMock()
|
scenario.sleep_between = mock.MagicMock()
|
||||||
@ -640,12 +655,13 @@ class NovaServersTestCase(test.ScenarioTestCase):
|
|||||||
|
|
||||||
fake_volume = fakes.FakeVolumeManager().create()
|
fake_volume = fakes.FakeVolumeManager().create()
|
||||||
fake_volume.id = "volume_id"
|
fake_volume.id = "volume_id"
|
||||||
scenario._create_volume = mock.MagicMock(return_value=fake_volume)
|
cinder = mock_block_storage.return_value
|
||||||
|
cinder.create_volume.return_value = fake_volume
|
||||||
|
|
||||||
scenario.run("img", 0, 5, volume_type=None,
|
scenario.run("img", 0, 5, volume_type=None,
|
||||||
min_sleep=10, max_sleep=20, fakearg="f")
|
min_sleep=10, max_sleep=20, fakearg="f")
|
||||||
|
|
||||||
scenario._create_volume.assert_called_once_with(5, imageRef="img",
|
cinder.create_volume.assert_called_once_with(5, imageRef="img",
|
||||||
volume_type=None)
|
volume_type=None)
|
||||||
|
|
||||||
scenario._boot_server.assert_called_once_with(
|
scenario._boot_server.assert_called_once_with(
|
||||||
@ -663,13 +679,19 @@ class NovaServersTestCase(test.ScenarioTestCase):
|
|||||||
scenario._delete_server.assert_called_once_with(fake_server,
|
scenario._delete_server.assert_called_once_with(fake_server,
|
||||||
force=False)
|
force=False)
|
||||||
|
|
||||||
def test_boot_server_attach_created_volume_and_live_migrate(self):
|
@mock.patch("rally.plugins.openstack.services.storage.block.BlockStorage")
|
||||||
|
def test_boot_server_attach_created_volume_and_live_migrate(
|
||||||
|
self, mock_block_storage):
|
||||||
fake_volume = mock.MagicMock()
|
fake_volume = mock.MagicMock()
|
||||||
fake_server = mock.MagicMock()
|
fake_server = mock.MagicMock()
|
||||||
fake_attachment = mock.MagicMock()
|
fake_attachment = mock.MagicMock()
|
||||||
|
|
||||||
|
clients = mock.Mock()
|
||||||
|
cinder = mock_block_storage.return_value
|
||||||
|
cinder.create_volume.return_value = fake_volume
|
||||||
|
|
||||||
scenario = servers.BootServerAttachCreatedVolumeAndLiveMigrate(
|
scenario = servers.BootServerAttachCreatedVolumeAndLiveMigrate(
|
||||||
self.context)
|
self.context, clients=clients)
|
||||||
|
|
||||||
scenario._attach_volume = mock.MagicMock(return_value=fake_attachment)
|
scenario._attach_volume = mock.MagicMock(return_value=fake_attachment)
|
||||||
scenario._detach_volume = mock.MagicMock()
|
scenario._detach_volume = mock.MagicMock()
|
||||||
@ -682,8 +704,6 @@ class NovaServersTestCase(test.ScenarioTestCase):
|
|||||||
|
|
||||||
scenario._boot_server = mock.MagicMock(return_value=fake_server)
|
scenario._boot_server = mock.MagicMock(return_value=fake_server)
|
||||||
scenario._delete_server = mock.MagicMock()
|
scenario._delete_server = mock.MagicMock()
|
||||||
scenario._create_volume = mock.MagicMock(return_value=fake_volume)
|
|
||||||
scenario._delete_volume = mock.MagicMock()
|
|
||||||
|
|
||||||
image = "img"
|
image = "img"
|
||||||
flavor = "flavor"
|
flavor = "flavor"
|
||||||
@ -693,7 +713,7 @@ class NovaServersTestCase(test.ScenarioTestCase):
|
|||||||
boot_server_kwargs=boot_kwargs)
|
boot_server_kwargs=boot_kwargs)
|
||||||
scenario._boot_server.assert_called_once_with(image, flavor,
|
scenario._boot_server.assert_called_once_with(image, flavor,
|
||||||
**boot_kwargs)
|
**boot_kwargs)
|
||||||
scenario._create_volume.assert_called_once_with(size)
|
cinder.create_volume.assert_called_once_with(size)
|
||||||
scenario._attach_volume.assert_called_once_with(fake_server,
|
scenario._attach_volume.assert_called_once_with(fake_server,
|
||||||
fake_volume)
|
fake_volume)
|
||||||
scenario._detach_volume.assert_called_once_with(fake_server,
|
scenario._detach_volume.assert_called_once_with(fake_server,
|
||||||
@ -704,7 +724,7 @@ class NovaServersTestCase(test.ScenarioTestCase):
|
|||||||
"host_name",
|
"host_name",
|
||||||
False, False)
|
False, False)
|
||||||
|
|
||||||
scenario._delete_volume.assert_called_once_with(fake_volume)
|
cinder.delete_volume.assert_called_once_with(fake_volume)
|
||||||
scenario._delete_server.assert_called_once_with(fake_server)
|
scenario._delete_server.assert_called_once_with(fake_server)
|
||||||
|
|
||||||
def _test_boot_and_migrate_server(self, confirm=False):
|
def _test_boot_and_migrate_server(self, confirm=False):
|
||||||
@ -893,21 +913,26 @@ class NovaServersTestCase(test.ScenarioTestCase):
|
|||||||
scenario._attach_interface.assert_called_once_with(
|
scenario._attach_interface.assert_called_once_with(
|
||||||
server, net_id=net["network"]["id"])
|
server, net_id=net["network"]["id"])
|
||||||
|
|
||||||
def test_boot_server_from_volume_snapshot(self):
|
@mock.patch("rally.plugins.openstack.services.storage.block.BlockStorage")
|
||||||
|
def test_boot_server_from_volume_snapshot(self, mock_block_storage):
|
||||||
fake_volume = mock.MagicMock(id="volume_id")
|
fake_volume = mock.MagicMock(id="volume_id")
|
||||||
fake_snapshot = mock.MagicMock(id="snapshot_id")
|
fake_snapshot = mock.MagicMock(id="snapshot_id")
|
||||||
|
|
||||||
scenario = servers.BootServerFromVolumeSnapshot(self.context)
|
cinder = mock_block_storage.return_value
|
||||||
|
cinder.create_volume.return_value = fake_volume
|
||||||
|
cinder.create_snapshot.return_value = fake_snapshot
|
||||||
|
|
||||||
|
scenario = servers.BootServerFromVolumeSnapshot(self.context,
|
||||||
|
clients=mock.Mock())
|
||||||
scenario._boot_server = mock.MagicMock()
|
scenario._boot_server = mock.MagicMock()
|
||||||
scenario._create_volume = mock.MagicMock(return_value=fake_volume)
|
|
||||||
scenario._create_snapshot = mock.MagicMock(return_value=fake_snapshot)
|
|
||||||
|
|
||||||
scenario.run("img", "flavor", 1, volume_type=None,
|
scenario.run("img", "flavor", 1, volume_type=None,
|
||||||
auto_assign_nic=False, fakearg="f")
|
auto_assign_nic=False, fakearg="f")
|
||||||
|
|
||||||
scenario._create_volume.assert_called_once_with(1, imageRef="img",
|
cinder.create_volume.assert_called_once_with(1, imageRef="img",
|
||||||
volume_type=None)
|
volume_type=None)
|
||||||
scenario._create_snapshot.assert_called_once_with("volume_id", False)
|
cinder.create_snapshot.assert_called_once_with("volume_id",
|
||||||
|
force=False)
|
||||||
scenario._boot_server.assert_called_once_with(
|
scenario._boot_server.assert_called_once_with(
|
||||||
None, "flavor", auto_assign_nic=False,
|
None, "flavor", auto_assign_nic=False,
|
||||||
block_device_mapping={"vda": "snapshot_id:snap::1"},
|
block_device_mapping={"vda": "snapshot_id:snap::1"},
|
||||||
|
@ -32,14 +32,18 @@ class VMTasksTestCase(test.ScenarioTestCase):
|
|||||||
self.context.update({"user": {"keypair": {"name": "keypair_name"},
|
self.context.update({"user": {"keypair": {"name": "keypair_name"},
|
||||||
"credential": mock.MagicMock()}})
|
"credential": mock.MagicMock()}})
|
||||||
|
|
||||||
|
cinder_patcher = mock.patch(
|
||||||
|
"rally.plugins.openstack.services.storage.block.BlockStorage")
|
||||||
|
self.cinder = cinder_patcher.start().return_value
|
||||||
|
self.cinder.create_volume.return_value = mock.Mock(id="foo_volume")
|
||||||
|
self.addCleanup(cinder_patcher.stop)
|
||||||
|
|
||||||
def create_env(self, scenario):
|
def create_env(self, scenario):
|
||||||
self.ip = {"id": "foo_id", "ip": "foo_ip", "is_floating": True}
|
self.ip = {"id": "foo_id", "ip": "foo_ip", "is_floating": True}
|
||||||
scenario._boot_server_with_fip = mock.Mock(
|
scenario._boot_server_with_fip = mock.Mock(
|
||||||
return_value=("foo_server", self.ip))
|
return_value=("foo_server", self.ip))
|
||||||
scenario._wait_for_ping = mock.Mock()
|
scenario._wait_for_ping = mock.Mock()
|
||||||
scenario._delete_server_with_fip = mock.Mock()
|
scenario._delete_server_with_fip = mock.Mock()
|
||||||
scenario._create_volume = mock.Mock(
|
|
||||||
return_value=mock.Mock(id="foo_volume"))
|
|
||||||
scenario._run_command = mock.MagicMock(
|
scenario._run_command = mock.MagicMock(
|
||||||
return_value=(0, "{\"foo\": 42}", "foo_err"))
|
return_value=(0, "{\"foo\": 42}", "foo_err"))
|
||||||
scenario.add_output = mock.Mock()
|
scenario.add_output = mock.Mock()
|
||||||
@ -60,7 +64,7 @@ class VMTasksTestCase(test.ScenarioTestCase):
|
|||||||
volume_args={"size": 16},
|
volume_args={"size": 16},
|
||||||
foo_arg="foo_value")
|
foo_arg="foo_value")
|
||||||
|
|
||||||
scenario._create_volume.assert_called_once_with(16, imageRef=None)
|
self.cinder.create_volume.assert_called_once_with(16, imageRef=None)
|
||||||
scenario._boot_server_with_fip.assert_called_once_with(
|
scenario._boot_server_with_fip.assert_called_once_with(
|
||||||
"foo_image", "foo_flavor", key_name="keypair_name",
|
"foo_image", "foo_flavor", key_name="keypair_name",
|
||||||
use_floating_ip="use_fip", floating_network="ext_network",
|
use_floating_ip="use_fip", floating_network="ext_network",
|
||||||
@ -140,7 +144,8 @@ class VMTasksTestCase(test.ScenarioTestCase):
|
|||||||
calls = [mock.call(**kw) for kw in expected]
|
calls = [mock.call(**kw) for kw in expected]
|
||||||
scenario.add_output.assert_has_calls(calls, any_order=True)
|
scenario.add_output.assert_has_calls(calls, any_order=True)
|
||||||
|
|
||||||
scenario._create_volume.assert_called_once_with(16, imageRef=None)
|
self.cinder.create_volume.assert_called_once_with(
|
||||||
|
16, imageRef=None)
|
||||||
scenario._boot_server_with_fip.assert_called_once_with(
|
scenario._boot_server_with_fip.assert_called_once_with(
|
||||||
"foo_image", "foo_flavor", key_name="keypair_name",
|
"foo_image", "foo_flavor", key_name="keypair_name",
|
||||||
use_floating_ip="use_fip", floating_network="ext_network",
|
use_floating_ip="use_fip", floating_network="ext_network",
|
||||||
@ -229,7 +234,7 @@ class VMTasksTestCase(test.ScenarioTestCase):
|
|||||||
volume_args={"size": 16},
|
volume_args={"size": 16},
|
||||||
foo_arg="foo_value")
|
foo_arg="foo_value")
|
||||||
|
|
||||||
scenario._create_volume.assert_called_once_with(16, imageRef=None)
|
self.cinder.create_volume.assert_called_once_with(16, imageRef=None)
|
||||||
scenario._boot_server_with_fip.assert_called_once_with(
|
scenario._boot_server_with_fip.assert_called_once_with(
|
||||||
"image_id", "foo_flavor", key_name="foo_keypair_name",
|
"image_id", "foo_flavor", key_name="foo_keypair_name",
|
||||||
use_floating_ip="use_fip", floating_network="ext_network",
|
use_floating_ip="use_fip", floating_network="ext_network",
|
||||||
|
Loading…
Reference in New Issue
Block a user