Merge "Reproduce bug 1869050" into stable/stein

This commit is contained in:
Zuul 2020-05-22 11:41:28 +00:00 committed by Gerrit Code Review
commit 61d11148de
1 changed files with 47 additions and 0 deletions

View File

@ -371,6 +371,53 @@ class ServerGroupTestV21(ServerGroupTestBase):
self.assertNotEqual(servers[0]['OS-EXT-SRV-ATTR:host'], self.assertNotEqual(servers[0]['OS-EXT-SRV-ATTR:host'],
migrated_server['OS-EXT-SRV-ATTR:host']) migrated_server['OS-EXT-SRV-ATTR:host'])
def test_migrate_with_anti_affinity_stale_scheduler_instance_info(self):
# Start additional host to test migration with anti-affinity
compute3 = self.start_service('compute', host='host3')
# make sure that compute syncing instance info to scheduler
# this tells the scheduler that it can expect such updates periodically
# and don't have to look into the db for it at the start of each
# scheduling
for compute in [self.compute, self.compute2, compute3]:
compute.manager._sync_scheduler_instance_info(
context.get_admin_context())
created_group = self.api.post_server_groups(self.anti_affinity)
servers = self._boot_servers_to_group(created_group)
post = {'migrate': {}}
self.admin_api.post_server_action(servers[1]['id'], post)
migrated_server = self._wait_for_state_change(
self.admin_api, servers[1], 'VERIFY_RESIZE')
self.assertNotEqual(servers[0]['OS-EXT-SRV-ATTR:host'],
migrated_server['OS-EXT-SRV-ATTR:host'])
# We have 3 hosts, so after the move is confirmed one of the hosts
# should be considered empty so we could boot a 3rd server on that host
post = {'confirmResize': {}}
self.admin_api.post_server_action(servers[1]['id'], post)
self._wait_for_state_change(self.admin_api, servers[1], 'ACTIVE')
# NOTE(gibi): This is bug 1869050. The confirm resize does to update
# the scheduler instance info so the migrate_server occupies two host
# according to the stale information in the scheduler.
# Alternatively waiting for the periodic _sync_scheduler_instance_info
# call would update the stale data.
server3 = self._boot_a_server_to_group(
created_group, expected_status='ERROR')
self.assertIn('No valid host', server3['fault']['message'])
# When bug 1869050 is fixed the following is expected:
# server3 = self._boot_a_server_to_group(created_group)
#
# # we have 3 servers that should occupy 3 different hosts
# hosts = {server['OS-EXT-SRV-ATTR:host']
# for server in [servers[0], migrated_server, server3]}
# self.assertEqual(3, len(hosts))
def test_resize_to_same_host_with_anti_affinity(self): def test_resize_to_same_host_with_anti_affinity(self):
self.flags(allow_resize_to_same_host=True) self.flags(allow_resize_to_same_host=True)
created_group = self.api.post_server_groups(self.anti_affinity) created_group = self.api.post_server_groups(self.anti_affinity)