Browse code

Fix ec2_snapshot_facts for python3

Avoid the following seen when running ec2_ami tests on python3,
presumably because the return type of `map` is different between
python2 and python3.

```
Traceback (most recent call last):
File "/tmp/ansible_e44v27uj/ansible_module_ec2_snapshot_facts.py", line 242, in <module>
main()
File "/tmp/ansible_e44v27uj/ansible_module_ec2_snapshot_facts.py", line 238, in main
list_ec2_snapshots(connection, module)
File "/tmp/ansible_e44v27uj/ansible_module_ec2_snapshot_facts.py", line 193, in list_ec2_snapshots
snapshots = connection.describe_snapshots(SnapshotIds=snapshot_ids, OwnerIds=owner_ids, RestorableByUserIds=restorable_by_user_ids, Filters=filters)
File "/usr/local/lib/python3.5/dist-packages/botocore/client.py", line 312, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/usr/local/lib/python3.5/dist-packages/botocore/client.py", line 575, in _make_api_call
api_params, operation_model, context=request_context)
File "/usr/local/lib/python3.5/dist-packages/botocore/client.py", line 630, in _convert_to_request_dict
api_params, operation_model)
File "/usr/local/lib/python3.5/dist-packages/botocore/validate.py", line 291, in serialize_to_request
raise ParamValidationError(report=report.generate_report())
botocore.exceptions.ParamValidationError: Parameter validation failed:
Invalid type for parameter OwnerIds, value: <map object at 0x7ff577511048>, type: <class 'map'>, valid types: <class 'list'>, <class 'tuple'>
```

https://github.com/ansible/ansible/pull/30435#issuecomment-330750498
(cherry picked from commit 5900fee67a42eba125e4d5ffbf6bb2c34253ad79)

Will Thames authored on 2017/09/25 12:30:23
Showing 1 changed files
... ...
@@ -185,8 +185,8 @@ from ansible.module_utils.ec2 import (ansible_dict_to_boto3_filter_list,
185 185
 def list_ec2_snapshots(connection, module):
186 186
 
187 187
     snapshot_ids = module.params.get("snapshot_ids")
188
-    owner_ids = map(str, module.params.get("owner_ids"))
189
-    restorable_by_user_ids = module.params.get("restorable_by_user_ids")
188
+    owner_ids = [str(owner_id) for owner_id in module.params.get("owner_ids")]
189
+    restorable_by_user_ids = [str(user_id) for user_id in module.params.get("restorable_by_user_ids")]
190 190
     filters = ansible_dict_to_boto3_filter_list(module.params.get("filters"))
191 191
 
192 192
     try: