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

Tech debt: Use service package API client withExtraOptions mechanism #41211

Merged
merged 22 commits into from
Feb 4, 2025
Merged
Show file tree
Hide file tree
Changes from 21 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
49fb2ab
apigateway: Use service package 'withExtraOptions' mechanism.
ewbankkit Feb 3, 2025
5de56e4
apigatewayv2: Use service package 'withExtraOptions' mechanism.
ewbankkit Feb 3, 2025
c36a291
appsync: Use service package 'withExtraOptions' mechanism.
ewbankkit Feb 3, 2025
73850d1
chatbot: Use service package 'withExtraOptions' mechanism.
ewbankkit Feb 3, 2025
1443b5e
clooudformation: Use service package 'withExtraOptions' mechanism.
ewbankkit Feb 3, 2025
a600aa1
cloudhsmv2: Use service package 'withExtraOptions' mechanism.
ewbankkit Feb 3, 2025
e8d0c0c
schemas: Use service package 'withExtraOptions' mechanism.
ewbankkit Feb 3, 2025
e08cecd
fms: Use service package 'withExtraOptions' mechanism.
ewbankkit Feb 3, 2025
f9b3034
kinesis: Use service package 'withExtraOptions' mechanism.
ewbankkit Feb 3, 2025
f5ec3bf
lightsail: Use service package 'withExtraOptions' mechanism.
ewbankkit Feb 3, 2025
8b4ce46
kafka: Use service package 'withExtraOptions' mechanism.
ewbankkit Feb 3, 2025
d1778e5
organizations: Use service package 'withExtraOptions' mechanism.
ewbankkit Feb 3, 2025
6579096
route53recoverycontrolconfig: Use service package 'withExtraOptions' …
ewbankkit Feb 3, 2025
3a8b76b
route53recoveryreadiness: Use service package 'withExtraOptions' mech…
ewbankkit Feb 3, 2025
88bf897
s3: Use service package 'withExtraOptions' mechanism.
ewbankkit Feb 3, 2025
8a7f334
ssoadmin: Use service package 'withExtraOptions' mechanism.
ewbankkit Feb 3, 2025
1a9f2f3
sts: Use service package 'withExtraOptions' mechanism.
ewbankkit Feb 3, 2025
c04734b
dynamodb: Use service package 'withExtraOptions' mechanism.
ewbankkit Feb 3, 2025
c4d318d
ec2: Use service package 'withExtraOptions' mechanism.
ewbankkit Feb 3, 2025
c281d11
Run 'make gen'.
ewbankkit Feb 3, 2025
c4836b5
Correct service endpoint test generation for 'route53recoverycontrolc…
ewbankkit Feb 3, 2025
cbdaad3
Add 'withExtraOptions' example to Contributors Guide.
ewbankkit Feb 4, 2025
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
2 changes: 1 addition & 1 deletion internal/generate/serviceendpointtests/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ func main() {

switch packageName {
// TODO: This case should be handled in service data
case "costoptimizationhub", "cur", "globalaccelerator", "route53domains":
case "costoptimizationhub", "cur", "globalaccelerator", "route53domains", "route53recoverycontrolconfig", "route53recoveryreadiness":
td.OverrideRegionRegionalEndpoint = true

case "chatbot":
Expand Down
10 changes: 3 additions & 7 deletions internal/service/apigateway/service_package.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,12 @@ import (
"github.com/aws/aws-sdk-go-v2/service/apigateway/types"
"github.com/hashicorp/terraform-provider-aws/internal/conns"
"github.com/hashicorp/terraform-provider-aws/internal/errs"
"github.com/hashicorp/terraform-provider-aws/names"
)

// NewClient returns a new AWS SDK for Go v2 client for this service package's AWS API.
func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) (*apigateway.Client, error) {
func (p *servicePackage) withExtraOptions(_ context.Context, config map[string]any) []func(*apigateway.Options) {
cfg := *(config["aws_sdkv2_config"].(*aws.Config))

return apigateway.NewFromConfig(cfg,
apigateway.WithEndpointResolverV2(newEndpointResolverV2()),
withBaseEndpoint(config[names.AttrEndpoint].(string)),
return []func(*apigateway.Options){
func(o *apigateway.Options) {
o.Retryer = conns.AddIsErrorRetryables(cfg.Retryer().(aws.RetryerV2), retry.IsErrorRetryableFunc(func(err error) aws.Ternary {
// Many operations can return an error such as:
Expand All @@ -33,5 +29,5 @@ func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) (
return aws.UnknownTernary // Delegate to configured Retryer.
}))
},
), nil
}
}
32 changes: 32 additions & 0 deletions internal/service/apigateway/service_package_gen.go

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

10 changes: 3 additions & 7 deletions internal/service/apigatewayv2/service_package.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,12 @@ import (
awstypes "github.com/aws/aws-sdk-go-v2/service/apigatewayv2/types"
"github.com/hashicorp/terraform-provider-aws/internal/conns"
"github.com/hashicorp/terraform-provider-aws/internal/errs"
"github.com/hashicorp/terraform-provider-aws/names"
)

// NewClient returns a new AWS SDK for Go v2 client for this service package's AWS API.
func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) (*apigatewayv2.Client, error) {
func (p *servicePackage) withExtraOptions(_ context.Context, config map[string]any) []func(*apigatewayv2.Options) {
cfg := *(config["aws_sdkv2_config"].(*aws.Config))

return apigatewayv2.NewFromConfig(cfg,
apigatewayv2.WithEndpointResolverV2(newEndpointResolverV2()),
withBaseEndpoint(config[names.AttrEndpoint].(string)),
return []func(*apigatewayv2.Options){
func(o *apigatewayv2.Options) {
o.Retryer = conns.AddIsErrorRetryables(cfg.Retryer().(aws.RetryerV2), retry.IsErrorRetryableFunc(func(err error) aws.Ternary {
if errs.IsAErrorMessageContains[*awstypes.ConflictException](err, "try again later") {
Expand All @@ -37,5 +33,5 @@ func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) (
return aws.UnknownTernary // Delegate to configured Retryer.
}))
},
), nil
}
}
32 changes: 32 additions & 0 deletions internal/service/apigatewayv2/service_package_gen.go

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

11 changes: 4 additions & 7 deletions internal/service/appsync/service_package.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,19 @@ import (
awstypes "github.com/aws/aws-sdk-go-v2/service/appsync/types"
"github.com/hashicorp/terraform-provider-aws/internal/conns"
"github.com/hashicorp/terraform-provider-aws/internal/errs"
"github.com/hashicorp/terraform-provider-aws/names"
)

// NewClient returns a new AWS SDK for Go v2 client for this service package's AWS API.
func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) (*appsync.Client, error) {
func (p *servicePackage) withExtraOptions(_ context.Context, config map[string]any) []func(*appsync.Options) {
cfg := *(config["aws_sdkv2_config"].(*aws.Config))

return appsync.NewFromConfig(cfg,
appsync.WithEndpointResolverV2(newEndpointResolverV2()),
withBaseEndpoint(config[names.AttrEndpoint].(string)),
return []func(*appsync.Options){
func(o *appsync.Options) {
o.Retryer = conns.AddIsErrorRetryables(cfg.Retryer().(aws.RetryerV2), retry.IsErrorRetryableFunc(func(err error) aws.Ternary {
if errs.IsAErrorMessageContains[*awstypes.ConcurrentModificationException](err, "a GraphQL API creation is already in progress") {
return aws.TrueTernary
}
return aws.UnknownTernary // Delegate to configured Retryer.
}))
}), nil
},
}
}
32 changes: 32 additions & 0 deletions internal/service/appsync/service_package_gen.go

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

10 changes: 3 additions & 7 deletions internal/service/chatbot/service_package.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,12 @@ import (
"github.com/aws/aws-sdk-go-v2/service/chatbot"
"github.com/hashicorp/aws-sdk-go-base/v2/endpoints"
"github.com/hashicorp/terraform-plugin-log/tflog"
"github.com/hashicorp/terraform-provider-aws/names"
)

// NewClient returns a new AWS SDK for Go v2 client for this service package's AWS API.
func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) (*chatbot.Client, error) {
func (p *servicePackage) withExtraOptions(ctx context.Context, config map[string]any) []func(*chatbot.Options) {
cfg := *(config["aws_sdkv2_config"].(*aws.Config))

return chatbot.NewFromConfig(cfg,
chatbot.WithEndpointResolverV2(newEndpointResolverV2()),
withBaseEndpoint(config[names.AttrEndpoint].(string)),
return []func(*chatbot.Options){
func(o *chatbot.Options) {
if config["partition"].(string) == endpoints.AwsPartitionID {
// Chatbot endpoint is available only in the 4 regions us-east-2, us-west-2, eu-west-1, and ap-southeast-1.
Expand All @@ -36,5 +32,5 @@ func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) (
}
}
},
), nil
}
}
32 changes: 32 additions & 0 deletions internal/service/chatbot/service_package_gen.go

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

10 changes: 3 additions & 7 deletions internal/service/cloudformation/service_package.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,12 @@ import (
"github.com/aws/aws-sdk-go-v2/service/cloudformation/types"
"github.com/hashicorp/terraform-provider-aws/internal/conns"
"github.com/hashicorp/terraform-provider-aws/internal/errs"
"github.com/hashicorp/terraform-provider-aws/names"
)

// NewClient returns a new AWS SDK for Go v2 client for this service package's AWS API.
func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) (*cloudformation.Client, error) {
func (p *servicePackage) withExtraOptions(_ context.Context, config map[string]any) []func(*cloudformation.Options) {
cfg := *(config["aws_sdkv2_config"].(*aws.Config))

return cloudformation.NewFromConfig(cfg,
cloudformation.WithEndpointResolverV2(newEndpointResolverV2()),
withBaseEndpoint(config[names.AttrEndpoint].(string)),
return []func(*cloudformation.Options){
func(o *cloudformation.Options) {
o.Retryer = conns.AddIsErrorRetryables(cfg.Retryer().(aws.RetryerV2), retry.IsErrorRetryableFunc(func(err error) aws.Ternary {
if errs.IsAErrorMessageContains[*types.OperationInProgressException](err, "Another Operation on StackSet") {
Expand All @@ -30,5 +26,5 @@ func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) (
return aws.UnknownTernary // Delegate to configured Retryer.
}))
},
), nil
}
}
32 changes: 32 additions & 0 deletions internal/service/cloudformation/service_package_gen.go

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

10 changes: 3 additions & 7 deletions internal/service/cloudhsmv2/service_package.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,12 @@ import (
"github.com/aws/aws-sdk-go-v2/service/cloudhsmv2/types"
"github.com/hashicorp/terraform-provider-aws/internal/conns"
"github.com/hashicorp/terraform-provider-aws/internal/errs"
"github.com/hashicorp/terraform-provider-aws/names"
)

// NewClient returns a new AWS SDK for Go v2 client for this service package's AWS API.
func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) (*cloudhsmv2.Client, error) {
func (p *servicePackage) withExtraOptions(_ context.Context, config map[string]any) []func(*cloudhsmv2.Options) {
cfg := *(config["aws_sdkv2_config"].(*aws.Config))

return cloudhsmv2.NewFromConfig(cfg,
cloudhsmv2.WithEndpointResolverV2(newEndpointResolverV2()),
withBaseEndpoint(config[names.AttrEndpoint].(string)),
return []func(*cloudhsmv2.Options){
func(o *cloudhsmv2.Options) {
o.Retryer = conns.AddIsErrorRetryables(cfg.Retryer().(aws.RetryerV2), retry.IsErrorRetryableFunc(func(err error) aws.Ternary {
if errs.IsAErrorMessageContains[*types.CloudHsmInternalFailureException](err, "request was rejected because of an AWS CloudHSM internal failure") {
Expand All @@ -30,5 +26,5 @@ func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) (
return aws.UnknownTernary // Delegate to configured Retryer.
}))
},
), nil
}
}
Loading
Loading