summaryrefslogtreecommitdiffstats
path: root/nova/tests
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-05-02 16:13:15 +0000
committerGerrit Code Review <review@openstack.org>2013-05-02 16:13:15 +0000
commit8bb1cc2f82b0d1dcfb08777537584e5f574ae439 (patch)
tree432f05723868e95a3db0e6cf02cd6d7ac42006b9 /nova/tests
parent6e3997322d306bda31e02b03bfbd8c73b3367b39 (diff)
parent5ada427935a0664f6c2534163f9988fb85d7b6ca (diff)
Merge "Prevent rescuing a VM with a partially mounted volume."
Diffstat (limited to 'nova/tests')
-rw-r--r--nova/tests/compute/test_compute.py30
1 files changed, 29 insertions, 1 deletions
diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py
index bd253b8ee..cd70e0cb2 100644
--- a/nova/tests/compute/test_compute.py
+++ b/nova/tests/compute/test_compute.py
@@ -5645,11 +5645,17 @@ class ComputeAPITestCase(BaseTestCase):
volume_backed_uuid_2 = volume_backed_inst_2['uuid']
def fake_get_instance_bdms(*args, **kwargs):
- return [{'device_name': '/dev/vda'}]
+ return [{'device_name': '/dev/vda',
+ 'volume_id':'bf0b6b00-a20c-11e2-9e96-0800200c9a66'}]
self.stubs.Set(self.compute_api, 'get_instance_bdms',
fake_get_instance_bdms)
+ def fake_volume_get(self, context, volume_id):
+ return {'id': volume_id, 'status': 'in-use'}
+
+ self.stubs.Set(cinder.API, 'get', fake_volume_get)
+
self.compute.run_instance(self.context,
instance=volume_backed_inst_1)
self.compute.run_instance(self.context,
@@ -6900,6 +6906,28 @@ class ComputeAPITestCase(BaseTestCase):
self.compute_api.detach_volume,
self.context, instance, volume)
+ def test_no_rescue_in_volume_state_attaching(self):
+ # Make sure a VM cannot be rescued while volume is being attached
+ instance = self._create_fake_instance()
+
+ def fake_get_instance_bdms(*args, **kwargs):
+ return [{'device_name': '/dev/vda',
+ 'volume_id':'bf0b6b00-a20c-11e2-9e96-0800200c9a66'}]
+
+ self.stubs.Set(self.compute_api, 'get_instance_bdms',
+ fake_get_instance_bdms)
+
+ def fake_volume_get(self, context, volume_id):
+ return {'id': volume_id, 'status': 'attaching'}
+
+ self.stubs.Set(cinder.API, 'get', fake_volume_get)
+
+ volume = {'id': 'bf0b6b00-a20c-11e2-9e96-0800200c9a66',
+ 'state': 'active', 'instance_uuid': instance['uuid']}
+
+ self.assertRaises(exception.InvalidVolume,
+ self.compute_api.rescue, self.context, instance)
+
def test_vnc_console(self):
# Make sure we can a vnc console for an instance.