From bc0ba5de72a40d28b03a86c0c72c3ed0d783a772 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 10 Jun 2024 06:33:50 -0700 Subject: [PATCH 1/4] apigatewayv2: Use custom API client factory. --- .../apigatewayv2/service_package_gen.go | 22 ------------------- names/data/names_data.csv | 2 +- 2 files changed, 1 insertion(+), 23 deletions(-) diff --git a/internal/service/apigatewayv2/service_package_gen.go b/internal/service/apigatewayv2/service_package_gen.go index 1eaa2bc83ac8..72d2363996a0 100644 --- a/internal/service/apigatewayv2/service_package_gen.go +++ b/internal/service/apigatewayv2/service_package_gen.go @@ -5,9 +5,6 @@ package apigatewayv2 import ( "context" - aws_sdkv2 "github.com/aws/aws-sdk-go-v2/aws" - apigatewayv2_sdkv2 "github.com/aws/aws-sdk-go-v2/service/apigatewayv2" - "github.com/hashicorp/terraform-plugin-log/tflog" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/types" "github.com/hashicorp/terraform-provider-aws/names" @@ -131,25 +128,6 @@ func (p *servicePackage) ServicePackageName() string { return names.APIGatewayV2 } -// 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_sdkv2.Client, error) { - cfg := *(config["aws_sdkv2_config"].(*aws_sdkv2.Config)) - - return apigatewayv2_sdkv2.NewFromConfig(cfg, func(o *apigatewayv2_sdkv2.Options) { - if endpoint := config[names.AttrEndpoint].(string); endpoint != "" { - tflog.Debug(ctx, "setting endpoint", map[string]any{ - "tf_aws.endpoint": endpoint, - }) - o.BaseEndpoint = aws_sdkv2.String(endpoint) - - if o.EndpointOptions.UseFIPSEndpoint == aws_sdkv2.FIPSEndpointStateEnabled { - tflog.Debug(ctx, "endpoint set, ignoring UseFIPSEndpoint setting") - o.EndpointOptions.UseFIPSEndpoint = aws_sdkv2.FIPSEndpointStateDisabled - } - } - }), nil -} - func ServicePackage(ctx context.Context) conns.ServicePackage { return &servicePackage{} } diff --git a/names/data/names_data.csv b/names/data/names_data.csv index 7d0408971357..4944a0efc6d7 100644 --- a/names/data/names_data.csv +++ b/names/data/names_data.csv @@ -11,7 +11,7 @@ amplifyuibuilder,amplifyuibuilder,amplifyuibuilder,amplifyuibuilder,,amplifyuibu ,,,,,,,,,,,,,,,,,Apache MXNet on AWS,AWS,x,,,,,,,,,,Documentation apigateway,apigateway,apigateway,apigateway,,apigateway,,,APIGateway,APIGateway,x,,2,aws_api_gateway_,aws_apigateway_,,api_gateway_,API Gateway,Amazon,,,,,,,API Gateway,GetAccount,,, apigatewaymanagementapi,apigatewaymanagementapi,apigatewaymanagementapi,apigatewaymanagementapi,,apigatewaymanagementapi,,,APIGatewayManagementAPI,ApiGatewayManagementApi,,1,,,aws_apigatewaymanagementapi_,,apigatewaymanagementapi_,API Gateway Management API,Amazon,,x,,,,,ApiGatewayManagementApi,,,, -apigatewayv2,apigatewayv2,apigatewayv2,apigatewayv2,,apigatewayv2,,,APIGatewayV2,ApiGatewayV2,,,2,,aws_apigatewayv2_,,apigatewayv2_,API Gateway V2,Amazon,,,,,,,ApiGatewayV2,GetApis,,, +apigatewayv2,apigatewayv2,apigatewayv2,apigatewayv2,,apigatewayv2,,,APIGatewayV2,ApiGatewayV2,x,,2,,aws_apigatewayv2_,,apigatewayv2_,API Gateway V2,Amazon,,,,,,,ApiGatewayV2,GetApis,,, appfabric,appfabric,appfabric,appfabric,,appfabric,,,AppFabric,AppFabric,,,2,,aws_appfabric_,,appfabric_,AppFabric,AWS,,,,,,,AppFabric,ListAppBundles,,, appmesh,appmesh,appmesh,appmesh,,appmesh,,,AppMesh,AppMesh,,1,,,aws_appmesh_,,appmesh_,App Mesh,AWS,,,,,,,App Mesh,ListMeshes,,, apprunner,apprunner,apprunner,apprunner,,apprunner,,,AppRunner,AppRunner,,,2,,aws_apprunner_,,apprunner_,App Runner,AWS,,,,,,,AppRunner,ListConnections,,, From 58163b7c9b9da375d970af5c35d19f91debb19f3 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 10 Jun 2024 06:38:59 -0700 Subject: [PATCH 2/4] apigatewayv2: Add custom API client factory. --- .../service/apigatewayv2/service_package.go | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 internal/service/apigatewayv2/service_package.go diff --git a/internal/service/apigatewayv2/service_package.go b/internal/service/apigatewayv2/service_package.go new file mode 100644 index 000000000000..47d0582b72ca --- /dev/null +++ b/internal/service/apigatewayv2/service_package.go @@ -0,0 +1,43 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package apigatewayv2 + +import ( + "context" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/aws/retry" + "github.com/aws/aws-sdk-go-v2/service/apigatewayv2" + awstypes "github.com/aws/aws-sdk-go-v2/service/apigatewayv2/types" + "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/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) { + cfg := *(config["aws_sdkv2_config"].(*aws.Config)) + + return apigatewayv2.NewFromConfig(cfg, func(o *apigatewayv2.Options) { + if endpoint := config[names.AttrEndpoint].(string); endpoint != "" { + tflog.Debug(ctx, "setting endpoint", map[string]any{ + "tf_aws.endpoint": endpoint, + }) + o.BaseEndpoint = aws.String(endpoint) + + if o.EndpointOptions.UseFIPSEndpoint == aws.FIPSEndpointStateEnabled { + tflog.Debug(ctx, "endpoint set, ignoring UseFIPSEndpoint setting") + o.EndpointOptions.UseFIPSEndpoint = aws.FIPSEndpointStateDisabled + } + } + + o.Retryer = conns.AddIsErrorRetryables(cfg.Retryer().(aws.RetryerV2), retry.IsErrorRetryableFunc(func(err error) aws.Ternary { + if errs.IsAErrorMessageContains[*awstypes.ConflictException](err, "try again later") { + return aws.TrueTernary + } + return aws.UnknownTernary // Delegate to configured Retryer. + })) + }), nil +} From b914f9644c044f9c90784e43f7d3104afef8398c Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 10 Jun 2024 06:42:31 -0700 Subject: [PATCH 3/4] Add CHANGELOG entry. --- .changelog/#####.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/#####.txt diff --git a/.changelog/#####.txt b/.changelog/#####.txt new file mode 100644 index 000000000000..9b4d3c492d27 --- /dev/null +++ b/.changelog/#####.txt @@ -0,0 +1,3 @@ +```release-note:bug +service/apigatewayv2: Retry on `ConflictException: Unable to complete operation due to concurrent modification` errors +``` \ No newline at end of file From 4a19667d3f5d7354b990208c6005cec1e6ab15cc Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 10 Jun 2024 06:46:04 -0700 Subject: [PATCH 4/4] Correct CHANGELOG entry file name. --- .changelog/{#####.txt => 37902.txt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .changelog/{#####.txt => 37902.txt} (100%) diff --git a/.changelog/#####.txt b/.changelog/37902.txt similarity index 100% rename from .changelog/#####.txt rename to .changelog/37902.txt