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