Beispiel #1
0
    def WaitUntilDone(
        self,
        timeout: int = utils.DEFAULT_POLL_TIMEOUT,
    ) -> "Flow":
        """Wait until the flow completes.

    Args:
      timeout: timeout in seconds. None means default timeout (1 hour). 0 means
        no timeout (wait forever).

    Returns:
      Fresh flow object.
    Raises:
      PollTimeoutError: if timeout is reached.
      FlowFailedError: if the flow is not successful.
    """

        f = utils.Poll(
            generator=self.Get,
            condition=lambda f: f.data.state != flow_pb2.ApiFlow.State.RUNNING,
            timeout=timeout)
        if f.data.state != flow_pb2.ApiFlow.State.TERMINATED:
            raise errors.FlowFailedError(
                "Flow %s (%s) failed: %s" %
                (self.flow_id, self.client_id, f.data.context.current_state))
        return f
Beispiel #2
0
    def WaitUntilValid(self, timeout=None):
        """Wait until the approval is valid (i.e. - approved).

    Args:
      timeout: timeout in seconds. None means default timeout (1 hour).
               0 means no timeout (wait forever).
    Returns:
      Operation object with refreshed target_file.
    Raises:
      PollTimeoutError: if timeout is reached.
    """

        return utils.Poll(generator=self.Get,
                          condition=lambda f: f.data.is_valid,
                          timeout=timeout)
Beispiel #3
0
    def WaitUntilDone(self, timeout=None):
        """Wait until the operation is done.

    Args:
      timeout: timeout in seconds. None means default timeout (1 hour).
               0 means no timeout (wait forever).
    Returns:
      Operation object with refreshed target_file.
    Raises:
      PollTimeoutError: if timeout is reached.
    """

        utils.Poll(generator=self.GetState,
                   condition=lambda s: s != self.__class__.STATE_RUNNING,
                   timeout=timeout)
        self.target_file = self.target_file.Get()
        return self