diff options
| author | Monsyne Dragon <mdragon@rackspace.com> | 2012-04-27 01:14:46 +0000 |
|---|---|---|
| committer | Monsyne Dragon <mdragon@rackspace.com> | 2012-04-27 16:01:28 +0000 |
| commit | 7988fd139865b5399be58aea75b07436dc7c2f21 (patch) | |
| tree | 7d5e74c24221a98da4d3f28b1097bd4834bc9c9a | |
| parent | 8972e9544dead61c198037f24eecf0f04558a914 (diff) | |
Fix instance delete notifications.
Remove extra exists event horking uptime calculations.
Fix broken deleted_at time in notifications (was blank due to being
pulled from the wrong field on the instance)
Change-Id: I8ca05593031f03c284c17df9d6fca64b22b16baf
| -rw-r--r-- | nova/compute/manager.py | 5 | ||||
| -rw-r--r-- | nova/compute/utils.py | 5 | ||||
| -rw-r--r-- | nova/tests/test_compute.py | 22 |
3 files changed, 18 insertions, 14 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py index 0fe261948..f0acf3b4e 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -694,12 +694,11 @@ class ComputeManager(manager.SchedulerDependentManager): self._notify_about_instance_usage(context, instance, "delete.start") self._shutdown_instance(context, instance, 'Terminating') self._cleanup_volumes(context, instance_id) - self._instance_update(context, + instance = self._instance_update(context, instance_id, vm_state=vm_states.DELETED, task_state=None, terminated_at=utils.utcnow()) - self.db.instance_destroy(context, instance_id) self._notify_about_instance_usage(context, instance, "delete.end") @@ -712,8 +711,6 @@ class ComputeManager(manager.SchedulerDependentManager): def do_terminate_instance(): elevated = context.elevated() instance = self.db.instance_get_by_uuid(elevated, instance_uuid) - compute_utils.notify_usage_exists( - context, instance, current_period=True) try: self._delete_instance(context, instance) except exception.InstanceTerminationFailure as error: diff --git a/nova/compute/utils.py b/nova/compute/utils.py index df4a9d221..78a6e574c 100644 --- a/nova/compute/utils.py +++ b/nova/compute/utils.py @@ -208,7 +208,10 @@ def _usage_from_instance(context, instance_ref, network_info=None, **kw): disk_gb=instance_ref['root_gb'] + instance_ref['ephemeral_gb'], display_name=instance_ref['display_name'], created_at=str(instance_ref['created_at']), - deleted_at=null_safe_str(instance_ref['deleted_at']), + # Nova's deleted vs terminated instance terminology is confusing, + # this should be when the instance was deleted (i.e. terminated_at), + # not when the db record was deleted. (mdragon) + deleted_at=null_safe_str(instance_ref['terminated_at']), launched_at=null_safe_str(instance_ref['launched_at']), image_ref_url=image_ref_url, state=instance_ref['vm_state'], diff --git a/nova/tests/test_compute.py b/nova/tests/test_compute.py index adb50806d..bb61d372f 100644 --- a/nova/tests/test_compute.py +++ b/nova/tests/test_compute.py @@ -871,27 +871,29 @@ class ComputeTestCase(BaseTestCase): def test_terminate_usage_notification(self): """Ensure terminate_instance generates apropriate usage notification""" + old_time = datetime.datetime(2012, 4, 1) + cur_time = datetime.datetime(2012, 12, 21, 12, 21) + utils.set_time_override(old_time) + inst_ref = self._create_fake_instance() self.compute.run_instance(self.context, inst_ref['uuid']) test_notifier.NOTIFICATIONS = [] + utils.set_time_override(cur_time) self.compute.terminate_instance(self.context, inst_ref['uuid']) - self.assertEquals(len(test_notifier.NOTIFICATIONS), 5) - msg = test_notifier.NOTIFICATIONS[0] - self.assertEquals(msg['priority'], 'INFO') - self.assertEquals(msg['event_type'], 'compute.instance.exists') + self.assertEquals(len(test_notifier.NOTIFICATIONS), 4) - msg = test_notifier.NOTIFICATIONS[1] + msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], 'INFO') self.assertEquals(msg['event_type'], 'compute.instance.delete.start') - msg1 = test_notifier.NOTIFICATIONS[2] + msg1 = test_notifier.NOTIFICATIONS[1] self.assertEquals(msg1['event_type'], 'compute.instance.shutdown.start') - msg1 = test_notifier.NOTIFICATIONS[3] + msg1 = test_notifier.NOTIFICATIONS[2] self.assertEquals(msg1['event_type'], 'compute.instance.shutdown.end') - msg1 = test_notifier.NOTIFICATIONS[4] + msg1 = test_notifier.NOTIFICATIONS[3] self.assertEquals(msg1['event_type'], 'compute.instance.delete.end') - payload = msg['payload'] + payload = msg1['payload'] self.assertEquals(payload['tenant_id'], self.project_id) self.assertEquals(payload['user_id'], self.user_id) self.assertEquals(payload['instance_id'], inst_ref.uuid) @@ -901,6 +903,8 @@ class ComputeTestCase(BaseTestCase): self.assertTrue('display_name' in payload) self.assertTrue('created_at' in payload) self.assertTrue('launched_at' in payload) + self.assertTrue('deleted_at' in payload) + self.assertEqual(payload['deleted_at'], str(cur_time)) image_ref_url = "%s/images/1" % utils.generate_glance_url() self.assertEquals(payload['image_ref_url'], image_ref_url) |
