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
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)
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