Use helper functions stack_suspend and stack_resume

These wait for the stack state to get to complete,
this wasn't done consistently. In test_autoscaling we were
only waiting for the resource state to get to SUSPEND_COMPLETE
and this lead to a time sensitive bug.

Change-Id: Id985d833dc0b4cab1e3cb9d8f67d5d8cc94b5863
Closes-bug: #1438717
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)