ec2: fixes #19521, fixes #29456 - create instance-store AMI instances with correct shutdown behavior (#28885)

* Create instance-store AMI instances with 'terminate' as the shutdown behavior since it is required.

* Match on the error code instead of searching for a string in the message.

* Narrow conditional to only fix shutdown behavior if fixing it would help

* Fix pep8.
This commit is contained in:
Sloane Hertel 2017-09-11 21:16:00 -04:00 committed by Will Thames
parent 2165bac212
commit 9bc330c89b

View file

@ -227,7 +227,8 @@ options:
instance_initiated_shutdown_behavior:
version_added: "2.2"
description:
- Set whether AWS will Stop or Terminate an instance on shutdown
- Set whether AWS will Stop or Terminate an instance on shutdown. This parameter is ignored when using instance-store
images (which require termination on shutdown).
required: false
default: 'stop'
choices: [ "stop", "terminate" ]
@ -1193,7 +1194,16 @@ def create_instances(module, ec2, vpc, override_count=None):
# (the default) or 'terminate' here.
params['instance_initiated_shutdown_behavior'] = instance_initiated_shutdown_behavior or 'stop'
res = ec2.run_instances(**params)
try:
res = ec2.run_instances(**params)
except boto.exception.EC2ResponseError as e:
if (params['instance_initiated_shutdown_behavior'] != 'terminate' and
"InvalidParameterCombination" == e.error_code):
params['instance_initiated_shutdown_behavior'] = 'terminate'
res = ec2.run_instances(**params)
else:
raise
instids = [i.id for i in res.instances]
while True:
try: