Skip to content

Commit

Permalink
resource/aws_codepipeline: Only retry CreatePipeline errors for IAM e…
Browse files Browse the repository at this point in the history
…ventual consistency (#14264)

Reference: #13409

Output from acceptance testing:

```
--- PASS: TestAccAWSCodePipeline_emptyStageArtifacts (33.11s)
--- PASS: TestAccAWSCodePipeline_WithNamespace (35.13s)
--- PASS: TestAccAWSCodePipeline_multiregion_basic (36.83s)
--- PASS: TestAccAWSCodePipeline_deployWithServiceRole (42.85s)
--- PASS: TestAccAWSCodePipeline_basic (57.83s)
--- PASS: TestAccAWSCodePipeline_multiregion_Update (61.32s)
--- PASS: TestAccAWSCodePipeline_tags (76.28s)
--- PASS: TestAccAWSCodePipeline_multiregion_ConvertSingleRegion (79.20s)
```
  • Loading branch information
bflad authored Jul 22, 2020
1 parent 1cf570d commit b42fa81
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions aws/resource_aws_codepipeline.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ import (
"fmt"
"log"
"os"
"time"

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/codepipeline"
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
"github.com/terraform-providers/terraform-provider-aws/aws/internal/keyvaluetags"
iamwaiter "github.com/terraform-providers/terraform-provider-aws/aws/internal/service/iam/waiter"
)

func resourceAwsCodePipeline() *schema.Resource {
Expand Down Expand Up @@ -190,14 +190,19 @@ func resourceAwsCodePipelineCreate(d *schema.ResourceData, meta interface{}) err
}

var resp *codepipeline.CreatePipelineOutput
err = resource.Retry(2*time.Minute, func() *resource.RetryError {
err = resource.Retry(iamwaiter.PropagationTimeout, func() *resource.RetryError {
var err error

resp, err = conn.CreatePipeline(params)

if err != nil {
if isAWSErr(err, codepipeline.ErrCodeInvalidStructureException, "not authorized") {
return resource.RetryableError(err)
}

if err != nil {
return resource.NonRetryableError(err)
}

return nil
})
if isResourceTimeoutError(err) {
Expand Down

0 comments on commit b42fa81

Please sign in to comment.