'Create the stack and all of the resources.'

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

    def rollback():
        if ((not self.disable_rollback) and (self.state == (self.CREATE, self.FAILED))):
            self.delete(action=self.ROLLBACK)
    self._store_resources()
    check_message = functools.partial(self._check_for_message, msg_queue)
    creator = scheduler.TaskRunner(self.stack_task, action=self.CREATE, reverse=False, post_func=rollback)
    creator(timeout=self.timeout_secs(), progress_callback=check_message)
