Creating ami should be idempotent

If the ami already exists, return details of the duplicate
ami instead of failing with an error.
pull/18777/head
Raghu Udiyar 10 years ago committed by Matt Clay
parent dd6d5f0cb5
commit e6e8f65e92

@ -165,7 +165,16 @@ def create_image(module, ec2):
image_id = ec2.create_image(**params) image_id = ec2.create_image(**params)
except boto.exception.BotoServerError, e: except boto.exception.BotoServerError, e:
module.fail_json(msg = "%s: %s" % (e.error_code, e.error_message)) if e.error_code == 'InvalidAMIName.Duplicate':
images = ec2.get_all_images()
for img in images:
if img.name == name:
module.exit_json(msg="AMI name already present", image_id=img.id, state=img.state, changed=False)
sys.exit(0)
else:
module.fail_json(msg="Error in retrieving duplicate AMI details")
else:
module.fail_json(msg="%s: %s" % (e.error_code, e.error_message))
# Wait until the image is recognized. EC2 API has eventual consistency, # Wait until the image is recognized. EC2 API has eventual consistency,
# such that a successful CreateImage API call doesn't guarantee the success # such that a successful CreateImage API call doesn't guarantee the success

Loading…
Cancel
Save