Indented code so it only executes tag comparison for matching cird values

This commit is contained in:
Ryan-Neal Mes 2016-02-01 13:58:12 +02:00
parent 93d02189f6
commit c30bca6808

View file

@ -49,7 +49,7 @@ options:
- 'A dictionary array of subnets to add of the form: { cidr: ..., az: ... , resource_tags: ... }. Where az is the desired availability zone of the subnet, but it is not required. Tags (i.e.: resource_tags) is also optional and use dictionary form: { "Environment":"Dev", "Tier":"Web", ...}. All VPC subnets not in this list will be removed as well. As of 1.8, if the subnets parameter is not specified, no existing subnets will be modified.' - 'A dictionary array of subnets to add of the form: { cidr: ..., az: ... , resource_tags: ... }. Where az is the desired availability zone of the subnet, but it is not required. Tags (i.e.: resource_tags) is also optional and use dictionary form: { "Environment":"Dev", "Tier":"Web", ...}. All VPC subnets not in this list will be removed as well. As of 1.8, if the subnets parameter is not specified, no existing subnets will be modified.'
required: false required: false
default: null default: null
resource_tags: See resource_tags for VPC below. The main difference is subnet tags not specified here will be deleted. resource_tags: See resource_tags for VPC below. The main difference is subnet tags not specified here will be deleted.
vpc_id: vpc_id:
description: description:
- A VPC id to terminate when state=absent - A VPC id to terminate when state=absent
@ -219,13 +219,13 @@ def routes_match(rt_list=None, rt=None, igw=None):
""" """
Check if the route table has all routes as in given list Check if the route table has all routes as in given list
rt_list : A list if routes provided in the module rt_list : A list if routes provided in the module
rt : The Remote route table object rt : The Remote route table object
igw : The internet gateway object for this vpc igw : The internet gateway object for this vpc
Returns: Returns:
True when there provided routes and remote routes are the same. True when there provided routes and remote routes are the same.
False when provided routes and remote routes are different. False when provided routes and remote routes are different.
""" """
@ -278,7 +278,7 @@ def rtb_changed(route_tables=None, vpc_conn=None, module=None, vpc=None, igw=Non
Returns: Returns:
True when there is difference between the provided routes and remote routes and if subnet associations are different. True when there is difference between the provided routes and remote routes and if subnet associations are different.
False when both routes and subnet associations matched. False when both routes and subnet associations matched.
""" """
#We add a one for the main table #We add a one for the main table
rtb_len = len(route_tables) + 1 rtb_len = len(route_tables) + 1
@ -410,35 +410,36 @@ def create_vpc(module, vpc_conn):
subnet_tags_current = True subnet_tags_current = True
new_subnet_tags = subnet.get('resource_tags', None) new_subnet_tags = subnet.get('resource_tags', None)
subnet_tags_delete = [] subnet_tags_delete = []
for csn in current_subnets: for csn in current_subnets:
if subnet['cidr'] == csn.cidr_block: if subnet['cidr'] == csn.cidr_block:
add_subnet = False add_subnet = False
# Check if AWS subnet tags are in playbook subnet tags # Check if AWS subnet tags are in playbook subnet tags
subnet_tags_extra = (set(csn.tags.items()).issubset(set(new_subnet_tags.items()))) existing_tags_subset_of_new_tags = (set(csn.tags.items()).issubset(set(new_subnet_tags.items())))
# Check if subnet tags in playbook are in AWS subnet tags # Check if subnet tags in playbook are in AWS subnet tags
subnet_tags_current = (set(new_subnet_tags.items()).issubset(set(csn.tags.items()))) new_tags_subset_of_existing_tags = (set(new_subnet_tags.items()).issubset(set(csn.tags.items())))
if subnet_tags_extra is False:
try:
for item in csn.tags.items():
if item not in new_subnet_tags.items():
subnet_tags_delete.append(item)
subnet_tags_delete = [key[0] for key in subnet_tags_delete] if existing_tags_subset_of_new_tags is False:
delete_subnet_tag = vpc_conn.delete_tags(csn.id, subnet_tags_delete) try:
changed = True for item in csn.tags.items():
except EC2ResponseError, e: if item not in new_subnet_tags.items():
module.fail_json(msg='Unable to delete resource tag, error {0}'.format(e)) subnet_tags_delete.append(item)
# Add new subnet tags if not current
subnet_tags_current = (set(new_subnet_tags.items()).issubset(set(csn.tags.items())))
if subnet_tags_current is not True:
try:
changed = True
create_subnet_tag = vpc_conn.create_tags(csn.id, new_subnet_tags)
except EC2ResponseError, e: subnet_tags_delete = [key[0] for key in subnet_tags_delete]
module.fail_json(msg='Unable to create resource tag, error: {0}'.format(e)) delete_subnet_tag = vpc_conn.delete_tags(csn.id, subnet_tags_delete)
changed = True
except EC2ResponseError, e:
module.fail_json(msg='Unable to delete resource tag, error {0}'.format(e))
# Add new subnet tags if not current
if new_tags_subset_of_existing_tags is False:
try:
changed = True
create_subnet_tag = vpc_conn.create_tags(csn.id, new_subnet_tags)
except EC2ResponseError, e:
module.fail_json(msg='Unable to create resource tag, error: {0}'.format(e))
if add_subnet: if add_subnet:
try: try: