Merge "Improve StackValidationFailed response in properties"
diff --git a/common/test.py b/common/test.py
index 331c922..2868d0f 100644
--- a/common/test.py
+++ b/common/test.py
@@ -191,6 +191,15 @@
return call_until_true(
self.conf.build_timeout, 1, ping)
+ def _wait_for_all_resource_status(self, stack_identifier,
+ status, failure_pattern='^.*_FAILED$',
+ success_on_not_found=False):
+ for res in self.client.resources.list(stack_identifier):
+ self._wait_for_resource_status(
+ stack_identifier, res.resource_name,
+ status, failure_pattern=failure_pattern,
+ success_on_not_found=success_on_not_found)
+
def _wait_for_resource_status(self, stack_identifier, resource_name,
status, failure_pattern='^.*_FAILED$',
success_on_not_found=False):
@@ -406,11 +415,19 @@
def stack_suspend(self, stack_identifier):
stack_name = stack_identifier.split('/')[0]
self.client.actions.suspend(stack_name)
+
+ # improve debugging by first checking the resource's state.
+ self._wait_for_all_resource_status(stack_identifier,
+ 'SUSPEND_COMPLETE')
self._wait_for_stack_status(stack_identifier, 'SUSPEND_COMPLETE')
def stack_resume(self, stack_identifier):
stack_name = stack_identifier.split('/')[0]
self.client.actions.resume(stack_name)
+
+ # improve debugging by first checking the resource's state.
+ self._wait_for_all_resource_status(stack_identifier,
+ 'RESUME_COMPLETE')
self._wait_for_stack_status(stack_identifier, 'RESUME_COMPLETE')
def wait_for_event_with_reason(self, stack_identifier, reason,
diff --git a/functional/test_autoscaling.py b/functional/test_autoscaling.py
index 932245d..489ae63 100644
--- a/functional/test_autoscaling.py
+++ b/functional/test_autoscaling.py
@@ -318,21 +318,11 @@
nested_ident = self.assert_resource_is_a_stack(stack_identifier,
'JobServerGroup')
- self.client.actions.suspend(stack_id=stack_identifier)
- self._wait_for_resource_status(
- stack_identifier, 'JobServerGroup', 'SUSPEND_COMPLETE')
- for res in self.client.resources.list(nested_ident):
- self._wait_for_resource_status(nested_ident,
- res.resource_name,
- 'SUSPEND_COMPLETE')
+ self.stack_suspend(stack_identifier)
+ self._wait_for_all_resource_status(nested_ident, 'SUSPEND_COMPLETE')
- self.client.actions.resume(stack_id=stack_identifier)
- self._wait_for_resource_status(
- stack_identifier, 'JobServerGroup', 'RESUME_COMPLETE')
- for res in self.client.resources.list(nested_ident):
- self._wait_for_resource_status(nested_ident,
- res.resource_name,
- 'RESUME_COMPLETE')
+ self.stack_resume(stack_identifier)
+ self._wait_for_all_resource_status(nested_ident, 'RESUME_COMPLETE')
class AutoscalingGroupUpdatePolicyTest(AutoscalingGroupTest):
diff --git a/functional/test_aws_stack.py b/functional/test_aws_stack.py
index 5aabe95..d8ba937 100644
--- a/functional/test_aws_stack.py
+++ b/functional/test_aws_stack.py
@@ -203,11 +203,5 @@
url = self.publish_template(self.nested_name, self.nested_template)
self.template = self.test_template.replace('the.yaml', url)
stack_identifier = self.stack_create(template=self.template)
-
- self.client.actions.suspend(stack_id=stack_identifier)
- self._wait_for_resource_status(
- stack_identifier, 'the_nested', 'SUSPEND_COMPLETE')
-
- self.client.actions.resume(stack_id=stack_identifier)
- self._wait_for_resource_status(
- stack_identifier, 'the_nested', 'RESUME_COMPLETE')
+ self.stack_suspend(stack_identifier)
+ self.stack_resume(stack_identifier)
diff --git a/functional/test_remote_stack.py b/functional/test_remote_stack.py
index 7579eb0..868f24e 100644
--- a/functional/test_remote_stack.py
+++ b/functional/test_remote_stack.py
@@ -140,17 +140,5 @@
def test_stack_suspend_resume(self):
files = {'remote_stack.yaml': self.remote_template}
stack_id = self.stack_create(files=files)
- rsrc = self.client.resources.get(stack_id, 'my_stack')
- remote_id = rsrc.physical_resource_id
-
- # suspend stack
- self.client.actions.suspend(stack_id)
- self._wait_for_stack_status(stack_id, 'SUSPEND_COMPLETE')
- rsrc = self.client.stacks.get(remote_id)
- self.assertEqual('SUSPEND_COMPLETE', rsrc.stack_status)
-
- # resume stack
- self.client.actions.resume(stack_id)
- self._wait_for_stack_status(stack_id, 'RESUME_COMPLETE')
- rsrc = self.client.stacks.get(remote_id)
- self.assertEqual('RESUME_COMPLETE', rsrc.stack_status)
+ self.stack_suspend(stack_id)
+ self.stack_resume(stack_id)
diff --git a/functional/test_template_resource.py b/functional/test_template_resource.py
index 5893679..392bddd 100644
--- a/functional/test_template_resource.py
+++ b/functional/test_template_resource.py
@@ -79,7 +79,11 @@
template=main_templ,
files={'nested.yaml': nested_templ},
environment=env_templ)
- self.assert_resource_is_a_stack(stack_identifier, 'secret1')
+ nested_ident = self.assert_resource_is_a_stack(stack_identifier,
+ 'secret1')
+ # prove that resource.parent_resource is populated.
+ sec2 = self.client.resources.get(nested_ident, 'secret2')
+ self.assertEqual('secret1', sec2.parent_resource)
def test_no_infinite_recursion(self):
"""Prove that we can override a python resource.