]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
parallelize StackResource delete
authorVijendar Komalla <vijendar.komalla@RACKSPACE.COM>
Thu, 29 Aug 2013 18:23:16 +0000 (13:23 -0500)
committerGerrit Code Review <review@openstack.org>
Thu, 5 Sep 2013 02:18:49 +0000 (02:18 +0000)
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

heat/engine/resources/dbinstance.py
heat/engine/resources/loadbalancer.py
heat/engine/resources/stack.py
heat/engine/resources/template_resource.py
heat/engine/stack_resource.py

index ea7ff5969a2b1e1010dee3e115e2953255ecfaa7..f602282167c88171d47530e992ed023d6526ace7 100644 (file)
@@ -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):
         '''
index bb6640ff36ea543e0750e1491eefd1fbb8128828..b3b3e10a90374db666f4b5a3dcde210832c05521 100644 (file)
@@ -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):
         '''
index 3879935bd3691d74daf97ab41775172dd532739c..15f5e26cca24fa9b26b51d76cddbdc766b6b816e 100644 (file)
@@ -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.'):
index f336af32b8e0712aa1d630f42465bea6d72b3b11..dfb462ddcf443256c24aa1afa6d017587346ae06 100644 (file)
@@ -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():
index b95088c0d73eefa3f3efaac2c104a023e1385ea9..ca86cbab49b12494b3ae536627aa64436201097b 100644 (file)
@@ -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()