[cloud] make ec2 paging() more functional and add paging to ec2_lc_facts (#27355)

This commit is contained in:
Sloane Hertel 2017-08-01 15:06:46 -04:00 committed by Ryan Brown
parent ad2c1e1838
commit d8eccdda3a
2 changed files with 11 additions and 4 deletions

View file

@ -312,7 +312,7 @@ def ec2_connect(module):
return ec2 return ec2
def paging(pause=0, marker_property='marker'): def paging(pause=0, marker_property='marker', result_key=None):
""" Adds paging to boto retrieval functions that support a 'marker' """ Adds paging to boto retrieval functions that support a 'marker'
this is configurable as not all boto functions seem to use the this is configurable as not all boto functions seem to use the
same name. same name.
@ -323,8 +323,12 @@ def paging(pause=0, marker_property='marker'):
marker = None marker = None
while True: while True:
try: try:
new = f(*args, marker=marker, **kwargs) if marker:
marker = getattr(new, marker_property) kwargs[marker_property] = marker
new = f(*args, **kwargs)
marker = new.get(marker_property)
if result_key:
new = new[result_key]
results.extend(new) results.extend(new)
if not marker: if not marker:
break break

View file

@ -170,6 +170,8 @@ try:
except ImportError: except ImportError:
HAS_BOTO3 = False HAS_BOTO3 = False
from ansible.module_utils.ec2 import paging
def list_launch_configs(connection, module): def list_launch_configs(connection, module):
@ -180,7 +182,8 @@ def list_launch_configs(connection, module):
sort_end = module.params.get('sort_end') sort_end = module.params.get('sort_end')
try: try:
launch_configs = connection.describe_launch_configurations(LaunchConfigurationNames=launch_config_name) launch_configs = {'LaunchConfigurations': paging(pause=0, marker_property='NextToken', result_key='LaunchConfigurations')
(connection.describe_launch_configurations)(LaunchConfigurationNames=launch_config_name)}
except ClientError as e: except ClientError as e:
module.fail_json(msg=e.message) module.fail_json(msg=e.message)