Transform instance.live_migration_post notification
The instance.live_migration_post.start and instance.live_migration_post.end notifications have been transformed to the versioned notification framework. Co-Authored-By: Alex Szarka <szarka@inf.u-szeged.hu> Co-Authored-By: Takashi Natsume <natsume.takashi@lab.ntt.co.jp> Change-Id: If9993d5edab5a2f141387a8eb294a9645667ee6b Implements: bp versioned-notification-transformation-rocky
This commit is contained in:
parent
187f80a32c
commit
379cf65d82
@ -0,0 +1,12 @@
|
||||
{
|
||||
"event_type": "instance.live_migration_post.end",
|
||||
"payload": {
|
||||
"$ref": "common_payloads/InstanceActionPayload.json#",
|
||||
"nova_object.data": {
|
||||
"action_initiator_user": "admin",
|
||||
"task_state": "migrating"
|
||||
}
|
||||
},
|
||||
"priority": "INFO",
|
||||
"publisher_id": "nova-compute:compute"
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
{
|
||||
"event_type": "instance.live_migration_post.start",
|
||||
"payload": {
|
||||
"$ref": "common_payloads/InstanceActionPayload.json#",
|
||||
"nova_object.data": {
|
||||
"action_initiator_user": "admin",
|
||||
"task_state": "migrating"
|
||||
}
|
||||
},
|
||||
"priority": "INFO",
|
||||
"publisher_id": "nova-compute:compute"
|
||||
}
|
@ -6402,6 +6402,10 @@ class ComputeManager(manager.Manager):
|
||||
self._notify_about_instance_usage(ctxt, instance,
|
||||
"live_migration._post.start",
|
||||
network_info=network_info)
|
||||
compute_utils.notify_about_instance_action(
|
||||
ctxt, instance, self.host,
|
||||
action=fields.NotificationAction.LIVE_MIGRATION_POST,
|
||||
phase=fields.NotificationPhase.START)
|
||||
# Releasing security group ingress rule.
|
||||
LOG.debug('Calling driver.unfilter_instance from _post_live_migration',
|
||||
instance=instance)
|
||||
@ -6464,6 +6468,10 @@ class ComputeManager(manager.Manager):
|
||||
self._notify_about_instance_usage(ctxt, instance,
|
||||
"live_migration._post.end",
|
||||
network_info=network_info)
|
||||
compute_utils.notify_about_instance_action(
|
||||
ctxt, instance, self.host,
|
||||
action=fields.NotificationAction.LIVE_MIGRATION_POST,
|
||||
phase=fields.NotificationPhase.END)
|
||||
if post_at_dest_success:
|
||||
LOG.info('Migrating instance to %s finished successfully.',
|
||||
dest, instance=instance)
|
||||
|
@ -536,8 +536,8 @@ class InstanceStateUpdatePayload(base.NotificationPayloadBase):
|
||||
@base.notification_sample('instance-live_migration_pre-end.json')
|
||||
@base.notification_sample('instance-live_migration_abort-start.json')
|
||||
@base.notification_sample('instance-live_migration_abort-end.json')
|
||||
# @base.notification_sample('instance-live_migration_post-start.json')
|
||||
# @base.notification_sample('instance-live_migration_post-end.json')
|
||||
@base.notification_sample('instance-live_migration_post-start.json')
|
||||
@base.notification_sample('instance-live_migration_post-end.json')
|
||||
@base.notification_sample('instance-live_migration_post_dest-start.json')
|
||||
@base.notification_sample('instance-live_migration_post_dest-end.json')
|
||||
@base.notification_sample('instance-live_migration_rollback-start.json')
|
||||
|
@ -55,7 +55,7 @@ class TestInstanceNotificationSampleWithMultipleCompute(
|
||||
actions = [
|
||||
self._test_live_migration_rollback,
|
||||
self._test_live_migration_abort,
|
||||
self._test_live_migration_pre_and_post_dest,
|
||||
self._test_live_migration_success,
|
||||
self._test_evacuate_server
|
||||
]
|
||||
|
||||
@ -93,7 +93,7 @@ class TestInstanceNotificationSampleWithMultipleCompute(
|
||||
'uuid': server['id']},
|
||||
actual=fake_notifier.VERSIONED_NOTIFICATIONS[1])
|
||||
|
||||
def _test_live_migration_pre_and_post_dest(self, server):
|
||||
def _test_live_migration_success(self, server):
|
||||
post = {
|
||||
'os-migrateLive': {
|
||||
'host': 'host2',
|
||||
@ -119,20 +119,32 @@ class TestInstanceNotificationSampleWithMultipleCompute(
|
||||
migrations = self.admin_api.get_active_migrations(server['id'])
|
||||
self.assertEqual(1, len(migrations))
|
||||
|
||||
self._wait_for_notification('instance.live_migration_post_dest.end')
|
||||
self.assertEqual(4, len(fake_notifier.VERSIONED_NOTIFICATIONS))
|
||||
self._wait_for_notification('instance.live_migration_post.end')
|
||||
self.assertEqual(6, len(fake_notifier.VERSIONED_NOTIFICATIONS))
|
||||
self._verify_notification(
|
||||
'instance-live_migration_post_dest-start',
|
||||
'instance-live_migration_post-start',
|
||||
replacements={
|
||||
'reservation_id': server['reservation_id'],
|
||||
'uuid': server['id']},
|
||||
actual=fake_notifier.VERSIONED_NOTIFICATIONS[2])
|
||||
self._verify_notification(
|
||||
'instance-live_migration_post_dest-end',
|
||||
'instance-live_migration_post_dest-start',
|
||||
replacements={
|
||||
'reservation_id': server['reservation_id'],
|
||||
'uuid': server['id']},
|
||||
actual=fake_notifier.VERSIONED_NOTIFICATIONS[3])
|
||||
self._verify_notification(
|
||||
'instance-live_migration_post_dest-end',
|
||||
replacements={
|
||||
'reservation_id': server['reservation_id'],
|
||||
'uuid': server['id']},
|
||||
actual=fake_notifier.VERSIONED_NOTIFICATIONS[4])
|
||||
self._verify_notification(
|
||||
'instance-live_migration_post-end',
|
||||
replacements={
|
||||
'reservation_id': server['reservation_id'],
|
||||
'uuid': server['id']},
|
||||
actual=fake_notifier.VERSIONED_NOTIFICATIONS[5])
|
||||
|
||||
def _test_live_migration_abort(self, server):
|
||||
post = {
|
||||
|
@ -6430,7 +6430,8 @@ class ComputeTestCase(BaseTestCase,
|
||||
mock_post.assert_called_once_with(c, instance, False, dest)
|
||||
mock_clear.assert_called_once_with(mock.ANY)
|
||||
|
||||
def test_post_live_migration_working_correctly(self):
|
||||
@mock.patch('nova.compute.utils.notify_about_instance_action')
|
||||
def test_post_live_migration_working_correctly(self, mock_notify):
|
||||
# Confirm post_live_migration() works as expected correctly.
|
||||
dest = 'desthost'
|
||||
srchost = self.compute.host
|
||||
@ -6477,7 +6478,12 @@ class ComputeTestCase(BaseTestCase,
|
||||
):
|
||||
self.compute._post_live_migration(c, instance, dest,
|
||||
migrate_data=migrate_data)
|
||||
|
||||
mock_notify.assert_has_calls([
|
||||
mock.call(c, instance, 'fake-mini',
|
||||
action='live_migration_post', phase='start'),
|
||||
mock.call(c, instance, 'fake-mini',
|
||||
action='live_migration_post', phase='end')])
|
||||
self.assertEqual(2, mock_notify.call_count)
|
||||
post_live_migration.assert_has_calls([
|
||||
mock.call(c, instance, {'swap': None, 'ephemerals': [],
|
||||
'root_device_name': None,
|
||||
|
@ -7496,6 +7496,7 @@ class ComputeManagerMigrationTestCase(test.NoDBTestCase):
|
||||
migrate_data.old_vol_attachment_ids = {volume_id: orig_attachment_id}
|
||||
image_bdm.attachment_id = uuids.attachment3
|
||||
|
||||
@mock.patch('nova.compute.utils.notify_about_instance_action')
|
||||
@mock.patch('nova.objects.ConsoleAuthToken.'
|
||||
'clean_console_auths_for_instance')
|
||||
@mock.patch.object(migrate_data.migration, 'save',
|
||||
@ -7516,7 +7517,7 @@ class ComputeManagerMigrationTestCase(test.NoDBTestCase):
|
||||
def _test(mock_get_bdms, mock_net_api, mock_notify, mock_driver,
|
||||
mock_rpc, mock_get_bdm_info, mock_attach_delete,
|
||||
mock_update_resource, mock_bdm_save, mock_rt, mock_ga,
|
||||
mock_clean):
|
||||
mock_clean, mock_notify_action):
|
||||
mock_rt.return_value = mock.Mock()
|
||||
mock_get_bdms.return_value = [vol_bdm, image_bdm]
|
||||
|
||||
@ -7526,6 +7527,12 @@ class ComputeManagerMigrationTestCase(test.NoDBTestCase):
|
||||
mock_attach_delete.assert_called_once_with(
|
||||
self.context, orig_attachment_id)
|
||||
mock_clean.assert_called_once_with(self.context, instance.uuid)
|
||||
mock_notify_action.assert_has_calls([
|
||||
mock.call(self.context, instance, 'fake-mini',
|
||||
action='live_migration_post', phase='start'),
|
||||
mock.call(self.context, instance, 'fake-mini',
|
||||
action='live_migration_post', phase='end')])
|
||||
self.assertEqual(2, mock_notify_action.call_count)
|
||||
|
||||
_test()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user