Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
227 commits
Select commit Hold shift + click to select a range
0f1d73a
`acctest`
gdavison Nov 28, 2025
22fe323
`interceptors`
gdavison Nov 28, 2025
8fb20b0
`acm`
gdavison Nov 29, 2025
2f1cf50
`acmpca`
gdavison Nov 29, 2025
b98dc7b
`amp`
gdavison Nov 29, 2025
e7fdad6
`amplify`
gdavison Nov 29, 2025
dc8c495
`apigateway`
gdavison Nov 29, 2025
0f7a87b
`apigatewayv2`
gdavison Nov 29, 2025
731c004
`appautoscaling`
gdavison Nov 29, 2025
3f67948
`appconfig`
gdavison Nov 29, 2025
0114206
`appfabric`
gdavison Nov 29, 2025
7f9bfe6
`appflow`
gdavison Nov 29, 2025
8605972
`applicationinsights`
gdavison Nov 29, 2025
5d9037d
`appmesh`
gdavison Nov 29, 2025
75cbd8b
`apprunner`
gdavison Nov 29, 2025
b28b810
`appstream`
gdavison Nov 29, 2025
512c0e4
`appsync`
gdavison Nov 29, 2025
ae06ea1
`athena`
gdavison Nov 29, 2025
5292c92
`auditmanager`
gdavison Nov 29, 2025
e6d75ea
`autoscaling`
gdavison Nov 29, 2025
c36b2c1
`autoscalingplans`
gdavison Nov 29, 2025
60906d0
`backup`
gdavison Nov 29, 2025
5956861
`batch`
gdavison Nov 29, 2025
17fc33f
`bcmdataexports`
gdavison Nov 29, 2025
f53097a
`bedrock`
gdavison Nov 29, 2025
aeab769
`bedrockagent`
gdavison Nov 29, 2025
8d2fc2e
`bedrockagentcore`
gdavison Nov 29, 2025
27cd121
`billing`
gdavison Nov 29, 2025
1bd91f9
`budgets`
gdavison Nov 29, 2025
e365d2a
`ce`
gdavison Nov 29, 2025
480038e
`chatbot`
gdavison Nov 29, 2025
62c19a6
`chime`
gdavison Nov 29, 2025
01cbff6
`chimesdkmediapipelines`
gdavison Nov 29, 2025
4e09775
`chimesdkvoice`
gdavison Nov 29, 2025
547a354
`cleanrooms`
gdavison Nov 29, 2025
f04fcc4
`cloud9`
gdavison Nov 29, 2025
80623cc
`cloudcontrol`
gdavison Nov 29, 2025
de0a653
`cloudformation`
gdavison Nov 29, 2025
f00986c
`cloudfront`
gdavison Nov 29, 2025
7dce937
`cloudfrontkeyvaluestore`
gdavison Nov 29, 2025
767b1ba
`cloudhsmv2`
gdavison Nov 29, 2025
85c3f16
`cloudsearch`
gdavison Nov 29, 2025
4863949
`cloudtrail`
gdavison Nov 29, 2025
57c814d
`cloudwatch`
gdavison Nov 29, 2025
eee1d0b
`codeartifact`
gdavison Nov 29, 2025
adc3372
`codebuild`
gdavison Nov 29, 2025
afdceda
`codecatalyst`
gdavison Nov 29, 2025
f4770fb
`codecommit`
gdavison Nov 29, 2025
9a16580
`codeconnections`
gdavison Nov 29, 2025
7f66611
`codeguruprofiler`
gdavison Nov 29, 2025
8928e53
`codegurureviewer`
gdavison Nov 29, 2025
58056aa
`codepipeline`
gdavison Nov 29, 2025
d8cdf89
`codestarconnections`
gdavison Nov 29, 2025
05376c2
`codestarnotifications`
gdavison Nov 29, 2025
1a4de32
`cognitoidp`
gdavison Nov 29, 2025
5236c9f
`comprehend`
gdavison Nov 29, 2025
a45dac2
`computeoptimizer`
gdavison Nov 29, 2025
b68a4c6
`configservice`
gdavison Nov 29, 2025
7ee78d9
`connect`
gdavison Nov 29, 2025
2b0d1db
`controltower`
gdavison Nov 29, 2025
5ea55c0
`cur`
gdavison Nov 29, 2025
0d2072c
`dataexchange`
gdavison Nov 29, 2025
8b050ab
`datasync`
gdavison Nov 29, 2025
f11a7af
`datazone`
gdavison Nov 29, 2025
ce1da8a
`deploy`
gdavison Nov 29, 2025
069692f
`detective`
gdavison Nov 29, 2025
299575a
`devicefarm`
gdavison Nov 29, 2025
a705539
`devopsguru`
gdavison Nov 29, 2025
848a819
`directconnect`
gdavison Nov 29, 2025
ef013d1
`dms`
gdavison Nov 29, 2025
cde3c13
`docdb`
gdavison Nov 29, 2025
6e7e65c
`docdbelastic`
gdavison Nov 29, 2025
8393c38
`drs`
gdavison Nov 29, 2025
8480942
`ds`
gdavison Nov 29, 2025
12635a3
`dsql`
gdavison Nov 29, 2025
5a90267
`dynamodb`
gdavison Nov 29, 2025
6c8ff9a
`ec2`
gdavison Nov 29, 2025
836b9f9
`ecr`
gdavison Nov 29, 2025
a0fc733
`ecrpublic`
gdavison Nov 29, 2025
1600513
`ecs`
gdavison Nov 29, 2025
f009f1b
`efs`
gdavison Nov 29, 2025
c426398
`eks`
gdavison Nov 29, 2025
a5020bc
`elasticache`
gdavison Nov 29, 2025
0c85fd4
`elasticbeanstalk`
gdavison Nov 29, 2025
0da62c8
`elasticsearch`
gdavison Nov 29, 2025
71d20fd
`elb`
gdavison Nov 29, 2025
97dcf5d
`elbv2`
gdavison Nov 29, 2025
fed6b5e
`emr`
gdavison Nov 29, 2025
820544e
`emrcontainers`
gdavison Nov 29, 2025
0074e32
`emrserverless`
gdavison Nov 29, 2025
9e9a093
`events`
gdavison Nov 29, 2025
902d368
`evidently`
gdavison Nov 29, 2025
6f0ccce
`finspace`
gdavison Nov 29, 2025
803e042
`firehose`
gdavison Nov 29, 2025
b57ad7b
`fis`
gdavison Nov 29, 2025
c042adc
`fms`
gdavison Nov 29, 2025
b5475da
`fsx`
gdavison Nov 29, 2025
e492bb5
`gamelift`
gdavison Nov 29, 2025
83a1d41
`glacier`
gdavison Nov 29, 2025
72abff5
`globalaccelerator`
gdavison Nov 29, 2025
f4f77bc
`glue`
gdavison Nov 29, 2025
2cddbdc
`grafana`
gdavison Nov 29, 2025
4a965a8
`guardduty`
gdavison Nov 29, 2025
0eb381a
`iam`
gdavison Nov 29, 2025
391a9e4
`identitystore`
gdavison Nov 29, 2025
ecaf8a2
`imagebuilder`
gdavison Nov 29, 2025
aebe9fa
`inspector2`
gdavison Nov 29, 2025
8eae8ca
`internetmonitor`
gdavison Nov 29, 2025
657adfb
`iot`
gdavison Nov 29, 2025
d0cb814
`ivs`
gdavison Nov 29, 2025
a1afc9f
`ivschat`
gdavison Nov 29, 2025
3d9d9b6
`kafka`
gdavison Nov 29, 2025
4806395
`kafkaconnect`
gdavison Nov 29, 2025
4b4548d
`kendra`
gdavison Nov 29, 2025
2173940
`keyspaces`
gdavison Nov 29, 2025
226b0d2
`kinesis`
gdavison Nov 29, 2025
5ac6281
`kinesisanalytics`
gdavison Nov 29, 2025
1e13112
`kinesisanalyticsv2`
gdavison Nov 29, 2025
5f7af71
`kinesisvideo`
gdavison Nov 29, 2025
7b48163
`kms`
gdavison Nov 29, 2025
86b0a2f
`lakeformation`
gdavison Nov 29, 2025
7346ea0
`lambda`
gdavison Nov 29, 2025
0eab0e2
`lexmodels`
gdavison Nov 29, 2025
d746214
`lexv2models`
gdavison Nov 29, 2025
da6b883
`licensemanager`
gdavison Nov 29, 2025
a0ea8fb
`lightsail`
gdavison Nov 29, 2025
b9e2275
`location`
gdavison Nov 29, 2025
09c0b56
`m2`
gdavison Nov 29, 2025
6b452b3
`macie2`
gdavison Nov 29, 2025
a5738c8
`mediaconvert`
gdavison Nov 29, 2025
5fbd864
`medialive`
gdavison Nov 29, 2025
841bd58
`mediapackagev2`
gdavison Nov 29, 2025
72fc43a
`mediastore`
gdavison Nov 29, 2025
8426e19
`memorydb`
gdavison Nov 29, 2025
04c1f5e
`mq`
gdavison Nov 29, 2025
236f51e
`mwaa`
gdavison Nov 29, 2025
fa6e04b
`neptune`
gdavison Nov 29, 2025
f5aaf30
`neptunegraph`
gdavison Nov 29, 2025
f38ecca
`networkfirewall`
gdavison Nov 29, 2025
da589e8
`networkflowmonitor`
gdavison Nov 29, 2025
0265381
`networkmanager`
gdavison Nov 29, 2025
2bd6014
`networkmonitor`
gdavison Nov 29, 2025
fba94db
`notifications`
gdavison Nov 29, 2025
6fbfca1
`oam`
gdavison Nov 29, 2025
18892df
`observabilityadmin`
gdavison Nov 29, 2025
bd0dc30
`odb`
gdavison Nov 29, 2025
9fd5917
`opensearch`
gdavison Nov 29, 2025
63b6c52
`opensearchserverless`
gdavison Nov 29, 2025
a8a4700
`organizations`
gdavison Nov 29, 2025
a3bf03d
`osis`
gdavison Nov 29, 2025
67ff925
`paymentcryptography`
gdavison Nov 29, 2025
48586ab
`pinpoint`
gdavison Nov 29, 2025
613c625
`pinpointsmsvoicev2`
gdavison Nov 29, 2025
45bbe29
`pipes`
gdavison Nov 29, 2025
79dc715
`qbusiness`
gdavison Nov 29, 2025
fe74ae0
`qldb`
gdavison Nov 29, 2025
c19da62
`quicksight`
gdavison Nov 29, 2025
0f6b079
`ram`
gdavison Nov 29, 2025
fd859b7
`rbin`
gdavison Nov 29, 2025
38ddf8f
`rds`
gdavison Nov 29, 2025
62fbc9c
`redshift`
gdavison Nov 29, 2025
288abbe
`redshiftdata`
gdavison Nov 29, 2025
66a10ce
`redshiftserverless`
gdavison Nov 29, 2025
bd227a1
`rekognition`
gdavison Nov 29, 2025
a70154d
`resiliencehub`
gdavison Nov 29, 2025
ce1127d
`resourceexplorer2`
gdavison Nov 29, 2025
d2f4aee
`resourcegroups`
gdavison Nov 29, 2025
8a7f1cc
`rolesanywhere`
gdavison Nov 29, 2025
55d82a4
`route53`
gdavison Nov 29, 2025
dde27aa
`route53domains`
gdavison Nov 29, 2025
9134b4b
`route53profiles`
gdavison Nov 29, 2025
95535a7
`route53recoverycontrolconfig`
gdavison Nov 29, 2025
b4e4ec6
`route53recoveryreadiness`
gdavison Nov 29, 2025
3eae8ff
`route53resolver`
gdavison Nov 29, 2025
5852bab
`rum`
gdavison Nov 29, 2025
4375248
`s3`
gdavison Nov 29, 2025
ec3d9d7
`s3control`
gdavison Nov 29, 2025
ae333db
`s3outposts`
gdavison Nov 29, 2025
2852268
`s3tables`
gdavison Nov 29, 2025
1d5f476
`sagemaker`
gdavison Nov 29, 2025
8d2c548
`scheduler`
gdavison Nov 29, 2025
78f5942
`schemas`
gdavison Nov 29, 2025
082a80d
`secretsmanager`
gdavison Nov 29, 2025
fde4974
`securityhub`
gdavison Nov 29, 2025
527fe47
`securitylake`
gdavison Nov 29, 2025
242f0b1
`serverlessrepo`
gdavison Nov 29, 2025
adda854
`servicecatalog`
gdavison Nov 29, 2025
58c0d32
`servicecatalogappregistry`
gdavison Nov 29, 2025
9894f11
`servicediscovery`
gdavison Nov 29, 2025
cb72901
`servicequotas`
gdavison Nov 29, 2025
f735e12
`ses`
gdavison Nov 29, 2025
546bff6
`sesv2`
gdavison Nov 29, 2025
33648bc
`sfn`
gdavison Nov 29, 2025
3344585
`shield`
gdavison Nov 29, 2025
5f46a68
`signer`
gdavison Nov 29, 2025
e84442c
`sns`
gdavison Nov 29, 2025
7821bfa
`sqs`
gdavison Nov 29, 2025
36df354
`ssm`
gdavison Nov 29, 2025
7f23d98
`ssmcontacts`
gdavison Nov 29, 2025
f49d4be
`ssmincidents`
gdavison Nov 29, 2025
53ccfc0
`ssoadmin`
gdavison Nov 29, 2025
be5ef18
`storagegateway`
gdavison Nov 29, 2025
f7ded39
`synthetics`
gdavison Nov 29, 2025
f913d58
`timestreaminfluxdb`
gdavison Nov 29, 2025
0475b0e
`timestreamquery`
gdavison Nov 29, 2025
6be8bd2
`timestreamwrite`
gdavison Nov 29, 2025
1d06d6f
`transcribe`
gdavison Nov 29, 2025
74202bd
`transfer`
gdavison Nov 29, 2025
2089d2d
`verifiedpermissions`
gdavison Nov 29, 2025
43c2e53
`vpclattice`
gdavison Nov 29, 2025
188d87c
`waf`
gdavison Nov 29, 2025
5ecf17e
`wafregional`
gdavison Nov 29, 2025
b1750b8
`wafv2`
gdavison Nov 29, 2025
9d2aee1
`workspaces`
gdavison Nov 29, 2025
6155255
`workspacesweb`
gdavison Nov 29, 2025
968835b
`xray`
gdavison Nov 29, 2025
a1d2555
Updates tag resource generation
gdavison Nov 29, 2025
888f989
Updates Semgrep checks for error checking patterns
gdavison Nov 29, 2025
dd32075
Removes `tfresource.NotFound`
gdavison Nov 29, 2025
ea3b672
Adds general Semgrep rule and removes task-specific rules
gdavison Nov 29, 2025
f7ddf53
Updates documentation
gdavison Nov 29, 2025
d3c79e3
Missed change
gdavison Nov 29, 2025
c727ee3
Semgrep fixes
gdavison Dec 2, 2025
908dd52
Restores definition of `tfresource.NotFound`
gdavison Dec 2, 2025
ab8caa4
`s3tables`
gdavison Dec 3, 2025
780ec03
`s3vectors`
gdavison Dec 3, 2025
a324843
Fixes imports
gdavison Dec 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .ci/.semgrep.yml
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ rules:

- id: is-not-found-error
languages: [go]
message: Check for retry.NotFoundError errors with tfresource.NotFound()
message: Check for retry.NotFoundError errors with retry.NotFound()
paths:
include:
- "/internal"
Expand Down
25 changes: 13 additions & 12 deletions .ci/semgrep/errors/error-checks.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@ import (
"time"

"github.com/hashicorp/aws-sdk-go-base/v2/awsv1shim/v2/tfawserr"
"github.com/hashicorp/terraform-provider-aws/internal/retry"
"github.com/hashicorp/terraform-provider-aws/internal/tfresource"
)

func test1() {
_, err := call()

// ruleid: notfound-without-err-checks
if tfresource.NotFound(err) {
if retry.NotFound(err) {
return
}

Expand All @@ -24,7 +25,7 @@ func test2() {
_, err := call()

// ok: notfound-without-err-checks
if tfresource.NotFound(err) {
if retry.NotFound(err) {
return
}

Expand All @@ -40,7 +41,7 @@ func test3() {

if err != nil {
// ok: notfound-without-err-checks
if tfresource.NotFound(err) {
if retry.NotFound(err) {
return
}
return
Expand All @@ -55,7 +56,7 @@ func test4() {
if err == nil {
return
// ok: notfound-without-err-checks
} else if tfresource.NotFound(err) {
} else if retry.NotFound(err) {
return
} else {
return
Expand All @@ -66,7 +67,7 @@ func test5() {
_, err := call()

// ok: notfound-without-err-checks
if tfresource.NotFound(err) {
if retry.NotFound(err) {
return
} else if err != nil {
return
Expand All @@ -79,7 +80,7 @@ func test6() error {
_, err := call()

// ok: notfound-without-err-checks
if tfresource.NotFound(err) {
if retry.NotFound(err) {
return
}

Expand All @@ -91,7 +92,7 @@ func test7() {
_, err := call()

// ok: notfound-without-err-checks
if tfresource.NotFound(err) {
if retry.NotFound(err) {
continue
}
}
Expand All @@ -103,7 +104,7 @@ func test8() {
_, err := call()

// ok: notfound-without-err-checks
if tfresource.NotFound(err) {
if retry.NotFound(err) {
return
}

Expand All @@ -123,7 +124,7 @@ func test9() {

if err != nil {
// ok: notfound-without-err-checks
if tfresource.NotFound(err) {
if retry.NotFound(err) {
return
} else {
return
Expand All @@ -137,7 +138,7 @@ func test10() {
_, err := call()

// ok: notfound-without-err-checks
if tfresource.NotFound(err) {
if retry.NotFound(err) {
return
} else if err != nil {
return
Expand All @@ -151,7 +152,7 @@ func test11() {

tfresource.RetryWhen(ctx, 1*time.Second, nil, func(err error) (bool error) {
// ok: notfound-without-err-checks
if tfresource.NotFound(err) {
if retry.NotFound(err) {
return true, err
}

Expand All @@ -163,7 +164,7 @@ func test12() {
_, err := call()

// ok: notfound-without-err-checks
if tfresource.NotFound(err) {
if retry.NotFound(err) {
return
}

Expand Down
38 changes: 19 additions & 19 deletions .ci/semgrep/errors/error-checks.yml
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
rules:
- id: notfound-without-err-checks
languages: [go]
message: When checking for tfresource.NotFound() errors, typically other error conditions should be checked.
message: When checking for retry.NotFound() errors, typically other error conditions should be checked.
patterns:
- pattern: |
if tfresource.NotFound($ERR) { ... }
if retry.NotFound($ERR) { ... }
- pattern-not-inside: |
if tfresource.NotFound($ERR) { ... }
if retry.NotFound($ERR) { ... }
if $ERR != nil { ... }
- pattern-not-inside: |
if tfresource.NotFound($ERR) { ... }
if retry.NotFound($ERR) { ... }
if $FUNC($ERR, ...) { ... }
if $ERR != nil { ... }
- pattern-not-inside: |
if err != nil {
if tfresource.NotFound($ERR) { ... }
if retry.NotFound($ERR) { ... }
return ...
}
- pattern-not-inside: |
if err != nil {
if tfresource.NotFound($ERR) {
if retry.NotFound($ERR) {
...
} else {
...
Expand All @@ -28,28 +28,28 @@ rules:
- pattern-not-inside: |
if err == nil {
...
} else if tfresource.NotFound($ERR) {
} else if retry.NotFound($ERR) {
...
} else { ... }
- pattern-not-inside: |
if tfresource.NotFound($ERR) {
if retry.NotFound($ERR) {
...
} else if err != nil {
...
} else {
...
}
- pattern-not-inside: |
if tfresource.NotFound($ERR) {
if retry.NotFound($ERR) {
...
}
return $ERR
- pattern-not-inside: |
if tfresource.NotFound($ERR) {
if retry.NotFound($ERR) {
continue
}
- pattern-not-inside: |
if tfresource.NotFound($ERR) {
if retry.NotFound($ERR) {
...
} else if err != nil {
...
Expand All @@ -60,16 +60,16 @@ rules:

- id: isnewresource-notfound-without-err-checks
languages: [go]
message: When checking for !d.IsNewResource() && tfresource.NotFound() errors, typically other error conditions should be checked.
message: When checking for !d.IsNewResource() && retry.NotFound() errors, typically other error conditions should be checked.
patterns:
- pattern: |
if !d.IsNewResource() && tfresource.NotFound($ERR) { ... }
if !d.IsNewResource() && retry.NotFound($ERR) { ... }
- pattern-not-inside: |
if !d.IsNewResource() && tfresource.NotFound($ERR) { ... }
if !d.IsNewResource() && retry.NotFound($ERR) { ... }
if $ERR != nil { ... }
# e.g. internal/service/dms/s3_endpoint.go
- pattern-not-inside: |
if !d.IsNewResource() && tfresource.NotFound($ERR) { ... }
if !d.IsNewResource() && retry.NotFound($ERR) { ... }
if $ERR == nil && ... {
...
err = ...
Expand All @@ -78,26 +78,26 @@ rules:
if $ERR != nil { ... }
# e.g., internal/service/neptune/cluster.go
- pattern-not-inside: |
if !d.IsNewResource() && tfresource.NotFound($ERR) { ... }
if !d.IsNewResource() && retry.NotFound($ERR) { ... }
if $ERR != nil && ... { ... }
for ... = backoff.NewRetryLoop(...); ...; {
...
}
if $ERR != nil { ... }
# e.g. internal/service/quicksight/analysis.go
- pattern-not-inside: |
if !d.IsNewResource() && tfresource.NotFound($ERR) { ... }
if !d.IsNewResource() && retry.NotFound($ERR) { ... }
if !d.IsNewResource() && ... { ... }
if $ERR != nil { ... }
# e.g. internal/service/sagemaker/app.go
- pattern-not-inside: |
if err != nil {
if !d.IsNewResource() && tfresource.NotFound($ERR) { ... }
if !d.IsNewResource() && retry.NotFound($ERR) { ... }
return ...
}
# e.g. internal/service/storagegateway/gateway.go
- pattern-not-inside: |
if !d.IsNewResource() && tfresource.NotFound($ERR) { ... }
if !d.IsNewResource() && retry.NotFound($ERR) { ... }
if isGatewayNotConnectedErr(err) {
...
}
Expand Down
9 changes: 9 additions & 0 deletions .ci/semgrep/retry/retry.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
rules:
- id: internal-retry-notfound
languages: [go]
message: "Prefer retry.NotFound to tfresource.NotFound"
pattern: |
tfresource.NotFound($ERR)
fix: |
retry.NotFound($ERR)
severity: ERROR
18 changes: 0 additions & 18 deletions .ci/semgrep/smarterr/enforce.yml
Original file line number Diff line number Diff line change
Expand Up @@ -188,24 +188,6 @@ rules:
exclude:
- "*_test.go"

- id: go-no-tfresource-notfound
languages: [go]
message: Use intretry.NotFound instead of tfresource.NotFound (migrate to smarterr).
severity: ERROR
patterns:
- pattern: |
tfresource.NotFound($ERR)
- pattern-not-inside: |
intretry.NotFound(...)
paths:
include:
- "/internal/service/appsync/"
- "/internal/service/bedrockagentcore/"
- "/internal/service/cloudwatch/"
- "/internal/service/invoicing/"
exclude:
- "*_test.go"

- id: go-no-bare-assertsinglevalueresult
languages: [go]
message: Wrap tfresource.AssertSingleValueResult with smarterr.Assert (migrate to smarterr).
Expand Down
2 changes: 1 addition & 1 deletion docs/running-and-writing-acceptance-tests.md
Original file line number Diff line number Diff line change
Expand Up @@ -777,7 +777,7 @@ If this test does fail, the fix for this is generally adding error handling imme
```go
output, err := conn.GetThing(input)

if !d.IsNewResource() && tfresource.NotFound(err) {
if !d.IsNewResource() && retry.NotFound(err) {
log.Printf("[WARN] Example Thing (%s) not found, removing from state", d.Id())
d.SetId("")
return nil
Expand Down
7 changes: 4 additions & 3 deletions internal/acctest/acctest.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ import (
tfsync "github.com/hashicorp/terraform-provider-aws/internal/experimental/sync"
"github.com/hashicorp/terraform-provider-aws/internal/provider"
"github.com/hashicorp/terraform-provider-aws/internal/provider/sdkv2"
"github.com/hashicorp/terraform-provider-aws/internal/retry"
tfaccount "github.com/hashicorp/terraform-provider-aws/internal/service/account"
tfacmpca "github.com/hashicorp/terraform-provider-aws/internal/service/acmpca"
tfec2 "github.com/hashicorp/terraform-provider-aws/internal/service/ec2"
Expand Down Expand Up @@ -1164,7 +1165,7 @@ func PreCheckOrganizationsAccount(ctx context.Context, t *testing.T) {

_, err := tforganizations.FindOrganization(ctx, Provider.Meta().(*conns.AWSClient).OrganizationsClient(ctx))

if tfresource.NotFound(err) {
if retry.NotFound(err) {
return
}

Expand Down Expand Up @@ -1200,7 +1201,7 @@ func PreCheckOrganizationsEnabledWithProvider(ctx context.Context, t *testing.T,

organization, err := tforganizations.FindOrganization(ctx, providerF().Meta().(*conns.AWSClient).OrganizationsClient(ctx))

if tfresource.NotFound(err) {
if retry.NotFound(err) {
t.Skip("this AWS account must be an existing member of an AWS Organization")
}

Expand Down Expand Up @@ -1340,7 +1341,7 @@ func PreCheckHasIAMRole(ctx context.Context, t *testing.T, roleName string) {

_, err := tfiam.FindRoleByName(ctx, Provider.Meta().(*conns.AWSClient).IAMClient(ctx), roleName)

if tfresource.NotFound(err) {
if retry.NotFound(err) {
t.Skipf("skipping acceptance test: required IAM role %q not found", roleName)
}

Expand Down
4 changes: 2 additions & 2 deletions internal/generate/tagresource/resource.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-provider-aws/internal/conns"
"github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag"
"github.com/hashicorp/terraform-provider-aws/internal/retry"
tftags "github.com/hashicorp/terraform-provider-aws/internal/tags"
"github.com/hashicorp/terraform-provider-aws/internal/tfresource"
"github.com/hashicorp/terraform-provider-aws/names"
)

Expand Down Expand Up @@ -78,7 +78,7 @@ func resourceTagRead(ctx context.Context, d *schema.ResourceData, meta any) diag

value, err := {{ .GetTagFunc }}(ctx, conn, identifier, key)

if !d.IsNewResource() && tfresource.NotFound(err) {
if !d.IsNewResource() && retry.NotFound(err) {
log.Printf("[WARN] %s resource (%s) tag (%s) not found, removing from state", names.{{ .AWSServiceUpper }}, identifier, key)
d.SetId("")
return diags
Expand Down
4 changes: 2 additions & 2 deletions internal/generate/tagresource/tests.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ import (
"github.com/hashicorp/terraform-plugin-testing/terraform"
"github.com/hashicorp/terraform-provider-aws/internal/acctest"
"github.com/hashicorp/terraform-provider-aws/internal/conns"
"github.com/hashicorp/terraform-provider-aws/internal/retry"
tftags "github.com/hashicorp/terraform-provider-aws/internal/tags"
tf{{ .ServicePackage }} "github.com/hashicorp/terraform-provider-aws/internal/service/{{ .ServicePackage }}"
"github.com/hashicorp/terraform-provider-aws/internal/tfresource"
"github.com/hashicorp/terraform-provider-aws/names"
)

Expand All @@ -32,7 +32,7 @@ func testAccCheckTagDestroy(ctx context.Context) resource.TestCheckFunc {

_, err = tf{{ .ServicePackage }}.{{ .GetTagFunc | FirstUpper }}(ctx, conn, identifier, key)

if tfresource.NotFound(err) {
if retry.NotFound(err) {
continue
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ func {{ .WaitTagsPropagatedFunc }}(ctx context.Context, conn {{ .ClientType }},
checkFunc := func(ctx context.Context) (bool, error) {
output, err := {{ .ListTagsFunc }}(ctx, conn, id, optFns...)

if tfresource.NotFound(err) {
if retry.NotFound(err) {
return false, nil
}

Expand Down
4 changes: 2 additions & 2 deletions internal/provider/interceptors/htags.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ import (
"github.com/hashicorp/terraform-plugin-log/tflog"
"github.com/hashicorp/terraform-provider-aws/internal/conns"
"github.com/hashicorp/terraform-provider-aws/internal/errs"
"github.com/hashicorp/terraform-provider-aws/internal/retry"
"github.com/hashicorp/terraform-provider-aws/internal/sdkv2"
tftags "github.com/hashicorp/terraform-provider-aws/internal/tags"
"github.com/hashicorp/terraform-provider-aws/internal/tfresource"
inttypes "github.com/hashicorp/terraform-provider-aws/internal/types"
tfunique "github.com/hashicorp/terraform-provider-aws/internal/unique"
"github.com/hashicorp/terraform-provider-aws/names"
Expand Down Expand Up @@ -95,7 +95,7 @@ func (h HTags) ListTags(ctx context.Context, sp conns.ServicePackage, c taggingA
err = nil
case sp.ServicePackageName() == names.DynamoDB && err != nil:
// When a DynamoDB Table is `ARCHIVED`, ListTags returns `ResourceNotFoundException`.
if tfresource.NotFound(err) || tfawserr.ErrMessageContains(err, "UnknownOperationException", "Tagging is not currently supported in DynamoDB Local.") {
if retry.NotFound(err) || tfawserr.ErrMessageContains(err, "UnknownOperationException", "Tagging is not currently supported in DynamoDB Local.") {
err = nil
}
}
Expand Down
Loading
Loading