Skip to content

Commit 8b143f3

Browse files
committed
Add a --wait flag to cfn tool
Do not wait for create, update, or delete operations to complete without the --wait flag. See #136.
1 parent 8b3eb8c commit 8b143f3

File tree

1 file changed

+35
-29
lines changed

1 file changed

+35
-29
lines changed

scripts/cfn

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)