[cloud] make ec2 paging() more functional and add paging to ec2_lc_facts (#27355)
This commit is contained in:
parent
ad2c1e1838
commit
d8eccdda3a
2 changed files with 11 additions and 4 deletions
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue