From a154e1b5a9352d188e66a534d4fb9fcbf3a4ff03 Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Fri, 29 Sep 2023 09:48:33 -0400 Subject: [PATCH] aws_servicequotas: update to aws sdk v2 (#33656) --- go.mod | 1 + go.sum | 2 + internal/conns/awsclient_gen.go | 6 +-- internal/service/servicequotas/acc_test.go | 29 ++++++------ internal/service/servicequotas/find.go | 46 ++++++++----------- .../servicequotas/service_data_source.go | 32 +++++++------ .../servicequotas/service_data_source_test.go | 9 ++-- .../servicequotas/service_package_gen.go | 17 ++++--- .../service/servicequotas/service_quota.go | 35 +++++++------- .../service_quota_data_source.go | 16 +++---- .../service_quota_data_source_test.go | 30 ++++++------ .../servicequotas/service_quota_test.go | 14 +++--- names/names.go | 1 + names/names_data.csv | 2 +- 14 files changed, 127 insertions(+), 113 deletions(-) diff --git a/go.mod b/go.mod index 36cdb062f355..5ed4f945c261 100644 --- a/go.mod +++ b/go.mod @@ -59,6 +59,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/s3control v1.33.0 github.com/aws/aws-sdk-go-v2/service/scheduler v1.3.0 github.com/aws/aws-sdk-go-v2/service/securitylake v1.7.0 + github.com/aws/aws-sdk-go-v2/service/servicequotas v1.16.0 github.com/aws/aws-sdk-go-v2/service/sesv2 v1.20.1 github.com/aws/aws-sdk-go-v2/service/signer v1.16.5 github.com/aws/aws-sdk-go-v2/service/ssm v1.38.0 diff --git a/go.sum b/go.sum index 1ec9feca7742..9d4adefa7eb2 100644 --- a/go.sum +++ b/go.sum @@ -156,6 +156,8 @@ github.com/aws/aws-sdk-go-v2/service/scheduler v1.3.0 h1:uzCEL2ILopsOcWvbmeMmmy3 github.com/aws/aws-sdk-go-v2/service/scheduler v1.3.0/go.mod h1:cdpHC7Nd4Yvtf/rhRqyqqI0fzoCb0fpo2oOFVZ0HTeQ= github.com/aws/aws-sdk-go-v2/service/securitylake v1.7.0 h1:Ou2rjk3siybv09bzpi5fs+9zOYZACxT1LT0KkcDAtIs= github.com/aws/aws-sdk-go-v2/service/securitylake v1.7.0/go.mod h1:/MCawoN8Xib5q04k2HsIQ+K2cNtC3CHamrfLZXd6KmA= +github.com/aws/aws-sdk-go-v2/service/servicequotas v1.16.0 h1:dhp7Do5oaybdDdYGcdUNyzYFPsM4sNCvuPqph7MG5X0= +github.com/aws/aws-sdk-go-v2/service/servicequotas v1.16.0/go.mod h1:7+H2efEiOCrUl5EEsDFhe5BeI4gHGLUlisCyAJAcSvs= github.com/aws/aws-sdk-go-v2/service/sesv2 v1.20.1 h1:QxzS/Hr5kixvMyPIXTfspnRUiKgFJSTPrhnglAi2YLI= github.com/aws/aws-sdk-go-v2/service/sesv2 v1.20.1/go.mod h1:qpAr/ear7teIUoBd1gaPbvavdICoo1XyAIHPVlyawQc= github.com/aws/aws-sdk-go-v2/service/signer v1.16.5 h1:nqZqDR44/ao9zQXyuCJI8L/C3QQIo4wtZyLtgwJfpEY= diff --git a/internal/conns/awsclient_gen.go b/internal/conns/awsclient_gen.go index a4f259fd8cc5..7ca3baa43bbe 100644 --- a/internal/conns/awsclient_gen.go +++ b/internal/conns/awsclient_gen.go @@ -53,6 +53,7 @@ import ( s3control_sdkv2 "github.com/aws/aws-sdk-go-v2/service/s3control" scheduler_sdkv2 "github.com/aws/aws-sdk-go-v2/service/scheduler" securitylake_sdkv2 "github.com/aws/aws-sdk-go-v2/service/securitylake" + servicequotas_sdkv2 "github.com/aws/aws-sdk-go-v2/service/servicequotas" sesv2_sdkv2 "github.com/aws/aws-sdk-go-v2/service/sesv2" signer_sdkv2 "github.com/aws/aws-sdk-go-v2/service/signer" ssm_sdkv2 "github.com/aws/aws-sdk-go-v2/service/ssm" @@ -201,7 +202,6 @@ import ( serverlessapplicationrepository_sdkv1 "github.com/aws/aws-sdk-go/service/serverlessapplicationrepository" servicecatalog_sdkv1 "github.com/aws/aws-sdk-go/service/servicecatalog" servicediscovery_sdkv1 "github.com/aws/aws-sdk-go/service/servicediscovery" - servicequotas_sdkv1 "github.com/aws/aws-sdk-go/service/servicequotas" ses_sdkv1 "github.com/aws/aws-sdk-go/service/ses" sfn_sdkv1 "github.com/aws/aws-sdk-go/service/sfn" shield_sdkv1 "github.com/aws/aws-sdk-go/service/shield" @@ -1010,8 +1010,8 @@ func (c *AWSClient) ServiceDiscoveryConn(ctx context.Context) *servicediscovery_ return errs.Must(conn[*servicediscovery_sdkv1.ServiceDiscovery](ctx, c, names.ServiceDiscovery)) } -func (c *AWSClient) ServiceQuotasConn(ctx context.Context) *servicequotas_sdkv1.ServiceQuotas { - return errs.Must(conn[*servicequotas_sdkv1.ServiceQuotas](ctx, c, names.ServiceQuotas)) +func (c *AWSClient) ServiceQuotasClient(ctx context.Context) *servicequotas_sdkv2.Client { + return errs.Must(client[*servicequotas_sdkv2.Client](ctx, c, names.ServiceQuotas)) } func (c *AWSClient) ShieldConn(ctx context.Context) *shield_sdkv1.Shield { diff --git a/internal/service/servicequotas/acc_test.go b/internal/service/servicequotas/acc_test.go index 5f9ff82c9d94..c2a7d92b7fc0 100644 --- a/internal/service/servicequotas/acc_test.go +++ b/internal/service/servicequotas/acc_test.go @@ -5,11 +5,12 @@ package servicequotas_test import ( "context" + "errors" "testing" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/servicequotas" - "github.com/hashicorp/aws-sdk-go-base/v2/awsv1shim/v2/tfawserr" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/servicequotas" + "github.com/aws/aws-sdk-go-v2/service/servicequotas/types" "github.com/hashicorp/terraform-provider-aws/internal/acctest" "github.com/hashicorp/terraform-provider-aws/internal/conns" ) @@ -29,11 +30,11 @@ const ( ) func testAccPreCheck(ctx context.Context, t *testing.T) { - conn := acctest.Provider.Meta().(*conns.AWSClient).ServiceQuotasConn(ctx) + conn := acctest.Provider.Meta().(*conns.AWSClient).ServiceQuotasClient(ctx) input := &servicequotas.ListServicesInput{} - _, err := conn.ListServicesWithContext(ctx, input) + _, err := conn.ListServices(ctx, input) if acctest.PreCheckSkipError(err) { t.Skipf("skipping acceptance testing: %s", err) @@ -46,15 +47,16 @@ func testAccPreCheck(ctx context.Context, t *testing.T) { // nosemgrep:ci.servicequotas-in-func-name func preCheckServiceQuotaSet(ctx context.Context, serviceCode, quotaCode string, t *testing.T) { - conn := acctest.Provider.Meta().(*conns.AWSClient).ServiceQuotasConn(ctx) + conn := acctest.Provider.Meta().(*conns.AWSClient).ServiceQuotasClient(ctx) input := &servicequotas.GetServiceQuotaInput{ QuotaCode: aws.String(quotaCode), ServiceCode: aws.String(serviceCode), } - _, err := conn.GetServiceQuotaWithContext(ctx, input) - if tfawserr.ErrCodeEquals(err, servicequotas.ErrCodeNoSuchResourceException) { + _, err := conn.GetServiceQuota(ctx, input) + var nsr *types.NoSuchResourceException + if errors.As(err, &nsr) { t.Fatalf("The Service Quota (%s/%s) has never been set. This test can only be run with a quota that has previously been set. Please update the test to check a new quota.", serviceCode, quotaCode) } if err != nil { @@ -63,31 +65,32 @@ func preCheckServiceQuotaSet(ctx context.Context, serviceCode, quotaCode string, } func preCheckServiceQuotaUnset(ctx context.Context, serviceCode, quotaCode string, t *testing.T) { - conn := acctest.Provider.Meta().(*conns.AWSClient).ServiceQuotasConn(ctx) + conn := acctest.Provider.Meta().(*conns.AWSClient).ServiceQuotasClient(ctx) input := &servicequotas.GetServiceQuotaInput{ QuotaCode: aws.String(quotaCode), ServiceCode: aws.String(serviceCode), } - _, err := conn.GetServiceQuotaWithContext(ctx, input) + _, err := conn.GetServiceQuota(ctx, input) if err == nil { t.Fatalf("The Service Quota (%s/%s) has been set. This test can only be run with a quota that has never been set. Please update the test to check a new quota.", serviceCode, quotaCode) } - if !tfawserr.ErrCodeEquals(err, servicequotas.ErrCodeNoSuchResourceException) { + var nsr *types.NoSuchResourceException + if !errors.As(err, &nsr) { t.Fatalf("unexpected PreCheck error getting Service Quota (%s/%s) : %s", serviceCode, quotaCode, err) } } func preCheckServiceQuotaHasUsageMetric(ctx context.Context, serviceCode, quotaCode string, t *testing.T) { - conn := acctest.Provider.Meta().(*conns.AWSClient).ServiceQuotasConn(ctx) + conn := acctest.Provider.Meta().(*conns.AWSClient).ServiceQuotasClient(ctx) input := &servicequotas.GetAWSDefaultServiceQuotaInput{ QuotaCode: aws.String(quotaCode), ServiceCode: aws.String(serviceCode), } - quota, err := conn.GetAWSDefaultServiceQuotaWithContext(ctx, input) + quota, err := conn.GetAWSDefaultServiceQuota(ctx, input) if err != nil { t.Fatalf("unexpected PreCheck error getting Service Quota (%s/%s) : %s", serviceCode, quotaCode, err) } diff --git a/internal/service/servicequotas/find.go b/internal/service/servicequotas/find.go index fd67bf3a796e..bf2208d95698 100644 --- a/internal/service/servicequotas/find.go +++ b/internal/service/servicequotas/find.go @@ -5,22 +5,23 @@ package servicequotas import ( "context" + "errors" "fmt" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/servicequotas" - "github.com/hashicorp/aws-sdk-go-base/v2/awsv1shim/v2/tfawserr" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/servicequotas" + "github.com/aws/aws-sdk-go-v2/service/servicequotas/types" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" ) -func findServiceQuotaDefaultByID(ctx context.Context, conn *servicequotas.ServiceQuotas, serviceCode, quotaCode string) (*servicequotas.ServiceQuota, error) { +func findServiceQuotaDefaultByID(ctx context.Context, conn *servicequotas.Client, serviceCode, quotaCode string) (*types.ServiceQuota, error) { input := &servicequotas.GetAWSDefaultServiceQuotaInput{ ServiceCode: aws.String(serviceCode), QuotaCode: aws.String(quotaCode), } - output, err := conn.GetAWSDefaultServiceQuotaWithContext(ctx, input) + output, err := conn.GetAWSDefaultServiceQuota(ctx, input) if err != nil { return nil, err @@ -32,45 +33,38 @@ func findServiceQuotaDefaultByID(ctx context.Context, conn *servicequotas.Servic return output.Quota, nil } -func findServiceQuotaDefaultByName(ctx context.Context, conn *servicequotas.ServiceQuotas, serviceCode, quotaName string) (*servicequotas.ServiceQuota, error) { +func findServiceQuotaDefaultByName(ctx context.Context, conn *servicequotas.Client, serviceCode, quotaName string) (*types.ServiceQuota, error) { input := &servicequotas.ListAWSDefaultServiceQuotasInput{ ServiceCode: aws.String(serviceCode), } - var defaultQuota *servicequotas.ServiceQuota - err := conn.ListAWSDefaultServiceQuotasPagesWithContext(ctx, input, func(page *servicequotas.ListAWSDefaultServiceQuotasOutput, lastPage bool) bool { - if page == nil { - return !lastPage + paginator := servicequotas.NewListAWSDefaultServiceQuotasPaginator(conn, input) + for paginator.HasMorePages() { + page, err := paginator.NextPage(ctx) + if err != nil { + return nil, err } for _, q := range page.Quotas { - if aws.StringValue(q.QuotaName) == quotaName { - defaultQuota = q - return false + if aws.ToString(q.QuotaName) == quotaName { + return &q, nil } } - - return !lastPage - }) - if err != nil { - return nil, err - } - if defaultQuota == nil { - return nil, tfresource.NewEmptyResultError(input) } - return defaultQuota, nil + return nil, tfresource.NewEmptyResultError(input) } -func findServiceQuotaByID(ctx context.Context, conn *servicequotas.ServiceQuotas, serviceCode, quotaCode string) (*servicequotas.ServiceQuota, error) { +func findServiceQuotaByID(ctx context.Context, conn *servicequotas.Client, serviceCode, quotaCode string) (*types.ServiceQuota, error) { input := &servicequotas.GetServiceQuotaInput{ ServiceCode: aws.String(serviceCode), QuotaCode: aws.String(quotaCode), } - output, err := conn.GetServiceQuotaWithContext(ctx, input) + output, err := conn.GetServiceQuota(ctx, input) - if tfawserr.ErrCodeEquals(err, servicequotas.ErrCodeNoSuchResourceException) { + var nsr *types.NoSuchResourceException + if errors.As(err, &nsr) { return nil, &retry.NotFoundError{ LastError: err, LastRequest: input, @@ -86,7 +80,7 @@ func findServiceQuotaByID(ctx context.Context, conn *servicequotas.ServiceQuotas if output.Quota.ErrorReason != nil { return nil, &retry.NotFoundError{ - Message: fmt.Sprintf("%s: %s", aws.StringValue(output.Quota.ErrorReason.ErrorCode), aws.StringValue(output.Quota.ErrorReason.ErrorMessage)), + Message: fmt.Sprintf("%s: %s", output.Quota.ErrorReason.ErrorCode, aws.ToString(output.Quota.ErrorReason.ErrorMessage)), LastRequest: input, } } diff --git a/internal/service/servicequotas/service_data_source.go b/internal/service/servicequotas/service_data_source.go index c9d5b26f3440..736e8f4f3870 100644 --- a/internal/service/servicequotas/service_data_source.go +++ b/internal/service/servicequotas/service_data_source.go @@ -6,8 +6,9 @@ package servicequotas import ( "context" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/servicequotas" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/servicequotas" + "github.com/aws/aws-sdk-go-v2/service/servicequotas/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-aws/internal/conns" @@ -34,26 +35,31 @@ func DataSourceService() *schema.Resource { func dataSourceServiceRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).ServiceQuotasConn(ctx) + conn := meta.(*conns.AWSClient).ServiceQuotasClient(ctx) serviceName := d.Get("service_name").(string) input := &servicequotas.ListServicesInput{} - var service *servicequotas.ServiceInfo - err := conn.ListServicesPagesWithContext(ctx, input, func(page *servicequotas.ListServicesOutput, lastPage bool) bool { + var service *types.ServiceInfo + paginator := servicequotas.NewListServicesPaginator(conn, input) + for paginator.HasMorePages() { + page, err := paginator.NextPage(ctx) + if err != nil { + return sdkdiag.AppendErrorf(diags, "listing Services: %s", err) + } + for _, s := range page.Services { - if aws.StringValue(s.ServiceName) == serviceName { - service = s + s := s + if aws.ToString(s.ServiceName) == serviceName { + service = &s break } } - return !lastPage - }) - - if err != nil { - return sdkdiag.AppendErrorf(diags, "listing Services: %s", err) + if service != nil { + break // stop paging once found + } } if service == nil { @@ -62,7 +68,7 @@ func dataSourceServiceRead(ctx context.Context, d *schema.ResourceData, meta int d.Set("service_code", service.ServiceCode) d.Set("service_name", service.ServiceName) - d.SetId(aws.StringValue(service.ServiceCode)) + d.SetId(aws.ToString(service.ServiceCode)) return diags } diff --git a/internal/service/servicequotas/service_data_source_test.go b/internal/service/servicequotas/service_data_source_test.go index 1bbef1388e66..f77265606644 100644 --- a/internal/service/servicequotas/service_data_source_test.go +++ b/internal/service/servicequotas/service_data_source_test.go @@ -7,9 +7,9 @@ import ( "fmt" "testing" - "github.com/aws/aws-sdk-go/service/servicequotas" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/acctest" + "github.com/hashicorp/terraform-provider-aws/names" ) func TestAccServiceQuotasServiceDataSource_serviceName(t *testing.T) { @@ -17,8 +17,11 @@ func TestAccServiceQuotasServiceDataSource_serviceName(t *testing.T) { dataSourceName := "data.aws_servicequotas_service.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckPartitionHasService(t, servicequotas.EndpointsID) }, - ErrorCheck: acctest.ErrorCheck(t, servicequotas.EndpointsID), + PreCheck: func() { + acctest.PreCheck(ctx, t) + acctest.PreCheckPartitionHasService(t, names.ServiceQuotasEndpointID) + }, + ErrorCheck: acctest.ErrorCheck(t, names.ServiceQuotasEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, Steps: []resource.TestStep{ { diff --git a/internal/service/servicequotas/service_package_gen.go b/internal/service/servicequotas/service_package_gen.go index 5f2630a6e04d..489fa622f8cc 100644 --- a/internal/service/servicequotas/service_package_gen.go +++ b/internal/service/servicequotas/service_package_gen.go @@ -5,9 +5,8 @@ package servicequotas import ( "context" - aws_sdkv1 "github.com/aws/aws-sdk-go/aws" - session_sdkv1 "github.com/aws/aws-sdk-go/aws/session" - servicequotas_sdkv1 "github.com/aws/aws-sdk-go/service/servicequotas" + aws_sdkv2 "github.com/aws/aws-sdk-go-v2/aws" + servicequotas_sdkv2 "github.com/aws/aws-sdk-go-v2/service/servicequotas" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/types" "github.com/hashicorp/terraform-provider-aws/names" @@ -49,11 +48,15 @@ func (p *servicePackage) ServicePackageName() string { return names.ServiceQuotas } -// NewConn returns a new AWS SDK for Go v1 client for this service package's AWS API. -func (p *servicePackage) NewConn(ctx context.Context, config map[string]any) (*servicequotas_sdkv1.ServiceQuotas, error) { - sess := config["session"].(*session_sdkv1.Session) +// 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) (*servicequotas_sdkv2.Client, error) { + cfg := *(config["aws_sdkv2_config"].(*aws_sdkv2.Config)) - return servicequotas_sdkv1.New(sess.Copy(&aws_sdkv1.Config{Endpoint: aws_sdkv1.String(config["endpoint"].(string))})), nil + return servicequotas_sdkv2.NewFromConfig(cfg, func(o *servicequotas_sdkv2.Options) { + if endpoint := config["endpoint"].(string); endpoint != "" { + o.BaseEndpoint = aws_sdkv2.String(endpoint) + } + }), nil } func ServicePackage(ctx context.Context) conns.ServicePackage { diff --git a/internal/service/servicequotas/service_quota.go b/internal/service/servicequotas/service_quota.go index f7a016dcde99..daaac8724081 100644 --- a/internal/service/servicequotas/service_quota.go +++ b/internal/service/servicequotas/service_quota.go @@ -5,13 +5,14 @@ package servicequotas import ( "context" + "errors" "fmt" "strings" "github.com/YakDriver/regexache" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/servicequotas" - "github.com/hashicorp/aws-sdk-go-base/v2/awsv1shim/v2/tfawserr" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/servicequotas" + "github.com/aws/aws-sdk-go-v2/service/servicequotas/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" @@ -134,7 +135,7 @@ func ResourceServiceQuota() *schema.Resource { func resourceServiceQuotaCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).ServiceQuotasConn(ctx) + conn := meta.(*conns.AWSClient).ServiceQuotasClient(ctx) quotaCode := d.Get("quota_code").(string) serviceCode := d.Get("service_code").(string) @@ -148,14 +149,14 @@ func resourceServiceQuotaCreate(ctx context.Context, d *schema.ResourceData, met if err != nil { return sdkdiag.AppendErrorf(diags, "getting Default Service Quota for (%s/%s): %s", serviceCode, quotaCode, err) } - quotaValue := aws.Float64Value(defaultQuota.Value) + quotaValue := aws.ToFloat64(defaultQuota.Value) serviceQuota, err := findServiceQuotaByID(ctx, conn, serviceCode, quotaCode) if err != nil && !tfresource.NotFound(err) { return sdkdiag.AppendErrorf(diags, "getting Service Quota for (%s/%s): %s", serviceCode, quotaCode, err) } if serviceQuota != nil { - quotaValue = aws.Float64Value(serviceQuota.Value) + quotaValue = aws.ToFloat64(serviceQuota.Value) } if value > quotaValue { @@ -165,7 +166,7 @@ func resourceServiceQuotaCreate(ctx context.Context, d *schema.ResourceData, met ServiceCode: aws.String(serviceCode), } - output, err := conn.RequestServiceQuotaIncreaseWithContext(ctx, input) + output, err := conn.RequestServiceQuotaIncrease(ctx, input) if err != nil { return sdkdiag.AppendErrorf(diags, "requesting Service Quota (%s) increase: %s", d.Id(), err) @@ -183,7 +184,7 @@ func resourceServiceQuotaCreate(ctx context.Context, d *schema.ResourceData, met func resourceServiceQuotaRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).ServiceQuotasConn(ctx) + conn := meta.(*conns.AWSClient).ServiceQuotasClient(ctx) serviceCode, quotaCode, err := resourceServiceQuotaParseID(d.Id()) @@ -228,9 +229,10 @@ func resourceServiceQuotaRead(ctx context.Context, d *schema.ResourceData, meta RequestId: aws.String(requestID), } - output, err := conn.GetRequestedServiceQuotaChangeWithContext(ctx, input) + output, err := conn.GetRequestedServiceQuotaChange(ctx, input) - if tfawserr.ErrCodeEquals(err, servicequotas.ErrCodeNoSuchResourceException) { + var nsr *types.NoSuchResourceException + if errors.As(err, &nsr) { d.Set("request_id", "") d.Set("request_status", "") return diags @@ -244,13 +246,12 @@ func resourceServiceQuotaRead(ctx context.Context, d *schema.ResourceData, meta return sdkdiag.AppendErrorf(diags, "getting Service Quotas Requested Service Quota Change (%s): empty result", requestID) } - requestStatus := aws.StringValue(output.RequestedQuota.Status) - d.Set("request_status", requestStatus) + d.Set("request_status", output.RequestedQuota.Status) - switch requestStatus { - case servicequotas.RequestStatusApproved, servicequotas.RequestStatusCaseClosed, servicequotas.RequestStatusDenied: + switch output.RequestedQuota.Status { + case types.RequestStatusApproved, types.RequestStatusCaseClosed, types.RequestStatusDenied: d.Set("request_id", "") - case servicequotas.RequestStatusCaseOpened, servicequotas.RequestStatusPending: + case types.RequestStatusCaseOpened, types.RequestStatusPending: d.Set("value", output.RequestedQuota.DesiredValue) } } @@ -260,7 +261,7 @@ func resourceServiceQuotaRead(ctx context.Context, d *schema.ResourceData, meta func resourceServiceQuotaUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).ServiceQuotasConn(ctx) + conn := meta.(*conns.AWSClient).ServiceQuotasClient(ctx) value := d.Get("value").(float64) serviceCode, quotaCode, err := resourceServiceQuotaParseID(d.Id()) @@ -275,7 +276,7 @@ func resourceServiceQuotaUpdate(ctx context.Context, d *schema.ResourceData, met ServiceCode: aws.String(serviceCode), } - output, err := conn.RequestServiceQuotaIncreaseWithContext(ctx, input) + output, err := conn.RequestServiceQuotaIncrease(ctx, input) if err != nil { return sdkdiag.AppendErrorf(diags, "requesting Service Quota (%s) increase: %s", d.Id(), err) diff --git a/internal/service/servicequotas/service_quota_data_source.go b/internal/service/servicequotas/service_quota_data_source.go index 6bd3c03328e3..6979abe91bf6 100644 --- a/internal/service/servicequotas/service_quota_data_source.go +++ b/internal/service/servicequotas/service_quota_data_source.go @@ -6,8 +6,8 @@ package servicequotas import ( "context" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/servicequotas" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/servicequotas/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-aws/internal/conns" @@ -109,7 +109,7 @@ func DataSourceServiceQuota() *schema.Resource { } } -func flattenUsageMetric(usageMetric *servicequotas.MetricInfo) []interface{} { +func flattenUsageMetric(usageMetric *types.MetricInfo) []interface{} { if usageMetric == nil { return []interface{}{} } @@ -117,7 +117,7 @@ func flattenUsageMetric(usageMetric *servicequotas.MetricInfo) []interface{} { var usageMetrics []interface{} var metricDimensions []interface{} - if usageMetric.MetricDimensions != nil && usageMetric.MetricDimensions["Service"] != nil { + if usageMetric.MetricDimensions != nil && usageMetric.MetricDimensions["Service"] != "" { metricDimensions = append(metricDimensions, map[string]interface{}{ "service": usageMetric.MetricDimensions["Service"], "class": usageMetric.MetricDimensions["Class"], @@ -140,14 +140,14 @@ func flattenUsageMetric(usageMetric *servicequotas.MetricInfo) []interface{} { func dataSourceServiceQuotaRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).ServiceQuotasConn(ctx) + conn := meta.(*conns.AWSClient).ServiceQuotasClient(ctx) quotaCode := d.Get("quota_code").(string) quotaName := d.Get("quota_name").(string) serviceCode := d.Get("service_code").(string) var err error - var defaultQuota *servicequotas.ServiceQuota + var defaultQuota *types.ServiceQuota // A Service Quota will always have a default value, but will only have a current value if it has been set. // If it is not set, `GetServiceQuota` will return "NoSuchResourceException" @@ -157,7 +157,7 @@ func dataSourceServiceQuotaRead(ctx context.Context, d *schema.ResourceData, met return sdkdiag.AppendErrorf(diags, "getting Default Service Quota for (%s/%s): %s", serviceCode, quotaName, err) } - quotaCode = aws.StringValue(defaultQuota.QuotaCode) + quotaCode = aws.ToString(defaultQuota.QuotaCode) } else { defaultQuota, err = findServiceQuotaDefaultByID(ctx, conn, serviceCode, quotaCode) if err != nil { @@ -165,7 +165,7 @@ func dataSourceServiceQuotaRead(ctx context.Context, d *schema.ResourceData, met } } - d.SetId(aws.StringValue(defaultQuota.QuotaArn)) + d.SetId(aws.ToString(defaultQuota.QuotaArn)) d.Set("adjustable", defaultQuota.Adjustable) d.Set("arn", defaultQuota.QuotaArn) d.Set("default_value", defaultQuota.Value) diff --git a/internal/service/servicequotas/service_quota_data_source_test.go b/internal/service/servicequotas/service_quota_data_source_test.go index f558d7470d1f..2fb65c7c3587 100644 --- a/internal/service/servicequotas/service_quota_data_source_test.go +++ b/internal/service/servicequotas/service_quota_data_source_test.go @@ -8,9 +8,9 @@ import ( "testing" "github.com/YakDriver/regexache" - "github.com/aws/aws-sdk-go/service/servicequotas" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/acctest" + "github.com/hashicorp/terraform-provider-aws/names" ) func TestAccServiceQuotasServiceQuotaDataSource_quotaCode(t *testing.T) { @@ -20,10 +20,10 @@ func TestAccServiceQuotasServiceQuotaDataSource_quotaCode(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, servicequotas.EndpointsID) + acctest.PreCheckPartitionHasService(t, names.ServiceQuotasEndpointID) preCheckServiceQuotaSet(ctx, setQuotaServiceCode, setQuotaQuotaCode, t) }, - ErrorCheck: acctest.ErrorCheck(t, servicequotas.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, names.ServiceQuotasEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, Steps: []resource.TestStep{ { @@ -52,10 +52,10 @@ func TestAccServiceQuotasServiceQuotaDataSource_quotaCode_Unset(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, servicequotas.EndpointsID) + acctest.PreCheckPartitionHasService(t, names.ServiceQuotasEndpointID) preCheckServiceQuotaUnset(ctx, unsetQuotaServiceCode, unsetQuotaQuotaCode, t) }, - ErrorCheck: acctest.ErrorCheck(t, servicequotas.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, names.ServiceQuotasEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, Steps: []resource.TestStep{ { @@ -85,10 +85,10 @@ func TestAccServiceQuotasServiceQuotaDataSource_quotaCode_hasUsageMetric(t *test resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, servicequotas.EndpointsID) + acctest.PreCheckPartitionHasService(t, names.ServiceQuotasEndpointID) preCheckServiceQuotaHasUsageMetric(ctx, hasUsageMetricServiceCode, hasUsageMetricQuotaCode, t) }, - ErrorCheck: acctest.ErrorCheck(t, servicequotas.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, names.ServiceQuotasEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, Steps: []resource.TestStep{ { @@ -126,7 +126,7 @@ func TestAccServiceQuotasServiceQuotaDataSource_PermissionError_quotaCode(t *tes testAccPreCheck(ctx, t) acctest.PreCheckAssumeRoleARN(t) }, - ErrorCheck: acctest.ErrorCheck(t, servicequotas.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, names.ServiceQuotasEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: nil, Steps: []resource.TestStep{ @@ -145,10 +145,10 @@ func TestAccServiceQuotasServiceQuotaDataSource_quotaName(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, servicequotas.EndpointsID) + acctest.PreCheckPartitionHasService(t, names.ServiceQuotasEndpointID) preCheckServiceQuotaSet(ctx, setQuotaServiceCode, setQuotaQuotaCode, t) }, - ErrorCheck: acctest.ErrorCheck(t, servicequotas.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, names.ServiceQuotasEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, Steps: []resource.TestStep{ { @@ -177,10 +177,10 @@ func TestAccServiceQuotasServiceQuotaDataSource_quotaName_Unset(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, servicequotas.EndpointsID) + acctest.PreCheckPartitionHasService(t, names.ServiceQuotasEndpointID) preCheckServiceQuotaUnset(ctx, unsetQuotaServiceCode, unsetQuotaQuotaCode, t) }, - ErrorCheck: acctest.ErrorCheck(t, servicequotas.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, names.ServiceQuotasEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, Steps: []resource.TestStep{ { @@ -210,10 +210,10 @@ func TestAccServiceQuotasServiceQuotaDataSource_quotaName_hasUsageMetric(t *test resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, servicequotas.EndpointsID) + acctest.PreCheckPartitionHasService(t, names.ServiceQuotasEndpointID) preCheckServiceQuotaHasUsageMetric(ctx, hasUsageMetricServiceCode, hasUsageMetricQuotaCode, t) }, - ErrorCheck: acctest.ErrorCheck(t, servicequotas.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, names.ServiceQuotasEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, Steps: []resource.TestStep{ { @@ -251,7 +251,7 @@ func TestAccServiceQuotasServiceQuotaDataSource_PermissionError_quotaName(t *tes testAccPreCheck(ctx, t) acctest.PreCheckAssumeRoleARN(t) }, - ErrorCheck: acctest.ErrorCheck(t, servicequotas.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, names.ServiceQuotasEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: nil, Steps: []resource.TestStep{ diff --git a/internal/service/servicequotas/service_quota_test.go b/internal/service/servicequotas/service_quota_test.go index f083f1211e28..1a62f9a11862 100644 --- a/internal/service/servicequotas/service_quota_test.go +++ b/internal/service/servicequotas/service_quota_test.go @@ -9,9 +9,9 @@ import ( "testing" "github.com/YakDriver/regexache" - "github.com/aws/aws-sdk-go/service/servicequotas" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/acctest" + "github.com/hashicorp/terraform-provider-aws/names" ) // This resource is different than many since quotas are pre-existing @@ -29,7 +29,7 @@ func TestAccServiceQuotasServiceQuota_basic(t *testing.T) { testAccPreCheck(ctx, t) preCheckServiceQuotaSet(ctx, setQuotaServiceCode, setQuotaQuotaCode, t) }, - ErrorCheck: acctest.ErrorCheck(t, servicequotas.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, names.ServiceQuotasEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: nil, Steps: []resource.TestStep{ @@ -69,7 +69,7 @@ func TestAccServiceQuotasServiceQuota_basic_Unset(t *testing.T) { testAccPreCheck(ctx, t) preCheckServiceQuotaUnset(ctx, unsetQuotaServiceCode, unsetQuotaQuotaCode, t) }, - ErrorCheck: acctest.ErrorCheck(t, servicequotas.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, names.ServiceQuotasEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: nil, Steps: []resource.TestStep{ @@ -109,7 +109,7 @@ func TestAccServiceQuotasServiceQuota_basic_hasUsageMetric(t *testing.T) { testAccPreCheck(ctx, t) preCheckServiceQuotaHasUsageMetric(ctx, hasUsageMetricServiceCode, hasUsageMetricQuotaCode, t) }, - ErrorCheck: acctest.ErrorCheck(t, servicequotas.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, names.ServiceQuotasEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: nil, Steps: []resource.TestStep{ @@ -166,7 +166,7 @@ func TestAccServiceQuotasServiceQuota_Value_increaseOnCreate(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, servicequotas.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, names.ServiceQuotasEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: nil, Steps: []resource.TestStep{ @@ -211,7 +211,7 @@ func TestAccServiceQuotasServiceQuota_Value_increaseOnUpdate(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, servicequotas.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, names.ServiceQuotasEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: nil, Steps: []resource.TestStep{ @@ -241,7 +241,7 @@ func TestAccServiceQuotasServiceQuota_permissionError(t *testing.T) { ctx := acctest.Context(t) resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t); acctest.PreCheckAssumeRoleARN(t) }, - ErrorCheck: acctest.ErrorCheck(t, servicequotas.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, names.ServiceQuotasEndpointID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: nil, Steps: []resource.TestStep{ diff --git a/names/names.go b/names/names.go index 3ae55c1531f9..c49b717ee59a 100644 --- a/names/names.go +++ b/names/names.go @@ -57,6 +57,7 @@ const ( RolesAnywhereEndpointID = "rolesanywhere" Route53DomainsEndpointID = "route53domains" SchedulerEndpointID = "scheduler" + ServiceQuotasEndpointID = "servicequotas" S3EndpointID = "s3" S3ControlEndpointID = "s3-control" SESV2EndpointID = "sesv2" diff --git a/names/names_data.csv b/names/names_data.csv index 79e804a2190e..ce8ec5fe0d03 100644 --- a/names/names_data.csv +++ b/names/names_data.csv @@ -322,7 +322,7 @@ securitylake,securitylake,securitylake,securitylake,,securitylake,,,SecurityLake serverlessrepo,serverlessrepo,serverlessapplicationrepository,serverlessapplicationrepository,,serverlessrepo,,serverlessapprepo;serverlessapplicationrepository,ServerlessRepo,ServerlessApplicationRepository,,1,,aws_serverlessapplicationrepository_,aws_serverlessrepo_,,serverlessapplicationrepository_,Serverless Application Repository,AWS,,,,,, servicecatalog,servicecatalog,servicecatalog,servicecatalog,,servicecatalog,,,ServiceCatalog,ServiceCatalog,,1,,,aws_servicecatalog_,,servicecatalog_,Service Catalog,AWS,,,,,, servicecatalog-appregistry,servicecatalogappregistry,appregistry,servicecatalogappregistry,,servicecatalogappregistry,,appregistry,ServiceCatalogAppRegistry,AppRegistry,,1,,,aws_servicecatalogappregistry_,,servicecatalogappregistry_,Service Catalog AppRegistry,AWS,,x,,,, -service-quotas,servicequotas,servicequotas,servicequotas,,servicequotas,,,ServiceQuotas,ServiceQuotas,,1,,,aws_servicequotas_,,servicequotas_,Service Quotas,,,,,,, +service-quotas,servicequotas,servicequotas,servicequotas,,servicequotas,,,ServiceQuotas,ServiceQuotas,,,2,,aws_servicequotas_,,servicequotas_,Service Quotas,,,,,,, ses,ses,ses,ses,,ses,,,SES,SES,,1,,,aws_ses_,,ses_,SES (Simple Email),Amazon,,,,,, sesv2,sesv2,sesv2,sesv2,,sesv2,,,SESV2,SESV2,,,2,,aws_sesv2_,,sesv2_,SESv2 (Simple Email V2),Amazon,,,,,, stepfunctions,stepfunctions,sfn,sfn,,sfn,,stepfunctions,SFN,SFN,,1,,,aws_sfn_,,sfn_,SFN (Step Functions),AWS,,,,,,