]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
engine : resume support for nested stacks
authorSteven Hardy <shardy@redhat.com>
Fri, 28 Jun 2013 13:51:54 +0000 (14:51 +0100)
committerSteven Hardy <shardy@redhat.com>
Mon, 1 Jul 2013 10:35:50 +0000 (11:35 +0100)
Change-Id: I82da46c6f18c035927c6305968470db613d7229c
blueprint: stack-suspend-resume

heat/engine/stack_resource.py
heat/tests/test_nested_stack.py

index a79b55f96e96c5b0f1f71991989edf2151c8dd73..789e281e4339c74157565c360c509acc33ba5d55 100644 (file)
@@ -126,6 +126,28 @@ class StackResource(resource.Resource):
 
         return done
 
+    def handle_resume(self):
+        stack = self.nested()
+        if stack is None:
+            raise exception.Error(_('Cannot resume %s, stack not created')
+                                  % self.name)
+
+        resume_task = scheduler.TaskRunner(self._nested.stack_task,
+                                           action=self.RESUME,
+                                           reverse=False)
+
+        resume_task.start(timeout=self._nested.timeout_secs())
+        return resume_task
+
+    def check_resume_complete(self, resume_task):
+        done = resume_task.step()
+        if done:
+            if self._nested.state != (self._nested.RESUME,
+                                      self._nested.COMPLETE):
+                raise exception.Error(self._nested.status_reason)
+
+        return done
+
     def get_output(self, op):
         '''
         Return the specified Output value from the nested stack.
index 83174292650f070601d91c9c72823443911ea806..45fef55e6e7489406cf036421986935a0b1de506 100644 (file)
@@ -97,7 +97,7 @@ Outputs:
 
         self.m.VerifyAll()
 
-    def test_nested_stack_suspend(self):
+    def test_nested_stack_suspend_resume(self):
         urlfetch.get('https://localhost/the.template').AndReturn(
             self.nested_template)
         self.m.ReplayAll()
@@ -108,5 +108,8 @@ Outputs:
         scheduler.TaskRunner(rsrc.suspend)()
         self.assertEqual(rsrc.state, (rsrc.SUSPEND, rsrc.COMPLETE))
 
+        scheduler.TaskRunner(rsrc.resume)()
+        self.assertEqual(rsrc.state, (rsrc.RESUME, rsrc.COMPLETE))
+
         rsrc.delete()
         self.m.VerifyAll()