From 7265a71d998d5a6a4fc2a7f060178e365c882ca5 Mon Sep 17 00:00:00 2001 From: Brian Lamar Date: Thu, 19 Jan 2012 18:02:13 -0500 Subject: Fix for bug 918502 The previous fix for this did not take, this change has a test and should once and for all solve this issue. Change-Id: Ieb4def28dce4f1f993a2af87425bd280185456ab --- nova/compute/manager.py | 2 +- nova/tests/test_compute.py | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/nova/compute/manager.py b/nova/compute/manager.py index c37bec2c2..807150949 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -914,7 +914,7 @@ class ComputeManager(manager.SchedulerDependentManager): if instance_state != expected_state: self._instance_update(context, instance_id, task_state=None) raise exception.Error(_('Failed to set admin password. ' - 'Instance %s is not running'), + 'Instance %s is not running') % instance_ref["uuid"]) else: try: diff --git a/nova/tests/test_compute.py b/nova/tests/test_compute.py index 17cf46ceb..77daa4564 100644 --- a/nova/tests/test_compute.py +++ b/nova/tests/test_compute.py @@ -520,6 +520,22 @@ class ComputeTestCase(BaseTestCase): self.compute.terminate_instance(self.context, inst_ref['uuid']) + def test_set_admin_password_bad_state(self): + """Test setting password while instance is rebuilding.""" + instance = self._create_fake_instance() + self.compute.run_instance(self.context, instance['uuid']) + db.instance_update(self.context, instance['uuid'], { + "power_state": power_state.NOSTATE, + }) + instance = db.instance_get_by_uuid(self.context, instance['uuid']) + + self.assertEqual(instance['power_state'], power_state.NOSTATE) + self.assertRaises(exception.Error, + self.compute.set_admin_password, + self.context, + instance['uuid']) + self.compute.terminate_instance(self.context, instance['uuid']) + def test_set_admin_password_driver_error(self): """Ensure error is raised admin password set""" -- cgit