diff options
| author | Jenkins <jenkins@review.openstack.org> | 2011-11-18 19:31:41 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2011-11-18 19:31:41 +0000 |
| commit | e63df26a884092373fa0814ed275256ee912e9cd (patch) | |
| tree | 228805bec4130ad030cb46ed02737c7bbd24e29e | |
| parent | 15937a41609a0216020aa23a8debbd10c1f74de6 (diff) | |
| parent | a312956a3c7a2877305b8ce5d80f0828ff7be785 (diff) | |
Merge "suspend/resume in compute manager to use uuids"
| -rw-r--r-- | nova/compute/api.py | 6 | ||||
| -rw-r--r-- | nova/compute/manager.py | 16 | ||||
| -rw-r--r-- | nova/tests/test_compute.py | 35 |
3 files changed, 31 insertions, 26 deletions
diff --git a/nova/compute/api.py b/nova/compute/api.py index 5c7ed9ba3..81e643489 100644 --- a/nova/compute/api.py +++ b/nova/compute/api.py @@ -1386,21 +1386,23 @@ class API(base.Base): def suspend(self, context, instance): """Suspend the given instance.""" instance_id = instance["id"] + instance_uuid = instance["uuid"] self.update(context, instance_id, vm_state=vm_states.ACTIVE, task_state=task_states.SUSPENDING) - self._cast_compute_message('suspend_instance', context, instance_id) + self._cast_compute_message('suspend_instance', context, instance_uuid) @scheduler_api.reroute_compute("resume") def resume(self, context, instance): """Resume the given instance.""" instance_id = instance["id"] + instance_uuid = instance["uuid"] self.update(context, instance_id, vm_state=vm_states.SUSPENDED, task_state=task_states.RESUMING) - self._cast_compute_message('resume_instance', context, instance_id) + self._cast_compute_message('resume_instance', context, instance_uuid) @scheduler_api.reroute_compute("rescue") def rescue(self, context, instance, rescue_password=None): diff --git a/nova/compute/manager.py b/nova/compute/manager.py index dd3ab74af..dafb200bf 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -1256,34 +1256,34 @@ class ComputeManager(manager.SchedulerDependentManager): @exception.wrap_exception(notifier=notifier, publisher_id=publisher_id()) @checks_instance_lock - def suspend_instance(self, context, instance_id): + def suspend_instance(self, context, instance_uuid): """Suspend the given instance.""" - LOG.audit(_('instance %s: suspending'), instance_id, context=context) + LOG.audit(_('instance %s: suspending'), instance_uuid, context=context) context = context.elevated() - instance_ref = self.db.instance_get(context, instance_id) + instance_ref = self.db.instance_get_by_uuid(context, instance_uuid) self.driver.suspend(instance_ref) current_power_state = self._get_power_state(context, instance_ref) self._instance_update(context, - instance_id, + instance_ref['id'], power_state=current_power_state, vm_state=vm_states.SUSPENDED, task_state=None) @exception.wrap_exception(notifier=notifier, publisher_id=publisher_id()) @checks_instance_lock - def resume_instance(self, context, instance_id): + def resume_instance(self, context, instance_uuid): """Resume the given suspended instance.""" - LOG.audit(_('instance %s: resuming'), instance_id, context=context) + LOG.audit(_('instance %s: resuming'), instance_uuid, context=context) context = context.elevated() - instance_ref = self.db.instance_get(context, instance_id) + instance_ref = self.db.instance_get_by_uuid(context, instance_uuid) self.driver.resume(instance_ref) current_power_state = self._get_power_state(context, instance_ref) self._instance_update(context, - instance_id, + instance_ref['id'], power_state=current_power_state, vm_state=vm_states.ACTIVE, task_state=None) diff --git a/nova/tests/test_compute.py b/nova/tests/test_compute.py index 397b5e268..a0289b15d 100644 --- a/nova/tests/test_compute.py +++ b/nova/tests/test_compute.py @@ -257,11 +257,13 @@ class ComputeTestCase(BaseTestCase): self.compute.terminate_instance(self.context, instance_id) def test_suspend(self): - """ensure instance can be suspended""" - instance_id = self._create_instance() + """ensure instance can be suspended and resumed""" + instance = self._create_fake_instance() + instance_id = instance['id'] + instance_uuid = instance['uuid'] self.compute.run_instance(self.context, instance_id) - self.compute.suspend_instance(self.context, instance_id) - self.compute.resume_instance(self.context, instance_id) + self.compute.suspend_instance(self.context, instance_uuid) + self.compute.resume_instance(self.context, instance_uuid) self.compute.terminate_instance(self.context, instance_id) def test_reboot_soft(self): @@ -1135,31 +1137,32 @@ class ComputeAPITestCase(BaseTestCase): def test_suspend(self): """Ensure instance can be suspended""" - instance_id = self._create_instance() + instance = self._create_fake_instance() + instance_id = instance['id'] + instance_uuid = instance['uuid'] self.compute.run_instance(self.context, instance_id) - inst_ref = db.instance_get(self.context, instance_id) - self.assertEqual(inst_ref['task_state'], None) + self.assertEqual(instance['task_state'], None) - self.compute_api.suspend(self.context, inst_ref) + self.compute_api.suspend(self.context, instance) - inst_ref = db.instance_get(self.context, instance_id) - self.assertEqual(inst_ref['task_state'], task_states.SUSPENDING) + instance = db.instance_get_by_uuid(self.context, instance_uuid) + self.assertEqual(instance['task_state'], task_states.SUSPENDING) db.instance_destroy(self.context, instance_id) def test_resume(self): """Ensure instance can be resumed""" - instance_id = self._create_instance() + instance = self._create_fake_instance() + instance_id = instance['id'] self.compute.run_instance(self.context, instance_id) - inst_ref = db.instance_get(self.context, instance_id) - self.assertEqual(inst_ref['task_state'], None) + self.assertEqual(instance['task_state'], None) - self.compute_api.resume(self.context, inst_ref) + self.compute_api.resume(self.context, instance) - inst_ref = db.instance_get(self.context, instance_id) - self.assertEqual(inst_ref['task_state'], task_states.RESUMING) + instance = db.instance_get_by_uuid(self.context, instance['uuid']) + self.assertEqual(instance['task_state'], task_states.RESUMING) db.instance_destroy(self.context, instance_id) |
