Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ec2_vpc_route_table: Update matching_count parsing on find_subnets fu… #38707

Merged
merged 2 commits into from
May 3, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ def find_subnets(connection, module, vpc_id, identified_subnets):
'Name' tag, or a CIDR such as 10.0.0.0/8.

Note that this function is duplicated in other ec2 modules, and should
potentially be moved into potentially be moved into a shared module_utils
potentially be moved into a shared module_utils
"""
subnet_ids = []
subnet_names = []
Expand Down Expand Up @@ -294,7 +294,7 @@ def find_subnets(connection, module, vpc_id, identified_subnets):
module.fail_json_aws(e, msg="Couldn't find subnet with names %s" % subnet_names)

for name in subnet_names:
matching_count = len([1 for s in subnets_by_name if s.tags.get('Name') == name])
matching_count = len([1 for s in subnets_by_name for t in s.get('Tags', []) if t['Key'] == 'Name' and t['Value'] == name])
if matching_count == 0:
module.fail_json(msg='Subnet named "{0}" does not exist'.format(name))
elif matching_count > 1:
Expand Down
74 changes: 73 additions & 1 deletion test/integration/targets/ec2_vpc_route_table/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
state: present
tags:
Public: "{{ item.public|string }}"
Name: "{{ item.public|ternary('public', 'private') }}-{{ item.az }}"
Name: "{{ (item.public|bool)|ternary('public', 'private') }}-{{ item.az }}"
<<: *aws_connection_info
with_items:
- cidr: 10.228.228.0/24
Expand Down Expand Up @@ -337,6 +337,78 @@
that:
- check_mode_results.changed

- name: add subnets by cidr to public route table
ec2_vpc_route_table:
vpc_id: "{{ vpc.vpc.id }}"
routes:
- dest: 0.0.0.0/0
gateway_id: igw
subnets: "{{ vpc_subnets|json_query('subnets[?tags.Public == `True`].cidr_block') }}"
lookup: id
route_table_id: "{{ create_public_table.route_table.id }}"
<<: *aws_connection_info
register: add_subnets_cidr

- name: assert route table contains subnets added by cidr
assert:
that:
- add_subnets_cidr.changed
- add_subnets_cidr.route_table.associations|length == 2

- name: purge subnets added by cidr
ec2_vpc_route_table:
vpc_id: "{{ vpc.vpc.id }}"
routes:
- dest: 0.0.0.0/0
gateway_id: igw
subnets: []
lookup: id
route_table_id: "{{ create_public_table.route_table.id }}"
<<: *aws_connection_info
register: purge_subnets_cidr

- name: assert purge subnets added by cidr worked
assert:
that:
- purge_subnets_cidr.changed
- purge_subnets_cidr.route_table.associations|length == 0

- name: add subnets by name to public route table
ec2_vpc_route_table:
vpc_id: "{{ vpc.vpc.id }}"
routes:
- dest: 0.0.0.0/0
gateway_id: igw
subnets: "{{ vpc_subnets|json_query('subnets[?tags.Public == `True`].tags.Name') }}"
lookup: id
route_table_id: "{{ create_public_table.route_table.id }}"
<<: *aws_connection_info
register: add_subnets_name

- name: assert route table contains subnets added by name
assert:
that:
- add_subnets_name.changed
- add_subnets_name.route_table.associations|length == 2

- name: purge subnets added by name
ec2_vpc_route_table:
vpc_id: "{{ vpc.vpc.id }}"
routes:
- dest: 0.0.0.0/0
gateway_id: igw
subnets: []
lookup: id
route_table_id: "{{ create_public_table.route_table.id }}"
<<: *aws_connection_info
register: purge_subnets_name

- name: assert purge subnets added by name worked
assert:
that:
- purge_subnets_name.changed
- purge_subnets_name.route_table.associations|length == 0

- name: purge routes
ec2_vpc_route_table:
vpc_id: "{{ vpc.vpc.id }}"
Expand Down