Skip to content

Commit

Permalink
Bulk migration to AnsibleAWSModule (ansible-collections#173)
Browse files Browse the repository at this point in the history
* Update comments to reference AnsibleAWSModule rather than AnsibleModule
* Bulk re-order imports and split onto one from import per-line.
* Add AnsibleAWSModule imports
* Migrate boto 2 based modules to AnsibleAWSModule
* Move boto3-only modules over to AnsibleAWSModule
* Remove extra ec2_argument_spec calls - not needed now we're using AnsibleAWSModule
* Remove most HAS_BOTO3 code, it's handled by AnsibleAWSModule
* Handle missing Boto 2 consistently  (HAS_BOTO)
* Remove AnsibleModule imports
* Changelog fragment

This commit was initially merged in https://github.com/ansible-collections/community.aws
See: ansible-collections/community.aws@818c6d2
  • Loading branch information
tremble authored and alinabuzachis committed Jul 14, 2021
1 parent 75ae582 commit 38691d8
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 50 deletions.
46 changes: 18 additions & 28 deletions plugins/modules/ec2_vpc_nat_gateway.py
Original file line number Diff line number Diff line change
Expand Up @@ -202,15 +202,12 @@
try:
import botocore
except ImportError:
pass # caught by imported HAS_BOTO3
pass # Handled by AnsibleAWSModule

from ansible.module_utils.basic import AnsibleModule
from ansible_collections.amazon.aws.plugins.module_utils.ec2 import (ec2_argument_spec,
get_aws_connection_info,
boto3_conn,
camel_dict_to_snake_dict,
HAS_BOTO3,
)
from ansible_collections.amazon.aws.plugins.module_utils.core import AnsibleAWSModule
from ansible_collections.amazon.aws.plugins.module_utils.ec2 import get_aws_connection_info
from ansible_collections.amazon.aws.plugins.module_utils.ec2 import boto3_conn
from ansible_collections.amazon.aws.plugins.module_utils.ec2 import camel_dict_to_snake_dict


DRY_RUN_GATEWAYS = [
Expand Down Expand Up @@ -933,35 +930,28 @@ def remove(client, nat_gateway_id, wait=False, wait_timeout=0,


def main():
argument_spec = ec2_argument_spec()
argument_spec.update(
dict(
subnet_id=dict(type='str'),
eip_address=dict(type='str'),
allocation_id=dict(type='str'),
if_exist_do_not_create=dict(type='bool', default=False),
state=dict(default='present', choices=['present', 'absent']),
wait=dict(type='bool', default=False),
wait_timeout=dict(type='int', default=320, required=False),
release_eip=dict(type='bool', default=False),
nat_gateway_id=dict(type='str'),
client_token=dict(type='str'),
)
argument_spec = dict(
subnet_id=dict(type='str'),
eip_address=dict(type='str'),
allocation_id=dict(type='str'),
if_exist_do_not_create=dict(type='bool', default=False),
state=dict(default='present', choices=['present', 'absent']),
wait=dict(type='bool', default=False),
wait_timeout=dict(type='int', default=320, required=False),
release_eip=dict(type='bool', default=False),
nat_gateway_id=dict(type='str'),
client_token=dict(type='str'),
)
module = AnsibleModule(
module = AnsibleAWSModule(
argument_spec=argument_spec,
supports_check_mode=True,
mutually_exclusive=[
['allocation_id', 'eip_address']
],
required_if=[['state', 'absent', ['nat_gateway_id']],
['state', 'present', ['subnet_id']]]
['state', 'present', ['subnet_id']]],
)

# Validate Requirements
if not HAS_BOTO3:
module.fail_json(msg='botocore/boto3 is required.')

state = module.params.get('state').lower()
check_mode = module.check_mode
subnet_id = module.params.get('subnet_id')
Expand Down
34 changes: 12 additions & 22 deletions plugins/modules/ec2_vpc_nat_gateway_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,17 +81,14 @@
try:
import botocore
except ImportError:
pass # will be detected by imported HAS_BOTO3
pass # Handled by AnsibleAWSModule

from ansible.module_utils.basic import AnsibleModule
from ansible_collections.amazon.aws.plugins.module_utils.ec2 import (ec2_argument_spec,
get_aws_connection_info,
boto3_conn,
camel_dict_to_snake_dict,
ansible_dict_to_boto3_filter_list,
boto3_tag_list_to_ansible_dict,
HAS_BOTO3,
)
from ansible_collections.amazon.aws.plugins.module_utils.core import AnsibleAWSModule
from ansible_collections.amazon.aws.plugins.module_utils.ec2 import get_aws_connection_info
from ansible_collections.amazon.aws.plugins.module_utils.ec2 import boto3_conn
from ansible_collections.amazon.aws.plugins.module_utils.ec2 import camel_dict_to_snake_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 boto3_tag_list_to_ansible_dict


def date_handler(obj):
Expand Down Expand Up @@ -123,24 +120,17 @@ def get_nat_gateways(client, module, nat_gateway_id=None):


def main():
argument_spec = ec2_argument_spec()
argument_spec.update(
dict(
filters=dict(default={}, type='dict'),
nat_gateway_ids=dict(default=[], type='list', elements='str'),
)
argument_spec = dict(
filters=dict(default={}, type='dict'),
nat_gateway_ids=dict(default=[], type='list', elements='str'),
)

module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True)
module = AnsibleAWSModule(argument_spec=argument_spec,
supports_check_mode=True,)
if module._name == 'ec2_vpc_nat_gateway_facts':
module.deprecate("The 'ec2_vpc_nat_gateway_facts' module has been renamed to 'ec2_vpc_nat_gateway_info'",
date='2021-12-01', collection_name='community.aws')

# Validate Requirements
if not HAS_BOTO3:
module.fail_json(msg='botocore/boto3 is required.')

try:
region, ec2_url, aws_connect_params = get_aws_connection_info(module, boto3=True)
if region:
Expand Down

0 comments on commit 38691d8

Please sign in to comment.