diff options
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/api/openstack/compute/contrib/test_rescue.py | 15 | ||||
| -rw-r--r-- | nova/tests/compute/test_compute.py | 49 |
2 files changed, 52 insertions, 12 deletions
diff --git a/nova/tests/api/openstack/compute/contrib/test_rescue.py b/nova/tests/api/openstack/compute/contrib/test_rescue.py index 0d2e9e5c8..ea0a96cbf 100644 --- a/nova/tests/api/openstack/compute/contrib/test_rescue.py +++ b/nova/tests/api/openstack/compute/contrib/test_rescue.py @@ -113,3 +113,18 @@ class RescueTest(test.TestCase): resp = req.get_response(self.app) self.assertEqual(resp.status_int, 409) + + def test_rescue_raises_unrescuable(self): + body = dict(rescue=None) + + def fake_rescue(*args, **kwargs): + raise exception.InstanceNotRescuable('fake message') + + self.stubs.Set(compute.api.API, "rescue", fake_rescue) + req = webob.Request.blank('/v2/fake/servers/test_inst/action') + req.method = "POST" + req.body = jsonutils.dumps(body) + req.headers["content-type"] = "application/json" + + resp = req.get_response(self.app) + self.assertEqual(resp.status_int, 400) diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index c295ed75a..e94d8b788 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -951,18 +951,6 @@ class ComputeTestCase(BaseTestCase): self.compute.terminate_instance(self.context, instance=instance) - def test_rescue_no_image(self): - params = {'image_ref': ''} - instance = self._create_fake_instance(params) - instance_uuid = instance['uuid'] - self.compute.run_instance(self.context, instance=instance) - db.instance_update(self.context, instance_uuid, - {"task_state": task_states.RESCUING}) - self.compute.rescue_instance(self.context, instance=instance) - db.instance_update(self.context, instance_uuid, - {"task_state": task_states.UNRESCUING}) - self.compute.unrescue_instance(self.context, instance=instance) - def test_power_on(self): # Ensure instance can be powered on. @@ -4789,6 +4777,43 @@ class ComputeAPITestCase(BaseTestCase): self.compute.terminate_instance(self.context, instance=jsonutils.to_primitive(instance)) + def test_rescue_volume_backed(self): + # Instance started without an image + volume_backed_inst_1 = jsonutils.to_primitive( + self._create_fake_instance({'image_ref': ''})) + + # Instance started with a placeholder image (for metadata) + volume_backed_inst_2 = jsonutils.to_primitive( + self._create_fake_instance( + {'image_ref': 'my_placeholder_img', + 'root_device_name': '/dev/vda'}) + ) + volume_backed_uuid_1 = volume_backed_inst_1['uuid'] + volume_backed_uuid_2 = volume_backed_inst_2['uuid'] + + def fake_get_instance_bdms(*args, **kwargs): + return [{'device_name': '/dev/vda'}] + + self.stubs.Set(self.compute_api, 'get_instance_bdms', + fake_get_instance_bdms) + + self.compute.run_instance(self.context, + instance=volume_backed_inst_1) + self.compute.run_instance(self.context, + instance=volume_backed_inst_2) + + self.assertRaises(exception.InstanceNotRescuable, + self.compute_api.rescue, self.context, + volume_backed_inst_1) + self.assertRaises(exception.InstanceNotRescuable, + self.compute_api.rescue, self.context, + volume_backed_inst_2) + + self.compute.terminate_instance(self.context, + instance=jsonutils.to_primitive(volume_backed_inst_1)) + self.compute.terminate_instance(self.context, + instance=jsonutils.to_primitive(volume_backed_inst_2)) + def test_snapshot(self): # Ensure a snapshot of an instance can be created. instance = self._create_fake_instance() |
