Fix ec2 filter dict iteration for python3.8 (#65521)

Python now throws a RuntimeError if dict keys are modified mid-iteration.
https://bugs.python.org/issue36452
Cast filter dicts to list before iteration.

Fixes: 65024
Related: 65434
This commit is contained in:
Jill R 2019-12-05 03:02:59 -07:00 committed by ansibot
parent c266fc3b74
commit 7d3cc250ef
2 changed files with 2 additions and 2 deletions

View file

@ -1393,7 +1393,7 @@ def find_instances(ec2, ids=None, filters=None):
elif filters is None:
module.fail_json(msg="No filters provided when they were required")
elif filters is not None:
for key in filters.keys():
for key in list(filters.keys()):
if not key.startswith("tag:"):
filters[key.replace("_", "-")] = filters.pop(key)
return list(paginator.paginate(

View file

@ -108,7 +108,7 @@ def list_ec2_volumes(connection, module, region):
# Replace filter key underscores with dashes, for compatibility, except if we're dealing with tags
sanitized_filters = module.params.get("filters")
for key in sanitized_filters:
for key in list(sanitized_filters):
if not key.startswith("tag:"):
sanitized_filters[key.replace("_", "-")] = sanitized_filters.pop(key)
volume_dict_array = []