def execute(self, *args, **kwargs):
        """Walks each step in the underlying graph, and raises an exception if
        any of the steps fail.

        Raises:
            PlanFailed: Raised if any of the steps fail.
        """
        self.walk(*args, **kwargs)

        failed_steps = [step for step in self.steps if step.status == FAILED]
        if failed_steps:
            raise PlanFailed(failed_steps)
Walks each step in the underlying graph, and raises an exception if
        any of the steps fail.

        Raises:
            PlanFailed: Raised if any of the steps fail.