mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
add boto3_tag_list_to_ansible_dict to ec2_vpc_peering_facts.py, and parameter checking to ec2_vpc_peer.py (#52307)
* add boto3_tag_list_to_ansible_dict to ec2_vpc_peering_facts.py * Add parameter checking to ec2_vpc_peer and give helpful error message * Fixed modules --> module typo in ec2_vpc_peer * Added required_if logic and fixed incorrect boolean check for absent peering connection * Changed error message to one of the following is * Added changelog fragments for ec2_vpc_peer changes * Changed changelog fragment as per request
This commit is contained in:
parent
861446b2a6
commit
1aae196cfa
4 changed files with 24 additions and 2 deletions
|
@ -0,0 +1,2 @@
|
||||||
|
minor_changes:
|
||||||
|
- Added parameter checking before the module attempts to do an action to give helpful error message
|
2
changelogs/fragments/ec2_vpc_peering_facts_tags.yml
Normal file
2
changelogs/fragments/ec2_vpc_peering_facts_tags.yml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
minor_changes:
|
||||||
|
- Changed output of tags dictionary in results to standard Ansible format
|
|
@ -403,11 +403,20 @@ def main():
|
||||||
state=dict(default='present', choices=['present', 'absent', 'accept', 'reject'])
|
state=dict(default='present', choices=['present', 'absent', 'accept', 'reject'])
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
module = AnsibleModule(argument_spec=argument_spec)
|
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)
|
||||||
|
|
||||||
if not HAS_BOTO3:
|
if not HAS_BOTO3:
|
||||||
module.fail_json(msg='json, botocore and boto3 are required.')
|
module.fail_json(msg='json, botocore and boto3 are required.')
|
||||||
state = module.params.get('state')
|
state = module.params.get('state')
|
||||||
|
peering_id = module.params.get('peering_id')
|
||||||
|
vpc_id = module.params.get('vpc_id')
|
||||||
|
peer_vpc_id = module.params.get('peer_vpc_id')
|
||||||
try:
|
try:
|
||||||
region, ec2_url, aws_connect_kwargs = get_aws_connection_info(module, boto3=True)
|
region, ec2_url, aws_connect_kwargs = get_aws_connection_info(module, boto3=True)
|
||||||
client = boto3_conn(module, conn_type='client', resource='ec2',
|
client = boto3_conn(module, conn_type='client', resource='ec2',
|
||||||
|
@ -419,6 +428,9 @@ def main():
|
||||||
(changed, results) = create_peer_connection(client, module)
|
(changed, results) = create_peer_connection(client, module)
|
||||||
module.exit_json(changed=changed, peering_id=results)
|
module.exit_json(changed=changed, peering_id=results)
|
||||||
elif state == 'absent':
|
elif state == 'absent':
|
||||||
|
if not peering_id and (not vpc_id or not peer_vpc_id):
|
||||||
|
module.fail_json(msg='state is absent but one of the following is missing: peering_id or [vpc_id, peer_vpc_id]')
|
||||||
|
|
||||||
remove_peer_connection(client, module)
|
remove_peer_connection(client, module)
|
||||||
else:
|
else:
|
||||||
(changed, results) = accept_reject(state, client, module)
|
(changed, results) = accept_reject(state, client, module)
|
||||||
|
|
|
@ -74,7 +74,8 @@ except ImportError:
|
||||||
pass # will be picked up by imported HAS_BOTO3
|
pass # will be picked up by imported HAS_BOTO3
|
||||||
|
|
||||||
from ansible.module_utils.basic import AnsibleModule
|
from ansible.module_utils.basic import AnsibleModule
|
||||||
from ansible.module_utils.ec2 import (ec2_argument_spec, boto3_conn, get_aws_connection_info,
|
from ansible.module_utils.ec2 import (boto3_tag_list_to_ansible_dict,
|
||||||
|
ec2_argument_spec, boto3_conn, get_aws_connection_info,
|
||||||
ansible_dict_to_boto3_filter_list, HAS_BOTO3, camel_dict_to_snake_dict)
|
ansible_dict_to_boto3_filter_list, HAS_BOTO3, camel_dict_to_snake_dict)
|
||||||
|
|
||||||
|
|
||||||
|
@ -128,8 +129,13 @@ def main():
|
||||||
except botocore.exceptions.NoCredentialsError as e:
|
except botocore.exceptions.NoCredentialsError as e:
|
||||||
module.fail_json(msg=str(e))
|
module.fail_json(msg=str(e))
|
||||||
|
|
||||||
|
# Turn the boto3 result in to ansible friendly_snaked_names
|
||||||
results = [camel_dict_to_snake_dict(peer) for peer in get_vpc_peers(ec2, module)]
|
results = [camel_dict_to_snake_dict(peer) for peer in get_vpc_peers(ec2, module)]
|
||||||
|
|
||||||
|
# Turn the boto3 result in to ansible friendly tag dictionary
|
||||||
|
for peer in results:
|
||||||
|
peer['tags'] = boto3_tag_list_to_ansible_dict(peer.get('tags', []))
|
||||||
|
|
||||||
module.exit_json(result=results)
|
module.exit_json(result=results)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue