From c3b3feaf11b0100b52173c3f3400fca2f75e9e7a Mon Sep 17 00:00:00 2001 From: Andrew Tarry Date: Fri, 18 Mar 2016 13:16:16 +0000 Subject: [PATCH] Set cloudformation timeout to more than timeout_in_minutes updated cloudformation timeout to use timeout_in_minutes if greater than 30 minutes set the retry timeout as int64 when created --- .../providers/aws/resource_aws_cloudformation_stack.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/builtin/providers/aws/resource_aws_cloudformation_stack.go b/builtin/providers/aws/resource_aws_cloudformation_stack.go index fc9dc3736535..28935e33ce88 100644 --- a/builtin/providers/aws/resource_aws_cloudformation_stack.go +++ b/builtin/providers/aws/resource_aws_cloudformation_stack.go @@ -93,6 +93,7 @@ func resourceAwsCloudFormationStack() *schema.Resource { } func resourceAwsCloudFormationStackCreate(d *schema.ResourceData, meta interface{}) error { + retryTimeout := int64(30) conn := meta.(*AWSClient).cfconn input := cloudformation.CreateStackInput{ @@ -129,7 +130,12 @@ func resourceAwsCloudFormationStackCreate(d *schema.ResourceData, meta interface input.Tags = expandCloudFormationTags(v.(map[string]interface{})) } if v, ok := d.GetOk("timeout_in_minutes"); ok { - input.TimeoutInMinutes = aws.Int64(int64(v.(int))) + m := int64(v.(int)) + input.TimeoutInMinutes = aws.Int64(m) + if m > retryTimeout { + retryTimeout = m + 5 + log.Printf("[DEBUG] CloudFormation timeout: %d", retryTimeout) + } } log.Printf("[DEBUG] Creating CloudFormation Stack: %s", input) @@ -143,7 +149,7 @@ func resourceAwsCloudFormationStackCreate(d *schema.ResourceData, meta interface wait := resource.StateChangeConf{ Pending: []string{"CREATE_IN_PROGRESS", "ROLLBACK_IN_PROGRESS", "ROLLBACK_COMPLETE"}, Target: []string{"CREATE_COMPLETE"}, - Timeout: 30 * time.Minute, + Timeout: time.Duration(retryTimeout) * time.Minute, MinTimeout: 5 * time.Second, Refresh: func() (interface{}, string, error) { resp, err := conn.DescribeStacks(&cloudformation.DescribeStacksInput{