ec2_vol: fix race conditions because we handle errors before actually deleting
Just try to delete the volume and handle the error amazon sends
This commit is contained in:
parent
9babe9b07d
commit
b154ad4cbb
1 changed files with 8 additions and 9 deletions
|
@ -239,15 +239,14 @@ def get_volumes(module, ec2):
|
||||||
return vols
|
return vols
|
||||||
|
|
||||||
def delete_volume(module, ec2):
|
def delete_volume(module, ec2):
|
||||||
vol = get_volume(module, ec2)
|
volume_id = module.params['id']
|
||||||
if not vol:
|
try:
|
||||||
module.exit_json(changed=False)
|
ec2.delete_volume(volume_id)
|
||||||
else:
|
|
||||||
if vol.attachment_state() is not None:
|
|
||||||
adata = vol.attach_data
|
|
||||||
module.fail_json(msg="Volume %s is attached to an instance %s." % (vol.id, adata.instance_id))
|
|
||||||
ec2.delete_volume(vol.id)
|
|
||||||
module.exit_json(changed=True)
|
module.exit_json(changed=True)
|
||||||
|
except boto.exception.EC2ResponseError as ec2_error:
|
||||||
|
if ec2_error.code == 'InvalidVolume.NotFound':
|
||||||
|
module.exit_json(changed=False)
|
||||||
|
module.fail_json(msg=ec2_error.message)
|
||||||
|
|
||||||
def boto_supports_volume_encryption():
|
def boto_supports_volume_encryption():
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in a new issue