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