'Suspend the stack.
Invokes handle_suspend for all stack resources.
Waits for all resources to become SUSPEND_COMPLETE then declares the
stack SUSPEND_COMPLETE.
Note the default implementation for all resources is to do nothing
other than move to SUSPEND_COMPLETE, so the resources must implement
handle_suspend for this to have any effect.'

@profiler.trace('Stack.suspend', hide_args=False)
@reset_state_on_error
def suspend(self):

    if (self.state == (self.SUSPEND, self.COMPLETE)):
        LOG.info('%s    is    already    suspended', self)
        return
    self.updated_time = oslo_timeutils.utcnow()
    sus_task = scheduler.TaskRunner(self.stack_task, action=self.SUSPEND, reverse=True)
    sus_task(timeout=self.timeout_secs())
