Allow filtering by availability zone for exact_count with ec2
Fixes #8863
This commit is contained in:
parent
a50258d26a
commit
633f86d30a
1 changed files with 8 additions and 4 deletions
12
cloud/ec2
12
cloud/ec2
|
@ -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…
Reference in a new issue