Add live.migration.force.complete to the legacy notification whitelist

The instance.live.migration.force.complete notificatons are missing from the
legacy notification whitelist as every test emiting them are mocked out
the rpc notifier call.

This patch adds the extra test coverage and whitelists the notifications

Conflicts:
      nova/tests/unit/compute/test_compute_mgr.py

NOTE(mriedem): Conflicts are due to not having change
03e2f0449a or change
7bb82e2dfd in Newton, neither
of which are needed here.

Change-Id: Idf20fb435a7d11ff93bcb137699a38f5e4562d4c
Closes-Bug: #1718485
(cherry picked from commit b4778065e9)
This commit is contained in:
Balazs Gibizer 2017-09-21 11:06:05 +02:00 committed by Matt Riedemann
parent bcc88d4cad
commit b234b8e13a
2 changed files with 23 additions and 14 deletions

View File

@ -237,6 +237,8 @@ class LegacyValidatingNotifier(object):
'compute.instance.finish_resize.start',
'compute.instance.live.migration.abort.start',
'compute.instance.live.migration.abort.end',
'compute.instance.live.migration.force.complete.start',
'compute.instance.live.migration.force.complete.end',
'compute.instance.live_migration.post.dest.end',
'compute.instance.live_migration.post.dest.start',
'compute.instance.live_migration._post.end',

View File

@ -56,6 +56,7 @@ from nova.tests.unit import fake_flavor
from nova.tests.unit import fake_instance
from nova.tests.unit import fake_network
from nova.tests.unit import fake_network_cache_model
from nova.tests.unit import fake_notifier
from nova.tests.unit.objects import test_instance_fault
from nova.tests.unit.objects import test_instance_info_cache
from nova.tests import uuidsentinel as uuids
@ -4506,6 +4507,8 @@ class ComputeManagerBuildInstanceTestCase(test.NoDBTestCase):
class ComputeManagerMigrationTestCase(test.NoDBTestCase):
def setUp(self):
super(ComputeManagerMigrationTestCase, self).setUp()
fake_notifier.stub_notifier(self)
self.addCleanup(fake_notifier.reset)
self.compute = importutils.import_object(CONF.compute_manager)
self.context = context.RequestContext(fakes.FAKE_USER_ID,
fakes.FAKE_PROJECT_ID)
@ -4925,33 +4928,37 @@ class ComputeManagerMigrationTestCase(test.NoDBTestCase):
def test_live_migration_force_complete_succeeded(self):
instance = objects.Instance(uuid=str(uuid.uuid4()))
migration = objects.Migration()
migration.status = 'running'
migration.id = 0
@mock.patch.object(compute_utils.EventReporter, '__enter__')
@mock.patch.object(self.compute, '_notify_about_instance_usage')
@mock.patch('nova.image.glance.generate_image_url',
return_value='fake-url')
@mock.patch.object(objects.Migration, 'get_by_id',
return_value=migration)
@mock.patch.object(self.compute.driver,
'live_migration_force_complete')
def _do_test(force_complete, get_by_id, _notify_about_instance_usage,
def _do_test(force_complete, get_by_id, gen_img_url,
enter_event_reporter):
self.compute.live_migration_force_complete(
self.context, instance, migration.id)
self.context, self.instance, migration.id)
force_complete.assert_called_once_with(instance)
force_complete.assert_called_once_with(self.instance)
_notify_usage_calls = [
mock.call(self.context, instance,
'live.migration.force.complete.start'),
mock.call(self.context, instance,
'live.migration.force.complete.end')
]
_notify_about_instance_usage.assert_has_calls(_notify_usage_calls)
enter_event_reporter.assert_called_once_with()
self.assertEqual(2, len(fake_notifier.NOTIFICATIONS))
self.assertEqual(
'compute.instance.live.migration.force.complete.start',
fake_notifier.NOTIFICATIONS[0].event_type)
self.assertEqual(
self.instance.uuid,
fake_notifier.NOTIFICATIONS[0].payload['instance_id'])
self.assertEqual(
'compute.instance.live.migration.force.complete.end',
fake_notifier.NOTIFICATIONS[1].event_type)
self.assertEqual(
self.instance.uuid,
fake_notifier.NOTIFICATIONS[1].payload['instance_id'])
_do_test()