From 7f58b1dd7009db07cd7a6016b3d9cbd6089ea91d Mon Sep 17 00:00:00 2001 From: Zane Bitter Date: Wed, 15 May 2013 22:26:09 +0200 Subject: [PATCH] Move Volume polling to check_create_complete() Rather than poll in a loop inside handle_create(), use check_create_complete() to check the status of the Volume. Fixes bug #1178578 Change-Id: Icea7154c6e3763c977bd41671f51736c4a366141 --- heat/engine/resources/volume.py | 14 ++++++++++---- heat/tests/test_volume.py | 11 ----------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/heat/engine/resources/volume.py b/heat/engine/resources/volume.py index dc9d89f4..0585faf7 100644 --- a/heat/engine/resources/volume.py +++ b/heat/engine/resources/volume.py @@ -68,10 +68,16 @@ class Volume(resource.Resource): **self._create_arguments()) self.resource_id_set(vol.id) - while vol.status == 'creating': - eventlet.sleep(1) - vol.get() - if vol.status != 'available': + return vol + + def check_create_complete(self, vol): + vol.get() + + if vol.status == 'available': + return True + elif vol.status == 'creating': + return False + else: raise exception.Error(vol.status) def handle_update(self, json_snippet): diff --git a/heat/tests/test_volume.py b/heat/tests/test_volume.py index df71f976..20f589ae 100644 --- a/heat/tests/test_volume.py +++ b/heat/tests/test_volume.py @@ -117,7 +117,6 @@ class VolumeTest(HeatTestCase): # delete script self.cinder_fc.volumes.get('vol-123').AndReturn(fv) - eventlet.sleep(1).AndReturn(None) self.cinder_fc.volumes.get('vol-123').AndReturn(fv) self.cinder_fc.volumes.delete('vol-123').AndReturn(None) @@ -156,8 +155,6 @@ class VolumeTest(HeatTestCase): display_description='%s.DataVolume' % stack_name, display_name='%s.DataVolume' % stack_name).AndReturn(fv) - eventlet.sleep(1).AndReturn(None) - self.m.ReplayAll() t = template_format.parse(volume_template) @@ -271,7 +268,6 @@ class VolumeTest(HeatTestCase): size=u'1', availability_zone='nova', display_description='%s.DataVolume' % stack_name, display_name='%s.DataVolume' % stack_name).AndReturn(fv) - eventlet.sleep(1).AndReturn(None) # snapshot script self.m.StubOutWithMock(self.cinder_fc.backups, 'create') @@ -304,7 +300,6 @@ class VolumeTest(HeatTestCase): size=u'1', availability_zone='nova', display_description='%s.DataVolume' % stack_name, display_name='%s.DataVolume' % stack_name).AndReturn(fv) - eventlet.sleep(1).AndReturn(None) # snapshot script self.cinder_fc.volumes.get('vol-123').AndReturn(fv) @@ -335,7 +330,6 @@ class VolumeTest(HeatTestCase): size=u'1', availability_zone='nova', display_description='%s.DataVolume' % stack_name, display_name='%s.DataVolume' % stack_name).AndReturn(fv) - eventlet.sleep(1).AndReturn(None) self.cinder_fc.volumes.get('vol-123').AndReturn(fv) self.cinder_fc.volumes.delete('vol-123').AndReturn(None) @@ -373,7 +367,6 @@ class VolumeTest(HeatTestCase): fv.update( display_description='%s.DataVolume' % stack_name, display_name='%s.DataVolume' % stack_name) - eventlet.sleep(1).AndReturn(None) self.m.ReplayAll() @@ -402,8 +395,6 @@ class VolumeTest(HeatTestCase): source_volid='vol-012', volume_type='lvm').AndReturn(fv) - eventlet.sleep(1).AndReturn(None) - self.m.ReplayAll() t = template_format.parse(volume_template) @@ -444,8 +435,6 @@ class VolumeTest(HeatTestCase): display_description=None, display_name='%s.DataVolume' % stack_name).AndReturn(fv) - eventlet.sleep(1).AndReturn(None) - self.m.ReplayAll() t = template_format.parse(volume_template) -- 2.45.2