Allow filtering by availability zone for exact_count with ec2

Fixes #8863
reviewable/pr18780/r1
James Cammarata 10 years ago
parent a50258d26a
commit 633f86d30a

@ -483,10 +483,10 @@ except ImportError:
print "failed=True msg='boto required for this module'" print "failed=True msg='boto required for this module'"
sys.exit(1) sys.exit(1)
def find_running_instances_by_count_tag(module, ec2, count_tag): def find_running_instances_by_count_tag(module, ec2, count_tag, zone=None):
# get reservations for instances that match tag(s) and are running # get reservations for instances that match tag(s) and are running
reservations = get_reservations(module, ec2, tags=count_tag, state="running") reservations = get_reservations(module, ec2, tags=count_tag, state="running", zone=zone)
instances = [] instances = []
for res in reservations: for res in reservations:
@ -507,7 +507,7 @@ def _set_none_to_blank(dictionary):
return result return result
def get_reservations(module, ec2, tags=None, state=None): def get_reservations(module, ec2, tags=None, state=None, zone=None):
# TODO: filters do not work with tags that have underscores # TODO: filters do not work with tags that have underscores
filters = dict() filters = dict()
@ -542,6 +542,9 @@ def get_reservations(module, ec2, tags=None, state=None):
# http://stackoverflow.com/questions/437511/what-are-the-valid-instancestates-for-the-amazon-ec2-api # http://stackoverflow.com/questions/437511/what-are-the-valid-instancestates-for-the-amazon-ec2-api
filters.update({'instance-state-name': state}) filters.update({'instance-state-name': state})
if zone:
filters.update({'availability-zone': zone})
results = ec2.get_all_instances(filters=filters) results = ec2.get_all_instances(filters=filters)
return results return results
@ -655,8 +658,9 @@ def enforce_count(module, ec2):
exact_count = module.params.get('exact_count') exact_count = module.params.get('exact_count')
count_tag = module.params.get('count_tag') count_tag = module.params.get('count_tag')
zone = module.params.get('zone')
reservations, instances = find_running_instances_by_count_tag(module, ec2, count_tag) reservations, instances = find_running_instances_by_count_tag(module, ec2, count_tag, zone)
changed = None changed = None
checkmode = False checkmode = False

Loading…
Cancel
Save