Merge "tests: Add helpers for rebuild, cold migrate, and shelve/unshelve"
This commit is contained in:
commit
8ca9b7254b
|
@ -401,6 +401,20 @@ class InstanceHelperMixin:
|
|||
fake_notifier.wait_for_versioned_notifications('instance.reboot.end')
|
||||
return self._wait_for_state_change(server, expected_state)
|
||||
|
||||
def _rebuild_server(self, server, image_uuid, expected_state='ACTIVE'):
|
||||
"""Rebuild a server."""
|
||||
self.api.post_server_action(
|
||||
server['id'], {'rebuild': {'imageRef': image_uuid}},
|
||||
)
|
||||
fake_notifier.wait_for_versioned_notifications('instance.rebuild.end')
|
||||
return self._wait_for_state_change(server, expected_state)
|
||||
|
||||
def _migrate_server(self, server, host=None):
|
||||
"""Cold migrate a server."""
|
||||
body = {'host': host} if host else None
|
||||
self.api.post_server_action(server['id'], {'migrate': body})
|
||||
return self._wait_for_state_change(server, 'VERIFY_RESIZE')
|
||||
|
||||
def _resize_server(self, server, flavor_id):
|
||||
self.api.post_server_action(
|
||||
server['id'], {'resize': {'flavorRef': flavor_id}})
|
||||
|
@ -429,14 +443,18 @@ class InstanceHelperMixin:
|
|||
'instance.resize_revert.end')
|
||||
return server
|
||||
|
||||
def _live_migrate(self, server, migration_expected_state,
|
||||
server_expected_state='ACTIVE'):
|
||||
def _live_migrate(
|
||||
self, server, migration_expected_state='completed',
|
||||
server_expected_state='ACTIVE',
|
||||
):
|
||||
self.api.post_server_action(
|
||||
server['id'],
|
||||
{'os-migrateLive': {'host': None, 'block_migration': 'auto'}})
|
||||
self._wait_for_state_change(server, server_expected_state)
|
||||
self._wait_for_migration_status(server, [migration_expected_state])
|
||||
|
||||
_live_migrate_server = _live_migrate
|
||||
|
||||
def _suspend_server(self, server, expected_state='SUSPENDED'):
|
||||
"""Suspend a server."""
|
||||
self.api.post_server_action(server['id'], {'suspend': {}})
|
||||
|
@ -449,6 +467,16 @@ class InstanceHelperMixin:
|
|||
fake_notifier.wait_for_versioned_notifications('instance.resume.end')
|
||||
return self._wait_for_state_change(server, expected_state)
|
||||
|
||||
def _shelve_server(self, server, expected_state='SHELVED_OFFLOADED'):
|
||||
"""Shelve a server."""
|
||||
self.api.post_server_action(server['id'], {'shelve': {}})
|
||||
return self._wait_for_state_change(server, expected_state)
|
||||
|
||||
def _unshelve_server(self, server, expected_state='ACTIVE'):
|
||||
"""Unshelve a server."""
|
||||
self.api.post_server_action(server['id'], {'unshelve': {}})
|
||||
return self._wait_for_state_change(server, expected_state)
|
||||
|
||||
|
||||
class PlacementHelperMixin:
|
||||
"""A helper mixin for interacting with placement."""
|
||||
|
|
|
@ -1157,13 +1157,6 @@ class NUMAServersRebuildTests(NUMAServersTestBase):
|
|||
server = self.api.post_server({'server': basic_server})
|
||||
return self._wait_for_state_change(server, 'ACTIVE')
|
||||
|
||||
def _rebuild_server(self, active_server, image_ref):
|
||||
args = {"rebuild": {"imageRef": image_ref}}
|
||||
self.api.api_post(
|
||||
'servers/%s/action' % active_server['id'], args)
|
||||
fake_notifier.wait_for_versioned_notifications('instance.rebuild.end')
|
||||
return self._wait_for_state_change(active_server, 'ACTIVE')
|
||||
|
||||
def test_rebuild_server_with_numa(self):
|
||||
"""Create a NUMA instance and ensure it can be rebuilt.
|
||||
"""
|
||||
|
|
|
@ -20,8 +20,8 @@ from nova.tests.unit import policy_fixture
|
|||
|
||||
|
||||
class RegressionTest1835822(
|
||||
test.TestCase, integrated_helpers.InstanceHelperMixin):
|
||||
# ---------------------------- setup ----------------------------
|
||||
test.TestCase, integrated_helpers.InstanceHelperMixin,
|
||||
):
|
||||
|
||||
def setUp(self):
|
||||
super(RegressionTest1835822, self).setUp()
|
||||
|
@ -44,7 +44,6 @@ class RegressionTest1835822(
|
|||
fake_notifier.stub_notifier(self)
|
||||
self.addCleanup(fake_notifier.reset)
|
||||
|
||||
# ---------------------------- helpers ----------------------------
|
||||
def _create_active_server(self, server_args=None):
|
||||
basic_server = {
|
||||
'flavorRef': 1,
|
||||
|
@ -59,22 +58,6 @@ class RegressionTest1835822(
|
|||
server = self.api.post_server({'server': basic_server})
|
||||
return self._wait_for_state_change(server, 'ACTIVE')
|
||||
|
||||
def _rebuild_server(self, active_server):
|
||||
args = {"rebuild": {"imageRef": self.image_ref_1}}
|
||||
self.api.api_post('servers/%s/action' %
|
||||
active_server['id'], args)
|
||||
fake_notifier.wait_for_versioned_notifications('instance.rebuild.end')
|
||||
return self._wait_for_state_change(active_server, 'ACTIVE')
|
||||
|
||||
def _shelve_server(self, active_server):
|
||||
self.api.post_server_action(active_server['id'], {'shelve': {}})
|
||||
return self._wait_for_state_change(active_server, 'SHELVED_OFFLOADED')
|
||||
|
||||
def _unshelve_server(self, shelved_server):
|
||||
self.api.post_server_action(shelved_server['id'], {'unshelve': {}})
|
||||
return self._wait_for_state_change(shelved_server, 'ACTIVE')
|
||||
|
||||
# ---------------------------- tests ----------------------------
|
||||
def test_create_server_with_config_drive(self):
|
||||
"""Verify that we can create a server with a config drive.
|
||||
"""
|
||||
|
@ -149,13 +132,15 @@ class RegressionTest1835822(
|
|||
# this server was created with force_config_drive=true
|
||||
# so assert now that force_config_drive is false it does
|
||||
# not override the value it was booted with.
|
||||
with_config_drive = self._rebuild_server(with_config_drive)
|
||||
with_config_drive = self._rebuild_server(
|
||||
with_config_drive, self.image_ref_1)
|
||||
self.assertTrue(with_config_drive['config_drive'])
|
||||
|
||||
# this server was booted with force_config_drive=False so
|
||||
# assert that it's config drive setting is not overridden
|
||||
self.flags(force_config_drive=True)
|
||||
without_config_drive = self._rebuild_server(without_config_drive)
|
||||
without_config_drive = self._rebuild_server(
|
||||
without_config_drive, self.image_ref_1)
|
||||
self.assertEqual('', without_config_drive['config_drive'])
|
||||
|
||||
def test_create_server_config_drive_shelve_unshelve_conf_change(self):
|
||||
|
|
Loading…
Reference in New Issue