]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Use a task to delete Instances
authorZane Bitter <zbitter@redhat.com>
Mon, 27 May 2013 08:01:45 +0000 (10:01 +0200)
committerZane Bitter <zbitter@redhat.com>
Mon, 27 May 2013 08:01:51 +0000 (10:01 +0200)
Change-Id: Ic8c5552c52c0c00ef081a87525cd3b0bb011ce20

heat/engine/resources/instance.py

index 23a73d04c2b1358129f7ff89b98dc136af223e1e..0381f960661bffc2c06a6f71319e259933f8c957 100644 (file)
@@ -20,7 +20,6 @@ import os
 import pkgutil
 from urlparse import urlparse
 
-import eventlet
 from oslo.config import cfg
 
 from heat.engine import clients
@@ -420,6 +419,21 @@ class Instance(resource.Resource):
         return {'Error':
                 'Provided KeyName is not registered with nova'}
 
+    def _delete_server(self, server):
+        '''
+        Return a co-routine that deletes the server and waits for it to
+        disappear from Nova.
+        '''
+        server.delete()
+
+        while True:
+            yield
+
+            try:
+                server.get()
+            except clients.novaclient.exceptions.NotFound:
+                break
+
     def handle_delete(self):
         '''
         Delete an instance, blocking until it is disposed by OpenStack
@@ -438,13 +452,9 @@ class Instance(resource.Resource):
         except clients.novaclient.exceptions.NotFound:
             pass
         else:
-            server.delete()
-            while True:
-                try:
-                    server.get()
-                except clients.novaclient.exceptions.NotFound:
-                    break
-                eventlet.sleep(0.2)
+            delete = scheduler.TaskRunner(self._delete_server, server)
+            delete(wait_time=0.2)
+
         self.resource_id = None