summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2011-11-18 19:31:41 +0000
committerGerrit Code Review <review@openstack.org>2011-11-18 19:31:41 +0000
commite63df26a884092373fa0814ed275256ee912e9cd (patch)
tree228805bec4130ad030cb46ed02737c7bbd24e29e
parent15937a41609a0216020aa23a8debbd10c1f74de6 (diff)
parenta312956a3c7a2877305b8ce5d80f0828ff7be785 (diff)
Merge "suspend/resume in compute manager to use uuids"
-rw-r--r--nova/compute/api.py6
-rw-r--r--nova/compute/manager.py16
-rw-r--r--nova/tests/test_compute.py35
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)