@@ -195,6 +195,9 @@ if __name__ == "__main__":
195195 help = "tail event log" )
196196 parser .add_argument ("-u" , "--update" , help = "Update an existing stack" ,
197197 dest = "update" )
198+ parser .add_argument ("-w" , "--wait" , action = "store_true" ,
199+ help = "Wait for the operation to complete and return "
200+ "an appropriate error code" )
198201 parser .add_argument ("stack" , nargs = '?' )
199202 values = parser .parse_args ()
200203
@@ -220,14 +223,15 @@ if __name__ == "__main__":
220223 parameters = values .params ,
221224 capabilities = values .capabilities )
222225
223- for event in events :
224- print_event (event )
225- if event .physical_resource_id == stack_id :
226- if event .resource_status in ['UPDATE_ROLLBACK_COMPLETE' ,
227- 'UPDATE_ROLLBACK_FAILED' ]:
228- sys .exit (1 )
229- if event .resource_status == 'UPDATE_COMPLETE' :
230- break
226+ if values .wait :
227+ for event in events :
228+ print_event (event )
229+ if event .physical_resource_id == stack_id :
230+ if event .resource_status in ['UPDATE_ROLLBACK_COMPLETE' ,
231+ 'UPDATE_ROLLBACK_FAILED' ]:
232+ sys .exit (1 )
233+ if event .resource_status == 'UPDATE_COMPLETE' :
234+ break
231235
232236 if values .delete :
233237 stack_id = get_stack_id_if_exists (conn , values .stack )
@@ -236,14 +240,15 @@ if __name__ == "__main__":
236240 events .read_existing ()
237241 conn .delete_stack (stack_id )
238242
239- for event in events :
240- print_event (event )
241- if event .physical_resource_id == stack_id :
242- if event .resource_status == 'DELETE_FAILED' :
243- print "Delete failed"
244- sys .exit (1 )
245- elif event .resource_status == 'DELETE_COMPLETE' :
246- break
243+ if values .wait :
244+ for event in events :
245+ print_event (event )
246+ if event .physical_resource_id == stack_id :
247+ if event .resource_status == 'DELETE_FAILED' :
248+ print "Delete failed"
249+ sys .exit (1 )
250+ elif event .resource_status == 'DELETE_COMPLETE' :
251+ break
247252 else :
248253 print "Couldn't delete {0}: stack doesn't exist." \
249254 .format (values .stack )
@@ -267,20 +272,21 @@ if __name__ == "__main__":
267272 stack_id = create_stack (conn , values .stack , template , None ,
268273 values .params , values .capabilities )
269274
270- rollback_enabled = True
275+ if values .wait :
276+ rollback_enabled = True
271277
272- for event in StackEventIterator (conn , stack_id ):
273- print_event (event )
274- if event .physical_resource_id == stack_id :
275- if rollback_enabled :
276- if event .resource_status in ['ROLLBACK_COMPLETE' ,
277- 'ROLLBACK_FAILED' ]:
278- sys .exit (1 )
279- else :
280- if event .resource_status == 'CREATE_FAILED' :
281- sys .exit (1 )
282- if event .resource_status == 'CREATE_COMPLETE' :
283- break
278+ for event in StackEventIterator (conn , stack_id ):
279+ print_event (event )
280+ if event .physical_resource_id == stack_id :
281+ if rollback_enabled :
282+ if event .resource_status in ['ROLLBACK_COMPLETE' ,
283+ 'ROLLBACK_FAILED' ]:
284+ sys .exit (1 )
285+ else :
286+ if event .resource_status == 'CREATE_FAILED' :
287+ sys .exit (1 )
288+ if event .resource_status == 'CREATE_COMPLETE' :
289+ break
284290
285291 if values .resources :
286292 describe_resources (conn , values .stack )
0 commit comments