From: Zane Bitter Date: Wed, 15 May 2013 20:26:09 +0000 (+0200) Subject: Make Volume snapshot a task X-Git-Tag: 2014.1~601^2 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=8efd18ee64141a3d65c4b855db146e417e49bd3a;p=openstack-build%2Fheat-build.git Make Volume snapshot a task Change-Id: I53fbd6e2ba9b17fa0ccd38d5e077587df0bbfef8 --- diff --git a/heat/engine/resources/volume.py b/heat/engine/resources/volume.py index 0585faf7..663ce56f 100644 --- a/heat/engine/resources/volume.py +++ b/heat/engine/resources/volume.py @@ -13,7 +13,6 @@ # License for the specific language governing permissions and limitations # under the License. -import eventlet import json from heat.openstack.common import log as logging @@ -22,6 +21,7 @@ from heat.openstack.common.importutils import try_import from heat.common import exception from heat.engine import clients from heat.engine import resource +from heat.engine import scheduler volume_backups = try_import('cinderclient.v1.volume_backups') @@ -86,7 +86,7 @@ class Volume(resource.Resource): def _backup(self): backup = self.cinder().backups.create(self.resource_id) while backup.status == 'creating': - eventlet.sleep(1) + yield backup.get() if backup.status != 'available': raise exception.Error(backup.status) @@ -97,7 +97,7 @@ class Volume(resource.Resource): vol = self.cinder().volumes.get(self.resource_id) if backup: - self._backup() + scheduler.TaskRunner(self._backup)() vol.get() if vol.status == 'in-use': diff --git a/heat/tests/test_volume.py b/heat/tests/test_volume.py index 20f589ae..4af4f7eb 100644 --- a/heat/tests/test_volume.py +++ b/heat/tests/test_volume.py @@ -83,6 +83,7 @@ class VolumeTest(HeatTestCase): self.m.StubOutWithMock(self.fc.volumes, 'create_server_volume') self.m.StubOutWithMock(self.fc.volumes, 'delete_server_volume') self.m.StubOutWithMock(eventlet, 'sleep') + self.m.StubOutWithMock(scheduler.TaskRunner, '_sleep') setup_dummy_db() def create_volume(self, t, stack, resource_name): @@ -272,7 +273,6 @@ class VolumeTest(HeatTestCase): # snapshot script self.m.StubOutWithMock(self.cinder_fc.backups, 'create') self.cinder_fc.backups.create('vol-123').AndReturn(fb) - eventlet.sleep(1).AndReturn(None) self.cinder_fc.volumes.get('vol-123').AndReturn(fv) self.cinder_fc.volumes.delete('vol-123').AndReturn(None) self.m.ReplayAll() @@ -305,7 +305,6 @@ class VolumeTest(HeatTestCase): self.cinder_fc.volumes.get('vol-123').AndReturn(fv) self.m.StubOutWithMock(self.cinder_fc.backups, 'create') self.cinder_fc.backups.create('vol-123').AndReturn(fb) - eventlet.sleep(1).AndReturn(None) self.m.ReplayAll() t = template_format.parse(volume_template)