diff --git a/lib/ansible/modules/cloud/amazon/ec2_ami_find.py b/lib/ansible/modules/cloud/amazon/ec2_ami_find.py
index 2c65e16958372d..b494c18e41a5d5 100644
--- a/lib/ansible/modules/cloud/amazon/ec2_ami_find.py
+++ b/lib/ansible/modules/cloud/amazon/ec2_ami_find.py
@@ -1,19 +1,10 @@
#!/usr/bin/python
-#
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see .
+# Copyright: Ansible Project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
ANSIBLE_METADATA = {'metadata_version': '1.1',
'status': ['preview'],
@@ -293,15 +284,12 @@
sample: "hvm"
'''
-try:
- import boto.ec2
- from boto.ec2.blockdevicemapping import BlockDeviceType, BlockDeviceMapping
- HAS_BOTO=True
-except ImportError:
- HAS_BOTO=False
-
import json
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils.ec2 import HAS_BOTO, ec2_argument_spec, ec2_connect
+
+
def get_block_device_mapping(image):
"""
Retrieves block device mapping from AMI
@@ -451,9 +439,6 @@ def main():
module.exit_json(results=results)
-# import module snippets
-from ansible.module_utils.basic import *
-from ansible.module_utils.ec2 import *
if __name__ == '__main__':
main()
diff --git a/lib/ansible/modules/cloud/amazon/ec2_eip.py b/lib/ansible/modules/cloud/amazon/ec2_eip.py
index db4665f5870e6b..6759a67ec22318 100644
--- a/lib/ansible/modules/cloud/amazon/ec2_eip.py
+++ b/lib/ansible/modules/cloud/amazon/ec2_eip.py
@@ -1,18 +1,10 @@
#!/usr/bin/python
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see .
+# Copyright: Ansible Project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
ANSIBLE_METADATA = {'metadata_version': '1.1',
'status': ['stableinterface'],
@@ -170,10 +162,12 @@
'''
try:
- import boto.ec2
- HAS_BOTO = True
+ import boto.exception
except ImportError:
- HAS_BOTO = False
+ pass # Taken care of by ec2.HAS_BOTO
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils.ec2 import HAS_BOTO, ec2_argument_spec, ec2_connect
class EIPException(Exception):
@@ -338,12 +332,12 @@ def ensure_present(ec2, module, domain, address, private_ip_address, device_id,
raise EIPException("You must set 'in_vpc' to true to associate an instance with an existing ip in a vpc")
# Associate address object (provided or allocated) with instance
assoc_result = associate_ip_and_device(ec2, address, private_ip_address, device_id, allow_reassociation,
- check_mode)
+ check_mode)
else:
instance = find_device(ec2, module, device_id, isinstance=False)
# Associate address object (provided or allocated) with instance
assoc_result = associate_ip_and_device(ec2, address, private_ip_address, device_id, allow_reassociation,
- check_mode, isinstance=False)
+ check_mode, isinstance=False)
if instance.vpc_id:
domain = 'vpc'
@@ -361,10 +355,10 @@ def ensure_absent(ec2, domain, address, device_id, check_mode, isinstance=True):
if device_id:
if isinstance:
return disassociate_ip_and_device(ec2, address, device_id,
- check_mode)
+ check_mode)
else:
return disassociate_ip_and_device(ec2, address, device_id,
- check_mode, isinstance=False)
+ check_mode, isinstance=False)
# releasing address
else:
return release_address(ec2, address, check_mode)
@@ -432,7 +426,8 @@ def main():
if state == 'present':
if device_id:
result = ensure_present(ec2, module, domain, address, private_ip_address, device_id,
- reuse_existing_ip_allowed, allow_reassociation, module.check_mode, isinstance=is_instance)
+ reuse_existing_ip_allowed, allow_reassociation,
+ module.check_mode, isinstance=is_instance)
else:
if address:
changed = False
@@ -459,9 +454,6 @@ def main():
result['warnings'] = warnings
module.exit_json(**result)
-# import module snippets
-from ansible.module_utils.basic import * # noqa
-from ansible.module_utils.ec2 import * # noqa
if __name__ == '__main__':
main()
diff --git a/lib/ansible/modules/cloud/amazon/ec2_key.py b/lib/ansible/modules/cloud/amazon/ec2_key.py
index 756537522dca30..803df7e38f954c 100644
--- a/lib/ansible/modules/cloud/amazon/ec2_key.py
+++ b/lib/ansible/modules/cloud/amazon/ec2_key.py
@@ -1,19 +1,11 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see .
+# Copyright: Ansible Project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
ANSIBLE_METADATA = {'metadata_version': '1.1',
'status': ['stableinterface'],
@@ -110,16 +102,13 @@
name: example
state: absent
'''
-
-try:
- import boto.ec2
- HAS_BOTO = True
-except ImportError:
- HAS_BOTO = False
-
-from ansible.module_utils._text import to_bytes
import random
import string
+import time
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils.ec2 import HAS_BOTO, ec2_argument_spec, ec2_connect
+from ansible.module_utils._text import to_bytes
def main():
@@ -127,10 +116,10 @@ def main():
argument_spec.update(dict(
name=dict(required=True),
key_material=dict(required=False),
- force = dict(required=False, type='bool', default=True),
- state = dict(default='present', choices=['present', 'absent']),
- wait = dict(type='bool', default=False),
- wait_timeout = dict(default=300),
+ force=dict(required=False, type='bool', default=True),
+ state=dict(default='present', choices=['present', 'absent']),
+ wait=dict(type='bool', default=False),
+ wait_timeout=dict(default=300),
)
)
module = AnsibleModule(
@@ -191,7 +180,7 @@ def main():
# find an unused name
test = 'empty'
while test:
- randomchars = [random.choice(string.ascii_letters + string.digits) for x in range(0,10)]
+ randomchars = [random.choice(string.ascii_letters + string.digits) for x in range(0, 10)]
tmpkeyname = "ansible-" + ''.join(randomchars)
test = ec2.get_key_pair(tmpkeyname)
@@ -259,9 +248,6 @@ def main():
else:
module.exit_json(changed=changed, key=None)
-# import module snippets
-from ansible.module_utils.basic import *
-from ansible.module_utils.ec2 import *
if __name__ == '__main__':
main()
diff --git a/lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py b/lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py
index 89747f87848fcf..6c8cd247efc0f9 100644
--- a/lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py
+++ b/lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py
@@ -1,18 +1,10 @@
#!/usr/bin/python
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see .
+# Copyright: Ansible Project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
ANSIBLE_METADATA = {'metadata_version': '1.1',
'status': ['stableinterface'],
@@ -149,11 +141,14 @@
try:
import boto.ec2.cloudwatch
- from boto.ec2.cloudwatch import CloudWatchConnection, MetricAlarm
- from boto.exception import BotoServerError
- HAS_BOTO = True
+ from boto.ec2.cloudwatch import MetricAlarm
+ from boto.exception import BotoServerError, NoAuthHandlerFound
except ImportError:
- HAS_BOTO = False
+ pass # Taken care of by ec2.HAS_BOTO
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils.ec2 import (AnsibleAWSError, HAS_BOTO, connect_to_aws, ec2_argument_spec,
+ get_aws_connection_info)
def create_metric_alarm(connection, module):
@@ -309,7 +304,7 @@ def main():
if region:
try:
connection = connect_to_aws(boto.ec2.cloudwatch, region, **aws_connect_params)
- except (boto.exception.NoAuthHandlerFound, AnsibleAWSError) as e:
+ except (NoAuthHandlerFound, AnsibleAWSError) as e:
module.fail_json(msg=str(e))
else:
module.fail_json(msg="region must be specified")
@@ -320,8 +315,5 @@ def main():
delete_metric_alarm(connection, module)
-from ansible.module_utils.basic import *
-from ansible.module_utils.ec2 import *
-
if __name__ == '__main__':
main()
diff --git a/lib/ansible/modules/cloud/amazon/ec2_scaling_policy.py b/lib/ansible/modules/cloud/amazon/ec2_scaling_policy.py
index 767773aa14c444..e4005145f1df9a 100644
--- a/lib/ansible/modules/cloud/amazon/ec2_scaling_policy.py
+++ b/lib/ansible/modules/cloud/amazon/ec2_scaling_policy.py
@@ -1,18 +1,10 @@
#!/usr/bin/python
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see .
+# Copyright: Ansible Project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
ANSIBLE_METADATA = {'metadata_version': '1.1',
'status': ['stableinterface'],
@@ -75,17 +67,17 @@
cooldown: 300
'''
-
-from ansible.module_utils.basic import *
-from ansible.module_utils.ec2 import *
-
try:
import boto.ec2.autoscale
+ import boto.exception
from boto.ec2.autoscale import ScalingPolicy
from boto.exception import BotoServerError
- HAS_BOTO = True
except ImportError:
- HAS_BOTO = False
+ pass # Taken care of by ec2.HAS_BOTO
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils.ec2 import (AnsibleAWSError, HAS_BOTO, connect_to_aws, ec2_argument_spec,
+ get_aws_connection_info)
def create_scaling_policy(connection, module):
diff --git a/lib/ansible/modules/cloud/amazon/ec2_snapshot.py b/lib/ansible/modules/cloud/amazon/ec2_snapshot.py
index c70d8f0e902314..eca2d3aeefdc14 100644
--- a/lib/ansible/modules/cloud/amazon/ec2_snapshot.py
+++ b/lib/ansible/modules/cloud/amazon/ec2_snapshot.py
@@ -1,18 +1,10 @@
#!/usr/bin/python
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see .
+# Copyright: Ansible Project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
ANSIBLE_METADATA = {'metadata_version': '1.1',
'status': ['preview'],
@@ -124,10 +116,12 @@
import datetime
try:
- import boto.ec2
- HAS_BOTO = True
+ import boto.exception
except ImportError:
- HAS_BOTO = False
+ pass # Taken care of by ec2.HAS_BOTO
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils.ec2 import HAS_BOTO, ec2_argument_spec, ec2_connect
# Find the most recent snapshot
@@ -264,7 +258,7 @@ def create_snapshot_ansible_module():
wait_timeout = dict(type='int', default=0),
last_snapshot_min_age = dict(type='int', default=0),
snapshot_tags = dict(type='dict', default=dict()),
- state = dict(choices=['absent','present'], default='present'),
+ state = dict(choices=['absent', 'present'], default='present'),
)
)
module = AnsibleModule(argument_spec=argument_spec)
@@ -305,9 +299,6 @@ def main():
last_snapshot_min_age=last_snapshot_min_age
)
-# import module snippets
-from ansible.module_utils.basic import *
-from ansible.module_utils.ec2 import *
if __name__ == '__main__':
main()
diff --git a/lib/ansible/modules/cloud/amazon/ec2_vol.py b/lib/ansible/modules/cloud/amazon/ec2_vol.py
index 7302547b508d38..054fcdade8b96a 100644
--- a/lib/ansible/modules/cloud/amazon/ec2_vol.py
+++ b/lib/ansible/modules/cloud/amazon/ec2_vol.py
@@ -1,18 +1,10 @@
#!/usr/bin/python
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see .
+# Copyright: Ansible Project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
ANSIBLE_METADATA = {'metadata_version': '1.1',
'status': ['stableinterface'],
@@ -255,12 +247,17 @@
from distutils.version import LooseVersion
try:
+ import boto
import boto.ec2
+ import boto.exception
from boto.exception import BotoServerError
from boto.ec2.blockdevicemapping import BlockDeviceType, BlockDeviceMapping
- HAS_BOTO = True
except ImportError:
- HAS_BOTO = False
+ pass # Taken care of by ec2.HAS_BOTO
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils.ec2 import (HAS_BOTO, AnsibleAWSError, connect_to_aws, ec2_argument_spec,
+ get_aws_connection_info)
def get_volume(module, ec2):
@@ -635,9 +632,6 @@ def main():
elif state == 'absent':
delete_volume(module, ec2)
-# import module snippets
-from ansible.module_utils.basic import *
-from ansible.module_utils.ec2 import *
if __name__ == '__main__':
main()
diff --git a/lib/ansible/modules/cloud/amazon/ec2_vpc_net.py b/lib/ansible/modules/cloud/amazon/ec2_vpc_net.py
index f44a6e00731489..a1a54d676be902 100644
--- a/lib/ansible/modules/cloud/amazon/ec2_vpc_net.py
+++ b/lib/ansible/modules/cloud/amazon/ec2_vpc_net.py
@@ -1,18 +1,10 @@
#!/usr/bin/python
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see .
+# Copyright: Ansible Project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
ANSIBLE_METADATA = {'metadata_version': '1.1',
'status': ['stableinterface'],
@@ -144,13 +136,14 @@
'''
try:
- import boto
- import boto.ec2
import boto.vpc
- from boto.exception import BotoServerError
- HAS_BOTO=True
+ from boto.exception import BotoServerError, NoAuthHandlerFound
except ImportError:
- HAS_BOTO=False
+ pass # Taken care of by ec2.HAS_BOTO
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils.ec2 import (HAS_BOTO, AnsibleAWSError, boto_exception, connect_to_aws,
+ ec2_argument_spec, get_aws_connection_info)
def vpc_exists(module, vpc, name, cidr_block, multi):
@@ -260,7 +253,7 @@ def main():
if region:
try:
connection = connect_to_aws(boto.vpc, region, **aws_connect_params)
- except (boto.exception.NoAuthHandlerFound, AnsibleAWSError) as e:
+ except (NoAuthHandlerFound, AnsibleAWSError) as e:
module.fail_json(msg=str(e))
else:
module.fail_json(msg="region must be specified")
@@ -336,9 +329,6 @@ def main():
module.exit_json(changed=changed, vpc=get_vpc_values(vpc_obj))
-# import module snippets
-from ansible.module_utils.basic import *
-from ansible.module_utils.ec2 import *
if __name__ == '__main__':
main()
diff --git a/lib/ansible/modules/cloud/amazon/ecs_ecr.py b/lib/ansible/modules/cloud/amazon/ecs_ecr.py
index 640fcfd301e063..de98bb1d9264e0 100644
--- a/lib/ansible/modules/cloud/amazon/ecs_ecr.py
+++ b/lib/ansible/modules/cloud/amazon/ecs_ecr.py
@@ -1,18 +1,10 @@
#!/usr/bin/python
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see .
+# Copyright: Ansible Project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
ANSIBLE_METADATA = {'metadata_version': '1.1',
'status': ['preview'],
@@ -126,19 +118,16 @@
'''
import json
-import time
-import inspect
-
-from ansible.module_utils.basic import *
-from ansible.module_utils.ec2 import *
+import traceback
try:
- import boto3
from botocore.exceptions import ClientError
-
- HAS_BOTO3 = True
except ImportError:
- HAS_BOTO3 = False
+ pass # Taken care of by ec2.HAS_BOTO3
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils.ec2 import (HAS_BOTO3, boto3_conn, boto_exception, ec2_argument_spec,
+ get_aws_connection_info, sort_json_policy_dict)
def build_kwargs(registry_id):
diff --git a/lib/ansible/modules/cloud/amazon/efs.py b/lib/ansible/modules/cloud/amazon/efs.py
index b501d928a4df66..0554607777dcf5 100644
--- a/lib/ansible/modules/cloud/amazon/efs.py
+++ b/lib/ansible/modules/cloud/amazon/efs.py
@@ -1,18 +1,10 @@
#!/usr/bin/python
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see .
+# Copyright: Ansible Project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
ANSIBLE_METADATA = {'metadata_version': '1.1',
'status': ['preview'],
@@ -199,17 +191,21 @@
'''
-import sys
from time import sleep
from time import time as timestamp
-from collections import defaultdict
try:
from botocore.exceptions import ClientError
- import boto3
- HAS_BOTO3 = True
except ImportError as e:
- HAS_BOTO3 = False
+ pass # Taken care of by ec2.HAS_BOTO3
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils.ec2 import (HAS_BOTO3, boto3_conn, camel_dict_to_snake_dict,
+ ec2_argument_spec, get_aws_connection_info)
+
+
+def _index_by_key(key, items):
+ return dict((item[key], item) for item in items)
class EFSConnection(object):
@@ -394,11 +390,8 @@ def converge_file_system(self, name, tags, targets):
lambda: len(self.get_mount_targets_in_state(fs_id, incomplete_states)),
0
)
-
- index_by_subnet_id = lambda items: dict((item['SubnetId'], item) for item in items)
-
- current_targets = index_by_subnet_id(self.get_mount_targets(FileSystemId=fs_id))
- targets = index_by_subnet_id(targets)
+ current_targets = _index_by_key('SubnetId', self.get_mount_targets(FileSystemId=fs_id))
+ targets = _index_by_key('SubnetId', targets)
targets_to_create, intersection, targets_to_delete = dict_diff(current_targets,
targets, True)
@@ -626,8 +619,6 @@ def main():
result = camel_dict_to_snake_dict(result)
module.exit_json(changed=changed, efs=result)
-from ansible.module_utils.basic import *
-from ansible.module_utils.ec2 import *
if __name__ == '__main__':
main()
diff --git a/lib/ansible/modules/cloud/amazon/iam.py b/lib/ansible/modules/cloud/amazon/iam.py
index 224bbd02c92ae4..56c548179d8b65 100644
--- a/lib/ansible/modules/cloud/amazon/iam.py
+++ b/lib/ansible/modules/cloud/amazon/iam.py
@@ -1,18 +1,10 @@
#!/usr/bin/python
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see .
+# Copyright: Ansible Project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
ANSIBLE_METADATA = {'metadata_version': '1.1',
'status': ['stableinterface'],
@@ -162,15 +154,18 @@
'''
import json
-import itertools
-import sys
+import traceback
+
try:
- import boto
+ import boto.exception
import boto.iam
- import boto.ec2
- HAS_BOTO = True
+ import boto.iam.connection
except ImportError:
- HAS_BOTO = False
+ pass # Taken care of by ec2.HAS_BOTO
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils.ec2 import (HAS_BOTO, boto_exception, connect_to_aws, ec2_argument_spec,
+ get_aws_connection_info)
def _paginate(func, attr):
@@ -460,7 +455,6 @@ def set_users_groups(module, iam, name, groups, updated=None,
if ('The group with name %s cannot be found.' % group) in error_msg:
module.fail_json(changed=False, msg="Group %s doesn't exist" % group)
-
if len(remove_groups) > 0 or len(new_groups) > 0:
changed = True
@@ -847,8 +841,6 @@ def main():
module.exit_json(changed=changed, roles=role_list, role_result=role_result,
instance_profile_result=instance_profile_result)
-from ansible.module_utils.basic import *
-from ansible.module_utils.ec2 import *
if __name__ == '__main__':
main()
diff --git a/lib/ansible/modules/cloud/amazon/kinesis_stream.py b/lib/ansible/modules/cloud/amazon/kinesis_stream.py
index 4753c4a91dfb99..349f27cd6e0d1e 100644
--- a/lib/ansible/modules/cloud/amazon/kinesis_stream.py
+++ b/lib/ansible/modules/cloud/amazon/kinesis_stream.py
@@ -1,17 +1,10 @@
#!/usr/bin/python
-#
-# This is a free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This Ansible library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this library. If not, see .
+# Copyright: Ansible Project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
ANSIBLE_METADATA = {'metadata_version': '1.1',
'status': ['preview'],
@@ -150,17 +143,18 @@
}
'''
-try:
- import botocore
- import boto3
- HAS_BOTO3 = True
-except ImportError:
- HAS_BOTO3 = False
-
import re
import datetime
import time
from functools import reduce
+
+try:
+ import botocore.exceptions
+except ImportError:
+ pass # Taken care of by ec2.HAS_BOTO3
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils.ec2 import HAS_BOTO3, boto3_conn, ec2_argument_spec, get_aws_connection_info
from ansible.module_utils._text import to_native
@@ -1178,9 +1172,6 @@ def main():
success=success, changed=changed, msg=err_msg, result=results
)
-# import module snippets
-from ansible.module_utils.basic import *
-from ansible.module_utils.ec2 import *
if __name__ == '__main__':
main()
diff --git a/lib/ansible/modules/cloud/amazon/rds.py b/lib/ansible/modules/cloud/amazon/rds.py
index f33e13812d8284..2ac178b4406005 100644
--- a/lib/ansible/modules/cloud/amazon/rds.py
+++ b/lib/ansible/modules/cloud/amazon/rds.py
@@ -1,18 +1,10 @@
#!/usr/bin/python
-# This file is part of Ansible
-#
-# Ansible is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Ansible is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Ansible. If not, see .
+# Copyright: Ansible Project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
ANSIBLE_METADATA = {'metadata_version': '1.1',
'status': ['stableinterface'],
@@ -517,22 +509,25 @@
sample: "active"
'''
-import sys
import time
-from ansible.module_utils.ec2 import AWSRetry
-
try:
import boto.rds
- HAS_BOTO = True
+ import boto.exception
except ImportError:
- HAS_BOTO = False
+ pass # Taken care of by ec2.HAS_BOTO
try:
import boto.rds2
- has_rds2 = True
+ import boto.rds2.exceptions
+ HAS_RDS2 = True
except ImportError:
- has_rds2 = False
+ HAS_RDS2 = False
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils.ec2 import AWSRetry
+from ansible.module_utils.ec2 import HAS_BOTO, connect_to_aws, ec2_argument_spec, get_aws_connection_info
+
DEFAULT_PORTS = {
'aurora': 3306,
@@ -567,13 +562,13 @@ def __init__(self, module, region, **aws_connect_params):
def get_db_instance(self, instancename):
try:
return RDSDBInstance(self.connection.get_all_dbinstances(instancename)[0])
- except boto.exception.BotoServerError as e:
+ except boto.exception.BotoServerError:
return None
def get_db_snapshot(self, snapshotid):
try:
return RDSSnapshot(self.connection.get_all_dbsnapshots(snapshot_id=snapshotid)[0])
- except boto.exception.BotoServerError as e:
+ except boto.exception.BotoServerError:
return None
def create_db_instance(self, instance_name, size, instance_class, db_engine,
@@ -670,7 +665,7 @@ def get_db_snapshot(self, snapshotid):
)['DescribeDBSnapshotsResponse']['DescribeDBSnapshotsResult']['DBSnapshots']
result = RDS2Snapshot(snapshots[0])
return result
- except boto.rds2.exceptions.DBSnapshotNotFound as e:
+ except boto.rds2.exceptions.DBSnapshotNotFound:
return None
def create_db_instance(self, instance_name, size, instance_class, db_engine,
@@ -785,7 +780,7 @@ def get_data(self):
# ReadReplicaSourceDBInstanceIdentifier may or may not exist
try:
d["replication_source"] = self.instance.ReadReplicaSourceDBInstanceIdentifier
- except Exception as e:
+ except Exception:
d["replication_source"] = None
return d
@@ -955,7 +950,6 @@ def await_resource(conn, resource, status, module):
def create_db_instance(module, conn):
- subnet = module.params.get('subnet')
required_vars = ['instance_name', 'db_engine', 'size', 'instance_type', 'username', 'password']
valid_vars = ['backup_retention', 'backup_window',
'character_set_name', 'db_name', 'engine_version',
@@ -966,7 +960,7 @@ def create_db_instance(module, conn):
valid_vars.append('vpc_security_groups')
else:
valid_vars.append('security_groups')
- if has_rds2:
+ if HAS_RDS2:
valid_vars.extend(['publicly_accessible', 'tags'])
params = validate_parameters(required_vars, valid_vars, module)
instance_name = module.params.get('instance_name')
@@ -994,7 +988,7 @@ def create_db_instance(module, conn):
def replicate_db_instance(module, conn):
required_vars = ['instance_name', 'source_instance']
valid_vars = ['instance_type', 'port', 'upgrade', 'zone']
- if has_rds2:
+ if HAS_RDS2:
valid_vars.extend(['iops', 'option_group', 'publicly_accessible', 'tags'])
params = validate_parameters(required_vars, valid_vars, module)
instance_name = module.params.get('instance_name')
@@ -1037,7 +1031,7 @@ def delete_db_instance_or_snapshot(module, conn):
if instance_name:
if snapshot:
params["skip_final_snapshot"] = False
- if has_rds2:
+ if HAS_RDS2:
params["final_db_snapshot_identifier"] = snapshot
else:
params["final_snapshot_id"] = snapshot
@@ -1054,7 +1048,7 @@ def delete_db_instance_or_snapshot(module, conn):
if not module.params.get('wait'):
module.exit_json(changed=True)
try:
- resource = await_resource(conn, result, 'deleted', module)
+ await_resource(conn, result, 'deleted', module)
module.exit_json(changed=True)
except RDSException as e:
if e.code == 'DBInstanceNotFound':
@@ -1066,9 +1060,6 @@ def delete_db_instance_or_snapshot(module, conn):
def facts_db_instance_or_snapshot(module, conn):
- required_vars = []
- valid_vars = ['instance_name', 'snapshot']
- params = validate_parameters(required_vars, valid_vars, module)
instance_name = module.params.get('instance_name')
snapshot = module.params.get('snapshot')
@@ -1177,7 +1168,7 @@ def reboot_db_instance(module, conn):
required_vars = ['instance_name']
valid_vars = []
- if has_rds2:
+ if HAS_RDS2:
valid_vars.append('force_failover')
params = validate_parameters(required_vars, valid_vars, module)
@@ -1203,7 +1194,7 @@ def restore_db_instance(module, conn):
valid_vars = ['db_name', 'iops', 'license_model', 'multi_zone',
'option_group', 'port', 'publicly_accessible',
'subnet', 'tags', 'upgrade', 'zone']
- if has_rds2:
+ if HAS_RDS2:
valid_vars.append('instance_type')
else:
required_vars.append('instance_type')
@@ -1272,7 +1263,7 @@ def validate_parameters(required_vars, valid_vars, module):
'new_instance_name': 'new_db_instance_identifier',
'force_failover': 'force_failover',
}
- if has_rds2:
+ if HAS_RDS2:
optional_params.update(optional_params_rds2)
sec_group = 'db_security_groups'
else:
@@ -1299,7 +1290,7 @@ def validate_parameters(required_vars, valid_vars, module):
vpc_groups = module.params.get('vpc_security_groups')
if vpc_groups:
- if has_rds2:
+ if HAS_RDS2:
params['vpc_security_group_ids'] = vpc_groups
else:
groups_list = []
@@ -1385,16 +1376,13 @@ def main():
module.params['port'] = DEFAULT_PORTS[engine.lower()]
# connect to the rds endpoint
- if has_rds2:
+ if HAS_RDS2:
conn = RDS2Connection(module, region, **aws_connect_params)
else:
conn = RDSConnection(module, region, **aws_connect_params)
invocations[module.params.get('command')](module, conn)
-# import module snippets
-from ansible.module_utils.basic import *
-from ansible.module_utils.ec2 import *
if __name__ == '__main__':
main()
diff --git a/lib/ansible/modules/cloud/amazon/redshift.py b/lib/ansible/modules/cloud/amazon/redshift.py
index 585aa58a95bc70..c5ea2936e5333c 100644
--- a/lib/ansible/modules/cloud/amazon/redshift.py
+++ b/lib/ansible/modules/cloud/amazon/redshift.py
@@ -1,19 +1,11 @@
#!/usr/bin/python
# Copyright 2014 Jens Carl, Hothead Games Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
ANSIBLE_METADATA = {'metadata_version': '1.1',
'status': ['preview'],
@@ -232,11 +224,13 @@
import time
try:
- import boto
- from boto import redshift
- HAS_BOTO = True
+ import boto.exception
+ import boto.redshift
except ImportError:
- HAS_BOTO = False
+ pass # Taken care of by ec2.HAS_BOTO
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils.ec2 import HAS_BOTO, connect_to_aws, ec2_argument_spec, get_aws_connection_info
def _collect_facts(resource):
@@ -507,9 +501,6 @@ def main():
module.exit_json(changed=changed, cluster=cluster)
-# import module snippets
-from ansible.module_utils.basic import *
-from ansible.module_utils.ec2 import *
if __name__ == '__main__':
main()
diff --git a/test/sanity/code-smell/no-wildcard-import.sh b/test/sanity/code-smell/no-wildcard-import.sh
index 4eb1e18b3c07e9..141b104a9455ea 100755
--- a/test/sanity/code-smell/no-wildcard-import.sh
+++ b/test/sanity/code-smell/no-wildcard-import.sh
@@ -18,7 +18,6 @@ wildcard_imports=$(find . -path ./test/runner/.tox -prune \
-o -path ./lib/ansible/compat/tests/mock.py -prune \
-o -path ./lib/ansible/compat/tests/unittest.py \
-o -path ./test/units/modules/network/cumulus/test_nclu.py -prune \
- -o -path ./lib/ansible/modules/cloud/amazon -prune \
-o -path ./lib/ansible/modules/cloud/openstack -prune \
-o -path ./lib/ansible/modules/cloud/cloudstack -prune \
-o -path ./lib/ansible/modules/network/f5 -prune \
diff --git a/test/sanity/pep8/legacy-files.txt b/test/sanity/pep8/legacy-files.txt
index 69faa3904b09a4..823aafd5656ac8 100644
--- a/test/sanity/pep8/legacy-files.txt
+++ b/test/sanity/pep8/legacy-files.txt
@@ -17,9 +17,7 @@ lib/ansible/modules/cloud/amazon/cloudfront_facts.py
lib/ansible/modules/cloud/amazon/dynamodb_table.py
lib/ansible/modules/cloud/amazon/ec2_ami_copy.py
lib/ansible/modules/cloud/amazon/ec2_ami_find.py
-lib/ansible/modules/cloud/amazon/ec2_eip.py
lib/ansible/modules/cloud/amazon/ec2_eni_facts.py
-lib/ansible/modules/cloud/amazon/ec2_key.py
lib/ansible/modules/cloud/amazon/ec2_lc_facts.py
lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py
lib/ansible/modules/cloud/amazon/ec2_scaling_policy.py
@@ -41,7 +39,6 @@ lib/ansible/modules/cloud/amazon/ecs_service.py
lib/ansible/modules/cloud/amazon/ecs_service_facts.py
lib/ansible/modules/cloud/amazon/ecs_task.py
lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py
-lib/ansible/modules/cloud/amazon/efs.py
lib/ansible/modules/cloud/amazon/elasticache_subnet_group.py
lib/ansible/modules/cloud/amazon/elb_instance.py
lib/ansible/modules/cloud/amazon/elb_classic_lb.py