Revert "Remove wait_for_server from create_image_from_server"

The kwarg really is used - and some virt drivers break without this extra wait.
For example, the XenServer CI became unstable again without this fix

Note that this fix was originally added to ensure stability in this CI
environment (fixing bug 1258635)

This reverts commit 621544cc96.

Change-Id: I1547bf3ee4bb7a6c1552d0c1fa90280af1a9802c
This commit is contained in:
Bob Ball 2017-02-20 09:51:00 +00:00
parent 9913cbbb4c
commit 5fe623966e
3 changed files with 39 additions and 1 deletions

View File

@ -326,6 +326,10 @@ class BaseV2ComputeTest(api_version_utils.BaseMicroversionTest,
raise
image = cls.compute_images_client.show_image(image_id)['image']
if kwargs['wait_until'] == 'ACTIVE':
if kwargs.get('wait_for_server', True):
waiters.wait_for_server_status(cls.servers_client,
server_id, 'ACTIVE')
return image
@classmethod

View File

@ -60,6 +60,7 @@ class ImagesTestJSON(base.BaseV2ComputeTest):
snapshot_name = data_utils.rand_name('test-snap')
image = self.create_image_from_server(server['id'],
name=snapshot_name,
wait_until='ACTIVE')
wait_until='ACTIVE',
wait_for_server=False)
self.addCleanup(self.client.delete_image, image['id'])
self.assertEqual(snapshot_name, image['name'])

View File

@ -48,10 +48,14 @@ class TestBaseV2ComputeTest(base.TestCase):
@mock.patch.multiple(compute_base.BaseV2ComputeTest,
compute_images_client=mock.DEFAULT,
servers_client=mock.DEFAULT,
images=[], create=True)
@mock.patch.object(waiters, 'wait_for_image_status')
@mock.patch.object(waiters, 'wait_for_server_status')
def test_create_image_from_server_wait_until_active(self,
wait_for_server_status,
wait_for_image_status,
servers_client,
compute_images_client):
"""Tests create_image_from_server with wait_until='ACTIVE' kwarg."""
# setup mocks
@ -67,6 +71,35 @@ class TestBaseV2ComputeTest(base.TestCase):
# make our assertions
wait_for_image_status.assert_called_once_with(
compute_images_client, image_id, 'ACTIVE')
wait_for_server_status.assert_called_once_with(
servers_client, mock.sentinel.server_id, 'ACTIVE')
compute_images_client.show_image.assert_called_once_with(image_id)
@mock.patch.multiple(compute_base.BaseV2ComputeTest,
compute_images_client=mock.DEFAULT,
servers_client=mock.DEFAULT,
images=[], create=True)
@mock.patch.object(waiters, 'wait_for_image_status')
@mock.patch.object(waiters, 'wait_for_server_status')
def test_create_image_from_server_wait_until_active_no_server_wait(
self, wait_for_server_status, wait_for_image_status,
servers_client, compute_images_client):
"""Tests create_image_from_server with wait_until='ACTIVE' kwarg."""
# setup mocks
image_id = uuidutils.generate_uuid()
fake_image = mock.Mock(response={'location': image_id})
compute_images_client.create_image.return_value = fake_image
compute_images_client.show_image.return_value = (
{'image': fake_image})
# call the utility method
image = compute_base.BaseV2ComputeTest.create_image_from_server(
mock.sentinel.server_id, wait_until='ACTIVE',
wait_for_server=False)
self.assertEqual(fake_image, image)
# make our assertions
wait_for_image_status.assert_called_once_with(
compute_images_client, image_id, 'ACTIVE')
self.assertEqual(0, wait_for_server_status.call_count)
compute_images_client.show_image.assert_called_once_with(image_id)
@mock.patch.multiple(compute_base.BaseV2ComputeTest,