'Snapshot the stack, invoking handle_snapshot on all resources.'

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

    self.updated_time = oslo_timeutils.utcnow()
    sus_task = scheduler.TaskRunner(self.stack_task, action=self.SNAPSHOT, reverse=False, pre_completion_func=save_snapshot_func)
    sus_task(timeout=self.timeout_secs())
