Add a test for reverting a resize with a deleted flavor

A user should be able to boot a server, resize it and
then reject the resize even though the original flavor
used to boot the instance is deleted. This is because
the old flavor information is stored with the instance
in the nova database, so the original flavor doesn't
actually need to exist anymore.

Depends-On: I5f95021410a309ac07fe9f474cbcd0214d1af208

Change-Id: I356411f96a601f1443d75ac90e42567bef1f8228
Closes-Bug: #1570748
This commit is contained in:
Matt Riedemann 2016-04-18 19:34:47 -04:00
parent 326bbb4884
commit 98c32b7860
1 changed files with 50 additions and 0 deletions

View File

@ -15,8 +15,10 @@
import testtools
from tempest.api.compute import base
from tempest.common.utils import data_utils
from tempest.common import waiters
from tempest import config
from tempest.lib import exceptions
from tempest import test
CONF = config.CONF
@ -28,6 +30,7 @@ class MigrationsAdminTest(base.BaseV2ComputeAdminTest):
def setup_clients(cls):
super(MigrationsAdminTest, cls).setup_clients()
cls.client = cls.os_adm.migrations_client
cls.flavors_admin_client = cls.os_adm.flavors_client
@test.idempotent_id('75c0b83d-72a0-4cf8-a153-631e83e7d53f')
def test_list_migrations(self):
@ -53,3 +56,50 @@ class MigrationsAdminTest(base.BaseV2ComputeAdminTest):
instance_uuids = [x['instance_uuid'] for x in body]
self.assertIn(server_id, instance_uuids)
def _flavor_clean_up(self, flavor_id):
try:
self.flavors_admin_client.delete_flavor(flavor_id)
self.flavors_admin_client.wait_for_resource_deletion(flavor_id)
except exceptions.NotFound:
pass
@test.idempotent_id('33f1fec3-ba18-4470-8e4e-1d888e7c3593')
@testtools.skipUnless(CONF.compute_feature_enabled.resize,
'Resize not available.')
def test_resize_server_revert_deleted_flavor(self):
# Tests that we can revert the resize on an instance whose original
# flavor has been deleted.
# First we have to create a flavor that we can delete so make a copy
# of the normal flavor from which we'd create a server.
flavor = self.flavors_admin_client.show_flavor(
self.flavor_ref)['flavor']
flavor = self.flavors_admin_client.create_flavor(
name=data_utils.rand_name('test_resize_flavor_'),
ram=flavor['ram'],
disk=flavor['disk'],
vcpus=flavor['vcpus']
)['flavor']
self.addCleanup(self._flavor_clean_up, flavor['id'])
# Now boot a server with the copied flavor.
server = self.create_test_server(
wait_until='ACTIVE', flavor=flavor['id'])
# Delete the flavor we used to boot the instance.
self._flavor_clean_up(flavor['id'])
# Now resize the server and wait for it to go into verify state.
self.servers_client.resize_server(server['id'], self.flavor_ref_alt)
waiters.wait_for_server_status(self.servers_client, server['id'],
'VERIFY_RESIZE')
# Now revert the resize, it should be OK even though the original
# flavor used to boot the server was deleted.
self.servers_client.revert_resize_server(server['id'])
waiters.wait_for_server_status(self.servers_client, server['id'],
'ACTIVE')
server = self.servers_client.show_server(server['id'])['server']
self.assertEqual(flavor['id'], server['flavor']['id'])