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,
|
self._notify_about_instance_usage(ctxt, instance,
|
||||||
"live_migration._post.start",
|
"live_migration._post.start",
|
||||||
network_info=network_info)
|
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.
|
# Releasing security group ingress rule.
|
||||||
LOG.debug('Calling driver.unfilter_instance from _post_live_migration',
|
LOG.debug('Calling driver.unfilter_instance from _post_live_migration',
|
||||||
instance=instance)
|
instance=instance)
|
||||||
@ -6464,6 +6468,10 @@ class ComputeManager(manager.Manager):
|
|||||||
self._notify_about_instance_usage(ctxt, instance,
|
self._notify_about_instance_usage(ctxt, instance,
|
||||||
"live_migration._post.end",
|
"live_migration._post.end",
|
||||||
network_info=network_info)
|
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:
|
if post_at_dest_success:
|
||||||
LOG.info('Migrating instance to %s finished successfully.',
|
LOG.info('Migrating instance to %s finished successfully.',
|
||||||
dest, instance=instance)
|
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_pre-end.json')
|
||||||
@base.notification_sample('instance-live_migration_abort-start.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_abort-end.json')
|
||||||
# @base.notification_sample('instance-live_migration_post-start.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-end.json')
|
||||||
@base.notification_sample('instance-live_migration_post_dest-start.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_post_dest-end.json')
|
||||||
@base.notification_sample('instance-live_migration_rollback-start.json')
|
@base.notification_sample('instance-live_migration_rollback-start.json')
|
||||||
|
@ -55,7 +55,7 @@ class TestInstanceNotificationSampleWithMultipleCompute(
|
|||||||
actions = [
|
actions = [
|
||||||
self._test_live_migration_rollback,
|
self._test_live_migration_rollback,
|
||||||
self._test_live_migration_abort,
|
self._test_live_migration_abort,
|
||||||
self._test_live_migration_pre_and_post_dest,
|
self._test_live_migration_success,
|
||||||
self._test_evacuate_server
|
self._test_evacuate_server
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -93,7 +93,7 @@ class TestInstanceNotificationSampleWithMultipleCompute(
|
|||||||
'uuid': server['id']},
|
'uuid': server['id']},
|
||||||
actual=fake_notifier.VERSIONED_NOTIFICATIONS[1])
|
actual=fake_notifier.VERSIONED_NOTIFICATIONS[1])
|
||||||
|
|
||||||
def _test_live_migration_pre_and_post_dest(self, server):
|
def _test_live_migration_success(self, server):
|
||||||
post = {
|
post = {
|
||||||
'os-migrateLive': {
|
'os-migrateLive': {
|
||||||
'host': 'host2',
|
'host': 'host2',
|
||||||
@ -119,20 +119,32 @@ class TestInstanceNotificationSampleWithMultipleCompute(
|
|||||||
migrations = self.admin_api.get_active_migrations(server['id'])
|
migrations = self.admin_api.get_active_migrations(server['id'])
|
||||||
self.assertEqual(1, len(migrations))
|
self.assertEqual(1, len(migrations))
|
||||||
|
|
||||||
self._wait_for_notification('instance.live_migration_post_dest.end')
|
self._wait_for_notification('instance.live_migration_post.end')
|
||||||
self.assertEqual(4, len(fake_notifier.VERSIONED_NOTIFICATIONS))
|
self.assertEqual(6, len(fake_notifier.VERSIONED_NOTIFICATIONS))
|
||||||
self._verify_notification(
|
self._verify_notification(
|
||||||
'instance-live_migration_post_dest-start',
|
'instance-live_migration_post-start',
|
||||||
replacements={
|
replacements={
|
||||||
'reservation_id': server['reservation_id'],
|
'reservation_id': server['reservation_id'],
|
||||||
'uuid': server['id']},
|
'uuid': server['id']},
|
||||||
actual=fake_notifier.VERSIONED_NOTIFICATIONS[2])
|
actual=fake_notifier.VERSIONED_NOTIFICATIONS[2])
|
||||||
self._verify_notification(
|
self._verify_notification(
|
||||||
'instance-live_migration_post_dest-end',
|
'instance-live_migration_post_dest-start',
|
||||||
replacements={
|
replacements={
|
||||||
'reservation_id': server['reservation_id'],
|
'reservation_id': server['reservation_id'],
|
||||||
'uuid': server['id']},
|
'uuid': server['id']},
|
||||||
actual=fake_notifier.VERSIONED_NOTIFICATIONS[3])
|
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):
|
def _test_live_migration_abort(self, server):
|
||||||
post = {
|
post = {
|
||||||
|
@ -6430,7 +6430,8 @@ class ComputeTestCase(BaseTestCase,
|
|||||||
mock_post.assert_called_once_with(c, instance, False, dest)
|
mock_post.assert_called_once_with(c, instance, False, dest)
|
||||||
mock_clear.assert_called_once_with(mock.ANY)
|
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.
|
# Confirm post_live_migration() works as expected correctly.
|
||||||
dest = 'desthost'
|
dest = 'desthost'
|
||||||
srchost = self.compute.host
|
srchost = self.compute.host
|
||||||
@ -6477,7 +6478,12 @@ class ComputeTestCase(BaseTestCase,
|
|||||||
):
|
):
|
||||||
self.compute._post_live_migration(c, instance, dest,
|
self.compute._post_live_migration(c, instance, dest,
|
||||||
migrate_data=migrate_data)
|
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([
|
post_live_migration.assert_has_calls([
|
||||||
mock.call(c, instance, {'swap': None, 'ephemerals': [],
|
mock.call(c, instance, {'swap': None, 'ephemerals': [],
|
||||||
'root_device_name': None,
|
'root_device_name': None,
|
||||||
|
@ -7496,6 +7496,7 @@ class ComputeManagerMigrationTestCase(test.NoDBTestCase):
|
|||||||
migrate_data.old_vol_attachment_ids = {volume_id: orig_attachment_id}
|
migrate_data.old_vol_attachment_ids = {volume_id: orig_attachment_id}
|
||||||
image_bdm.attachment_id = uuids.attachment3
|
image_bdm.attachment_id = uuids.attachment3
|
||||||
|
|
||||||
|
@mock.patch('nova.compute.utils.notify_about_instance_action')
|
||||||
@mock.patch('nova.objects.ConsoleAuthToken.'
|
@mock.patch('nova.objects.ConsoleAuthToken.'
|
||||||
'clean_console_auths_for_instance')
|
'clean_console_auths_for_instance')
|
||||||
@mock.patch.object(migrate_data.migration, 'save',
|
@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,
|
def _test(mock_get_bdms, mock_net_api, mock_notify, mock_driver,
|
||||||
mock_rpc, mock_get_bdm_info, mock_attach_delete,
|
mock_rpc, mock_get_bdm_info, mock_attach_delete,
|
||||||
mock_update_resource, mock_bdm_save, mock_rt, mock_ga,
|
mock_update_resource, mock_bdm_save, mock_rt, mock_ga,
|
||||||
mock_clean):
|
mock_clean, mock_notify_action):
|
||||||
mock_rt.return_value = mock.Mock()
|
mock_rt.return_value = mock.Mock()
|
||||||
mock_get_bdms.return_value = [vol_bdm, image_bdm]
|
mock_get_bdms.return_value = [vol_bdm, image_bdm]
|
||||||
|
|
||||||
@ -7526,6 +7527,12 @@ class ComputeManagerMigrationTestCase(test.NoDBTestCase):
|
|||||||
mock_attach_delete.assert_called_once_with(
|
mock_attach_delete.assert_called_once_with(
|
||||||
self.context, orig_attachment_id)
|
self.context, orig_attachment_id)
|
||||||
mock_clean.assert_called_once_with(self.context, instance.uuid)
|
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()
|
_test()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user