Skip to content

Commit 409e24f

Browse files
author
Garison Draper
committed
Displaying roll back reason after both ROLLBACK_COMPLETE or UPDATE_ROLLBACK_COMPLETE
1 parent fadf97d commit 409e24f

2 files changed

Lines changed: 24 additions & 3 deletions

File tree

stacker/actions/build.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,8 +310,11 @@ def _launch_stack(self, stack, **kwargs):
310310
reason = old_status.reason
311311
if 'rolling' in reason:
312312
reason = reason.replace('rolling', 'rolled')
313-
313+
status_reason = provider.get_rollback_status_reason(stack.fqn)
314+
logger.info(
315+
"%s Stack Roll Back Reason: " + status_reason, stack.fqn)
314316
return FailedStatus(reason)
317+
315318
elif provider.is_stack_completed(provider_stack):
316319
stack.set_outputs(
317320
provider.get_output_dict(provider_stack))

stacker/providers/aws/default.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -624,7 +624,7 @@ def _tail_print(e):
624624
e['ResourceType'],
625625
e['EventId']))
626626

627-
def get_events(self, stack_name):
627+
def get_events(self, stack_name, chronological=True):
628628
"""Get the events in batches and return in chronological order"""
629629
next_token = None
630630
event_list = []
@@ -642,7 +642,25 @@ def get_events(self, stack_name):
642642
if next_token is None:
643643
break
644644
time.sleep(GET_EVENTS_SLEEP)
645-
return reversed(sum(event_list, []))
645+
if chronological:
646+
return reversed(sum(event_list, []))
647+
else:
648+
return sum(event_list, [])
649+
650+
def get_rollback_status_reason(self, stack_name):
651+
"""Process events and returns latest roll back reason"""
652+
event = next((item for item in self.get_events(stack_name,
653+
False) if item["ResourceStatus"] ==
654+
"UPDATE_ROLLBACK_IN_PROGRESS"), None)
655+
if event:
656+
reason = event["ResourceStatusReason"]
657+
return reason
658+
else:
659+
event = next((item for item in self.get_events(stack_name)
660+
if item["ResourceStatus"] ==
661+
"ROLLBACK_IN_PROGRESS"), None)
662+
reason = event["ResourceStatusReason"]
663+
return reason
646664

647665
def tail(self, stack_name, cancel, log_func=_tail_print, sleep_time=5,
648666
include_initial=True):

0 commit comments

Comments
 (0)