ec2_vpc_route_table: Update matching_count parsing on find_subnets fu… (#38707)

* ec2_vpc_route_table: Update matching_count parsing on find_subnets function and tests

* ec2_vpc_route_table: Update matching_count parsing on find_subnets function
This commit is contained in:
Julien PRIGENT 2018-05-03 20:05:24 +01:00 committed by Ryan Brown
parent aeecdbfc35
commit 1905a6e8fb
2 changed files with 75 additions and 3 deletions

View file

@ -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. 'Name' tag, or a CIDR such as 10.0.0.0/8.
Note that this function is duplicated in other ec2 modules, and should 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_ids = []
subnet_names = [] subnet_names = []
@ -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) module.fail_json_aws(e, msg="Couldn't find subnet with names %s" % subnet_names)
for name in 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: if matching_count == 0:
module.fail_json(msg='Subnet named "{0}" does not exist'.format(name)) module.fail_json(msg='Subnet named "{0}" does not exist'.format(name))
elif matching_count > 1: elif matching_count > 1:

View file

@ -25,7 +25,7 @@
state: present state: present
tags: tags:
Public: "{{ item.public|string }}" Public: "{{ item.public|string }}"
Name: "{{ item.public|ternary('public', 'private') }}-{{ item.az }}" Name: "{{ (item.public|bool)|ternary('public', 'private') }}-{{ item.az }}"
<<: *aws_connection_info <<: *aws_connection_info
with_items: with_items:
- cidr: 10.228.228.0/24 - cidr: 10.228.228.0/24
@ -337,6 +337,78 @@
that: that:
- check_mode_results.changed - 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 - name: purge routes
ec2_vpc_route_table: ec2_vpc_route_table:
vpc_id: "{{ vpc.vpc.id }}" vpc_id: "{{ vpc.vpc.id }}"