Fix parameters check for ec2_vol

Split the error check into two error checks and delay the
checks so that listing existing volumes works more nicely.

The error check should check that:
* One and only one of volume_size id or name is set

This fix adds the 'only one' part of that check and provides
more useful error messages.
This commit is contained in:
willthames 2014-05-15 12:14:05 +10:00
parent 5ae08e1699
commit 5abeeef577

View file

@ -325,9 +325,6 @@ def main():
if id and name: if id and name:
module.fail_json(msg="Both id and name cannot be specified") module.fail_json(msg="Both id and name cannot be specified")
if not (id or name or volume_size):
module.fail_json(msg="Cannot specify volume_size and either one of name or id")
# Here we need to get the zone info for the instance. This covers situation where # Here we need to get the zone info for the instance. This covers situation where
# instance is specified but zone isn't. # instance is specified but zone isn't.
# Useful for playbooks chaining instance launch with volume create + attach and where the # Useful for playbooks chaining instance launch with volume create + attach and where the
@ -345,6 +342,15 @@ def main():
device=device_name, device=device_name,
changed=False) changed=False)
# Delaying the checks until after the instance check allows us to get volume ids for existing volumes
# without needing to pass an unused volume_size
if not volume_size and not (id or name):
module.fail_json(msg="You must specify an existing volume with id or name or a volume_size")
if volume_size and (id or name):
module.fail_json(msg="Cannot specify volume_size and either one of name or id")
if state == 'absent': if state == 'absent':
delete_volume(module, ec2) delete_volume(module, ec2)
else: else: