From 29626edf36b6c0e32b54ea30aea5da98c0277c9a Mon Sep 17 00:00:00 2001 From: Jill Rouleau Date: Wed, 28 Jul 2021 16:45:56 -0700 Subject: [PATCH] facts modules should be symlinks --- plugins/modules/ec2_vpc_igw_facts.py | 185 +-------------------------- 1 file changed, 1 insertion(+), 184 deletions(-) mode change 100644 => 120000 plugins/modules/ec2_vpc_igw_facts.py diff --git a/plugins/modules/ec2_vpc_igw_facts.py b/plugins/modules/ec2_vpc_igw_facts.py deleted file mode 100644 index aea45038dd8..00000000000 --- a/plugins/modules/ec2_vpc_igw_facts.py +++ /dev/null @@ -1,184 +0,0 @@ -#!/usr/bin/python -# 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 - - -DOCUMENTATION = r''' ---- -module: ec2_vpc_igw_info -version_added: 1.0.0 -short_description: Gather information about internet gateways in AWS -description: - - Gather information about internet gateways in AWS. - - This module was called C(ec2_vpc_igw_facts) before Ansible 2.9. The usage did not change. -author: "Nick Aslanidis (@naslanidis)" -options: - filters: - description: - - A dict of filters to apply. Each dict item consists of a filter key and a filter value. - See U(https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInternetGateways.html) for possible filters. - type: dict - internet_gateway_ids: - description: - - Get details of specific Internet Gateway ID. Provide this value as a list. - type: list - elements: str - convert_tags: - description: - - Convert tags from boto3 format (list of dictionaries) to the standard dictionary format. - - This currently defaults to C(False). The default will be changed to C(True) after 2022-06-22. - type: bool - version_added: 1.3.0 -extends_documentation_fragment: -- amazon.aws.aws -- amazon.aws.ec2 - -''' - -EXAMPLES = r''' -# # Note: These examples do not set authentication details, see the AWS Guide for details. - -- name: Gather information about all Internet Gateways for an account or profile - amazon.aws.ec2_vpc_igw_info: - region: ap-southeast-2 - profile: production - register: igw_info - -- name: Gather information about a filtered list of Internet Gateways - amazon.aws.ec2_vpc_igw_info: - region: ap-southeast-2 - profile: production - filters: - "tag:Name": "igw-123" - register: igw_info - -- name: Gather information about a specific internet gateway by InternetGatewayId - amazon.aws.ec2_vpc_igw_info: - region: ap-southeast-2 - profile: production - internet_gateway_ids: igw-c1231234 - register: igw_info -''' - -RETURN = r''' -changed: - description: True if listing the internet gateways succeeds. - type: bool - returned: always - sample: "false" -internet_gateways: - description: The internet gateways for the account. - returned: always - type: complex - contains: - attachments: - description: Any VPCs attached to the internet gateway - returned: I(state=present) - type: complex - contains: - state: - description: The current state of the attachment - returned: I(state=present) - type: str - sample: available - vpc_id: - description: The ID of the VPC. - returned: I(state=present) - type: str - sample: vpc-02123b67 - internet_gateway_id: - description: The ID of the internet gateway - returned: I(state=present) - type: str - sample: igw-2123634d - tags: - description: Any tags assigned to the internet gateway - returned: I(state=present) - type: dict - sample: - tags: - "Ansible": "Test" -''' - -try: - import botocore -except ImportError: - pass # Handled by AnsibleAWSModule - -from ansible_collections.amazon.aws.plugins.module_utils.core import AnsibleAWSModule -from ansible_collections.amazon.aws.plugins.module_utils.core import is_boto3_error_code -from ansible_collections.amazon.aws.plugins.module_utils.ec2 import AWSRetry -from ansible_collections.amazon.aws.plugins.module_utils.ec2 import boto3_tag_list_to_ansible_dict -from ansible_collections.amazon.aws.plugins.module_utils.ec2 import ansible_dict_to_boto3_filter_list -from ansible_collections.amazon.aws.plugins.module_utils.ec2 import camel_dict_to_snake_dict - - -def get_internet_gateway_info(internet_gateway, convert_tags): - if convert_tags: - tags = boto3_tag_list_to_ansible_dict(internet_gateway['Tags']) - ignore_list = ["Tags"] - else: - tags = internet_gateway['Tags'] - ignore_list = [] - internet_gateway_info = {'InternetGatewayId': internet_gateway['InternetGatewayId'], - 'Attachments': internet_gateway['Attachments'], - 'Tags': tags} - - internet_gateway_info = camel_dict_to_snake_dict(internet_gateway_info, ignore_list=ignore_list) - return internet_gateway_info - - -def list_internet_gateways(connection, module): - params = dict() - - params['Filters'] = ansible_dict_to_boto3_filter_list(module.params.get('filters')) - convert_tags = module.params.get('convert_tags') - - if module.params.get("internet_gateway_ids"): - params['InternetGatewayIds'] = module.params.get("internet_gateway_ids") - - try: - all_internet_gateways = connection.describe_internet_gateways(aws_retry=True, **params) - except is_boto3_error_code('InvalidInternetGatewayID.NotFound'): - module.fail_json('InternetGateway not found') - except (botocore.exceptions.ClientError, botocore.exceptions.BotoCoreError) as e: # pylint: disable=duplicate-except - module.fail_json_aws(e, 'Unable to describe internet gateways') - - return [get_internet_gateway_info(igw, convert_tags) - for igw in all_internet_gateways['InternetGateways']] - - -def main(): - argument_spec = dict( - filters=dict(type='dict', default=dict()), - internet_gateway_ids=dict(type='list', default=None, elements='str'), - convert_tags=dict(type='bool'), - ) - - module = AnsibleAWSModule(argument_spec=argument_spec, supports_check_mode=True) - if module._name == 'ec2_vpc_igw_facts': - module.deprecate("The 'ec2_vpc_igw_facts' module has been renamed to 'ec2_vpc_igw_info'", date='2021-12-01', collection_name='amazon.aws') - - if module.params.get('convert_tags') is None: - module.deprecate('This module currently returns boto3 style tags by default. ' - 'This default has been deprecated and the module will return a simple dictionary in future. ' - 'This behaviour can be controlled through the convert_tags parameter.', - date='2021-12-01', collection_name='amazon.aws') - - # Validate Requirements - try: - connection = module.client('ec2', retry_decorator=AWSRetry.jittered_backoff()) - except (botocore.exceptions.ClientError, botocore.exceptions.BotoCoreError) as e: - module.fail_json_aws(e, msg='Failed to connect to AWS') - - # call your function here - results = list_internet_gateways(connection, module) - - module.exit_json(internet_gateways=results) - - -if __name__ == '__main__': - main() diff --git a/plugins/modules/ec2_vpc_igw_facts.py b/plugins/modules/ec2_vpc_igw_facts.py new file mode 120000 index 00000000000..b3eeb3fee6e --- /dev/null +++ b/plugins/modules/ec2_vpc_igw_facts.py @@ -0,0 +1 @@ +ec2_vpc_igw_info.py \ No newline at end of file