From e9c57e732fe9f05cd1765f9ae520c659fa395a14 Mon Sep 17 00:00:00 2001 From: Ryan Brown Date: Tue, 20 Feb 2018 08:56:34 -0500 Subject: [PATCH] Add AWSRetry when describing VPCs to help stabilize integration tests (#36264) * Add AWSRetry when describing VPCs to help stabilize integration tests * Add retry on create_tags because it is possible to reach this API call before the VPC is finished creating --- lib/ansible/modules/cloud/amazon/ec2_vpc_net.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/ansible/modules/cloud/amazon/ec2_vpc_net.py b/lib/ansible/modules/cloud/amazon/ec2_vpc_net.py index e2fedbefdb..5b6a1fab85 100644 --- a/lib/ansible/modules/cloud/amazon/ec2_vpc_net.py +++ b/lib/ansible/modules/cloud/amazon/ec2_vpc_net.py @@ -166,7 +166,7 @@ except ImportError: from ansible.module_utils.aws.core import AnsibleAWSModule from ansible.module_utils.ec2 import (boto3_conn, get_aws_connection_info, ec2_argument_spec, camel_dict_to_snake_dict, - ansible_dict_to_boto3_tag_list, boto3_tag_list_to_ansible_dict) + ansible_dict_to_boto3_tag_list, boto3_tag_list_to_ansible_dict, AWSRetry) from ansible.module_utils.six import string_types @@ -196,7 +196,10 @@ def vpc_exists(module, vpc, name, cidr_block, multi): def get_vpc(module, connection, vpc_id): try: - vpc_obj = connection.describe_vpcs(VpcIds=[vpc_id])['Vpcs'][0] + vpc_obj = AWSRetry.backoff( + delay=1, tries=5, + catch_extra_error_codes=['InvalidVpcID.NotFound'], + )(connection.describe_vpcs)(VpcIds=[vpc_id])['Vpcs'][0] except (botocore.exceptions.ClientError, botocore.exceptions.BotoCoreError) as e: module.fail_json_aws(e, msg="Failed to describe VPCs") try: @@ -224,7 +227,10 @@ def update_vpc_tags(connection, module, vpc_id, tags, name): if tags != current_tags: if not module.check_mode: tags = ansible_dict_to_boto3_tag_list(tags) - connection.create_tags(Resources=[vpc_id], Tags=tags) + vpc_obj = AWSRetry.backoff( + delay=1, tries=5, + catch_extra_error_codes=['InvalidVpcID.NotFound'], + )(connection.create_tags)(Resources=[vpc_id], Tags=tags) return True else: return False