in ebcli/operations/commonops.py [0:0]
def wait_for_compose_events(request_id, app_name, grouped_envs, timeout_in_minutes=None,
sleep_time=5, stream_events=True,
can_abort=False):
if timeout_in_minutes == 0:
return
if timeout_in_minutes is None:
timeout_in_minutes = 15
start = utils.datetime_utcnow()
timediff = timedelta(seconds=timeout_in_minutes * 60)
last_times = []
events_matrix = []
successes = []
last_time_compose = utils.datetime_utcnow()
compose_events = []
for i in range(len(grouped_envs)):
last_times.append(utils.datetime_utcnow())
events_matrix.append([])
successes.append(False)
streamer = io.get_event_streamer()
if can_abort:
streamer.prompt += strings['events.abortmessage']
try:
while not _timeout_reached(start, timediff):
if all(successes):
return
compose_events = elasticbeanstalk.get_new_events(app_name=app_name,
env_name=None,
request_id=request_id,
last_event_time=last_time_compose)
for event in reversed(compose_events):
if stream_events:
streamer.stream_event(get_compose_event_string(event))
last_time_compose = event.event_date
for index in range(len(grouped_envs)):
if successes[index]:
continue
_sleep(sleep_time)
events_matrix[index] = elasticbeanstalk.get_new_events(
app_name, grouped_envs[index], None,
last_event_time=last_times[index]
)
for event in reversed(events_matrix[index]):
if stream_events:
streamer.stream_event(get_env_event_string(event))
last_times[index] = event.event_date
if _is_success_event(event.message):
successes[index] = True
finally:
streamer.end_stream()
io.log_error(strings['timeout.error'])