Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate Route 53 Resolver resources to AWS SDK V2 #38813

Merged
merged 36 commits into from
Aug 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
5e19735
feat: migrated r/config to sdkv2
DanielRieske Aug 9, 2024
35d5e8c
feat: migrated r/dnssec_config to sdkv2
DanielRieske Aug 9, 2024
cce630d
feat: migrated r/endpoint to sdkv2
DanielRieske Aug 9, 2024
02549cb
feat: migrated d/endpoint to sdkv2
DanielRieske Aug 9, 2024
fb79cab
feat: migrated r/firewall_config to sdkv2
DanielRieske Aug 9, 2024
93ecc65
feat: migrated d/firewall_config to sdkv2
DanielRieske Aug 9, 2024
7188706
feat: migrated r/firewall_domain_list to sdkv2
DanielRieske Aug 9, 2024
8599765
feat: migrated r/firewall_rule_group_association to sdkv2
DanielRieske Aug 9, 2024
180693f
feat: migrated d/firewall_rule_group_association to sdkv2
DanielRieske Aug 9, 2024
756c025
feat: migrated r/firewall_rule_group to sdkv2
DanielRieske Aug 9, 2024
8f4fadc
feat: migrated d/firewall_domain_list to sdkv2
DanielRieske Aug 9, 2024
38b8525
feat: migrated d/firewall_rule_group to sdkv2
DanielRieske Aug 9, 2024
c2dbedc
feat: migrated r/query_log_config_association to sdkv2
DanielRieske Aug 9, 2024
1441737
feat: migrated r/query_log_config to sdkv2
DanielRieske Aug 9, 2024
957d44d
feat: migrated r/firewall_rule to sdkv2
DanielRieske Aug 9, 2024
a8d2b78
feat: migrated r/rule_association to sdkv2
DanielRieske Aug 9, 2024
c226454
feat: migrated r/rule to sdkv2
DanielRieske Aug 9, 2024
549687e
feat: migrated d/query_log_config to sdkv2
DanielRieske Aug 9, 2024
435801b
feat: migrated d/firewall_rules to sdkv2
DanielRieske Aug 9, 2024
dffc341
feat: regenerate namevaluesfilters
DanielRieske Aug 9, 2024
00ba1a9
feat: migrate d/rule to sdkv2
DanielRieske Aug 9, 2024
9bad262
feat: migrate d/rules to sdkv2
DanielRieske Aug 9, 2024
cde1684
feat: migrate sweepers to sdkv2
DanielRieske Aug 9, 2024
875f507
feat: regenerate `v2` client
DanielRieske Aug 9, 2024
3c8af72
feat: exports
DanielRieske Aug 9, 2024
d5910d9
feat remove validation on computed field
DanielRieske Aug 9, 2024
f07d0e5
Merge branch 'main' into f/migrate-route53resolver-sdkv2
DanielRieske Aug 9, 2024
ba41f23
fix: semgrep findings
DanielRieske Aug 9, 2024
3769d9c
fix: semgrep findings
DanielRieske Aug 9, 2024
73112e4
fix: `TestAccRoute53ResolverRulesDataSource_resolverEndpointID` remov…
DanielRieske Aug 10, 2024
e40e6a7
chore: cleanup paginators
DanielRieske Aug 10, 2024
6883152
Merge branch 'main' into f/migrate-route53resolver-sdkv2
DanielRieske Aug 13, 2024
3f6ee15
Merge branch 'main' into HEAD
ewbankkit Aug 13, 2024
33e6d8a
Run 'make clean-tidy'.
ewbankkit Aug 13, 2024
4ce9218
Fix 'TestAccRoute53ResolverFirewallConfigDataSource_basic'.
ewbankkit Aug 13, 2024
ced0280
Merge branch 'main' into HEAD
ewbankkit Aug 13, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ require (
github.com/aws/aws-sdk-go-v2/service/route53profiles v1.2.3
github.com/aws/aws-sdk-go-v2/service/route53recoverycontrolconfig v1.23.3
github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness v1.19.3
github.com/aws/aws-sdk-go-v2/service/route53resolver v1.30.3
github.com/aws/aws-sdk-go-v2/service/rum v1.19.3
github.com/aws/aws-sdk-go-v2/service/s3 v1.58.3
github.com/aws/aws-sdk-go-v2/service/s3control v1.46.3
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -412,6 +412,8 @@ github.com/aws/aws-sdk-go-v2/service/route53recoverycontrolconfig v1.23.3 h1:apY
github.com/aws/aws-sdk-go-v2/service/route53recoverycontrolconfig v1.23.3/go.mod h1:citOcziml/EM6I2ycb7XHuBw0whC8jVD2y+vU7wQD4k=
github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness v1.19.3 h1:M6D+IRT6YdeL+qLIdy4u4zEoMOqq3lJnNUGt0cxEI04=
github.com/aws/aws-sdk-go-v2/service/route53recoveryreadiness v1.19.3/go.mod h1:y4m7VlTWV77mBzMdAZWjudnobe0E77tKy5Z9+IQIku0=
github.com/aws/aws-sdk-go-v2/service/route53resolver v1.30.3 h1:qbQ9OMsuBvjTfSiY8S7/mxezvSRtjyqcZcoBtPN4sqo=
github.com/aws/aws-sdk-go-v2/service/route53resolver v1.30.3/go.mod h1:BQBJkxokRLgXiBgHDYichq3aNynMRSqXu26Z2Fd8bao=
github.com/aws/aws-sdk-go-v2/service/rum v1.19.3 h1:DR+GYJRPL7eEZknnGdwm+lH686LmUBB/X2YVQDHLNY4=
github.com/aws/aws-sdk-go-v2/service/rum v1.19.3/go.mod h1:5jFxbuc05P/+BbJvVbBspMbzDR2IFU0LegQG3iUvj8g=
github.com/aws/aws-sdk-go-v2/service/s3 v1.58.3 h1:hT8ZAZRIfqBqHbzKTII+CIiY8G2oC9OpLedkZ51DWl8=
Expand Down
6 changes: 3 additions & 3 deletions internal/conns/awsclient_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion internal/generate/namevaluesfilters/v1/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ func main() {
sliceServiceNames := []string{
"imagebuilder",
"rds",
"route53resolver",
}
// Always sort to reduce any potential generation churn
sort.Strings(sliceServiceNames)
Expand Down
1 change: 1 addition & 0 deletions internal/generate/namevaluesfilters/v2/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ func main() {
sliceServiceNames := []string{
"rds",
"secretsmanager",
"route53resolver",
}
// Always sort to reduce any potential generation churn
sort.Strings(sliceServiceNames)
Expand Down
23 changes: 0 additions & 23 deletions internal/namevaluesfilters/v1/service_filters_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 23 additions & 0 deletions internal/namevaluesfilters/v2/service_filters_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

124 changes: 55 additions & 69 deletions internal/service/route53resolver/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,22 @@ import (
"log"
"time"

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/route53resolver"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/route53resolver"
awstypes "github.com/aws/aws-sdk-go-v2/service/route53resolver/types"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
"github.com/hashicorp/terraform-provider-aws/internal/conns"
"github.com/hashicorp/terraform-provider-aws/internal/enum"
"github.com/hashicorp/terraform-provider-aws/internal/errs"
"github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag"
"github.com/hashicorp/terraform-provider-aws/internal/tfresource"
"github.com/hashicorp/terraform-provider-aws/names"
)

// @SDKResource("aws_route53_resolver_config")
func ResourceConfig() *schema.Resource {
// @SDKResource("aws_route53_resolver_config", name="Config")
func resourceConfig() *schema.Resource {
return &schema.Resource{
CreateWithoutTimeout: resourceConfigCreate,
ReadWithoutTimeout: resourceConfigRead,
Expand All @@ -34,9 +36,9 @@ func ResourceConfig() *schema.Resource {

Schema: map[string]*schema.Schema{
"autodefined_reverse_flag": {
Type: schema.TypeString,
Required: true,
ValidateFunc: validation.StringInSlice(autodefinedReverseFlag_Values(), false),
Type: schema.TypeString,
Required: true,
ValidateDiagFunc: enum.Validate[awstypes.AutodefinedReverseFlag](),
},
names.AttrOwnerID: {
Type: schema.TypeString,
Expand All @@ -53,21 +55,21 @@ func ResourceConfig() *schema.Resource {

func resourceConfigCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics
conn := meta.(*conns.AWSClient).Route53ResolverConn(ctx)
conn := meta.(*conns.AWSClient).Route53ResolverClient(ctx)

autodefinedReverseFlag := d.Get("autodefined_reverse_flag").(string)
autodefinedReverseFlag := awstypes.AutodefinedReverseFlag(d.Get("autodefined_reverse_flag").(string))
input := &route53resolver.UpdateResolverConfigInput{
AutodefinedReverseFlag: aws.String(autodefinedReverseFlag),
AutodefinedReverseFlag: autodefinedReverseFlag,
ResourceId: aws.String(d.Get(names.AttrResourceID).(string)),
}

output, err := conn.UpdateResolverConfigWithContext(ctx, input)
output, err := conn.UpdateResolverConfig(ctx, input)

if err != nil {
return sdkdiag.AppendErrorf(diags, "creating Route53 Resolver Config: %s", err)
}

d.SetId(aws.StringValue(output.ResolverConfig.Id))
d.SetId(aws.ToString(output.ResolverConfig.Id))

if _, err = waitAutodefinedReverseUpdated(ctx, conn, d.Id(), autodefinedReverseFlag); err != nil {
return sdkdiag.AppendErrorf(diags, "waiting for Route53 Resolver Config (%s) create: %s", d.Id(), err)
Expand All @@ -78,9 +80,9 @@ func resourceConfigCreate(ctx context.Context, d *schema.ResourceData, meta inte

func resourceConfigRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics
conn := meta.(*conns.AWSClient).Route53ResolverConn(ctx)
conn := meta.(*conns.AWSClient).Route53ResolverClient(ctx)

resolverConfig, err := FindResolverConfigByID(ctx, conn, d.Id())
resolverConfig, err := findResolverConfigByID(ctx, conn, d.Id())

if !d.IsNewResource() && tfresource.NotFound(err) {
log.Printf("[WARN] Route53 Resolver Config (%s) not found, removing from state", d.Id())
Expand All @@ -92,11 +94,11 @@ func resourceConfigRead(ctx context.Context, d *schema.ResourceData, meta interf
return sdkdiag.AppendErrorf(diags, "reading Route53 Resolver Config (%s): %s", d.Id(), err)
}

var autodefinedReverseFlag string
if aws.StringValue(resolverConfig.AutodefinedReverse) == route53resolver.ResolverAutodefinedReverseStatusEnabled {
autodefinedReverseFlag = autodefinedReverseFlagEnable
var autodefinedReverseFlag awstypes.AutodefinedReverseFlag
if resolverConfig.AutodefinedReverse == awstypes.ResolverAutodefinedReverseStatusEnabled {
autodefinedReverseFlag = awstypes.AutodefinedReverseFlagEnable
} else {
autodefinedReverseFlag = autodefinedReverseFlagDisable
autodefinedReverseFlag = awstypes.AutodefinedReverseFlagDisable
}
d.Set("autodefined_reverse_flag", autodefinedReverseFlag)
d.Set(names.AttrOwnerID, resolverConfig.OwnerId)
Expand All @@ -107,15 +109,15 @@ func resourceConfigRead(ctx context.Context, d *schema.ResourceData, meta interf

func resourceConfigUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics
conn := meta.(*conns.AWSClient).Route53ResolverConn(ctx)
conn := meta.(*conns.AWSClient).Route53ResolverClient(ctx)

autodefinedReverseFlag := d.Get("autodefined_reverse_flag").(string)
autodefinedReverseFlag := awstypes.AutodefinedReverseFlag(d.Get("autodefined_reverse_flag").(string))
input := &route53resolver.UpdateResolverConfigInput{
AutodefinedReverseFlag: aws.String(autodefinedReverseFlag),
AutodefinedReverseFlag: autodefinedReverseFlag,
ResourceId: aws.String(d.Get(names.AttrResourceID).(string)),
}

_, err := conn.UpdateResolverConfigWithContext(ctx, input)
_, err := conn.UpdateResolverConfig(ctx, input)

if err != nil {
return sdkdiag.AppendErrorf(diags, "updating Route53 Resolver Config: %s", err)
Expand All @@ -128,54 +130,38 @@ func resourceConfigUpdate(ctx context.Context, d *schema.ResourceData, meta inte
return append(diags, resourceConfigRead(ctx, d, meta)...)
}

func FindResolverConfigByID(ctx context.Context, conn *route53resolver.Route53Resolver, id string) (*route53resolver.ResolverConfig, error) {
func findResolverConfigByID(ctx context.Context, conn *route53resolver.Client, id string) (*awstypes.ResolverConfig, error) {
input := &route53resolver.ListResolverConfigsInput{}
var output *route53resolver.ResolverConfig

// GetResolverConfig does not support query by ID.
err := conn.ListResolverConfigsPagesWithContext(ctx, input, func(page *route53resolver.ListResolverConfigsOutput, lastPage bool) bool {
if page == nil {
return !lastPage
pages := route53resolver.NewListResolverConfigsPaginator(conn, input)
for pages.HasMorePages() {
page, err := pages.NextPage(ctx)

if errs.IsA[*awstypes.ResourceNotFoundException](err) {
return nil, &retry.NotFoundError{
LastError: err,
LastRequest: input,
}
}

for _, v := range page.ResolverConfigs {
if aws.StringValue(v.Id) == id {
output = v
if err != nil {
return nil, err
}

return false
for _, v := range page.ResolverConfigs {
if aws.ToString(v.Id) == id {
return &v, nil
}
}

return !lastPage
})

if err != nil {
return nil, err
}

if output == nil {
return nil, &retry.NotFoundError{LastRequest: input}
}

return output, nil
}

const (
// https://docs.aws.amazon.com/Route53/latest/APIReference/API_route53resolver_UpdateResolverConfig.html#API_route53resolver_UpdateResolverConfig_RequestSyntax
autodefinedReverseFlagDisable = "DISABLE"
autodefinedReverseFlagEnable = "ENABLE"
)

func autodefinedReverseFlag_Values() []string {
return []string{
autodefinedReverseFlagDisable,
autodefinedReverseFlagEnable,
}
return nil, tfresource.NewEmptyResultError(input)
}

func statusAutodefinedReverse(ctx context.Context, conn *route53resolver.Route53Resolver, id string) retry.StateRefreshFunc {
func statusAutodefinedReverse(ctx context.Context, conn *route53resolver.Client, id string) retry.StateRefreshFunc {
return func() (interface{}, string, error) {
output, err := FindResolverConfigByID(ctx, conn, id)
output, err := findResolverConfigByID(ctx, conn, id)

if tfresource.NotFound(err) {
return nil, "", nil
Expand All @@ -185,50 +171,50 @@ func statusAutodefinedReverse(ctx context.Context, conn *route53resolver.Route53
return nil, "", err
}

return output, aws.StringValue(output.AutodefinedReverse), nil
return output, string(output.AutodefinedReverse), nil
}
}

const (
autodefinedReverseUpdatedTimeout = 10 * time.Minute
)

func waitAutodefinedReverseUpdated(ctx context.Context, conn *route53resolver.Route53Resolver, id, autodefinedReverseFlag string) (*route53resolver.ResolverConfig, error) {
if autodefinedReverseFlag == autodefinedReverseFlagDisable {
func waitAutodefinedReverseUpdated(ctx context.Context, conn *route53resolver.Client, id string, autodefinedReverseFlag awstypes.AutodefinedReverseFlag) (*awstypes.ResolverConfig, error) {
if autodefinedReverseFlag == awstypes.AutodefinedReverseFlagDisable {
return waitAutodefinedReverseDisabled(ctx, conn, id)
} else {
return waitAutodefinedReverseEnabled(ctx, conn, id)
}
}

func waitAutodefinedReverseEnabled(ctx context.Context, conn *route53resolver.Route53Resolver, id string) (*route53resolver.ResolverConfig, error) {
func waitAutodefinedReverseEnabled(ctx context.Context, conn *route53resolver.Client, id string) (*awstypes.ResolverConfig, error) {
stateConf := &retry.StateChangeConf{
Pending: []string{route53resolver.ResolverAutodefinedReverseStatusEnabling},
Target: []string{route53resolver.ResolverAutodefinedReverseStatusEnabled},
Pending: enum.Slice(awstypes.ResolverAutodefinedReverseStatusEnabling),
Target: enum.Slice(awstypes.ResolverAutodefinedReverseStatusEnabled),
Refresh: statusAutodefinedReverse(ctx, conn, id),
Timeout: autodefinedReverseUpdatedTimeout,
}

outputRaw, err := stateConf.WaitForStateContext(ctx)

if output, ok := outputRaw.(*route53resolver.ResolverConfig); ok {
if output, ok := outputRaw.(*awstypes.ResolverConfig); ok {
return output, err
}

return nil, err
}

func waitAutodefinedReverseDisabled(ctx context.Context, conn *route53resolver.Route53Resolver, id string) (*route53resolver.ResolverConfig, error) {
func waitAutodefinedReverseDisabled(ctx context.Context, conn *route53resolver.Client, id string) (*awstypes.ResolverConfig, error) {
stateConf := &retry.StateChangeConf{
Pending: []string{route53resolver.ResolverAutodefinedReverseStatusDisabling},
Target: []string{route53resolver.ResolverAutodefinedReverseStatusDisabled},
Pending: enum.Slice(awstypes.ResolverAutodefinedReverseStatusDisabling),
Target: enum.Slice(awstypes.ResolverAutodefinedReverseStatusDisabled),
Refresh: statusAutodefinedReverse(ctx, conn, id),
Timeout: autodefinedReverseUpdatedTimeout,
}

outputRaw, err := stateConf.WaitForStateContext(ctx)

if output, ok := outputRaw.(*route53resolver.ResolverConfig); ok {
if output, ok := outputRaw.(*awstypes.ResolverConfig); ok {
return output, err
}

Expand Down
Loading
Loading