From 1508186c709089a571430c95bade3e93828f6a61 Mon Sep 17 00:00:00 2001 From: Steven Hardy Date: Fri, 28 Jun 2013 14:51:54 +0100 Subject: [PATCH] engine : resume support for nested stacks Change-Id: I82da46c6f18c035927c6305968470db613d7229c blueprint: stack-suspend-resume --- heat/engine/stack_resource.py | 22 ++++++++++++++++++++++ heat/tests/test_nested_stack.py | 5 ++++- 2 files changed, 26 insertions(+), 1 deletion(-) 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() -- 2.45.2