mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-10-24 04:54:00 -07:00
[cloud] New module: Amazon Egress-Only Internet Gateway (ec2_vpc_egress_igw) (#23941)
* New module: ec2_vpc_egress_igw * minor pep8 fix and doc update * add test dir and files * add tests for gateway module * fix up return documentation per review * remove HAS_BOTO3 stuff as it is handled in AnsibleAWSModule per review * fix an error with failure message and add custom handler for non-existent vpc ID * add additional tests and update tests per review * ignore errors on clean up tasks * update module copyright to newer format * fix exception handling since BotoCoreError doesnt have response attribute * actually fix exception handling this time so it works with Py3 as well
This commit is contained in:
parent
f849dc9cad
commit
892fc41190
3 changed files with 307 additions and 0 deletions
2
test/integration/targets/ec2_vpc_egress_igw/aliases
Normal file
2
test/integration/targets/ec2_vpc_egress_igw/aliases
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
cloud/aws
|
||||
posix/ci/cloud/group4/aws
|
||||
112
test/integration/targets/ec2_vpc_egress_igw/tasks/main.yml
Normal file
112
test/integration/targets/ec2_vpc_egress_igw/tasks/main.yml
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
---
|
||||
- block:
|
||||
|
||||
# ============================================================
|
||||
- name: test failure with no parameters
|
||||
ec2_vpc_egress_igw:
|
||||
register: result
|
||||
ignore_errors: true
|
||||
|
||||
- name: assert failure with no parameters
|
||||
assert:
|
||||
that:
|
||||
- 'result.failed'
|
||||
- 'result.msg == "missing required arguments: vpc_id"'
|
||||
|
||||
# ============================================================
|
||||
- name: set up aws connection info
|
||||
set_fact:
|
||||
aws_connection_info: &aws_connection_info
|
||||
aws_access_key: "{{ aws_access_key }}"
|
||||
aws_secret_key: "{{ aws_secret_key }}"
|
||||
security_token: "{{ security_token }}"
|
||||
region: "{{ aws_region }}"
|
||||
no_log: yes
|
||||
|
||||
# ============================================================
|
||||
- name: test failure with non-existent VPC ID
|
||||
ec2_vpc_egress_igw:
|
||||
state: present
|
||||
vpc_id: vpc-012345678
|
||||
<<: *aws_connection_info
|
||||
register: result
|
||||
ignore_errors: true
|
||||
|
||||
- name: assert failure with non-existent VPC ID
|
||||
assert:
|
||||
that:
|
||||
- 'result.failed'
|
||||
- 'result.error.code == "InvalidVpcID.NotFound"'
|
||||
- '"invalid vpc ID" in result.msg'
|
||||
|
||||
# ============================================================
|
||||
- name: create a VPC
|
||||
ec2_vpc_net:
|
||||
name: "{{ resource_prefix }}-vpc"
|
||||
state: present
|
||||
cidr_block: "10.232.232.128/26"
|
||||
<<: *aws_connection_info
|
||||
tags:
|
||||
Name: "{{ resource_prefix }}-vpc"
|
||||
Description: "Created by ansible-test"
|
||||
register: vpc_result
|
||||
|
||||
# ============================================================
|
||||
- name: create egress-only internet gateway (expected changed=true)
|
||||
ec2_vpc_egress_igw:
|
||||
state: present
|
||||
vpc_id: "{{ vpc_result.vpc.id }}"
|
||||
<<: *aws_connection_info
|
||||
register: vpc_eigw_create
|
||||
|
||||
- name: assert creation happened (expected changed=true)
|
||||
assert:
|
||||
that:
|
||||
- 'vpc_eigw_create'
|
||||
- 'vpc_eigw_create.gateway_id.startswith("eigw-")'
|
||||
- 'vpc_eigw_create.vpc_id == vpc_result.vpc.id'
|
||||
|
||||
# ============================================================
|
||||
- name: attempt to recreate egress-only internet gateway on VPC (expected changed=false)
|
||||
ec2_vpc_egress_igw:
|
||||
state: present
|
||||
vpc_id: "{{ vpc_result.vpc.id }}"
|
||||
<<: *aws_connection_info
|
||||
register: vpc_eigw_recreate
|
||||
|
||||
- name: assert recreation did nothing (expected changed=false)
|
||||
assert:
|
||||
that:
|
||||
- 'vpc_eigw_recreate.changed == False'
|
||||
- 'vpc_eigw_recreate.gateway_id == vpc_eigw_create.gateway_id'
|
||||
- 'vpc_eigw_recreate.vpc_id == vpc_eigw_create.vpc_id'
|
||||
|
||||
# ============================================================
|
||||
- name: test state=absent (expected changed=true)
|
||||
ec2_vpc_egress_igw:
|
||||
state: absent
|
||||
vpc_id: "{{ vpc_result.vpc.id }}"
|
||||
<<: *aws_connection_info
|
||||
register: vpc_eigw_delete
|
||||
|
||||
- name: assert state=absent (expected changed=true)
|
||||
assert:
|
||||
that:
|
||||
- 'vpc_eigw_delete.changed'
|
||||
|
||||
always:
|
||||
# ============================================================
|
||||
- name: tidy up EIGW
|
||||
ec2_vpc_egress_igw:
|
||||
state: absent
|
||||
vpc_id: "{{ vpc_result.vpc.id }}"
|
||||
<<: *aws_connection_info
|
||||
ignore_errors: true
|
||||
|
||||
- name: tidy up VPC
|
||||
ec2_vpc_net:
|
||||
name: "{{ resource_prefix }}-vpc"
|
||||
state: absent
|
||||
cidr_block: "10.232.232.128/26"
|
||||
<<: *aws_connection_info
|
||||
ignore_errors: true
|
||||
Loading…
Add table
Add a link
Reference in a new issue