From 1f5366f3bb45b9590034b0b2c5b17d10b5947989 Mon Sep 17 00:00:00 2001 From: Zane Bitter Date: Mon, 27 May 2013 10:01:45 +0200 Subject: [PATCH] Use a task to delete Instances Change-Id: Ic8c5552c52c0c00ef081a87525cd3b0bb011ce20 --- heat/engine/resources/instance.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/heat/engine/resources/instance.py b/heat/engine/resources/instance.py index 23a73d04..0381f960 100644 --- a/heat/engine/resources/instance.py +++ b/heat/engine/resources/instance.py @@ -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 -- 2.45.2