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 goneri committed Jun 25, 2021
1 parent e508ef4 commit 0c80112
Show file tree
Hide file tree
Showing 11 changed files with 130 additions and 204 deletions.
6 changes: 3 additions & 3 deletions plugins/modules/ec2_vpc_egress_igw.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ def delete_eigw(module, conn, eigw_id):
"""
Delete EIGW.
module : AnsibleModule object
module : AnsibleAWSModule object
conn : boto3 client connection object
eigw_id : ID of the EIGW to delete
"""
Expand Down Expand Up @@ -99,7 +99,7 @@ def create_eigw(module, conn, vpc_id):
"""
Create EIGW.
module : AnsibleModule object
module : AnsibleAWSModule object
conn : boto3 client connection object
vpc_id : ID of the VPC we are operating on
"""
Expand Down Expand Up @@ -139,7 +139,7 @@ def describe_eigws(module, conn, vpc_id):
"""
Describe EIGWs.
module : AnsibleModule object
module : AnsibleAWSModule object
conn : boto3 client connection object
vpc_id : ID of the VPC we are operating on
"""
Expand Down
48 changes: 20 additions & 28 deletions plugins/modules/ec2_vpc_endpoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,17 +183,15 @@
try:
import botocore
except ImportError:
pass # will be picked up by imported HAS_BOTO3

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

from ansible.module_utils.six import string_types

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


def date_handler(obj):
return obj.isoformat() if hasattr(obj, 'isoformat') else obj
Expand Down Expand Up @@ -335,35 +333,29 @@ def setup_removal(client, module):


def main():
argument_spec = ec2_argument_spec()
argument_spec.update(
dict(
vpc_id=dict(),
service=dict(),
policy=dict(type='json'),
policy_file=dict(type='path', aliases=['policy_path']),
state=dict(default='present', choices=['present', 'absent']),
wait=dict(type='bool', default=False),
wait_timeout=dict(type='int', default=320, required=False),
route_table_ids=dict(type='list', elements='str'),
vpc_endpoint_id=dict(),
client_token=dict(),
)
argument_spec = dict(
vpc_id=dict(),
service=dict(),
policy=dict(type='json'),
policy_file=dict(type='path', aliases=['policy_path']),
state=dict(default='present', choices=['present', 'absent']),
wait=dict(type='bool', default=False),
wait_timeout=dict(type='int', default=320, required=False),
route_table_ids=dict(type='list', elements='str'),
vpc_endpoint_id=dict(),
client_token=dict(),
)
module = AnsibleModule(
module = AnsibleAWSModule(
argument_spec=argument_spec,
supports_check_mode=True,
mutually_exclusive=[['policy', 'policy_file']],
required_if=[
['state', 'present', ['vpc_id', 'service']],
['state', 'absent', ['vpc_endpoint_id']],
]
],
)

# Validate Requirements
if not HAS_BOTO3:
module.fail_json(msg='botocore and boto3 are required for this module')

state = module.params.get('state')

try:
Expand Down
33 changes: 12 additions & 21 deletions plugins/modules/ec2_vpc_endpoint_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,17 +111,14 @@
try:
import botocore
except ImportError:
pass # will be picked up from 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,
boto3_conn,
get_aws_connection_info,
ansible_dict_to_boto3_filter_list,
HAS_BOTO3,
camel_dict_to_snake_dict,
AWSRetry,
)
from ansible_collections.amazon.aws.plugins.module_utils.core import AnsibleAWSModule
from ansible_collections.amazon.aws.plugins.module_utils.ec2 import boto3_conn
from ansible_collections.amazon.aws.plugins.module_utils.ec2 import get_aws_connection_info
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
from ansible_collections.amazon.aws.plugins.module_utils.ec2 import AWSRetry


def date_handler(obj):
Expand Down Expand Up @@ -164,23 +161,17 @@ def get_endpoints(client, module):


def main():
argument_spec = ec2_argument_spec()
argument_spec.update(
dict(
query=dict(choices=['services', 'endpoints'], required=True),
filters=dict(default={}, type='dict'),
vpc_endpoint_ids=dict(type='list', elements='str'),
)
argument_spec = dict(
query=dict(choices=['services', 'endpoints'], required=True),
filters=dict(default={}, type='dict'),
vpc_endpoint_ids=dict(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_endpoint_facts':
module.deprecate("The 'ec2_vpc_endpoint_facts' module has been renamed to 'ec2_vpc_endpoint_info'", date='2021-12-01', collection_name='community.aws')

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

try:
region, ec2_url, aws_connect_params = get_aws_connection_info(module, boto3=True)
if region:
Expand Down
29 changes: 10 additions & 19 deletions plugins/modules/ec2_vpc_igw_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,16 +91,13 @@
try:
import botocore
except ImportError:
pass # will be captured 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,
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


def get_internet_gateway_info(internet_gateway):
Expand Down Expand Up @@ -128,22 +125,16 @@ def list_internet_gateways(client, module):


def main():
argument_spec = ec2_argument_spec()
argument_spec.update(
dict(
filters=dict(type='dict', default=dict()),
internet_gateway_ids=dict(type='list', default=None, elements='str')
)
argument_spec = dict(
filters=dict(type='dict', default=dict()),
internet_gateway_ids=dict(type='list', default=None, 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_igw_facts':
module.deprecate("The 'ec2_vpc_igw_facts' module has been renamed to 'ec2_vpc_igw_info'", date='2021-12-01', collection_name='community.aws')

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

try:
region, ec2_url, aws_connect_kwargs = get_aws_connection_info(module, boto3=True)
connection = boto3_conn(module, conn_type='client', resource='ec2', region=region, endpoint=ec2_url, **aws_connect_kwargs)
Expand Down
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
30 changes: 13 additions & 17 deletions plugins/modules/ec2_vpc_peer.py
Original file line number Diff line number Diff line change
Expand Up @@ -219,13 +219,14 @@
try:
import botocore
except ImportError:
pass # caught by imported HAS_BOTO3
pass # Handled by AnsibleAWSModule

import distutils.version
import traceback

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


Expand Down Expand Up @@ -392,28 +393,23 @@ def find_pcx_by_id(pcx_id, client, module):


def main():
argument_spec = ec2_argument_spec()
argument_spec.update(
dict(
vpc_id=dict(),
peer_vpc_id=dict(),
peer_region=dict(),
peering_id=dict(),
peer_owner_id=dict(),
tags=dict(required=False, type='dict'),
state=dict(default='present', choices=['present', 'absent', 'accept', 'reject'])
)
argument_spec = dict(
vpc_id=dict(),
peer_vpc_id=dict(),
peer_region=dict(),
peering_id=dict(),
peer_owner_id=dict(),
tags=dict(required=False, type='dict'),
state=dict(default='present', choices=['present', 'absent', 'accept', 'reject']),
)
required_if = [
('state', 'present', ['vpc_id', 'peer_vpc_id']),
('state', 'accept', ['peering_id']),
('state', 'reject', ['peering_id'])
]

module = AnsibleModule(argument_spec=argument_spec, required_if=required_if)
module = AnsibleAWSModule(argument_spec=argument_spec, required_if=required_if)

if not HAS_BOTO3:
module.fail_json(msg='json, botocore and boto3 are required.')
state = module.params.get('state')
peering_id = module.params.get('peering_id')
vpc_id = module.params.get('vpc_id')
Expand Down
Loading

0 comments on commit 0c80112

Please sign in to comment.