From: Steven Hardy Date: Fri, 28 Jun 2013 13:51:54 +0000 (+0100) Subject: engine : resume support for nested stacks X-Git-Tag: 2014.1~404^2 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=1508186c709089a571430c95bade3e93828f6a61;p=openstack-build%2Fheat-build.git engine : resume support for nested stacks Change-Id: I82da46c6f18c035927c6305968470db613d7229c blueprint: stack-suspend-resume --- diff --git a/heat/engine/stack_resource.py b/heat/engine/stack_resource.py index a79b55f9..789e281e 100644 --- a/heat/engine/stack_resource.py +++ b/heat/engine/stack_resource.py @@ -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. diff --git a/heat/tests/test_nested_stack.py b/heat/tests/test_nested_stack.py index 83174292..45fef55e 100644 --- a/heat/tests/test_nested_stack.py +++ b/heat/tests/test_nested_stack.py @@ -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()