summaryrefslogtreecommitdiff
path: root/heat/tests/openstack/cinder/test_volume.py
diff options
context:
space:
mode:
Diffstat (limited to 'heat/tests/openstack/cinder/test_volume.py')
-rw-r--r--heat/tests/openstack/cinder/test_volume.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/heat/tests/openstack/cinder/test_volume.py b/heat/tests/openstack/cinder/test_volume.py
index 56c28b98b..a137b226a 100644
--- a/heat/tests/openstack/cinder/test_volume.py
+++ b/heat/tests/openstack/cinder/test_volume.py
@@ -1404,3 +1404,26 @@ class CinderVolumeTest(vt_base.VolumeTestCase):
self.assertEqual(True, rsrc._ready_to_extend_volume())
self.assertEqual(False, rsrc._ready_to_extend_volume())
self.assertEqual(True, rsrc._ready_to_extend_volume())
+
+ def test_try_detach_volume_if_server_was_temporarily_in_error(self):
+ self.stack_name = 'test_cvolume_detach_server_in_error_stack'
+ fva = vt_base.FakeVolume('in-use')
+ m_v = self._mock_create_server_volume_script(
+ vt_base.FakeVolume('attaching'))
+ self._mock_create_volume(vt_base.FakeVolume('creating'),
+ self.stack_name,
+ extra_get_mocks=[
+ m_v, fva,
+ vt_base.FakeVolume('available')])
+ self.stub_VolumeConstraint_validate()
+ # delete script
+ self.fc.volumes.get_server_volume.side_effect = [
+ fva, fva, fakes_nova.fake_exception()]
+ nova_responses = [nova_exp.Conflict('409'), None]
+ self.fc.volumes.delete_server_volume.side_effect = nova_responses
+ stack = utils.parse_stack(self.t, stack_name=self.stack_name)
+ self.create_volume(self.t, stack, 'volume')
+ rsrc = self.create_attachment(self.t, stack, 'attachment')
+ scheduler.TaskRunner(rsrc.delete)()
+ self.assertEqual(self.fc.volumes.delete_server_volume.call_count,
+ len(nova_responses))