From: Vijendar Komalla Date: Thu, 29 Aug 2013 18:23:16 +0000 (-0500) Subject: parallelize StackResource delete X-Git-Tag: 2014.1~64^2 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=a560ca0a1bea2b20a8aab42369a2319ca53d16f8;p=openstack-build%2Fheat-build.git parallelize StackResource delete This is fourth and last patch in the series to implement parallel delete. In this patch, parallelizing StackResource deletion. Blueprint parallel-delete Change-Id: I49fb4ad64dd4245b61fad28a401174b11f2b8272 --- diff --git a/heat/engine/resources/dbinstance.py b/heat/engine/resources/dbinstance.py index ea7ff596..f6022821 100644 --- a/heat/engine/resources/dbinstance.py +++ b/heat/engine/resources/dbinstance.py @@ -223,7 +223,7 @@ class DBInstance(stack_resource.StackResource): return self.create_with_template(templ, self._params()) def handle_delete(self): - self.delete_nested() + return self.delete_nested() def _resolve_attribute(self, name): ''' diff --git a/heat/engine/resources/loadbalancer.py b/heat/engine/resources/loadbalancer.py index bb6640ff..b3b3e10a 100644 --- a/heat/engine/resources/loadbalancer.py +++ b/heat/engine/resources/loadbalancer.py @@ -354,7 +354,7 @@ class LoadBalancer(stack_resource.StackResource): self.nested()['LB_instance'].metadata = md def handle_delete(self): - self.delete_nested() + return self.delete_nested() def validate(self): ''' diff --git a/heat/engine/resources/stack.py b/heat/engine/resources/stack.py index 3879935b..15f5e26c 100644 --- a/heat/engine/resources/stack.py +++ b/heat/engine/resources/stack.py @@ -52,7 +52,7 @@ class NestedStack(stack_resource.StackResource): self.properties[PROP_TIMEOUT_MINS]) def handle_delete(self): - self.delete_nested() + return self.delete_nested() def FnGetAtt(self, key): if key and not key.startswith('Outputs.'): diff --git a/heat/engine/resources/template_resource.py b/heat/engine/resources/template_resource.py index f336af32..dfb462dd 100644 --- a/heat/engine/resources/template_resource.py +++ b/heat/engine/resources/template_resource.py @@ -158,7 +158,7 @@ class TemplateResource(stack_resource.StackResource): self._to_parameters()) def handle_delete(self): - self.delete_nested() + return self.delete_nested() def FnGetRefId(self): if not self.nested(): diff --git a/heat/engine/stack_resource.py b/heat/engine/stack_resource.py index b95088c0..ca86cbab 100644 --- a/heat/engine/stack_resource.py +++ b/heat/engine/stack_resource.py @@ -164,7 +164,22 @@ class StackResource(resource.Resource): logger.info("Stack not found to delete") else: if stack is not None: - stack.delete() + delete_task = scheduler.TaskRunner(stack.delete) + delete_task.start() + return delete_task + + def check_delete_complete(self, delete_task): + if delete_task is None: + return True + + done = delete_task.step() + if done: + nested_stack = self.nested() + if nested_stack.state != (nested_stack.DELETE, + nested_stack.COMPLETE): + raise exception.Error(nested_stack.status_reason) + + return done def handle_suspend(self): stack = self.nested()