diff options
-rwxr-xr-x | nova/compute/manager.py | 8 | ||||
-rw-r--r-- | nova/conductor/manager.py | 4 | ||||
-rw-r--r-- | nova/tests/compute/test_compute.py | 24 |
3 files changed, 34 insertions, 2 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py index 224ac01e0..7e2fb1c0d 100755 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -2355,6 +2355,10 @@ class ComputeManager(manager.SchedulerDependentManager): network_info = self._inject_network_info(context, instance=instance) self.reset_network(context, instance) + # NOTE(russellb) We just want to bump updated_at. See bug 1143466. + self._instance_update(context, instance['uuid'], + updated_at=timeutils.utcnow()) + self._notify_about_instance_usage( context, instance, "create_ip.end", network_info=network_info) @@ -2376,6 +2380,10 @@ class ComputeManager(manager.SchedulerDependentManager): instance=instance) self.reset_network(context, instance) + # NOTE(russellb) We just want to bump updated_at. See bug 1143466. + self._instance_update(context, instance['uuid'], + updated_at=timeutils.utcnow()) + self._notify_about_instance_usage( context, instance, "delete_ip.end", network_info=network_info) diff --git a/nova/conductor/manager.py b/nova/conductor/manager.py index 9d6ac31e7..2a0853491 100644 --- a/nova/conductor/manager.py +++ b/nova/conductor/manager.py @@ -39,11 +39,11 @@ allowed_updates = ['task_state', 'vm_state', 'expected_task_state', 'instance_type_id', 'root_device_name', 'launched_on', 'progress', 'vm_mode', 'default_ephemeral_device', 'default_swap_device', 'root_device_name', - 'system_metadata', + 'system_metadata', 'updated_at' ] # Fields that we want to convert back into a datetime object. -datetime_fields = ['launched_at', 'terminated_at'] +datetime_fields = ['launched_at', 'terminated_at', 'updated_at'] class ConductorManager(manager.SchedulerDependentManager): diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index 7f85eee49..f389b3bc2 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -3773,6 +3773,30 @@ class ComputeTestCase(BaseTestCase): self.mox.ReplayAll() self.compute._instance_usage_audit(self.context) + def test_add_remove_fixed_ip_updates_instance_updated_at(self): + def _noop(*args, **kwargs): + pass + + self.stubs.Set(self.compute.network_api, + 'add_fixed_ip_to_instance', _noop) + self.stubs.Set(self.compute.network_api, + 'remove_fixed_ip_from_instance', _noop) + + instance = self._create_fake_instance() + updated_at_1 = instance['updated_at'] + + self.compute.add_fixed_ip_to_instance(self.context, 'fake', instance) + instance = db.instance_get_by_uuid(self.context, instance['uuid']) + updated_at_2 = instance['updated_at'] + + self.compute.remove_fixed_ip_from_instance(self.context, 'fake', + instance) + instance = db.instance_get_by_uuid(self.context, instance['uuid']) + updated_at_3 = instance['updated_at'] + + updated_ats = (updated_at_1, updated_at_2, updated_at_3) + self.assertEqual(len(updated_ats), len(set(updated_ats))) + class ComputeAPITestCase(BaseTestCase): |