Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tests/provider: Catch additional resource.Retry cases in semgrep by a…
…llowing any return Now returning a few more reports: ``` aws/awserr.go severity:warning rule:helper-schema-resource-Retry-without-TimeoutError-check: Check resource.Retry() errors with tfresource.TimedOut() 39: err := resource.Retry(2*time.Minute, func() *resource.RetryError { 40: var err error 41: resp, err = f() 42: if err != nil { 43: awsErr, ok := err.(awserr.Error) 44: if ok && awsErr.Code() == code { 45: return resource.RetryableError(err) 46: } 47: return resource.NonRetryableError(err) 48: } 49: return nil 50: }) 51: return resp, err 58: err := resource.Retry(1*time.Minute, func() *resource.RetryError { 59: var err error 60: resp, err = f() 61: if err != nil { 62: awsErr, ok := err.(awserr.Error) 63: if ok { 64: for _, code := range codes { 65: if awsErr.Code() == code { 66: return resource.RetryableError(err) 67: } 68: } 69: } 70: return resource.NonRetryableError(err) 71: } 72: return nil 73: }) 74: return resp, err aws/resource_aws_glue_crawler.go severity:warning rule:helper-schema-resource-Retry-without-TimeoutError-check: Check resource.Retry() errors with tfresource.TimedOut() 488: err = resource.Retry(1*time.Minute, func() *resource.RetryError { 489: _, err := glueConn.UpdateCrawler(updateCrawlerInput) 490: if err != nil { 491: if isAWSErr(err, glue.ErrCodeInvalidInputException, "Service is unable to assume role") { 492: return resource.RetryableError(err) 493: } 494: // InvalidInputException: Unable to retrieve connection tf-acc-test-8656357591012534997: User: arn:aws:sts::*******:assumed-role/tf-acc-test-8656357591012534997/AWS-Crawler is not authorized to perform: glue:GetConnection on resource: * (Service: AmazonDataCatalog; Status Code: 400; Error Code: AccessDeniedException; Request ID: 4d72b66f-9c75-11e8-9faf-5b526c7be968) 495: if isAWSErr(err, glue.ErrCodeInvalidInputException, "is not authorized") { 496: return resource.RetryableError(err) 497: } 498: return resource.NonRetryableError(err) 499: } 500: return nil 501: }) 502: 503: if err != nil { 504: return fmt.Errorf("error updating Glue crawler: %s", err) 505: } aws/resource_aws_lex_bot.go severity:warning rule:helper-schema-resource-Retry-without-TimeoutError-check: Check resource.Retry() errors with tfresource.TimedOut() 352: err := resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError { 353: _, err := conn.PutBot(input) 354: 355: if isAWSErr(err, lexmodelbuildingservice.ErrCodeConflictException, "") { 356: return resource.RetryableError(fmt.Errorf("%q: bot still updating", d.Id())) 357: } 358: if err != nil { 359: return resource.NonRetryableError(err) 360: } 361: 362: return nil 363: }) 364: if err != nil { 365: return fmt.Errorf("error updating bot %s: %w", d.Id(), err) 366: } 367: 368: return resourceAwsLexBotRead(d, meta) aws/resource_aws_lex_bot_alias.go severity:warning rule:helper-schema-resource-Retry-without-TimeoutError-check: Check resource.Retry() errors with tfresource.TimedOut() 232: err := resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError { 233: _, err := conn.PutBotAlias(input) 234: 235: // IAM eventual consistency 236: if tfawserr.ErrMessageContains(err, lexmodelbuildingservice.ErrCodeBadRequestException, "Lex can't access your IAM role") { 237: return resource.RetryableError(err) 238: } 239: if tfawserr.ErrCodeEquals(err, lexmodelbuildingservice.ErrCodeConflictException) { 240: return resource.RetryableError(fmt.Errorf("%q bot alias still updating", d.Id())) 241: } 242: if err != nil { 243: return resource.NonRetryableError(err) 244: } 245: 246: return nil 247: }) 248: if err != nil { 249: return fmt.Errorf("error updating bot alias '%s': %w", d.Id(), err) 250: } 251: 252: return resourceAwsLexBotAliasRead(d, meta) aws/resource_aws_lex_intent.go severity:warning rule:helper-schema-resource-Retry-without-TimeoutError-check: Check resource.Retry() errors with tfresource.TimedOut() 450: err := resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError { 451: _, err := conn.PutIntent(input) 452: 453: if isAWSErr(err, lexmodelbuildingservice.ErrCodeConflictException, "") { 454: return resource.RetryableError(fmt.Errorf("%q: intent still updating", d.Id())) 455: } 456: if err != nil { 457: return resource.NonRetryableError(err) 458: } 459: 460: return nil 461: }) 462: if err != nil { 463: return fmt.Errorf("error updating intent %s: %w", d.Id(), err) 464: } 465: 466: return resourceAwsLexIntentRead(d, meta) aws/resource_aws_lex_slot_type.go severity:warning rule:helper-schema-resource-Retry-without-TimeoutError-check: Check resource.Retry() errors with tfresource.TimedOut() 238: err := resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError { 239: _, err := conn.PutSlotType(input) 240: 241: if tfawserr.ErrCodeEquals(err, lexmodelbuildingservice.ErrCodeConflictException) { 242: return resource.RetryableError(fmt.Errorf("%q: slot type still updating", d.Id())) 243: } 244: if err != nil { 245: return resource.NonRetryableError(err) 246: } 247: 248: return nil 249: }) 250: if err != nil { 251: return fmt.Errorf("error updating slot type %s: %w", d.Id(), err) 252: } 253: 254: return resourceAwsLexSlotTypeRead(d, meta) aws/resource_aws_rds_cluster_parameter_group.go severity:warning rule:helper-schema-resource-Retry-without-TimeoutError-check: Check resource.Retry() errors with tfresource.TimedOut() 260: err := resource.Retry(3*time.Minute, func() *resource.RetryError { 261: _, err := rdsconn.ResetDBClusterParameterGroup(&resetOpts) 262: if err != nil { 263: if isAWSErr(err, "InvalidDBParameterGroupState", "has pending changes") { 264: return resource.RetryableError(err) 265: } 266: return resource.NonRetryableError(err) 267: } 268: return nil 269: }) 270: if err != nil { 271: return fmt.Errorf("error resetting DB Cluster Parameter Group: %s", err) 272: } ```
- Loading branch information