From 33b3298c82c49c7f70f29dd5b5ccf906872e9008 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 09:13:53 -0400 Subject: [PATCH 01/81] Amend go.mod, Add lightsail aws go sdk v2 --- go.mod | 1 + 1 file changed, 1 insertion(+) diff --git a/go.mod b/go.mod index b834c4ba804e..2e962d2f4ca4 100644 --- a/go.mod +++ b/go.mod @@ -99,6 +99,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/iam v1.19.12 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27 // indirect github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.2 // indirect + github.com/aws/aws-sdk-go-v2/service/lightsail v1.26.6 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.12.10 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.10 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.19.0 // indirect From d753c05934d739bbe9d4027e05380d5d3990944f Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 09:14:28 -0400 Subject: [PATCH 02/81] names: Amend names_data.csv, update lightsail to go sdk v2 --- names/names_data.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/names/names_data.csv b/names/names_data.csv index 70ff8bfb18d3..04634ee49d2e 100644 --- a/names/names_data.csv +++ b/names/names_data.csv @@ -217,7 +217,7 @@ lexv2-models,lexv2models,lexmodelsv2,lexmodelsv2,,lexmodelsv2,,lexv2models,LexMo lex-runtime,lexruntime,lexruntimeservice,lexruntimeservice,,lexruntime,,lexruntimeservice,LexRuntime,LexRuntimeService,,1,,,aws_lexruntime_,,lexruntime_,Lex Runtime,Amazon,,,,, lexv2-runtime,lexv2runtime,lexruntimev2,lexruntimev2,,lexruntimev2,,lexv2runtime,LexRuntimeV2,LexRuntimeV2,,1,,,aws_lexruntimev2_,,lexruntimev2_,Lex Runtime V2,Amazon,,,,, license-manager,licensemanager,licensemanager,licensemanager,,licensemanager,,,LicenseManager,LicenseManager,,1,,,aws_licensemanager_,,licensemanager_,License Manager,AWS,,,,, -lightsail,lightsail,lightsail,lightsail,,lightsail,,,Lightsail,Lightsail,,1,,,aws_lightsail_,,lightsail_,Lightsail,Amazon,,,,, +lightsail,lightsail,lightsail,lightsail,,lightsail,,,Lightsail,Lightsail,,,2,,aws_lightsail_,,lightsail_,Lightsail,Amazon,,,,, location,location,locationservice,location,,location,,locationservice,Location,LocationService,,1,,,aws_location_,,location_,Location,Amazon,,,,, lookoutequipment,lookoutequipment,lookoutequipment,lookoutequipment,,lookoutequipment,,,LookoutEquipment,LookoutEquipment,,1,,,aws_lookoutequipment_,,lookoutequipment_,Lookout for Equipment,Amazon,,,,, lookoutmetrics,lookoutmetrics,lookoutmetrics,lookoutmetrics,,lookoutmetrics,,,LookoutMetrics,LookoutMetrics,,1,,,aws_lookoutmetrics_,,lookoutmetrics_,Lookout for Metrics,Amazon,,,,, From d291e4c4b7fb340db9a9d09ef3ee71473ac9c639 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 09:15:03 -0400 Subject: [PATCH 03/81] conns: Amend awsclient_gen, run generate to update lightsail to aws go sdk v2 --- internal/conns/awsclient_gen.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/conns/awsclient_gen.go b/internal/conns/awsclient_gen.go index 998007145a20..e32821bd0f79 100644 --- a/internal/conns/awsclient_gen.go +++ b/internal/conns/awsclient_gen.go @@ -23,6 +23,7 @@ import ( "github.com/aws/aws-sdk-go-v2/service/ivschat" "github.com/aws/aws-sdk-go-v2/service/kendra" lambda_sdkv2 "github.com/aws/aws-sdk-go-v2/service/lambda" + "github.com/aws/aws-sdk-go-v2/service/lightsail" "github.com/aws/aws-sdk-go-v2/service/medialive" "github.com/aws/aws-sdk-go-v2/service/oam" "github.com/aws/aws-sdk-go-v2/service/opensearchserverless" @@ -206,7 +207,6 @@ import ( "github.com/aws/aws-sdk-go/service/lexruntimeservice" "github.com/aws/aws-sdk-go/service/lexruntimev2" "github.com/aws/aws-sdk-go/service/licensemanager" - "github.com/aws/aws-sdk-go/service/lightsail" "github.com/aws/aws-sdk-go/service/locationservice" "github.com/aws/aws-sdk-go/service/lookoutequipment" "github.com/aws/aws-sdk-go/service/lookoutforvision" @@ -529,7 +529,7 @@ type AWSClient struct { lexruntimeConn *lexruntimeservice.LexRuntimeService lexruntimev2Conn *lexruntimev2.LexRuntimeV2 licensemanagerConn *licensemanager.LicenseManager - lightsailConn *lightsail.Lightsail + lightsailClient *lightsail.Client locationConn *locationservice.LocationService logsConn *cloudwatchlogs.CloudWatchLogs lookoutequipmentConn *lookoutequipment.LookoutEquipment @@ -1386,8 +1386,8 @@ func (client *AWSClient) LicenseManagerConn() *licensemanager.LicenseManager { return client.licensemanagerConn } -func (client *AWSClient) LightsailConn() *lightsail.Lightsail { - return client.lightsailConn +func (client *AWSClient) LightsailClient() *lightsail.Client { + return client.lightsailClient } func (client *AWSClient) LocationConn() *locationservice.LocationService { From f1175347ea6e90358013574d1bc7b5697a718465 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:36:59 -0400 Subject: [PATCH 04/81] go mod tidy --- go.mod | 2 +- go.sum | 2 + .../service/lightsail/container_service.go | 111 ++-- .../container_service_deployment_version.go | 163 ++++-- internal/service/lightsail/find.go | 496 ------------------ internal/service/lightsail/generate.go | 2 +- 6 files changed, 202 insertions(+), 574 deletions(-) delete mode 100644 internal/service/lightsail/find.go diff --git a/go.mod b/go.mod index e0914a43e2de..ff06063123f5 100644 --- a/go.mod +++ b/go.mod @@ -27,6 +27,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/ivschat v1.4.5 github.com/aws/aws-sdk-go-v2/service/kendra v1.40.1 github.com/aws/aws-sdk-go-v2/service/lambda v1.35.0 + github.com/aws/aws-sdk-go-v2/service/lightsail v1.26.6 github.com/aws/aws-sdk-go-v2/service/medialive v1.31.4 github.com/aws/aws-sdk-go-v2/service/oam v1.1.11 github.com/aws/aws-sdk-go-v2/service/opensearchserverless v1.2.4 @@ -101,7 +102,6 @@ require ( github.com/aws/aws-sdk-go-v2/service/iam v1.19.12 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27 // indirect github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.2 // indirect - github.com/aws/aws-sdk-go-v2/service/lightsail v1.26.6 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.12.10 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.10 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.19.0 // indirect diff --git a/go.sum b/go.sum index e89e0b3d3dcc..3efe4a54b24a 100644 --- a/go.sum +++ b/go.sum @@ -85,6 +85,8 @@ github.com/aws/aws-sdk-go-v2/service/kendra v1.40.1 h1:808yGPE8AM5hoNq/eSFTKGRbc github.com/aws/aws-sdk-go-v2/service/kendra v1.40.1/go.mod h1:00b/aokrZ0r4fUsMP9RSOL9bvxTCCRCOeUy5o0lyqrA= github.com/aws/aws-sdk-go-v2/service/lambda v1.35.0 h1:iNLsDIOju/bbqw0mNaEXh+9Ms6Mm0RjcHPP9z4k9lUY= github.com/aws/aws-sdk-go-v2/service/lambda v1.35.0/go.mod h1:i23nHcGEyswthctBfhEO1agGpM5Uyh83aSmSB6DmdCk= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.26.6 h1:QQE/ZcXSrPFGprrG8VFblHiMpenvzICT09YnaMmQEwk= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.26.6/go.mod h1:L+JqH2pSCvKnCVJNKnU/8TTUfuNuTXSmXiS3F0zMvzQ= github.com/aws/aws-sdk-go-v2/service/medialive v1.31.4 h1:EMIWrz5dNgkqAKUPe6xTLvzwLt2RIRN1P5D8Nrl4XkQ= github.com/aws/aws-sdk-go-v2/service/medialive v1.31.4/go.mod h1:3Ttv/NVxQ8CitwL/sZdxSJHzStb75XQO+gvBwOC3Sj8= github.com/aws/aws-sdk-go-v2/service/oam v1.1.11 h1:dRgn7qpyEtXcP0prnPyaTUTiCQsowO++Cu9B5wlZRtI= diff --git a/internal/service/lightsail/container_service.go b/internal/service/lightsail/container_service.go index 551a45cbf9ac..315a48d6c514 100644 --- a/internal/service/lightsail/container_service.go +++ b/internal/service/lightsail/container_service.go @@ -7,13 +7,15 @@ import ( "regexp" "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" - "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/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/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/errs" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/internal/verify" @@ -70,7 +72,7 @@ func ResourceContainerService() *schema.Resource { "power": { Type: schema.TypeString, Required: true, - ValidateFunc: validation.StringInSlice(lightsail.ContainerServicePowerName_Values(), false), + ValidateFunc: validation.StringInSlice(flattenContainerServicePowerValues(types.ContainerServicePowerName("").Values()), false), }, "power_id": { Type: schema.TypeString, @@ -165,13 +167,13 @@ func ResourceContainerService() *schema.Resource { } func resourceContainerServiceCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() serviceName := d.Get("name").(string) input := &lightsail.CreateContainerServiceInput{ ServiceName: aws.String(serviceName), - Power: aws.String(d.Get("power").(string)), - Scale: aws.Int64(int64(d.Get("scale").(int))), + Power: types.ContainerServicePowerName(d.Get("power").(string)), + Scale: aws.Int32(int32(d.Get("scale").(int))), Tags: GetTagsIn(ctx), } @@ -183,7 +185,7 @@ func resourceContainerServiceCreate(ctx context.Context, d *schema.ResourceData, input.PrivateRegistryAccess = expandPrivateRegistryAccess(v.([]interface{})[0].(map[string]interface{})) } - _, err := conn.CreateContainerServiceWithContext(ctx, input) + _, err := conn.CreateContainerService(ctx, input) if err != nil { return diag.Errorf("creating Lightsail Container Service (%s): %s", serviceName, err) } @@ -201,7 +203,7 @@ func resourceContainerServiceCreate(ctx context.Context, d *schema.ResourceData, IsDisabled: aws.Bool(true), } - _, err := conn.UpdateContainerServiceWithContext(ctx, input) + _, err := conn.UpdateContainerService(ctx, input) if err != nil { return diag.Errorf("disabling Lightsail Container Service (%s): %s", d.Id(), err) } @@ -215,7 +217,7 @@ func resourceContainerServiceCreate(ctx context.Context, d *schema.ResourceData, } func resourceContainerServiceRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() cs, err := FindContainerServiceByName(ctx, conn, d.Id()) @@ -242,7 +244,7 @@ func resourceContainerServiceRead(ctx context.Context, d *schema.ResourceData, m } d.Set("arn", cs.Arn) d.Set("availability_zone", cs.Location.AvailabilityZone) - d.Set("created_at", aws.TimeValue(cs.CreatedAt).Format(time.RFC3339)) + d.Set("created_at", aws.ToTime(cs.CreatedAt).Format(time.RFC3339)) d.Set("power_id", cs.PowerId) d.Set("principal_arn", cs.PrincipalArn) d.Set("private_domain_name", cs.PrivateDomainName) @@ -256,7 +258,7 @@ func resourceContainerServiceRead(ctx context.Context, d *schema.ResourceData, m } func resourceContainerServiceUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() if d.HasChangesExcept("tags", "tags_all") { publicDomainNames, _ := containerServicePublicDomainNamesChanged(d) @@ -264,12 +266,12 @@ func resourceContainerServiceUpdate(ctx context.Context, d *schema.ResourceData, input := &lightsail.UpdateContainerServiceInput{ ServiceName: aws.String(d.Id()), IsDisabled: aws.Bool(d.Get("is_disabled").(bool)), - Power: aws.String(d.Get("power").(string)), + Power: types.ContainerServicePowerName(d.Get("power").(string)), PublicDomainNames: publicDomainNames, - Scale: aws.Int64(int64(d.Get("scale").(int))), + Scale: aws.Int32(int32(d.Get("scale").(int))), } - _, err := conn.UpdateContainerServiceWithContext(ctx, input) + _, err := conn.UpdateContainerService(ctx, input) if err != nil { return diag.Errorf("updating Lightsail Container Service (%s): %s", d.Id(), err) } @@ -289,15 +291,15 @@ func resourceContainerServiceUpdate(ctx context.Context, d *schema.ResourceData, } func resourceContainerServiceDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() input := &lightsail.DeleteContainerServiceInput{ ServiceName: aws.String(d.Id()), } - _, err := conn.DeleteContainerServiceWithContext(ctx, input) + _, err := conn.DeleteContainerService(ctx, input) - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { + if errs.IsA[*types.NotFoundException](err) { return nil } @@ -312,12 +314,12 @@ func resourceContainerServiceDelete(ctx context.Context, d *schema.ResourceData, return nil } -func expandContainerServicePublicDomainNames(rawPublicDomainNames []interface{}) map[string][]*string { +func expandContainerServicePublicDomainNames(rawPublicDomainNames []interface{}) map[string][]string { if len(rawPublicDomainNames) == 0 { return nil } - resultMap := make(map[string][]*string) + resultMap := make(map[string][]string) for _, rpdn := range rawPublicDomainNames { rpdnMap := rpdn.(map[string]interface{}) @@ -327,9 +329,9 @@ func expandContainerServicePublicDomainNames(rawPublicDomainNames []interface{}) for _, rc := range rawCertificates { rcMap := rc.(map[string]interface{}) - var domainNames []*string + var domainNames []string for _, rawDomainName := range rcMap["domain_names"].([]interface{}) { - domainNames = append(domainNames, aws.String(rawDomainName.(string))) + domainNames = append(domainNames, rawDomainName.(string)) } certificateName := rcMap["certificate_name"].(string) @@ -341,12 +343,12 @@ func expandContainerServicePublicDomainNames(rawPublicDomainNames []interface{}) return resultMap } -func expandPrivateRegistryAccess(tfMap map[string]interface{}) *lightsail.PrivateRegistryAccessRequest { +func expandPrivateRegistryAccess(tfMap map[string]interface{}) *types.PrivateRegistryAccessRequest { if tfMap == nil { return nil } - apiObject := &lightsail.PrivateRegistryAccessRequest{} + apiObject := &types.PrivateRegistryAccessRequest{} if v, ok := tfMap["ecr_image_puller_role"].([]interface{}); ok && len(v) > 0 && v[0] != nil { apiObject.EcrImagePullerRole = expandECRImagePullerRole(v[0].(map[string]interface{})) @@ -355,12 +357,12 @@ func expandPrivateRegistryAccess(tfMap map[string]interface{}) *lightsail.Privat return apiObject } -func expandECRImagePullerRole(tfMap map[string]interface{}) *lightsail.ContainerServiceECRImagePullerRoleRequest { +func expandECRImagePullerRole(tfMap map[string]interface{}) *types.ContainerServiceECRImagePullerRoleRequest { if tfMap == nil { return nil } - apiObject := &lightsail.ContainerServiceECRImagePullerRoleRequest{} + apiObject := &types.ContainerServiceECRImagePullerRoleRequest{} if v, ok := tfMap["is_active"].(bool); ok { apiObject.IsActive = aws.Bool(v) @@ -369,7 +371,7 @@ func expandECRImagePullerRole(tfMap map[string]interface{}) *lightsail.Container return apiObject } -func flattenPrivateRegistryAccess(apiObject *lightsail.PrivateRegistryAccess) map[string]interface{} { +func flattenPrivateRegistryAccess(apiObject *types.PrivateRegistryAccess) map[string]interface{} { if apiObject == nil { return nil } @@ -383,7 +385,7 @@ func flattenPrivateRegistryAccess(apiObject *lightsail.PrivateRegistryAccess) ma return tfMap } -func flattenECRImagePullerRole(apiObject *lightsail.ContainerServiceECRImagePullerRole) map[string]interface{} { +func flattenECRImagePullerRole(apiObject *types.ContainerServiceECRImagePullerRole) map[string]interface{} { if apiObject == nil { return nil } @@ -391,17 +393,17 @@ func flattenECRImagePullerRole(apiObject *lightsail.ContainerServiceECRImagePull tfMap := map[string]interface{}{} if v := apiObject.IsActive; v != nil { - tfMap["is_active"] = aws.BoolValue(v) + tfMap["is_active"] = aws.ToBool(v) } if v := apiObject.PrincipalArn; v != nil { - tfMap["principal_arn"] = aws.StringValue(v) + tfMap["principal_arn"] = aws.ToString(v) } return tfMap } -func flattenContainerServicePublicDomainNames(domainNames map[string][]*string) []interface{} { +func flattenContainerServicePublicDomainNames(domainNames map[string][]string) []interface{} { if domainNames == nil { return []interface{}{} } @@ -411,7 +413,7 @@ func flattenContainerServicePublicDomainNames(domainNames map[string][]*string) for certName, domains := range domainNames { rawCertificate := map[string]interface{}{ "certificate_name": certName, - "domain_names": aws.StringValueSlice(domains), + "domain_names": domains, } rawCertificates = append(rawCertificates, rawCertificate) @@ -424,7 +426,7 @@ func flattenContainerServicePublicDomainNames(domainNames map[string][]*string) } } -func containerServicePublicDomainNamesChanged(d *schema.ResourceData) (map[string][]*string, bool) { +func containerServicePublicDomainNamesChanged(d *schema.ResourceData) (map[string][]string, bool) { o, n := d.GetChange("public_domain_names") oldPublicDomainNames := expandContainerServicePublicDomainNames(o.([]interface{})) newPublicDomainNames := expandContainerServicePublicDomainNames(n.([]interface{})) @@ -432,7 +434,7 @@ func containerServicePublicDomainNamesChanged(d *schema.ResourceData) (map[strin changed := !reflect.DeepEqual(oldPublicDomainNames, newPublicDomainNames) if changed { if newPublicDomainNames == nil { - newPublicDomainNames = map[string][]*string{} + newPublicDomainNames = map[string][]string{} } // if the change is to detach a certificate, in .tf, a certificate block is removed @@ -440,10 +442,49 @@ func containerServicePublicDomainNamesChanged(d *schema.ResourceData) (map[strin // under the certificate, effectively detaching the certificate for certificateName := range oldPublicDomainNames { if _, ok := newPublicDomainNames[certificateName]; !ok { - newPublicDomainNames[certificateName] = []*string{} + newPublicDomainNames[certificateName] = []string{} } } } return newPublicDomainNames, changed } + +func flattenContainerServicePowerValues(t []types.ContainerServicePowerName) []string { + var out []string + + for _, v := range t { + out = append(out, string(v)) + } + + return out +} + +func FindContainerServiceByName(ctx context.Context, conn *lightsail.Client, serviceName string) (*types.ContainerService, error) { + input := &lightsail.GetContainerServicesInput{ + ServiceName: aws.String(serviceName), + } + + output, err := conn.GetContainerServices(ctx, input) + + if errs.IsA[*types.NotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: input, + } + } + + if err != nil { + return nil, err + } + + if output == nil || len(output.ContainerServices) == 0 { + return nil, tfresource.NewEmptyResultError(input) + } + + if count := len(output.ContainerServices); count > 1 { + return nil, tfresource.NewTooManyResultsError(count, input) + } + + return &output.ContainerServices[0], nil +} diff --git a/internal/service/lightsail/container_service_deployment_version.go b/internal/service/lightsail/container_service_deployment_version.go index e8762ff7834f..34bf44eebaef 100644 --- a/internal/service/lightsail/container_service_deployment_version.go +++ b/internal/service/lightsail/container_service_deployment_version.go @@ -8,12 +8,15 @@ import ( "strings" "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/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/errs" "github.com/hashicorp/terraform-provider-aws/internal/flex" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" ) @@ -71,7 +74,7 @@ func ResourceContainerServiceDeploymentVersion() *schema.Resource { ForceNew: true, Elem: &schema.Schema{ Type: schema.TypeString, - ValidateFunc: validation.StringInSlice(lightsail.ContainerServiceProtocol_Values(), false), + ValidateFunc: validation.StringInSlice(flattenContainerServiceProtocolValues(types.ContainerServiceProtocol("").Values()), false), }}, }, }, @@ -166,10 +169,10 @@ func ResourceContainerServiceDeploymentVersion() *schema.Resource { } func resourceContainerServiceDeploymentVersionCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() serviceName := d.Get("service_name").(string) - input := &lightsail.CreateContainerServiceDeploymentInput{ + input := lightsail.CreateContainerServiceDeploymentInput{ ServiceName: aws.String(serviceName), } @@ -181,7 +184,7 @@ func resourceContainerServiceDeploymentVersionCreate(ctx context.Context, d *sch input.PublicEndpoint = expandContainerServiceDeploymentPublicEndpoint(v.([]interface{})) } - output, err := conn.CreateContainerServiceDeploymentWithContext(ctx, input) + output, err := conn.CreateContainerServiceDeployment(ctx, &input) if err != nil { return diag.Errorf("creating Lightsail Container Service (%s) Deployment Version: %s", serviceName, err) } @@ -190,7 +193,7 @@ func resourceContainerServiceDeploymentVersionCreate(ctx context.Context, d *sch return diag.Errorf("creating Lightsail Container Service (%s) Deployment Version: empty output", serviceName) } - version := int(aws.Int64Value(output.ContainerService.NextDeployment.Version)) + version := int(aws.ToInt32(output.ContainerService.NextDeployment.Version)) d.SetId(fmt.Sprintf("%s/%d", serviceName, version)) @@ -202,7 +205,7 @@ func resourceContainerServiceDeploymentVersionCreate(ctx context.Context, d *sch } func resourceContainerServiceDeploymentVersionRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() serviceName, version, err := ContainerServiceDeploymentVersionParseResourceID(d.Id()) if err != nil { @@ -221,7 +224,7 @@ func resourceContainerServiceDeploymentVersionRead(ctx context.Context, d *schem return diag.Errorf("reading Lightsail Container Service (%s) Deployment Version (%d): %s", serviceName, version, err) } - d.Set("created_at", aws.TimeValue(deployment.CreatedAt).Format(time.RFC3339)) + d.Set("created_at", aws.ToTime(deployment.CreatedAt).Format(time.RFC3339)) d.Set("service_name", serviceName) d.Set("state", deployment.State) d.Set("version", deployment.Version) @@ -257,12 +260,12 @@ func ContainerServiceDeploymentVersionParseResourceID(id string) (string, int, e return parts[0], version, nil } -func expandContainerServiceDeploymentContainers(tfList []interface{}) map[string]*lightsail.Container { +func expandContainerServiceDeploymentContainers(tfList []interface{}) map[string]types.Container { if len(tfList) == 0 { - return map[string]*lightsail.Container{} + return map[string]types.Container{} } - result := make(map[string]*lightsail.Container) + result := make(map[string]types.Container) for _, tfListRaw := range tfList { tfMap, ok := tfListRaw.(map[string]interface{}) @@ -272,29 +275,52 @@ func expandContainerServiceDeploymentContainers(tfList []interface{}) map[string containerName := tfMap["container_name"].(string) - container := &lightsail.Container{ + container := &types.Container{ Image: aws.String(tfMap["image"].(string)), } if v, ok := tfMap["command"].([]interface{}); ok && len(v) > 0 { - container.Command = flex.ExpandStringList(v) + container.Command = aws.ToStringSlice(flex.ExpandStringList(v)) } if v, ok := tfMap["environment"].(map[string]interface{}); ok && len(v) > 0 { - container.Environment = flex.ExpandStringMap(v) + container.Environment = aws.ToStringMap(flex.ExpandStringMap(v)) } if v, ok := tfMap["ports"].(map[string]interface{}); ok && len(v) > 0 { - container.Ports = flex.ExpandStringMap(v) + container.Ports = expandContainerServiceProtocol(v) } - result[containerName] = container + result[containerName] = *container } return result } -func expandContainerServiceDeploymentPublicEndpoint(tfList []interface{}) *lightsail.EndpointRequest { +func expandContainerServiceProtocol(tfMap map[string]interface{}) map[string]types.ContainerServiceProtocol { + if tfMap == nil { + return nil + } + + apiObject := map[string]types.ContainerServiceProtocol{} + + for k, v := range tfMap { + switch v { + case "HTTP": + apiObject[k] = types.ContainerServiceProtocolHttp + case "HTTPS": + apiObject[k] = types.ContainerServiceProtocolHttps + case "TCP": + apiObject[k] = types.ContainerServiceProtocolTcp + case "UDP": + apiObject[k] = types.ContainerServiceProtocolUdp + } + } + + return apiObject +} + +func expandContainerServiceDeploymentPublicEndpoint(tfList []interface{}) *types.EndpointRequest { if len(tfList) == 0 || tfList[0] == nil { return nil } @@ -304,9 +330,9 @@ func expandContainerServiceDeploymentPublicEndpoint(tfList []interface{}) *light return nil } - endpoint := &lightsail.EndpointRequest{ + endpoint := &types.EndpointRequest{ ContainerName: aws.String(tfMap["container_name"].(string)), - ContainerPort: aws.Int64(int64(tfMap["container_port"].(int))), + ContainerPort: aws.Int32(int32(tfMap["container_port"].(int))), } if v, ok := tfMap["health_check"].([]interface{}); ok && len(v) > 0 { @@ -316,7 +342,7 @@ func expandContainerServiceDeploymentPublicEndpoint(tfList []interface{}) *light return endpoint } -func expandContainerServiceDeploymentPublicEndpointHealthCheck(tfList []interface{}) *lightsail.ContainerServiceHealthCheckConfig { +func expandContainerServiceDeploymentPublicEndpointHealthCheck(tfList []interface{}) *types.ContainerServiceHealthCheckConfig { if len(tfList) == 0 || tfList[0] == nil { return nil } @@ -326,19 +352,19 @@ func expandContainerServiceDeploymentPublicEndpointHealthCheck(tfList []interfac return nil } - healthCheck := &lightsail.ContainerServiceHealthCheckConfig{ - HealthyThreshold: aws.Int64(int64(tfMap["healthy_threshold"].(int))), - IntervalSeconds: aws.Int64(int64(tfMap["interval_seconds"].(int))), + healthCheck := &types.ContainerServiceHealthCheckConfig{ + HealthyThreshold: aws.Int32(int32(tfMap["healthy_threshold"].(int))), + IntervalSeconds: aws.Int32(int32(tfMap["interval_seconds"].(int))), Path: aws.String(tfMap["path"].(string)), SuccessCodes: aws.String(tfMap["success_codes"].(string)), - TimeoutSeconds: aws.Int64(int64(tfMap["timeout_seconds"].(int))), - UnhealthyThreshold: aws.Int64(int64(tfMap["unhealthy_threshold"].(int))), + TimeoutSeconds: aws.Int32(int32(tfMap["timeout_seconds"].(int))), + UnhealthyThreshold: aws.Int32(int32(tfMap["unhealthy_threshold"].(int))), } return healthCheck } -func flattenContainerServiceDeploymentContainers(containers map[string]*lightsail.Container) []interface{} { +func flattenContainerServiceDeploymentContainers(containers map[string]types.Container) []interface{} { if len(containers) == 0 { return nil } @@ -347,10 +373,10 @@ func flattenContainerServiceDeploymentContainers(containers map[string]*lightsai for containerName, container := range containers { rawContainer := map[string]interface{}{ "container_name": containerName, - "image": aws.StringValue(container.Image), - "command": aws.StringValueSlice(container.Command), - "environment": aws.StringValueMap(container.Environment), - "ports": aws.StringValueMap(container.Ports), + "image": aws.ToString(container.Image), + "command": container.Command, + "environment": container.Environment, + "ports": container.Ports, } rawContainers = append(rawContainers, rawContainer) @@ -359,33 +385,88 @@ func flattenContainerServiceDeploymentContainers(containers map[string]*lightsai return rawContainers } -func flattenContainerServiceDeploymentPublicEndpoint(endpoint *lightsail.ContainerServiceEndpoint) []interface{} { +func flattenContainerServiceDeploymentPublicEndpoint(endpoint *types.ContainerServiceEndpoint) []interface{} { if endpoint == nil { return []interface{}{} } return []interface{}{ map[string]interface{}{ - "container_name": aws.StringValue(endpoint.ContainerName), - "container_port": int(aws.Int64Value(endpoint.ContainerPort)), + "container_name": aws.ToString(endpoint.ContainerName), + "container_port": int(aws.ToInt32(endpoint.ContainerPort)), "health_check": flattenContainerServiceDeploymentPublicEndpointHealthCheck(endpoint.HealthCheck), }, } } -func flattenContainerServiceDeploymentPublicEndpointHealthCheck(healthCheck *lightsail.ContainerServiceHealthCheckConfig) []interface{} { +func flattenContainerServiceDeploymentPublicEndpointHealthCheck(healthCheck *types.ContainerServiceHealthCheckConfig) []interface{} { if healthCheck == nil { return []interface{}{} } return []interface{}{ map[string]interface{}{ - "healthy_threshold": int(aws.Int64Value(healthCheck.HealthyThreshold)), - "interval_seconds": int(aws.Int64Value(healthCheck.IntervalSeconds)), - "path": aws.StringValue(healthCheck.Path), - "success_codes": aws.StringValue(healthCheck.SuccessCodes), - "timeout_seconds": int(aws.Int64Value(healthCheck.TimeoutSeconds)), - "unhealthy_threshold": int(aws.Int64Value(healthCheck.UnhealthyThreshold)), + "healthy_threshold": int(aws.ToInt32(healthCheck.HealthyThreshold)), + "interval_seconds": int(aws.ToInt32(healthCheck.IntervalSeconds)), + "path": aws.ToString(healthCheck.Path), + "success_codes": aws.ToString(healthCheck.SuccessCodes), + "timeout_seconds": int(aws.ToInt32(healthCheck.TimeoutSeconds)), + "unhealthy_threshold": int(aws.ToInt32(healthCheck.UnhealthyThreshold)), }, } } + +func flattenContainerServiceProtocolValues(t []types.ContainerServiceProtocol) []string { + var out []string + + for _, v := range t { + out = append(out, string(v)) + } + + return out +} + +func FindContainerServiceDeploymentByVersion(ctx context.Context, conn *lightsail.Client, serviceName string, version int) (*types.ContainerServiceDeployment, error) { + input := &lightsail.GetContainerServiceDeploymentsInput{ + ServiceName: aws.String(serviceName), + } + + output, err := conn.GetContainerServiceDeployments(ctx, input) + + if errs.IsA[*types.NotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: input, + } + } + + if err != nil { + return nil, err + } + + if output == nil || len(output.Deployments) == 0 { + return nil, tfresource.NewEmptyResultError(input) + } + + var result *types.ContainerServiceDeployment + + for _, deployment := range output.Deployments { + if &deployment == nil { + continue + } + + if int(aws.ToInt32(deployment.Version)) == version { + result = &deployment + break + } + } + + if result == nil { + return nil, &retry.NotFoundError{ + Message: "Empty result", + LastRequest: input, + } + } + + return result, nil +} \ No newline at end of file diff --git a/internal/service/lightsail/find.go b/internal/service/lightsail/find.go deleted file mode 100644 index f7e537c9c9a0..000000000000 --- a/internal/service/lightsail/find.go +++ /dev/null @@ -1,496 +0,0 @@ -package lightsail - -import ( - "context" - "errors" - "strings" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" - "github.com/hashicorp/aws-sdk-go-base/v2/awsv1shim/v2/tfawserr" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" - "github.com/hashicorp/terraform-provider-aws/internal/flex" - "github.com/hashicorp/terraform-provider-aws/internal/tfresource" -) - -func FindCertificateByName(ctx context.Context, conn *lightsail.Lightsail, name string) (*lightsail.Certificate, error) { - in := &lightsail.GetCertificatesInput{ - CertificateName: aws.String(name), - } - - out, err := conn.GetCertificatesWithContext(ctx, in) - - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: in, - } - } - - if err != nil { - return nil, err - } - - if out == nil || len(out.Certificates) == 0 || out.Certificates[0] == nil { - return nil, tfresource.NewEmptyResultError(in) - } - - return out.Certificates[0].CertificateDetail, nil -} - -func FindContainerServiceByName(ctx context.Context, conn *lightsail.Lightsail, serviceName string) (*lightsail.ContainerService, error) { - input := &lightsail.GetContainerServicesInput{ - ServiceName: aws.String(serviceName), - } - - output, err := conn.GetContainerServicesWithContext(ctx, input) - - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: input, - } - } - - if err != nil { - return nil, err - } - - if output == nil || len(output.ContainerServices) == 0 { - return nil, tfresource.NewEmptyResultError(input) - } - - if count := len(output.ContainerServices); count > 1 { - return nil, tfresource.NewTooManyResultsError(count, input) - } - - return output.ContainerServices[0], nil -} - -func FindContainerServiceDeploymentByVersion(ctx context.Context, conn *lightsail.Lightsail, serviceName string, version int) (*lightsail.ContainerServiceDeployment, error) { - input := &lightsail.GetContainerServiceDeploymentsInput{ - ServiceName: aws.String(serviceName), - } - - output, err := conn.GetContainerServiceDeploymentsWithContext(ctx, input) - - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: input, - } - } - - if err != nil { - return nil, err - } - - if output == nil || len(output.Deployments) == 0 { - return nil, tfresource.NewEmptyResultError(input) - } - - var result *lightsail.ContainerServiceDeployment - - for _, deployment := range output.Deployments { - if deployment == nil { - continue - } - - if int(aws.Int64Value(deployment.Version)) == version { - result = deployment - break - } - } - - if result == nil { - return nil, &retry.NotFoundError{ - Message: "Empty result", - LastRequest: input, - } - } - - return result, nil -} - -func FindDiskById(ctx context.Context, conn *lightsail.Lightsail, id string) (*lightsail.Disk, error) { - in := &lightsail.GetDiskInput{ - DiskName: aws.String(id), - } - - out, err := conn.GetDiskWithContext(ctx, in) - - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: in, - } - } - - if err != nil { - return nil, err - } - - if out == nil || out.Disk == nil { - return nil, tfresource.NewEmptyResultError(in) - } - - return out.Disk, nil -} - -func FindDiskAttachmentById(ctx context.Context, conn *lightsail.Lightsail, id string) (*lightsail.Disk, error) { - id_parts := strings.SplitN(id, ",", -1) - - if len(id_parts) != 2 { - return nil, errors.New("invalid Disk Attachment id") - } - - dName := id_parts[0] - iName := id_parts[1] - - in := &lightsail.GetDiskInput{ - DiskName: aws.String(dName), - } - - out, err := conn.GetDiskWithContext(ctx, in) - - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: in, - } - } - - if err != nil { - return nil, err - } - - disk := out.Disk - - if disk == nil || !aws.BoolValue(disk.IsAttached) || aws.StringValue(disk.Name) != dName || aws.StringValue(disk.AttachedTo) != iName { - return nil, tfresource.NewEmptyResultError(in) - } - - return out.Disk, nil -} - -func FindLoadBalancerByName(ctx context.Context, conn *lightsail.Lightsail, name string) (*lightsail.LoadBalancer, error) { - in := &lightsail.GetLoadBalancerInput{LoadBalancerName: aws.String(name)} - out, err := conn.GetLoadBalancerWithContext(ctx, in) - - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: in, - } - } - - if err != nil { - return nil, err - } - - if out == nil || out.LoadBalancer == nil { - return nil, tfresource.NewEmptyResultError(in) - } - - lb := out.LoadBalancer - - return lb, nil -} - -func FindLoadBalancerAttachmentById(ctx context.Context, conn *lightsail.Lightsail, id string) (*string, error) { - id_parts := strings.SplitN(id, ",", -1) - if len(id_parts) != 2 { - return nil, errors.New("invalid load balancer attachment id") - } - - lbName := id_parts[0] - iName := id_parts[1] - - in := &lightsail.GetLoadBalancerInput{LoadBalancerName: aws.String(lbName)} - out, err := conn.GetLoadBalancerWithContext(ctx, in) - - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: in, - } - } - - if err != nil { - return nil, err - } - - var entry *string - entryExists := false - - for _, n := range out.LoadBalancer.InstanceHealthSummary { - if iName == aws.StringValue(n.InstanceName) { - entry = n.InstanceName - entryExists = true - break - } - } - - if !entryExists { - return nil, tfresource.NewEmptyResultError(in) - } - - return entry, nil -} - -func FindLoadBalancerCertificateById(ctx context.Context, conn *lightsail.Lightsail, id string) (*lightsail.LoadBalancerTlsCertificate, error) { - id_parts := strings.SplitN(id, ",", -1) - if len(id_parts) != 2 { - return nil, errors.New("invalid load balancer certificate id") - } - - lbName := id_parts[0] - cName := id_parts[1] - - in := &lightsail.GetLoadBalancerTlsCertificatesInput{LoadBalancerName: aws.String(lbName)} - out, err := conn.GetLoadBalancerTlsCertificatesWithContext(ctx, in) - - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: in, - } - } - - if err != nil { - return nil, err - } - - var entry *lightsail.LoadBalancerTlsCertificate - entryExists := false - - for _, n := range out.TlsCertificates { - if cName == aws.StringValue(n.Name) { - entry = n - entryExists = true - break - } - } - - if !entryExists { - return nil, tfresource.NewEmptyResultError(in) - } - - return entry, nil -} - -func FindLoadBalancerCertificateAttachmentById(ctx context.Context, conn *lightsail.Lightsail, id string) (*string, error) { - id_parts := strings.SplitN(id, ",", -1) - if len(id_parts) != 2 { - return nil, errors.New("invalid load balancer certificate attachment id") - } - - lbName := id_parts[0] - cName := id_parts[1] - - in := &lightsail.GetLoadBalancerTlsCertificatesInput{LoadBalancerName: aws.String(lbName)} - out, err := conn.GetLoadBalancerTlsCertificatesWithContext(ctx, in) - - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: in, - } - } - - if err != nil { - return nil, err - } - - var entry *string - entryExists := false - - for _, n := range out.TlsCertificates { - if cName == aws.StringValue(n.Name) && aws.BoolValue(n.IsAttached) { - entry = n.Name - entryExists = true - break - } - } - - if !entryExists { - return nil, tfresource.NewEmptyResultError(in) - } - - return entry, nil -} - -func FindLoadBalancerStickinessPolicyById(ctx context.Context, conn *lightsail.Lightsail, id string) (map[string]*string, error) { - in := &lightsail.GetLoadBalancerInput{LoadBalancerName: aws.String(id)} - out, err := conn.GetLoadBalancerWithContext(ctx, in) - - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: in, - } - } - - if err != nil { - return nil, err - } - - if out == nil || out.LoadBalancer.ConfigurationOptions == nil { - return nil, tfresource.NewEmptyResultError(in) - } - - return out.LoadBalancer.ConfigurationOptions, nil -} - -func FindLoadBalancerHTTPSRedirectionPolicyById(ctx context.Context, conn *lightsail.Lightsail, id string) (*bool, error) { - in := &lightsail.GetLoadBalancerInput{LoadBalancerName: aws.String(id)} - out, err := conn.GetLoadBalancerWithContext(ctx, in) - - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: in, - } - } - - if err != nil { - return nil, err - } - - if out == nil || out.LoadBalancer.HttpsRedirectionEnabled == nil { - return nil, tfresource.NewEmptyResultError(in) - } - - return out.LoadBalancer.HttpsRedirectionEnabled, nil -} - -func FindBucketById(ctx context.Context, conn *lightsail.Lightsail, id string) (*lightsail.Bucket, error) { - in := &lightsail.GetBucketsInput{BucketName: aws.String(id)} - out, err := conn.GetBucketsWithContext(ctx, in) - - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: in, - } - } - - if err != nil { - return nil, err - } - - if out == nil || len(out.Buckets) == 0 || out.Buckets[0] == nil { - return nil, tfresource.NewEmptyResultError(in) - } - - return out.Buckets[0], nil -} - -func FindInstanceById(ctx context.Context, conn *lightsail.Lightsail, id string) (*lightsail.Instance, error) { - in := &lightsail.GetInstanceInput{InstanceName: aws.String(id)} - out, err := conn.GetInstanceWithContext(ctx, in) - - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: in, - } - } - - if err != nil { - return nil, err - } - - if out == nil || out.Instance == nil { - return nil, tfresource.NewEmptyResultError(in) - } - - return out.Instance, nil -} - -func FindBucketAccessKeyById(ctx context.Context, conn *lightsail.Lightsail, id string) (*lightsail.AccessKey, error) { - parts, err := flex.ExpandResourceId(id, BucketAccessKeyIdPartsCount, false) - - if err != nil { - return nil, err - } - - in := &lightsail.GetBucketAccessKeysInput{BucketName: aws.String(parts[0])} - out, err := conn.GetBucketAccessKeysWithContext(ctx, in) - - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: in, - } - } - - if err != nil { - return nil, err - } - - var entry *lightsail.AccessKey - entryExists := false - - for _, n := range out.AccessKeys { - if parts[1] == aws.StringValue(n.AccessKeyId) { - entry = n - entryExists = true - break - } - } - - if !entryExists { - return nil, tfresource.NewEmptyResultError(in) - } - - return entry, nil -} - -func FindBucketResourceAccessById(ctx context.Context, conn *lightsail.Lightsail, id string) (*lightsail.ResourceReceivingAccess, error) { - parts, err := flex.ExpandResourceId(id, BucketAccessKeyIdPartsCount, false) - - if err != nil { - return nil, err - } - - in := &lightsail.GetBucketsInput{ - BucketName: aws.String(parts[0]), - IncludeConnectedResources: aws.Bool(true), - } - - out, err := conn.GetBucketsWithContext(ctx, in) - - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: in, - } - } - - if err != nil { - return nil, err - } - - if out == nil || len(out.Buckets) == 0 || out.Buckets[0] == nil { - return nil, tfresource.NewEmptyResultError(in) - } - - bucket := out.Buckets[0] - var entry *lightsail.ResourceReceivingAccess - entryExists := false - - for _, n := range bucket.ResourcesReceivingAccess { - if parts[1] == aws.StringValue(n.Name) { - entry = n - entryExists = true - break - } - } - - if !entryExists { - return nil, tfresource.NewEmptyResultError(in) - } - - return entry, nil -} diff --git a/internal/service/lightsail/generate.go b/internal/service/lightsail/generate.go index df8aeadb43b4..7d895cad0bdc 100644 --- a/internal/service/lightsail/generate.go +++ b/internal/service/lightsail/generate.go @@ -1,4 +1,4 @@ -//go:generate go run ../../generate/tags/main.go -ListTagsInIDElem=ResourceName -ServiceTagsSlice -TagInIDElem=ResourceName -UpdateTags +//go:generate go run ../../generate/tags/main.go -AWSSDKVersion=2 -ListTagsInIDElem=ResourceName -ServiceTagsSlice -TagInIDElem=ResourceName -UpdateTags // ONLY generate directives and package declaration! Do not add anything else to this file. package lightsail From 486e52521a8203e975bb5cb218756f1b2212c827 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:37:28 -0400 Subject: [PATCH 05/81] lightsail: Amend bucket, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/bucket.go | 62 +++++++++++++++++++--------- 1 file changed, 43 insertions(+), 19 deletions(-) diff --git a/internal/service/lightsail/bucket.go b/internal/service/lightsail/bucket.go index f288207af713..3c6154d87e5f 100644 --- a/internal/service/lightsail/bucket.go +++ b/internal/service/lightsail/bucket.go @@ -4,13 +4,15 @@ import ( "context" "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" - "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/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/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-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/internal/verify" @@ -71,7 +73,7 @@ func ResourceBucket() *schema.Resource { } func resourceBucketCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() in := lightsail.CreateBucketInput{ BucketName: aws.String(d.Get("name").(string)), @@ -79,14 +81,14 @@ func resourceBucketCreate(ctx context.Context, d *schema.ResourceData, meta inte Tags: GetTagsIn(ctx), } - out, err := conn.CreateBucketWithContext(ctx, &in) + out, err := conn.CreateBucket(ctx, &in) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeCreateBucket, ResBucket, d.Get("name").(string), err) + return create.DiagError(names.Lightsail, string(types.OperationTypeCreateBucket), ResBucket, d.Get("name").(string), err) } id := d.Get("name").(string) - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeCreateBucket, ResBucket, id) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeCreateBucket, ResBucket, id) if diag != nil { return diag @@ -98,18 +100,18 @@ func resourceBucketCreate(ctx context.Context, d *schema.ResourceData, meta inte } func resourceBucketRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() out, err := FindBucketById(ctx, conn, d.Id()) if !d.IsNewResource() && tfresource.NotFound(err) { - create.LogNotFoundRemoveState(names.CE, create.ErrActionReading, ResBucket, d.Id()) + create.LogNotFoundRemoveState(names.Lightsail, create.ErrActionReading, ResBucket, d.Id()) d.SetId("") return nil } if err != nil { - return create.DiagError(names.CE, create.ErrActionReading, ResBucket, d.Id(), err) + return create.DiagError(names.Lightsail, create.ErrActionReading, ResBucket, d.Id(), err) } d.Set("arn", out.Arn) @@ -127,20 +129,20 @@ func resourceBucketRead(ctx context.Context, d *schema.ResourceData, meta interf } func resourceBucketUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() if d.HasChange("bundle_id") { in := lightsail.UpdateBucketBundleInput{ BucketName: aws.String(d.Id()), BundleId: aws.String(d.Get("bundle_id").(string)), } - out, err := conn.UpdateBucketBundleWithContext(ctx, &in) + out, err := conn.UpdateBucketBundle(ctx, &in) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeUpdateBucket, ResBucket, d.Get("name").(string), err) + return create.DiagError(names.Lightsail, string(types.OperationTypeUpdateBucket), ResBucket, d.Get("name").(string), err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeUpdateBucket, ResBucket, d.Get("name").(string)) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeUpdateBucket, ResBucket, d.Get("name").(string)) if diag != nil { return diag @@ -151,20 +153,20 @@ func resourceBucketUpdate(ctx context.Context, d *schema.ResourceData, meta inte } func resourceBucketDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() - out, err := conn.DeleteBucketWithContext(ctx, &lightsail.DeleteBucketInput{ + conn := meta.(*conns.AWSClient).LightsailClient() + out, err := conn.DeleteBucket(ctx, &lightsail.DeleteBucketInput{ BucketName: aws.String(d.Id()), }) - if err != nil && tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { + if err != nil && errs.IsA[*types.NotFoundException](err) { return nil } if err != nil { - return create.DiagError(names.CE, create.ErrActionDeleting, ResBucket, d.Id(), err) + return create.DiagError(names.Lightsail, create.ErrActionDeleting, ResBucket, d.Id(), err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeDeleteBucket, ResBucket, d.Id()) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeDeleteBucket, ResBucket, d.Id()) if diag != nil { return diag @@ -172,3 +174,25 @@ func resourceBucketDelete(ctx context.Context, d *schema.ResourceData, meta inte return nil } + +func FindBucketById(ctx context.Context, conn *lightsail.Client, id string) (*types.Bucket, error) { + in := &lightsail.GetBucketsInput{BucketName: aws.String(id)} + out, err := conn.GetBuckets(ctx, in) + + if errs.IsA[*types.NotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: in, + } + } + + if err != nil { + return nil, err + } + + if out == nil || len(out.Buckets) == 0 { + return nil, tfresource.NewEmptyResultError(in) + } + + return &out.Buckets[0], nil +} From 5fd7734a4133e603606bc815c1558cf784e33d28 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:37:43 -0400 Subject: [PATCH 06/81] lightsail: Amend bucket_access_key, migrate resource to aws-go-sdk-v2 --- .../service/lightsail/bucket_access_key.go | 65 +++++++++++++++---- 1 file changed, 53 insertions(+), 12 deletions(-) diff --git a/internal/service/lightsail/bucket_access_key.go b/internal/service/lightsail/bucket_access_key.go index c7db905e7b56..cebc0a4c69d6 100644 --- a/internal/service/lightsail/bucket_access_key.go +++ b/internal/service/lightsail/bucket_access_key.go @@ -5,14 +5,16 @@ import ( "regexp" "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" - "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/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/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/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/flex" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" @@ -60,19 +62,19 @@ func ResourceBucketAccessKey() *schema.Resource { } func resourceBucketAccessKeyCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() in := lightsail.CreateBucketAccessKeyInput{ BucketName: aws.String(d.Get("bucket_name").(string)), } - out, err := conn.CreateBucketAccessKeyWithContext(ctx, &in) + out, err := conn.CreateBucketAccessKey(ctx, &in) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeCreateBucketAccessKey, ResBucketAccessKey, d.Get("bucket_name").(string), err) + return create.DiagError(names.Lightsail, string(types.OperationTypeCreateBucketAccessKey), ResBucketAccessKey, d.Get("bucket_name").(string), err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeCreateBucketAccessKey, ResBucketAccessKey, d.Get("bucket_name").(string)) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeCreateBucketAccessKey, ResBucketAccessKey, d.Get("bucket_name").(string)) if diag != nil { return diag @@ -92,7 +94,7 @@ func resourceBucketAccessKeyCreate(ctx context.Context, d *schema.ResourceData, } func resourceBucketAccessKeyRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() out, err := FindBucketAccessKeyById(ctx, conn, d.Id()) @@ -115,19 +117,19 @@ func resourceBucketAccessKeyRead(ctx context.Context, d *schema.ResourceData, me } func resourceBucketAccessKeyDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() parts, err := flex.ExpandResourceId(d.Id(), BucketAccessKeyIdPartsCount, false) if err != nil { return create.DiagError(names.Lightsail, create.ErrActionExpandingResourceId, ResBucketAccessKey, d.Id(), err) } - out, err := conn.DeleteBucketAccessKeyWithContext(ctx, &lightsail.DeleteBucketAccessKeyInput{ + out, err := conn.DeleteBucketAccessKey(ctx, &lightsail.DeleteBucketAccessKeyInput{ BucketName: aws.String(parts[0]), AccessKeyId: aws.String(parts[1]), }) - if err != nil && tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { + if err != nil && errs.IsA[*types.NotFoundException](err) { return nil } @@ -135,7 +137,7 @@ func resourceBucketAccessKeyDelete(ctx context.Context, d *schema.ResourceData, return create.DiagError(names.Lightsail, create.ErrActionDeleting, ResBucketAccessKey, d.Id(), err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeDeleteBucketAccessKey, ResBucketAccessKey, d.Id()) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeDeleteBucketAccessKey, ResBucketAccessKey, d.Id()) if diag != nil { return diag @@ -143,3 +145,42 @@ func resourceBucketAccessKeyDelete(ctx context.Context, d *schema.ResourceData, return nil } + +func FindBucketAccessKeyById(ctx context.Context, conn *lightsail.Client, id string) (*types.AccessKey, error) { + parts, err := flex.ExpandResourceId(id, BucketAccessKeyIdPartsCount, false) + + if err != nil { + return nil, err + } + + in := &lightsail.GetBucketAccessKeysInput{BucketName: aws.String(parts[0])} + out, err := conn.GetBucketAccessKeys(ctx, in) + + if errs.IsA[*types.NotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: in, + } + } + + if err != nil { + return nil, err + } + + var entry *types.AccessKey + entryExists := false + + for _, n := range out.AccessKeys { + if parts[1] == aws.ToString(n.AccessKeyId) { + entry = &n + entryExists = true + break + } + } + + if !entryExists { + return nil, tfresource.NewEmptyResultError(in) + } + + return entry, nil +} From bf926d1568df6bf64c290fcb78fb0c355a7d4c7e Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:38:00 -0400 Subject: [PATCH 07/81] lightsail: Amend bucke_access_key_test, migrate resource to aws-go-sdk-v2 --- .../service/lightsail/bucket_access_key_test.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/internal/service/lightsail/bucket_access_key_test.go b/internal/service/lightsail/bucket_access_key_test.go index 2792d33c9468..ce3391aeadd4 100644 --- a/internal/service/lightsail/bucket_access_key_test.go +++ b/internal/service/lightsail/bucket_access_key_test.go @@ -7,7 +7,7 @@ import ( "regexp" "testing" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -27,10 +27,10 @@ func TestAccLightsailBucketAccessKey_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckBucketAccessKeyDestroy(ctx), Steps: []resource.TestStep{ @@ -62,10 +62,10 @@ func TestAccLightsailBucketAccessKey_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckBucketAccessKeyDestroy(ctx), Steps: []resource.TestStep{ @@ -92,7 +92,7 @@ func testAccCheckBucketAccessKeyExists(ctx context.Context, resourceName string) return fmt.Errorf("Resource (%s) ID not set", resourceName) } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() out, err := tflightsail.FindBucketAccessKeyById(ctx, conn, rs.Primary.ID) @@ -110,7 +110,7 @@ func testAccCheckBucketAccessKeyExists(ctx context.Context, resourceName string) func testAccCheckBucketAccessKeyDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() for _, rs := range s.RootModule().Resources { if rs.Type != "aws_lightsail_bucket_access_key" { From 2c0fd8bed9c026f8f89455499f9fbb357e080f4b Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:38:15 -0400 Subject: [PATCH 08/81] lightsail: Amend bucket_resource_access, migrate resource to aws-go-sdk-v2 --- .../lightsail/bucket_resource_access.go | 80 +++++++++++++++---- 1 file changed, 65 insertions(+), 15 deletions(-) diff --git a/internal/service/lightsail/bucket_resource_access.go b/internal/service/lightsail/bucket_resource_access.go index 916cf0ba052c..3668a748fe67 100644 --- a/internal/service/lightsail/bucket_resource_access.go +++ b/internal/service/lightsail/bucket_resource_access.go @@ -4,14 +4,16 @@ import ( "context" "regexp" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" - "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/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/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/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/flex" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" @@ -49,21 +51,21 @@ func ResourceBucketResourceAccess() *schema.Resource { } func resourceBucketResourceAccessCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() in := lightsail.SetResourceAccessForBucketInput{ BucketName: aws.String(d.Get("bucket_name").(string)), ResourceName: aws.String(d.Get("resource_name").(string)), - Access: aws.String(lightsail.ResourceBucketAccessAllow), + Access: types.ResourceBucketAccessAllow, } - out, err := conn.SetResourceAccessForBucketWithContext(ctx, &in) + out, err := conn.SetResourceAccessForBucket(ctx, &in) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeSetResourceAccessForBucket, ResBucketResourceAccess, d.Get("bucket_name").(string), err) + return create.DiagError(names.Lightsail, string(types.OperationTypeSetResourceAccessForBucket), ResBucketResourceAccess, d.Get("bucket_name").(string), err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeSetResourceAccessForBucket, ResBucketResourceAccess, d.Get("bucket_name").(string)) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeSetResourceAccessForBucket, ResBucketResourceAccess, d.Get("bucket_name").(string)) if diag != nil { return diag @@ -82,7 +84,7 @@ func resourceBucketResourceAccessCreate(ctx context.Context, d *schema.ResourceD } func resourceBucketResourceAccessRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() out, err := FindBucketResourceAccessById(ctx, conn, d.Id()) @@ -109,28 +111,28 @@ func resourceBucketResourceAccessRead(ctx context.Context, d *schema.ResourceDat } func resourceBucketResourceAccessDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() parts, err := flex.ExpandResourceId(d.Id(), BucketResourceAccessIdPartsCount, false) if err != nil { return create.DiagError(names.Lightsail, create.ErrActionExpandingResourceId, ResBucketResourceAccess, d.Id(), err) } - out, err := conn.SetResourceAccessForBucketWithContext(ctx, &lightsail.SetResourceAccessForBucketInput{ + out, err := conn.SetResourceAccessForBucket(ctx, &lightsail.SetResourceAccessForBucketInput{ BucketName: aws.String(parts[0]), ResourceName: aws.String(parts[1]), - Access: aws.String(lightsail.ResourceBucketAccessDeny), + Access: types.ResourceBucketAccessDeny, }) - if err != nil && tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { + if err != nil && errs.IsA[*types.NotFoundException](err) { return nil } if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeSetResourceAccessForBucket, ResBucketResourceAccess, d.Id(), err) + return create.DiagError(names.Lightsail, string(types.OperationTypeSetResourceAccessForBucket), ResBucketResourceAccess, d.Id(), err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeSetResourceAccessForBucket, ResBucketResourceAccess, d.Id()) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeSetResourceAccessForBucket, ResBucketResourceAccess, d.Id()) if diag != nil { return diag @@ -138,3 +140,51 @@ func resourceBucketResourceAccessDelete(ctx context.Context, d *schema.ResourceD return nil } + +func FindBucketResourceAccessById(ctx context.Context, conn *lightsail.Client, id string) (*types.ResourceReceivingAccess, error) { + parts, err := flex.ExpandResourceId(id, BucketAccessKeyIdPartsCount, false) + + if err != nil { + return nil, err + } + + in := &lightsail.GetBucketsInput{ + BucketName: aws.String(parts[0]), + IncludeConnectedResources: aws.Bool(true), + } + + out, err := conn.GetBuckets(ctx, in) + + if errs.IsA[*types.NotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: in, + } + } + + if err != nil { + return nil, err + } + + if out == nil || len(out.Buckets) == 0 { + return nil, tfresource.NewEmptyResultError(in) + } + + bucket := out.Buckets[0] + var entry *types.ResourceReceivingAccess + entryExists := false + + for _, n := range bucket.ResourcesReceivingAccess { + if parts[1] == aws.ToString(n.Name) { + entry = &n + entryExists = true + break + } + } + + if !entryExists { + return nil, tfresource.NewEmptyResultError(in) + } + + return entry, nil +} From 907b0a0c70eb7a2869d288e6e2c5dfd5d22ff27a Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:38:30 -0400 Subject: [PATCH 09/81] lightsail: Amend bucket_resource_access_test, migrate resource to aws-go-sdk-v2 --- .../lightsail/bucket_resource_access_test.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/internal/service/lightsail/bucket_resource_access_test.go b/internal/service/lightsail/bucket_resource_access_test.go index 5553077cb06e..9a6d5adf59be 100644 --- a/internal/service/lightsail/bucket_resource_access_test.go +++ b/internal/service/lightsail/bucket_resource_access_test.go @@ -6,7 +6,7 @@ import ( "fmt" "testing" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -27,10 +27,10 @@ func TestAccLightsailBucketResourceAccess_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckBucketResourceAccessDestroy(ctx), Steps: []resource.TestStep{ @@ -60,10 +60,10 @@ func TestAccLightsailBucketResourceAccess_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckBucketResourceAccessDestroy(ctx), Steps: []resource.TestStep{ @@ -90,7 +90,7 @@ func testAccCheckBucketResourceAccessExists(ctx context.Context, resourceName st return fmt.Errorf("Resource (%s) ID not set", resourceName) } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() out, err := tflightsail.FindBucketResourceAccessById(ctx, conn, rs.Primary.ID) @@ -108,7 +108,7 @@ func testAccCheckBucketResourceAccessExists(ctx context.Context, resourceName st func testAccCheckBucketResourceAccessDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() for _, rs := range s.RootModule().Resources { if rs.Type != "aws_lightsail_bucket_access_key" { From 80da183eb1baf8af2e99c937da5b625e6826771a Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:39:08 -0400 Subject: [PATCH 10/81] lightsail: Amend bucket_test, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/bucket_test.go | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/internal/service/lightsail/bucket_test.go b/internal/service/lightsail/bucket_test.go index e270380ca20c..31568cbc2d7b 100644 --- a/internal/service/lightsail/bucket_test.go +++ b/internal/service/lightsail/bucket_test.go @@ -7,7 +7,7 @@ import ( "regexp" "testing" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -27,10 +27,10 @@ func TestAccLightsailBucket_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckBucketDestroy(ctx), Steps: []resource.TestStep{ @@ -68,10 +68,10 @@ func TestAccLightsailBucket_BundleId(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckBucketDestroy(ctx), Steps: []resource.TestStep{ @@ -106,10 +106,10 @@ func TestAccLightsailBucket_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckBucketDestroy(ctx), Steps: []resource.TestStep{ @@ -133,10 +133,10 @@ func TestAccLightsailBucket_tags(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckBucketDestroy(ctx), Steps: []resource.TestStep{ @@ -185,7 +185,7 @@ func testAccCheckBucketExists(ctx context.Context, resourceName string) resource return fmt.Errorf("Resource (%s) ID not set", resourceName) } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() out, err := tflightsail.FindBucketById(ctx, conn, rs.Primary.ID) @@ -203,7 +203,7 @@ func testAccCheckBucketExists(ctx context.Context, resourceName string) resource func testAccCheckBucketDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() for _, rs := range s.RootModule().Resources { if rs.Type != "aws_lightsail_bucket" { From 23698aeb398145016f06fb710630007730c865db Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:39:20 -0400 Subject: [PATCH 11/81] lightsail: Amend certificate, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/certificate.go | 73 ++++++++++++++++------- 1 file changed, 50 insertions(+), 23 deletions(-) diff --git a/internal/service/lightsail/certificate.go b/internal/service/lightsail/certificate.go index f22fb72b9a4c..30a0f2199adc 100644 --- a/internal/service/lightsail/certificate.go +++ b/internal/service/lightsail/certificate.go @@ -6,15 +6,17 @@ import ( "regexp" "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" - "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/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff" + "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/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/internal/verify" @@ -129,7 +131,7 @@ func ResourceCertificate() *schema.Resource { } func resourceCertificateCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() req := lightsail.CreateCertificateInput{ CertificateName: aws.String(d.Get("name").(string)), @@ -138,17 +140,17 @@ func resourceCertificateCreate(ctx context.Context, d *schema.ResourceData, meta } if v, ok := d.GetOk("subject_alternative_names"); ok { - req.SubjectAlternativeNames = aws.StringSlice(expandSubjectAlternativeNames(v)) + req.SubjectAlternativeNames = expandSubjectAlternativeNames(v) } - resp, err := conn.CreateCertificateWithContext(ctx, &req) + resp, err := conn.CreateCertificate(ctx, &req) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeCreateCertificate, ResCertificate, d.Get("name").(string), err) + return create.DiagError(names.Lightsail, string(types.OperationTypeCreateCertificate), ResCertificate, d.Get("name").(string), err) } id := d.Get("name").(string) - diag := expandOperations(ctx, conn, resp.Operations, lightsail.OperationTypeCreateCertificate, ResCertificate, id) + diag := expandOperations(ctx, conn, resp.Operations, types.OperationTypeCreateCertificate, ResCertificate, id) if diag != nil { return diag @@ -160,18 +162,18 @@ func resourceCertificateCreate(ctx context.Context, d *schema.ResourceData, meta } func resourceCertificateRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() - certificate, err := FindCertificateByName(ctx, conn, d.Id()) + certificate, err := FindCertificateById(ctx, conn, d.Id()) if !d.IsNewResource() && tfresource.NotFound(err) { - create.LogNotFoundRemoveState(names.CE, create.ErrActionReading, ResCertificate, d.Id()) + create.LogNotFoundRemoveState(names.Lightsail, create.ErrActionReading, ResCertificate, d.Id()) d.SetId("") return nil } if err != nil { - return create.DiagError(names.CE, create.ErrActionReading, ResCertificate, d.Id(), err) + return create.DiagError(names.Lightsail, create.ErrActionReading, ResCertificate, d.Id(), err) } d.Set("arn", certificate.Arn) @@ -179,7 +181,7 @@ func resourceCertificateRead(ctx context.Context, d *schema.ResourceData, meta i d.Set("domain_name", certificate.DomainName) d.Set("domain_validation_options", flattenDomainValidationRecords(certificate.DomainValidationRecords)) d.Set("name", certificate.Name) - d.Set("subject_alternative_names", aws.StringValueSlice(certificate.SubjectAlternativeNames)) + d.Set("subject_alternative_names", certificate.SubjectAlternativeNames) SetTagsOut(ctx, certificate.Tags) @@ -192,21 +194,21 @@ func resourceCertificateUpdate(ctx context.Context, d *schema.ResourceData, meta } func resourceCertificateDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() - resp, err := conn.DeleteCertificateWithContext(ctx, &lightsail.DeleteCertificateInput{ + resp, err := conn.DeleteCertificate(ctx, &lightsail.DeleteCertificateInput{ CertificateName: aws.String(d.Id()), }) - if err != nil && tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { + if err != nil && errs.IsA[*types.NotFoundException](err) { return nil } if err != nil { - return create.DiagError(names.CE, create.ErrActionDeleting, ResCertificate, d.Id(), err) + return create.DiagError(names.Lightsail, create.ErrActionDeleting, ResCertificate, d.Id(), err) } - diag := expandOperations(ctx, conn, resp.Operations, lightsail.OperationTypeDeleteCertificate, ResCertificate, d.Id()) + diag := expandOperations(ctx, conn, resp.Operations, types.OperationTypeDeleteCertificate, ResCertificate, d.Id()) if diag != nil { return diag @@ -229,16 +231,16 @@ func domainValidationOptionsHash(v interface{}) int { return 0 } -func flattenDomainValidationRecords(domainValidationRecords []*lightsail.DomainValidationRecord) []map[string]interface{} { +func flattenDomainValidationRecords(domainValidationRecords []types.DomainValidationRecord) []map[string]interface{} { var domainValidationResult []map[string]interface{} for _, o := range domainValidationRecords { if o.ResourceRecord != nil { validationOption := map[string]interface{}{ - "domain_name": aws.StringValue(o.DomainName), - "resource_record_name": aws.StringValue(o.ResourceRecord.Name), - "resource_record_type": aws.StringValue(o.ResourceRecord.Type), - "resource_record_value": aws.StringValue(o.ResourceRecord.Value), + "domain_name": aws.ToString(o.DomainName), + "resource_record_name": aws.ToString(o.ResourceRecord.Name), + "resource_record_type": aws.ToString(o.ResourceRecord.Type), + "resource_record_value": aws.ToString(o.ResourceRecord.Value), } domainValidationResult = append(domainValidationResult, validationOption) } @@ -255,3 +257,28 @@ func expandSubjectAlternativeNames(sans interface{}) []string { return subjectAlternativeNames } + +func FindCertificateById(ctx context.Context, conn *lightsail.Client, name string) (*types.Certificate, error) { + in := &lightsail.GetCertificatesInput{ + CertificateName: aws.String(name), + } + + out, err := conn.GetCertificates(ctx, in) + + if errs.IsA[*types.NotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: in, + } + } + + if err != nil { + return nil, err + } + + if out == nil || len(out.Certificates) == 0 { + return nil, tfresource.NewEmptyResultError(in) + } + + return out.Certificates[0].CertificateDetail, nil +} From 10a9a52f8f5d464de536b59276aa98697a8bbbee Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:39:32 -0400 Subject: [PATCH 12/81] lightsail: Amend certificate_test, migrate resource to aws-go-sdk-v2 --- .../service/lightsail/certificate_test.go | 59 ++++++++----------- 1 file changed, 26 insertions(+), 33 deletions(-) diff --git a/internal/service/lightsail/certificate_test.go b/internal/service/lightsail/certificate_test.go index 38a46ec1417b..2598818ff9e3 100644 --- a/internal/service/lightsail/certificate_test.go +++ b/internal/service/lightsail/certificate_test.go @@ -8,8 +8,8 @@ import ( "testing" "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/lightsail" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -23,7 +23,6 @@ import ( func TestAccLightsailCertificate_basic(t *testing.T) { ctx := acctest.Context(t) - var certificate lightsail.Certificate resourceName := "aws_lightsail_certificate.test" rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) domainName := acctest.ACMCertificateRandomSubDomain(acctest.RandomDomainName()) @@ -31,17 +30,17 @@ func TestAccLightsailCertificate_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckCertificateDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccCertificateConfig_basic(rName, domainName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckCertificateExists(ctx, resourceName, &certificate), + testAccCheckCertificateExists(ctx, resourceName), acctest.MatchResourceAttrRegionalARN(resourceName, "arn", "lightsail", regexp.MustCompile(`Certificate/.+`)), resource.TestCheckResourceAttr(resourceName, "name", rName), resource.TestCheckResourceAttr(resourceName, "domain_name", domainName), @@ -59,7 +58,6 @@ func TestAccLightsailCertificate_basic(t *testing.T) { func TestAccLightsailCertificate_subjectAlternativeNames(t *testing.T) { ctx := acctest.Context(t) - var certificate lightsail.Certificate resourceName := "aws_lightsail_certificate.test" rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) domainName := acctest.ACMCertificateRandomSubDomain(acctest.RandomDomainName()) @@ -68,17 +66,17 @@ func TestAccLightsailCertificate_subjectAlternativeNames(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckCertificateDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccCertificateConfig_subjectAlternativeNames(rName, domainName, subjectAlternativeName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckCertificateExists(ctx, resourceName, &certificate), + testAccCheckCertificateExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "subject_alternative_names.#", "2"), resource.TestCheckTypeSetElemAttr(resourceName, "subject_alternative_names.*", subjectAlternativeName), resource.TestCheckTypeSetElemAttr(resourceName, "subject_alternative_names.*", domainName), @@ -90,7 +88,6 @@ func TestAccLightsailCertificate_subjectAlternativeNames(t *testing.T) { func TestAccLightsailCertificate_DomainValidationOptions(t *testing.T) { ctx := acctest.Context(t) - var certificate lightsail.Certificate resourceName := "aws_lightsail_certificate.test" rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) // Lightsail will only return Domain Validation Options when using a non-test domain. @@ -101,17 +98,17 @@ func TestAccLightsailCertificate_DomainValidationOptions(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckCertificateDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccCertificateConfig_subjectAlternativeNames(rName, domainName, subjectAlternativeName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckCertificateExists(ctx, resourceName, &certificate), + testAccCheckCertificateExists(ctx, resourceName), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "domain_validation_options.*", map[string]string{ "domain_name": domainName, "resource_record_type": "CNAME", @@ -128,7 +125,6 @@ func TestAccLightsailCertificate_DomainValidationOptions(t *testing.T) { func TestAccLightsailCertificate_tags(t *testing.T) { ctx := acctest.Context(t) - var certificate lightsail.Certificate resourceName := "aws_lightsail_certificate.test" rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) domainName := acctest.ACMCertificateRandomSubDomain(acctest.RandomDomainName()) @@ -136,17 +132,17 @@ func TestAccLightsailCertificate_tags(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckCertificateDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccCertificateConfig_tags1(rName, domainName, "key1", "value1"), Check: resource.ComposeTestCheckFunc( - testAccCheckCertificateExists(ctx, resourceName, &certificate), + testAccCheckCertificateExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "tags.%", "1"), resource.TestCheckResourceAttr(resourceName, "tags.key1", "value1"), ), @@ -159,7 +155,7 @@ func TestAccLightsailCertificate_tags(t *testing.T) { { Config: testAccCertificateConfig_tags2(rName, domainName, "key1", "value1updated", "key2", "value2"), Check: resource.ComposeTestCheckFunc( - testAccCheckCertificateExists(ctx, resourceName, &certificate), + testAccCheckCertificateExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "tags.%", "2"), resource.TestCheckResourceAttr(resourceName, "tags.key1", "value1updated"), resource.TestCheckResourceAttr(resourceName, "tags.key2", "value2"), @@ -168,7 +164,7 @@ func TestAccLightsailCertificate_tags(t *testing.T) { { Config: testAccCertificateConfig_tags1(rName, domainName, "key2", "value2"), Check: resource.ComposeTestCheckFunc( - testAccCheckCertificateExists(ctx, resourceName, &certificate), + testAccCheckCertificateExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "tags.%", "1"), resource.TestCheckResourceAttr(resourceName, "tags.key2", "value2"), ), @@ -179,15 +175,14 @@ func TestAccLightsailCertificate_tags(t *testing.T) { func TestAccLightsailCertificate_disappears(t *testing.T) { ctx := acctest.Context(t) - var certificate lightsail.Certificate resourceName := "aws_lightsail_certificate.test" rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) domainName := acctest.ACMCertificateRandomSubDomain(acctest.RandomDomainName()) testDestroy := func(*terraform.State) error { // reach out and DELETE the Certificate - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() - _, err := conn.DeleteCertificateWithContext(ctx, &lightsail.DeleteCertificateInput{ + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() + _, err := conn.DeleteCertificate(ctx, &lightsail.DeleteCertificateInput{ CertificateName: aws.String(rName), }) @@ -204,17 +199,17 @@ func TestAccLightsailCertificate_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckCertificateDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccCertificateConfig_basic(rName, domainName), Check: resource.ComposeTestCheckFunc( - testAccCheckCertificateExists(ctx, resourceName, &certificate), + testAccCheckCertificateExists(ctx, resourceName), testDestroy, ), ExpectNonEmptyPlan: true, @@ -230,9 +225,9 @@ func testAccCheckCertificateDestroy(ctx context.Context) resource.TestCheckFunc continue } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() - _, err := tflightsail.FindCertificateByName(ctx, conn, rs.Primary.ID) + _, err := tflightsail.FindCertificateById(ctx, conn, rs.Primary.ID) if tfresource.NotFound(err) { continue @@ -249,7 +244,7 @@ func testAccCheckCertificateDestroy(ctx context.Context) resource.TestCheckFunc } } -func testAccCheckCertificateExists(ctx context.Context, n string, certificate *lightsail.Certificate) resource.TestCheckFunc { +func testAccCheckCertificateExists(ctx context.Context, n string) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] if !ok { @@ -260,9 +255,9 @@ func testAccCheckCertificateExists(ctx context.Context, n string, certificate *l return errors.New("No Certificate ID is set") } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() - respCertificate, err := tflightsail.FindCertificateByName(ctx, conn, rs.Primary.ID) + respCertificate, err := tflightsail.FindCertificateById(ctx, conn, rs.Primary.ID) if err != nil { return err @@ -272,8 +267,6 @@ func testAccCheckCertificateExists(ctx context.Context, n string, certificate *l return fmt.Errorf("Certificate %q does not exist", rs.Primary.ID) } - *certificate = *respCertificate - return nil } } From b1e9ff509bb33e65b686a672f959fe7f35d008d4 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:39:51 -0400 Subject: [PATCH 13/81] lightsail: Amend container_service_deployment_version_test, migrate resource to aws-go-sdk-v2 --- ...ntainer_service_deployment_version_test.go | 77 ++++++++++--------- 1 file changed, 39 insertions(+), 38 deletions(-) diff --git a/internal/service/lightsail/container_service_deployment_version_test.go b/internal/service/lightsail/container_service_deployment_version_test.go index 2566e24eaabe..75269267dd27 100644 --- a/internal/service/lightsail/container_service_deployment_version_test.go +++ b/internal/service/lightsail/container_service_deployment_version_test.go @@ -6,7 +6,8 @@ import ( "regexp" "testing" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/types" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -102,10 +103,10 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_Basic(t *testin resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -114,7 +115,7 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_Basic(t *testin Check: resource.ComposeTestCheckFunc( testAccCheckContainerServiceDeploymentVersionExists(ctx, resourceName), resource.TestCheckResourceAttrSet(resourceName, "created_at"), - resource.TestCheckResourceAttr(resourceName, "state", lightsail.ContainerServiceDeploymentStateActive), + resource.TestCheckResourceAttr(resourceName, "state", string(types.ContainerServiceDeploymentStateActive)), resource.TestCheckResourceAttr(resourceName, "version", "1"), resource.TestCheckResourceAttr(resourceName, "container.#", "1"), resource.TestCheckResourceAttr(resourceName, "container.0.container_name", containerName), @@ -144,10 +145,10 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_Multiple(t *tes resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -155,7 +156,7 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_Multiple(t *tes Config: testAccContainerServiceDeploymentVersionConfig_Container_multiple(rName, containerName1, helloWorldImage, containerName2, redisImage), Check: resource.ComposeTestCheckFunc( testAccCheckContainerServiceDeploymentVersionExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, "state", lightsail.ContainerServiceDeploymentStateActive), + resource.TestCheckResourceAttr(resourceName, "state", string(types.ContainerServiceDeploymentStateActive)), resource.TestCheckResourceAttr(resourceName, "version", "1"), resource.TestCheckResourceAttr(resourceName, "container.#", "2"), resource.TestCheckResourceAttr(resourceName, "container.0.container_name", containerName1), @@ -182,10 +183,10 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_Environment(t * resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -193,7 +194,7 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_Environment(t * Config: testAccContainerServiceDeploymentVersionConfig_Container_environment1(rName, containerName, "A", "a"), Check: resource.ComposeTestCheckFunc( testAccCheckContainerServiceDeploymentVersionExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, "state", lightsail.ContainerServiceDeploymentStateActive), + resource.TestCheckResourceAttr(resourceName, "state", string(types.ContainerServiceDeploymentStateActive)), resource.TestCheckResourceAttr(resourceName, "version", "1"), resource.TestCheckResourceAttr(resourceName, "container.#", "1"), resource.TestCheckResourceAttr(resourceName, "container.0.environment.%", "1"), @@ -209,7 +210,7 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_Environment(t * Config: testAccContainerServiceDeploymentVersionConfig_Container_environment1(rName, containerName, "B", "b"), Check: resource.ComposeTestCheckFunc( testAccCheckContainerServiceDeploymentVersionExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, "state", lightsail.ContainerServiceDeploymentStateActive), + resource.TestCheckResourceAttr(resourceName, "state", string(types.ContainerServiceDeploymentStateActive)), resource.TestCheckResourceAttr(resourceName, "version", "2"), resource.TestCheckResourceAttr(resourceName, "container.#", "1"), resource.TestCheckResourceAttr(resourceName, "container.0.environment.%", "1"), @@ -220,7 +221,7 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_Environment(t * Config: testAccContainerServiceDeploymentVersionConfig_Container_environment2(rName, containerName, "A", "a", "B", "b"), Check: resource.ComposeTestCheckFunc( testAccCheckContainerServiceDeploymentVersionExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, "state", lightsail.ContainerServiceDeploymentStateActive), + resource.TestCheckResourceAttr(resourceName, "state", string(types.ContainerServiceDeploymentStateActive)), resource.TestCheckResourceAttr(resourceName, "version", "3"), resource.TestCheckResourceAttr(resourceName, "container.#", "1"), resource.TestCheckResourceAttr(resourceName, "container.0.environment.%", "2"), @@ -237,7 +238,7 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_Environment(t * Config: testAccContainerServiceDeploymentVersionConfig_Container_basic(rName, containerName, helloWorldImage), Check: resource.ComposeTestCheckFunc( testAccCheckContainerServiceDeploymentVersionExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, "state", lightsail.ContainerServiceDeploymentStateActive), + resource.TestCheckResourceAttr(resourceName, "state", string(types.ContainerServiceDeploymentStateActive)), resource.TestCheckResourceAttr(resourceName, "version", "4"), resource.TestCheckResourceAttr(resourceName, "container.#", "1"), resource.TestCheckResourceAttr(resourceName, "container.0.environment.%", "0"), @@ -261,22 +262,22 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_Ports(t *testin resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccContainerServiceDeploymentVersionConfig_Container_ports1(rName, containerName, "80", lightsail.ContainerServiceProtocolHttp), + Config: testAccContainerServiceDeploymentVersionConfig_Container_ports1(rName, containerName, "80", string(types.ContainerServiceProtocolHttp)), Check: resource.ComposeTestCheckFunc( testAccCheckContainerServiceDeploymentVersionExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, "state", lightsail.ContainerServiceDeploymentStateActive), + resource.TestCheckResourceAttr(resourceName, "state", string(types.ContainerServiceDeploymentStateActive)), resource.TestCheckResourceAttr(resourceName, "version", "1"), resource.TestCheckResourceAttr(resourceName, "container.#", "1"), resource.TestCheckResourceAttr(resourceName, "container.0.ports.%", "1"), - resource.TestCheckResourceAttr(resourceName, "container.0.ports.80", lightsail.ContainerServiceProtocolHttp), + resource.TestCheckResourceAttr(resourceName, "container.0.ports.80", string(types.ContainerServiceProtocolHttp)), ), }, { @@ -285,33 +286,33 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_Ports(t *testin ImportStateVerify: true, }, { - Config: testAccContainerServiceDeploymentVersionConfig_Container_ports1(rName, containerName, "90", lightsail.ContainerServiceProtocolTcp), + Config: testAccContainerServiceDeploymentVersionConfig_Container_ports1(rName, containerName, "90", string(types.ContainerServiceProtocolTcp)), Check: resource.ComposeTestCheckFunc( testAccCheckContainerServiceDeploymentVersionExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, "state", lightsail.ContainerServiceDeploymentStateActive), + resource.TestCheckResourceAttr(resourceName, "state", string(types.ContainerServiceDeploymentStateActive)), resource.TestCheckResourceAttr(resourceName, "version", "2"), resource.TestCheckResourceAttr(resourceName, "container.#", "1"), resource.TestCheckResourceAttr(resourceName, "container.0.ports.%", "1"), - resource.TestCheckResourceAttr(resourceName, "container.0.ports.90", lightsail.ContainerServiceProtocolTcp), + resource.TestCheckResourceAttr(resourceName, "container.0.ports.90", string(types.ContainerServiceProtocolTcp)), ), }, { - Config: testAccContainerServiceDeploymentVersionConfig_Container_ports2(rName, containerName, "80", lightsail.ContainerServiceProtocolHttp, "90", lightsail.ContainerServiceProtocolTcp), + Config: testAccContainerServiceDeploymentVersionConfig_Container_ports2(rName, containerName, "80", string(types.ContainerServiceProtocolHttp), "90", string(types.ContainerServiceProtocolTcp)), Check: resource.ComposeTestCheckFunc( testAccCheckContainerServiceDeploymentVersionExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, "state", lightsail.ContainerServiceDeploymentStateActive), + resource.TestCheckResourceAttr(resourceName, "state", string(types.ContainerServiceDeploymentStateActive)), resource.TestCheckResourceAttr(resourceName, "version", "3"), resource.TestCheckResourceAttr(resourceName, "container.#", "1"), resource.TestCheckResourceAttr(resourceName, "container.0.ports.%", "2"), - resource.TestCheckResourceAttr(resourceName, "container.0.ports.80", lightsail.ContainerServiceProtocolHttp), - resource.TestCheckResourceAttr(resourceName, "container.0.ports.90", lightsail.ContainerServiceProtocolTcp), + resource.TestCheckResourceAttr(resourceName, "container.0.ports.80", string(types.ContainerServiceProtocolHttp)), + resource.TestCheckResourceAttr(resourceName, "container.0.ports.90", string(types.ContainerServiceProtocolTcp)), ), }, { Config: testAccContainerServiceDeploymentVersionConfig_Container_basic(rName, containerName, helloWorldImage), Check: resource.ComposeTestCheckFunc( testAccCheckContainerServiceDeploymentVersionExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, "state", lightsail.ContainerServiceDeploymentStateActive), + resource.TestCheckResourceAttr(resourceName, "state", string(types.ContainerServiceDeploymentStateActive)), resource.TestCheckResourceAttr(resourceName, "version", "4"), resource.TestCheckResourceAttr(resourceName, "container.#", "1"), resource.TestCheckResourceAttr(resourceName, "container.0.ports.%", "0"), @@ -337,10 +338,10 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_PublicEndpoint( resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -348,11 +349,11 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_PublicEndpoint( Config: testAccContainerServiceDeploymentVersionConfig_Container_publicEndpoint(rName, containerName1), Check: resource.ComposeTestCheckFunc( testAccCheckContainerServiceDeploymentVersionExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, "state", lightsail.ContainerServiceDeploymentStateActive), + resource.TestCheckResourceAttr(resourceName, "state", string(types.ContainerServiceDeploymentStateActive)), resource.TestCheckResourceAttr(resourceName, "version", "1"), resource.TestCheckResourceAttr(resourceName, "container.#", "1"), resource.TestCheckResourceAttr(resourceName, "container.0.ports.%", "1"), - resource.TestCheckResourceAttr(resourceName, "container.0.ports.80", lightsail.ContainerServiceProtocolHttp), + resource.TestCheckResourceAttr(resourceName, "container.0.ports.80", string(types.ContainerServiceProtocolHttp)), resource.TestCheckResourceAttr(resourceName, "public_endpoint.#", "1"), resource.TestCheckResourceAttr(resourceName, "public_endpoint.0.container_name", containerName1), resource.TestCheckResourceAttr(resourceName, "public_endpoint.0.container_port", "80"), @@ -374,7 +375,7 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_PublicEndpoint( Config: testAccContainerServiceDeploymentVersionConfig_Container_publicEndpointCompleteHealthCheck(rName, containerName2), Check: resource.ComposeTestCheckFunc( testAccCheckContainerServiceDeploymentVersionExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, "state", lightsail.ContainerServiceDeploymentStateActive), + resource.TestCheckResourceAttr(resourceName, "state", string(types.ContainerServiceDeploymentStateActive)), resource.TestCheckResourceAttr(resourceName, "version", "2"), resource.TestCheckResourceAttr(resourceName, "container.#", "1"), resource.TestCheckResourceAttr(resourceName, "public_endpoint.#", "1"), @@ -393,7 +394,7 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_PublicEndpoint( Config: testAccContainerServiceDeploymentVersionConfig_Container_publicEndpointMinimalHealthCheck(rName, containerName2), Check: resource.ComposeTestCheckFunc( testAccCheckContainerServiceDeploymentVersionExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, "state", lightsail.ContainerServiceDeploymentStateActive), + resource.TestCheckResourceAttr(resourceName, "state", string(types.ContainerServiceDeploymentStateActive)), resource.TestCheckResourceAttr(resourceName, "version", "3"), resource.TestCheckResourceAttr(resourceName, "container.#", "1"), resource.TestCheckResourceAttr(resourceName, "public_endpoint.0.container_name", containerName2), @@ -411,7 +412,7 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_PublicEndpoint( Config: testAccContainerServiceDeploymentVersionConfig_Container_publicEndpoint(rName, containerName2), Check: resource.ComposeTestCheckFunc( testAccCheckContainerServiceDeploymentVersionExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, "state", lightsail.ContainerServiceDeploymentStateActive), + resource.TestCheckResourceAttr(resourceName, "state", string(types.ContainerServiceDeploymentStateActive)), resource.TestCheckResourceAttr(resourceName, "version", "4"), resource.TestCheckResourceAttr(resourceName, "container.#", "1"), resource.TestCheckResourceAttr(resourceName, "public_endpoint.#", "1"), @@ -430,7 +431,7 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_PublicEndpoint( Config: testAccContainerServiceDeploymentVersionConfig_Container_basic(rName, containerName1, helloWorldImage), Check: resource.ComposeTestCheckFunc( testAccCheckContainerServiceDeploymentVersionExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, "state", lightsail.ContainerServiceDeploymentStateActive), + resource.TestCheckResourceAttr(resourceName, "state", string(types.ContainerServiceDeploymentStateActive)), resource.TestCheckResourceAttr(resourceName, "version", "5"), resource.TestCheckResourceAttr(resourceName, "public_endpoint.#", "0"), ), @@ -448,10 +449,10 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_EnableService(t resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -463,7 +464,7 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_EnableService(t Config: testAccContainerServiceDeploymentVersionConfig_Container_withDisabledService(rName, containerName, false), Check: resource.ComposeTestCheckFunc( testAccCheckContainerServiceDeploymentVersionExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, "state", lightsail.ContainerServiceDeploymentStateActive), + resource.TestCheckResourceAttr(resourceName, "state", string(types.ContainerServiceDeploymentStateActive)), resource.TestCheckResourceAttr(resourceName, "version", "1"), resource.TestCheckResourceAttr(resourceName, "container.0.container_name", containerName), ), @@ -488,7 +489,7 @@ func testAccCheckContainerServiceDeploymentVersionExists(ctx context.Context, re return fmt.Errorf("no Lightsail Container Service Deployment Version ID is set") } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() serviceName, version, err := tflightsail.ContainerServiceDeploymentVersionParseResourceID(rs.Primary.ID) if err != nil { From 7b9d4bcf7658f93097fb775f15f6c8f29e5e2e0a Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:40:13 -0400 Subject: [PATCH 14/81] lightsail: Amend container_service_test, migrate resource to aws-go-sdk-v2 --- .../lightsail/container_service_test.go | 49 ++++++++++--------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/internal/service/lightsail/container_service_test.go b/internal/service/lightsail/container_service_test.go index af697cda5983..b6b6a1955129 100644 --- a/internal/service/lightsail/container_service_test.go +++ b/internal/service/lightsail/container_service_test.go @@ -6,7 +6,8 @@ import ( "regexp" "testing" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/types" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -24,10 +25,10 @@ func TestAccLightsailContainerService_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -37,7 +38,7 @@ func TestAccLightsailContainerService_basic(t *testing.T) { testAccCheckContainerServiceExists(ctx, resourceName), resource.TestCheckResourceAttrSet(resourceName, "created_at"), resource.TestCheckResourceAttr(resourceName, "name", rName), - resource.TestCheckResourceAttr(resourceName, "power", lightsail.ContainerServicePowerNameNano), + resource.TestCheckResourceAttr(resourceName, "power", string(types.ContainerServicePowerNameNano)), resource.TestCheckResourceAttr(resourceName, "scale", "1"), resource.TestCheckResourceAttr(resourceName, "is_disabled", "false"), resource.TestCheckResourceAttrSet(resourceName, "arn"), @@ -74,10 +75,10 @@ func TestAccLightsailContainerService_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -102,10 +103,10 @@ func TestAccLightsailContainerService_Name(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -135,10 +136,10 @@ func TestAccLightsailContainerService_IsDisabled(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -168,10 +169,10 @@ func TestAccLightsailContainerService_Power(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -179,14 +180,14 @@ func TestAccLightsailContainerService_Power(t *testing.T) { Config: testAccContainerServiceConfig_basic(rName), Check: resource.ComposeTestCheckFunc( testAccCheckContainerServiceExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, "power", lightsail.ContainerServicePowerNameNano), + resource.TestCheckResourceAttr(resourceName, "power", string(types.ContainerServicePowerNameNano)), ), }, { Config: testAccContainerServiceConfig_power(rName), Check: resource.ComposeTestCheckFunc( testAccCheckContainerServiceExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, "power", lightsail.ContainerServicePowerNameMicro), + resource.TestCheckResourceAttr(resourceName, "power", string(types.ContainerServicePowerNameMicro)), ), }, }, @@ -200,10 +201,10 @@ func TestAccLightsailContainerService_PublicDomainNames(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -223,10 +224,10 @@ func TestAccLightsailContainerService_PrivateRegistryAccess(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -252,10 +253,10 @@ func TestAccLightsailContainerService_Scale(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -285,10 +286,10 @@ func TestAccLightsailContainerService_tags(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -328,7 +329,7 @@ func TestAccLightsailContainerService_tags(t *testing.T) { func testAccCheckContainerServiceDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() for _, r := range s.RootModule().Resources { if r.Type != "aws_lightsail_container_service" { @@ -361,7 +362,7 @@ func testAccCheckContainerServiceExists(ctx context.Context, resourceName string return fmt.Errorf("no Lightsail Container Service ID is set") } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() _, err := tflightsail.FindContainerServiceByName(ctx, conn, rs.Primary.ID) From 13b9843b138747f0e64cb9fd81d7406f8d1c4c08 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:40:23 -0400 Subject: [PATCH 15/81] lightsail: Amend database, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/database.go | 33 +++++++++++++------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/internal/service/lightsail/database.go b/internal/service/lightsail/database.go index a7ae31069071..9d3934aa6b3e 100644 --- a/internal/service/lightsail/database.go +++ b/internal/service/lightsail/database.go @@ -6,13 +6,14 @@ import ( "regexp" "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" - "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/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/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" "github.com/hashicorp/terraform-provider-aws/internal/conns" + "github.com/hashicorp/terraform-provider-aws/internal/errs" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/verify" "github.com/hashicorp/terraform-provider-aws/names" @@ -186,7 +187,7 @@ func ResourceDatabase() *schema.Resource { } func resourceDatabaseCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() relationalDatabaseName := d.Get("relational_database_name").(string) input := &lightsail.CreateRelationalDatabaseInput{ @@ -218,13 +219,13 @@ func resourceDatabaseCreate(ctx context.Context, d *schema.ResourceData, meta in input.PubliclyAccessible = aws.Bool(v.(bool)) } - output, err := conn.CreateRelationalDatabaseWithContext(ctx, input) + output, err := conn.CreateRelationalDatabase(ctx, input) if err != nil { return diag.Errorf("creating Lightsail Relational Database (%s): %s", relationalDatabaseName, err) } - diagError := expandOperations(ctx, conn, output.Operations, lightsail.OperationTypeCreateRelationalDatabase, ResNameDatabase, relationalDatabaseName) + diagError := expandOperations(ctx, conn, output.Operations, types.OperationTypeCreateRelationalDatabase, ResNameDatabase, relationalDatabaseName) if diagError != nil { return diagError @@ -241,13 +242,13 @@ func resourceDatabaseCreate(ctx context.Context, d *schema.ResourceData, meta in RelationalDatabaseName: aws.String(d.Id()), } - output, err := conn.UpdateRelationalDatabaseWithContext(ctx, input) + output, err := conn.UpdateRelationalDatabase(ctx, input) if err != nil { return diag.Errorf("updating Lightsail Relational Database (%s) backup retention: %s", d.Id(), err) } - diagError := expandOperations(ctx, conn, output.Operations, lightsail.OperationTypeUpdateRelationalDatabase, ResNameDatabase, relationalDatabaseName) + diagError := expandOperations(ctx, conn, output.Operations, types.OperationTypeUpdateRelationalDatabase, ResNameDatabase, relationalDatabaseName) if diagError != nil { return diagError @@ -267,13 +268,13 @@ func resourceDatabaseCreate(ctx context.Context, d *schema.ResourceData, meta in } func resourceDatabaseRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() // Some Operations can complete before the Database enters the Available state. Added a waiter to make sure the Database is available before continuing. // This is to support importing a resource that is not in a ready state. database, err := waitDatabaseModified(ctx, conn, aws.String(d.Id())) - if !d.IsNewResource() && tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { + if !d.IsNewResource() && errs.IsA[*types.NotFoundException](err) { log.Printf("[WARN] Lightsail Relational Database (%s) not found, removing from state", d.Id()) d.SetId("") return nil @@ -314,7 +315,7 @@ func resourceDatabaseRead(ctx context.Context, d *schema.ResourceData, meta inte } func resourceDatabaseUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() if d.HasChangesExcept("apply_immediately", "final_snapshot_name", "skip_final_snapshot", "tags", "tags_all") { input := &lightsail.UpdateRelationalDatabaseInput{ @@ -350,13 +351,13 @@ func resourceDatabaseUpdate(ctx context.Context, d *schema.ResourceData, meta in input.PubliclyAccessible = aws.Bool(d.Get("publicly_accessible").(bool)) } - output, err := conn.UpdateRelationalDatabaseWithContext(ctx, input) + output, err := conn.UpdateRelationalDatabase(ctx, input) if err != nil { return diag.Errorf("updating Lightsail Relational Database (%s): %s", d.Id(), err) } - diagError := expandOperations(ctx, conn, output.Operations, lightsail.OperationTypeUpdateRelationalDatabase, ResNameDatabase, d.Id()) + diagError := expandOperations(ctx, conn, output.Operations, types.OperationTypeUpdateRelationalDatabase, ResNameDatabase, d.Id()) if diagError != nil { return diagError @@ -384,7 +385,7 @@ func resourceDatabaseUpdate(ctx context.Context, d *schema.ResourceData, meta in } func resourceDatabaseDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() // Some Operations can complete before the Database enters the Available state. Added a waiter to make sure the Database is available before continuing. if _, err := waitDatabaseModified(ctx, conn, aws.String(d.Id())); err != nil { @@ -406,13 +407,13 @@ func resourceDatabaseDelete(ctx context.Context, d *schema.ResourceData, meta in } } - output, err := conn.DeleteRelationalDatabaseWithContext(ctx, input) + output, err := conn.DeleteRelationalDatabase(ctx, input) if err != nil { return diag.Errorf("deleting Lightsail Relational Database (%s): %s", d.Id(), err) } - diagError := expandOperations(ctx, conn, output.Operations, lightsail.OperationTypeDeleteRelationalDatabase, ResNameDatabase, d.Id()) + diagError := expandOperations(ctx, conn, output.Operations, types.OperationTypeDeleteRelationalDatabase, ResNameDatabase, d.Id()) if diagError != nil { return diagError From b4907dbbf7081a6d02974e03e526fe26f190fe90 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:40:35 -0400 Subject: [PATCH 16/81] lightsail: Amend database_test, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/database_test.go | 137 +++++++++----------- 1 file changed, 63 insertions(+), 74 deletions(-) diff --git a/internal/service/lightsail/database_test.go b/internal/service/lightsail/database_test.go index 95ba94906b84..86c99b0b26e5 100644 --- a/internal/service/lightsail/database_test.go +++ b/internal/service/lightsail/database_test.go @@ -9,39 +9,39 @@ import ( "testing" "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" - "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/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/types" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "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/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" tflightsail "github.com/hashicorp/terraform-provider-aws/internal/service/lightsail" "github.com/hashicorp/terraform-provider-aws/names" ) func TestAccLightsailDatabase_basic(t *testing.T) { ctx := acctest.Context(t) - var db lightsail.RelationalDatabase resourceName := "aws_lightsail_database.test" rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccDatabaseConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDatabaseExists(ctx, resourceName, &db), + testAccCheckDatabaseExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "relational_database_name", rName), resource.TestCheckResourceAttr(resourceName, "blueprint_id", "mysql_8_0"), resource.TestCheckResourceAttr(resourceName, "bundle_id", "micro_1_0"), @@ -77,7 +77,6 @@ func TestAccLightsailDatabase_basic(t *testing.T) { func TestAccLightsailDatabase_relationalDatabaseName(t *testing.T) { ctx := acctest.Context(t) - var db lightsail.RelationalDatabase resourceName := "aws_lightsail_database.test" rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) rNameTooShort := "s" @@ -89,10 +88,10 @@ func TestAccLightsailDatabase_relationalDatabaseName(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ @@ -119,7 +118,7 @@ func TestAccLightsailDatabase_relationalDatabaseName(t *testing.T) { { Config: testAccDatabaseConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDatabaseExists(ctx, resourceName, &db), + testAccCheckDatabaseExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "relational_database_name", rName), ), }, @@ -140,7 +139,6 @@ func TestAccLightsailDatabase_relationalDatabaseName(t *testing.T) { func TestAccLightsailDatabase_masterDatabaseName(t *testing.T) { ctx := acctest.Context(t) - var db lightsail.RelationalDatabase rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_database.test" dbName := "randomdatabasename" @@ -153,10 +151,10 @@ func TestAccLightsailDatabase_masterDatabaseName(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ @@ -179,7 +177,7 @@ func TestAccLightsailDatabase_masterDatabaseName(t *testing.T) { { Config: testAccDatabaseConfig_masterDatabaseName(rName, dbName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDatabaseExists(ctx, resourceName, &db), + testAccCheckDatabaseExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "master_database_name", dbName), ), }, @@ -197,7 +195,7 @@ func TestAccLightsailDatabase_masterDatabaseName(t *testing.T) { { Config: testAccDatabaseConfig_masterDatabaseName(rName, dbNameContainsUnderscore), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDatabaseExists(ctx, resourceName, &db), + testAccCheckDatabaseExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "master_database_name", dbNameContainsUnderscore), ), }, @@ -207,7 +205,6 @@ func TestAccLightsailDatabase_masterDatabaseName(t *testing.T) { func TestAccLightsailDatabase_masterUsername(t *testing.T) { ctx := acctest.Context(t) - var db lightsail.RelationalDatabase rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_database.test" username := "username1" @@ -221,10 +218,10 @@ func TestAccLightsailDatabase_masterUsername(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ @@ -251,7 +248,7 @@ func TestAccLightsailDatabase_masterUsername(t *testing.T) { { Config: testAccDatabaseConfig_masterUsername(rName, username), Check: resource.ComposeTestCheckFunc( - testAccCheckDatabaseExists(ctx, resourceName, &db), + testAccCheckDatabaseExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "master_username", username), ), }, @@ -269,7 +266,7 @@ func TestAccLightsailDatabase_masterUsername(t *testing.T) { { Config: testAccDatabaseConfig_masterUsername(rName, usernameContainsUndercore), Check: resource.ComposeTestCheckFunc( - testAccCheckDatabaseExists(ctx, resourceName, &db), + testAccCheckDatabaseExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "master_username", usernameContainsUndercore), ), }, @@ -291,10 +288,10 @@ func TestAccLightsailDatabase_masterPassword(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ @@ -328,7 +325,6 @@ func TestAccLightsailDatabase_masterPassword(t *testing.T) { func TestAccLightsailDatabase_preferredBackupWindow(t *testing.T) { ctx := acctest.Context(t) - var db lightsail.RelationalDatabase rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_database.test" backupWindowInvalidHour := "25:30-10:00" @@ -337,10 +333,10 @@ func TestAccLightsailDatabase_preferredBackupWindow(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ @@ -355,7 +351,7 @@ func TestAccLightsailDatabase_preferredBackupWindow(t *testing.T) { { Config: testAccDatabaseConfig_preferredBackupWindow(rName, "09:30-10:00"), Check: resource.ComposeTestCheckFunc( - testAccCheckDatabaseExists(ctx, resourceName, &db), + testAccCheckDatabaseExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "preferred_backup_window", "09:30-10:00"), ), }, @@ -373,7 +369,7 @@ func TestAccLightsailDatabase_preferredBackupWindow(t *testing.T) { { Config: testAccDatabaseConfig_preferredBackupWindow(rName, "09:45-10:15"), Check: resource.ComposeTestCheckFunc( - testAccCheckDatabaseExists(ctx, resourceName, &db), + testAccCheckDatabaseExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "preferred_backup_window", "09:45-10:15"), ), }, @@ -383,7 +379,6 @@ func TestAccLightsailDatabase_preferredBackupWindow(t *testing.T) { func TestAccLightsailDatabase_preferredMaintenanceWindow(t *testing.T) { ctx := acctest.Context(t) - var db lightsail.RelationalDatabase rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_database.test" maintenanceWindowInvalidDay := "tuesday:04:30-tue:05:00" @@ -393,10 +388,10 @@ func TestAccLightsailDatabase_preferredMaintenanceWindow(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ @@ -415,7 +410,7 @@ func TestAccLightsailDatabase_preferredMaintenanceWindow(t *testing.T) { { Config: testAccDatabaseConfig_preferredMaintenanceWindow(rName, "tue:04:30-tue:05:00"), Check: resource.ComposeTestCheckFunc( - testAccCheckDatabaseExists(ctx, resourceName, &db), + testAccCheckDatabaseExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "preferred_maintenance_window", "tue:04:30-tue:05:00"), ), }, @@ -433,7 +428,7 @@ func TestAccLightsailDatabase_preferredMaintenanceWindow(t *testing.T) { { Config: testAccDatabaseConfig_preferredMaintenanceWindow(rName, "wed:06:00-wed:07:30"), Check: resource.ComposeTestCheckFunc( - testAccCheckDatabaseExists(ctx, resourceName, &db), + testAccCheckDatabaseExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "preferred_maintenance_window", "wed:06:00-wed:07:30"), ), }, @@ -443,24 +438,23 @@ func TestAccLightsailDatabase_preferredMaintenanceWindow(t *testing.T) { func TestAccLightsailDatabase_publiclyAccessible(t *testing.T) { ctx := acctest.Context(t) - var db lightsail.RelationalDatabase rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_database.test" resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccDatabaseConfig_publiclyAccessible(rName, true), Check: resource.ComposeTestCheckFunc( - testAccCheckDatabaseExists(ctx, resourceName, &db), + testAccCheckDatabaseExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "publicly_accessible", "true"), ), }, @@ -478,7 +472,7 @@ func TestAccLightsailDatabase_publiclyAccessible(t *testing.T) { { Config: testAccDatabaseConfig_publiclyAccessible(rName, false), Check: resource.ComposeTestCheckFunc( - testAccCheckDatabaseExists(ctx, resourceName, &db), + testAccCheckDatabaseExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "publicly_accessible", "false"), ), }, @@ -488,24 +482,23 @@ func TestAccLightsailDatabase_publiclyAccessible(t *testing.T) { func TestAccLightsailDatabase_backupRetentionEnabled(t *testing.T) { ctx := acctest.Context(t) - var db lightsail.RelationalDatabase rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_database.test" resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccDatabaseConfig_backupRetentionEnabled(rName, true), Check: resource.ComposeTestCheckFunc( - testAccCheckDatabaseExists(ctx, resourceName, &db), + testAccCheckDatabaseExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "backup_retention_enabled", "true"), ), }, @@ -523,7 +516,7 @@ func TestAccLightsailDatabase_backupRetentionEnabled(t *testing.T) { { Config: testAccDatabaseConfig_backupRetentionEnabled(rName, false), Check: resource.ComposeTestCheckFunc( - testAccCheckDatabaseExists(ctx, resourceName, &db), + testAccCheckDatabaseExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "backup_retention_enabled", "false"), ), }, @@ -533,7 +526,6 @@ func TestAccLightsailDatabase_backupRetentionEnabled(t *testing.T) { func TestAccLightsailDatabase_finalSnapshotName(t *testing.T) { ctx := acctest.Context(t) - var db lightsail.RelationalDatabase rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_database.test" sName := fmt.Sprintf("%s-snapshot", rName) @@ -545,10 +537,10 @@ func TestAccLightsailDatabase_finalSnapshotName(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseSnapshotDestroy(ctx), Steps: []resource.TestStep{ @@ -571,7 +563,7 @@ func TestAccLightsailDatabase_finalSnapshotName(t *testing.T) { { Config: testAccDatabaseConfig_finalSnapshotName(rName, sName), Check: resource.ComposeTestCheckFunc( - testAccCheckDatabaseExists(ctx, resourceName, &db), + testAccCheckDatabaseExists(ctx, resourceName), ), }, { @@ -591,24 +583,23 @@ func TestAccLightsailDatabase_finalSnapshotName(t *testing.T) { func TestAccLightsailDatabase_tags(t *testing.T) { ctx := acctest.Context(t) - var db1, db2, db3 lightsail.RelationalDatabase rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_database.test" resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccDatabaseConfig_tags1(rName, "key1", "value1"), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDatabaseExists(ctx, resourceName, &db1), + testAccCheckDatabaseExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "tags.%", "1"), resource.TestCheckResourceAttr(resourceName, "tags.key1", "value1"), ), @@ -627,7 +618,7 @@ func TestAccLightsailDatabase_tags(t *testing.T) { { Config: testAccDatabaseConfig_tags2(rName, "key1", "value1updated", "key2", "value2"), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDatabaseExists(ctx, resourceName, &db2), + testAccCheckDatabaseExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "tags.%", "2"), resource.TestCheckResourceAttr(resourceName, "tags.key1", "value1updated"), resource.TestCheckResourceAttr(resourceName, "tags.key2", "value2"), @@ -636,7 +627,7 @@ func TestAccLightsailDatabase_tags(t *testing.T) { { Config: testAccDatabaseConfig_tags1(rName, "key2", "value2"), Check: resource.ComposeTestCheckFunc( - testAccCheckDatabaseExists(ctx, resourceName, &db3), + testAccCheckDatabaseExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "tags.%", "1"), resource.TestCheckResourceAttr(resourceName, "tags.key2", "value2"), ), @@ -647,24 +638,23 @@ func TestAccLightsailDatabase_tags(t *testing.T) { func TestAccLightsailDatabase_ha(t *testing.T) { ctx := acctest.Context(t) - var db lightsail.RelationalDatabase resourceName := "aws_lightsail_database.test" rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccDatabaseConfig_ha(rName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDatabaseExists(ctx, resourceName, &db), + testAccCheckDatabaseExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "relational_database_name", rName), resource.TestCheckResourceAttr(resourceName, "bundle_id", "micro_ha_1_0"), resource.TestCheckResourceAttrSet(resourceName, "availability_zone"), @@ -687,15 +677,14 @@ func TestAccLightsailDatabase_ha(t *testing.T) { func TestAccLightsailDatabase_disappears(t *testing.T) { ctx := acctest.Context(t) - var db lightsail.RelationalDatabase rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_database.test" testDestroy := func(*terraform.State) error { // reach out and DELETE the Database - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() - _, err := conn.DeleteRelationalDatabaseWithContext(ctx, &lightsail.DeleteRelationalDatabaseInput{ + _, err := conn.DeleteRelationalDatabase(ctx, &lightsail.DeleteRelationalDatabaseInput{ RelationalDatabaseName: aws.String(rName), SkipFinalSnapshot: aws.Bool(true), }) @@ -713,17 +702,17 @@ func TestAccLightsailDatabase_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccDatabaseConfig_basic(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckDatabaseExists(ctx, resourceName, &db), + testAccCheckDatabaseExists(ctx, resourceName), testDestroy), ExpectNonEmptyPlan: true, }, @@ -731,7 +720,7 @@ func TestAccLightsailDatabase_disappears(t *testing.T) { }) } -func testAccCheckDatabaseExists(ctx context.Context, n string, res *lightsail.RelationalDatabase) resource.TestCheckFunc { +func testAccCheckDatabaseExists(ctx context.Context, n string) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] if !ok { @@ -742,13 +731,13 @@ func testAccCheckDatabaseExists(ctx context.Context, n string, res *lightsail.Re return errors.New("No Lightsail Database ID is set") } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() params := lightsail.GetRelationalDatabaseInput{ RelationalDatabaseName: aws.String(rs.Primary.ID), } - resp, err := conn.GetRelationalDatabaseWithContext(ctx, ¶ms) + resp, err := conn.GetRelationalDatabase(ctx, ¶ms) if err != nil { return err @@ -757,14 +746,14 @@ func testAccCheckDatabaseExists(ctx context.Context, n string, res *lightsail.Re if resp == nil || resp.RelationalDatabase == nil { return fmt.Errorf("Database (%s) not found", rs.Primary.ID) } - *res = *resp.RelationalDatabase + return nil } } func testAccCheckDatabaseDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() for _, rs := range s.RootModule().Resources { if rs.Type != "aws_lightsail_database" { @@ -775,9 +764,9 @@ func testAccCheckDatabaseDestroy(ctx context.Context) resource.TestCheckFunc { RelationalDatabaseName: aws.String(rs.Primary.ID), } - respDatabase, err := conn.GetRelationalDatabaseWithContext(ctx, ¶ms) + respDatabase, err := conn.GetRelationalDatabase(ctx, ¶ms) - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { + if errs.IsA[*types.NotFoundException](err) { continue } @@ -796,7 +785,7 @@ func testAccCheckDatabaseDestroy(ctx context.Context) resource.TestCheckFunc { func testAccCheckDatabaseSnapshotDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() for _, rs := range s.RootModule().Resources { if rs.Type != "aws_lightsail_database" { @@ -807,7 +796,7 @@ func testAccCheckDatabaseSnapshotDestroy(ctx context.Context) resource.TestCheck snapshot_identifier := rs.Primary.Attributes["final_snapshot_name"] log.Printf("[INFO] Deleting the Snapshot %s", snapshot_identifier) - _, err := conn.DeleteRelationalDatabaseSnapshotWithContext(ctx, &lightsail.DeleteRelationalDatabaseSnapshotInput{ + _, err := conn.DeleteRelationalDatabaseSnapshot(ctx, &lightsail.DeleteRelationalDatabaseSnapshotInput{ RelationalDatabaseSnapshotName: aws.String(snapshot_identifier), }) @@ -819,9 +808,9 @@ func testAccCheckDatabaseSnapshotDestroy(ctx context.Context) resource.TestCheck RelationalDatabaseName: aws.String(rs.Primary.ID), } - respDatabase, err := conn.GetRelationalDatabaseWithContext(ctx, ¶ms) + respDatabase, err := conn.GetRelationalDatabase(ctx, ¶ms) - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { + if errs.IsA[*types.NotFoundException](err) { continue } From 6c761b842fc3c4019b83fd300c766c0f7b09d0a3 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:40:44 -0400 Subject: [PATCH 17/81] lightsail: Amend disk, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/disk.go | 52 +++++++++++++++++++++++------- 1 file changed, 40 insertions(+), 12 deletions(-) diff --git a/internal/service/lightsail/disk.go b/internal/service/lightsail/disk.go index 2d494669db96..0aa64e22b5be 100644 --- a/internal/service/lightsail/disk.go +++ b/internal/service/lightsail/disk.go @@ -5,13 +5,16 @@ import ( "regexp" "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/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/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/internal/verify" @@ -72,23 +75,23 @@ func ResourceDisk() *schema.Resource { } func resourceDiskCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() id := d.Get("name").(string) in := lightsail.CreateDiskInput{ AvailabilityZone: aws.String(d.Get("availability_zone").(string)), - SizeInGb: aws.Int64(int64(d.Get("size_in_gb").(int))), + SizeInGb: aws.Int32(int32(d.Get("size_in_gb").(int))), DiskName: aws.String(id), Tags: GetTagsIn(ctx), } - out, err := conn.CreateDiskWithContext(ctx, &in) + out, err := conn.CreateDisk(ctx, &in) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeCreateDisk, ResDisk, id, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeCreateDisk), ResDisk, id, err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeCreateDisk, ResDisk, id) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeCreateDisk, ResDisk, id) if diag != nil { return diag @@ -100,7 +103,7 @@ func resourceDiskCreate(ctx context.Context, d *schema.ResourceData, meta interf } func resourceDiskRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() out, err := FindDiskById(ctx, conn, d.Id()) @@ -132,17 +135,17 @@ func resourceDiskUpdate(ctx context.Context, d *schema.ResourceData, meta interf } func resourceDiskDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() - out, err := conn.DeleteDiskWithContext(ctx, &lightsail.DeleteDiskInput{ + out, err := conn.DeleteDisk(ctx, &lightsail.DeleteDiskInput{ DiskName: aws.String(d.Id()), }) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeDeleteDisk, ResDisk, d.Get("name").(string), err) + return create.DiagError(names.Lightsail, string(types.OperationTypeDeleteDisk), ResDisk, d.Get("name").(string), err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeDeleteDisk, ResDisk, d.Id()) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeDeleteDisk, ResDisk, d.Id()) if diag != nil { return diag @@ -150,3 +153,28 @@ func resourceDiskDelete(ctx context.Context, d *schema.ResourceData, meta interf return nil } + +func FindDiskById(ctx context.Context, conn *lightsail.Client, id string) (*types.Disk, error) { + in := &lightsail.GetDiskInput{ + DiskName: aws.String(id), + } + + out, err := conn.GetDisk(ctx, in) + + if errs.IsA[*types.NotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: in, + } + } + + if err != nil { + return nil, err + } + + if out == nil || out.Disk == nil { + return nil, tfresource.NewEmptyResultError(in) + } + + return out.Disk, nil +} From d064fb2bced7a95bb1b710b909e9f4a3753ae5d5 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:40:55 -0400 Subject: [PATCH 18/81] lightsail: Amend disk_attachment, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/disk_attachment.go | 81 ++++++++++++++----- 1 file changed, 60 insertions(+), 21 deletions(-) diff --git a/internal/service/lightsail/disk_attachment.go b/internal/service/lightsail/disk_attachment.go index a1be902872bd..e1fc5a07b6b3 100644 --- a/internal/service/lightsail/disk_attachment.go +++ b/internal/service/lightsail/disk_attachment.go @@ -5,12 +5,15 @@ import ( "errors" "strings" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/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-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -47,7 +50,7 @@ func ResourceDiskAttachment() *schema.Resource { } func resourceDiskAttachmentCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() in := lightsail.AttachDiskInput{ DiskName: aws.String(d.Get("disk_name").(string)), @@ -55,13 +58,13 @@ func resourceDiskAttachmentCreate(ctx context.Context, d *schema.ResourceData, m InstanceName: aws.String(d.Get("instance_name").(string)), } - out, err := conn.AttachDiskWithContext(ctx, &in) + out, err := conn.AttachDisk(ctx, &in) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeAttachDisk, ResDiskAttachment, d.Get("disk_name").(string), err) + return create.DiagError(names.Lightsail, string(types.OperationTypeAttachDisk), ResDiskAttachment, d.Get("disk_name").(string), err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeAttachDisk, ResDiskAttachment, d.Get("disk_name").(string)) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeAttachDisk, ResDiskAttachment, d.Get("disk_name").(string)) if diag != nil { return diag @@ -79,7 +82,7 @@ func resourceDiskAttachmentCreate(ctx context.Context, d *schema.ResourceData, m } func resourceDiskAttachmentRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() out, err := FindDiskAttachmentById(ctx, conn, d.Id()) @@ -101,65 +104,65 @@ func resourceDiskAttachmentRead(ctx context.Context, d *schema.ResourceData, met } func resourceDiskAttachmentDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() id_parts := strings.SplitN(d.Id(), ",", -1) dName := id_parts[0] iName := id_parts[1] // A Disk can only be detached from a stopped instance - iStateOut, err := waitInstanceStateWithContext(ctx, conn, &iName) + iStateOut, err := waitInstanceState(ctx, conn, &iName) if err != nil { return create.DiagError(names.Lightsail, create.ErrActionReading, ResInstance, iName, errors.New("Error waiting for Instance to enter running or stopped state")) } - if aws.StringValue(iStateOut.State.Name) == "running" { - stopOut, err := conn.StopInstanceWithContext(ctx, &lightsail.StopInstanceInput{ + if aws.ToString(iStateOut.State.Name) == "running" { + stopOut, err := conn.StopInstance(ctx, &lightsail.StopInstanceInput{ InstanceName: aws.String(iName), }) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeStopInstance, ResInstance, iName, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeStopInstance), ResInstance, iName, err) } - diag := expandOperations(ctx, conn, stopOut.Operations, lightsail.OperationTypeStopInstance, ResInstance, iName) + diag := expandOperations(ctx, conn, stopOut.Operations, types.OperationTypeStopInstance, ResInstance, iName) if diag != nil { return diag } } - out, err := conn.DetachDiskWithContext(ctx, &lightsail.DetachDiskInput{ + out, err := conn.DetachDisk(ctx, &lightsail.DetachDiskInput{ DiskName: aws.String(dName), }) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeDetachDisk, ResDiskAttachment, d.Get("disk_name").(string), err) + return create.DiagError(names.Lightsail, string(types.OperationTypeDetachDisk), ResDiskAttachment, d.Get("disk_name").(string), err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeDetachDisk, ResDiskAttachment, d.Get("disk_name").(string)) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeDetachDisk, ResDiskAttachment, d.Get("disk_name").(string)) if diag != nil { return diag } - iStateOut, err = waitInstanceStateWithContext(ctx, conn, &iName) + iStateOut, err = waitInstanceState(ctx, conn, &iName) if err != nil { return create.DiagError(names.Lightsail, create.ErrActionReading, ResInstance, iName, errors.New("Error waiting for Instance to enter running or stopped state")) } - if aws.StringValue(iStateOut.State.Name) != "running" { - startOut, err := conn.StartInstanceWithContext(ctx, &lightsail.StartInstanceInput{ + if aws.ToString(iStateOut.State.Name) != "running" { + startOut, err := conn.StartInstance(ctx, &lightsail.StartInstanceInput{ InstanceName: aws.String(iName), }) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeStartInstance, ResInstance, iName, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeStartInstance), ResInstance, iName, err) } - diag := expandOperations(ctx, conn, startOut.Operations, lightsail.OperationTypeStartInstance, ResInstance, iName) + diag := expandOperations(ctx, conn, startOut.Operations, types.OperationTypeStartInstance, ResInstance, iName) if diag != nil { return diag @@ -168,3 +171,39 @@ func resourceDiskAttachmentDelete(ctx context.Context, d *schema.ResourceData, m return nil } + +func FindDiskAttachmentById(ctx context.Context, conn *lightsail.Client, id string) (*types.Disk, error) { + id_parts := strings.SplitN(id, ",", -1) + + if len(id_parts) != 2 { + return nil, errors.New("invalid Disk Attachment id") + } + + dName := id_parts[0] + iName := id_parts[1] + + in := &lightsail.GetDiskInput{ + DiskName: aws.String(dName), + } + + out, err := conn.GetDisk(ctx, in) + + if errs.IsA[*types.NotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: in, + } + } + + if err != nil { + return nil, err + } + + disk := out.Disk + + if disk == nil || !aws.ToBool(disk.IsAttached) || aws.ToString(disk.Name) != dName || aws.ToString(disk.AttachedTo) != iName { + return nil, tfresource.NewEmptyResultError(in) + } + + return out.Disk, nil +} From d743d56d57b534c3a976b0f9ca1eab146717cb05 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:41:11 -0400 Subject: [PATCH 19/81] lightsail: Amend disk_attachment_test, migrate resource to aws-go-sdk-v2 --- .../service/lightsail/disk_attachment_test.go | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/internal/service/lightsail/disk_attachment_test.go b/internal/service/lightsail/disk_attachment_test.go index 295771330a78..b4d39ab8ee0c 100644 --- a/internal/service/lightsail/disk_attachment_test.go +++ b/internal/service/lightsail/disk_attachment_test.go @@ -7,7 +7,7 @@ import ( "regexp" "testing" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -21,7 +21,6 @@ import ( func TestAccLightsailDiskAttachment_basic(t *testing.T) { ctx := acctest.Context(t) - var disk lightsail.Disk resourceName := "aws_lightsail_disk_attachment.test" dName := sdkacctest.RandomWithPrefix("tf-acc-test") liName := sdkacctest.RandomWithPrefix("tf-acc-test") @@ -31,17 +30,17 @@ func TestAccLightsailDiskAttachment_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDiskAttachmentDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccDiskAttachmentConfig_basic(dName, liName, diskPath), Check: resource.ComposeTestCheckFunc( - testAccCheckDiskAttachmentExists(ctx, resourceName, disk), + testAccCheckDiskAttachmentExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "disk_name", dName), resource.TestCheckResourceAttr(resourceName, "disk_path", diskPath), resource.TestCheckResourceAttr(resourceName, "instance_name", liName), @@ -57,7 +56,6 @@ func TestAccLightsailDiskAttachment_basic(t *testing.T) { func TestAccLightsailDiskAttachment_disappears(t *testing.T) { ctx := acctest.Context(t) - var disk lightsail.Disk resourceName := "aws_lightsail_disk_attachment.test" dName := sdkacctest.RandomWithPrefix("tf-acc-test") liName := sdkacctest.RandomWithPrefix("tf-acc-test") @@ -66,17 +64,17 @@ func TestAccLightsailDiskAttachment_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDiskAttachmentDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccDiskAttachmentConfig_basic(dName, liName, diskPath), Check: resource.ComposeTestCheckFunc( - testAccCheckDiskAttachmentExists(ctx, resourceName, disk), + testAccCheckDiskAttachmentExists(ctx, resourceName), acctest.CheckResourceDisappears(ctx, acctest.Provider, tflightsail.ResourceDiskAttachment(), resourceName), ), ExpectNonEmptyPlan: true, @@ -85,7 +83,7 @@ func TestAccLightsailDiskAttachment_disappears(t *testing.T) { }) } -func testAccCheckDiskAttachmentExists(ctx context.Context, n string, disk lightsail.Disk) resource.TestCheckFunc { +func testAccCheckDiskAttachmentExists(ctx context.Context, n string) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] if !ok { @@ -96,7 +94,7 @@ func testAccCheckDiskAttachmentExists(ctx context.Context, n string, disk lights return errors.New("No LightsailDiskAttachment ID is set") } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() out, err := tflightsail.FindDiskAttachmentById(ctx, conn, rs.Primary.ID) @@ -108,8 +106,6 @@ func testAccCheckDiskAttachmentExists(ctx context.Context, n string, disk lights return fmt.Errorf("Disk Attachment %q does not exist", rs.Primary.ID) } - disk = *out - return nil } } @@ -121,7 +117,7 @@ func testAccCheckDiskAttachmentDestroy(ctx context.Context) resource.TestCheckFu continue } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() _, err := tflightsail.FindDiskAttachmentById(ctx, conn, rs.Primary.ID) From c367b11cc68a5fc74fa30e09fc32d536094dd3bf Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:41:22 -0400 Subject: [PATCH 20/81] lightsail: Amend disk_test, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/disk_test.go | 35 +++++++++++-------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/internal/service/lightsail/disk_test.go b/internal/service/lightsail/disk_test.go index 6541abac9b3c..0fadc2d393ee 100644 --- a/internal/service/lightsail/disk_test.go +++ b/internal/service/lightsail/disk_test.go @@ -7,7 +7,7 @@ import ( "regexp" "testing" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -21,24 +21,23 @@ import ( func TestAccLightsailDisk_basic(t *testing.T) { ctx := acctest.Context(t) - var disk lightsail.Disk rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_disk.test" resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDiskDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccDiskConfig_basic(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckDiskExists(ctx, resourceName, &disk), + testAccCheckDiskExists(ctx, resourceName), acctest.MatchResourceAttrRegionalARN(resourceName, "arn", "lightsail", regexp.MustCompile(`Disk/.+`)), resource.TestCheckResourceAttrSet(resourceName, "availability_zone"), resource.TestCheckResourceAttrSet(resourceName, "created_at"), @@ -58,24 +57,23 @@ func TestAccLightsailDisk_basic(t *testing.T) { func TestAccLightsailDisk_Tags(t *testing.T) { ctx := acctest.Context(t) - var disk1, disk2, disk3 lightsail.Disk rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_disk.test" resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDiskDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccDiskConfig_tags1(rName, "key1", "value1"), Check: resource.ComposeTestCheckFunc( - testAccCheckDiskExists(ctx, resourceName, &disk1), + testAccCheckDiskExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "tags.%", "1"), resource.TestCheckResourceAttr(resourceName, "tags.key1", "value1"), ), @@ -88,7 +86,7 @@ func TestAccLightsailDisk_Tags(t *testing.T) { { Config: testAccDiskConfig_tags2(rName, "key1", "value1updated", "key2", "value2"), Check: resource.ComposeTestCheckFunc( - testAccCheckDiskExists(ctx, resourceName, &disk2), + testAccCheckDiskExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "tags.%", "2"), resource.TestCheckResourceAttr(resourceName, "tags.key1", "value1updated"), resource.TestCheckResourceAttr(resourceName, "tags.key2", "value2"), @@ -97,7 +95,7 @@ func TestAccLightsailDisk_Tags(t *testing.T) { { Config: testAccDiskConfig_tags1(rName, "key2", "value2"), Check: resource.ComposeTestCheckFunc( - testAccCheckDiskExists(ctx, resourceName, &disk3), + testAccCheckDiskExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "tags.%", "1"), resource.TestCheckResourceAttr(resourceName, "tags.key2", "value2"), ), @@ -106,7 +104,7 @@ func TestAccLightsailDisk_Tags(t *testing.T) { }) } -func testAccCheckDiskExists(ctx context.Context, n string, disk *lightsail.Disk) resource.TestCheckFunc { +func testAccCheckDiskExists(ctx context.Context, n string) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] if !ok { @@ -117,7 +115,7 @@ func testAccCheckDiskExists(ctx context.Context, n string, disk *lightsail.Disk) return errors.New("No LightsailDisk ID is set") } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() resp, err := tflightsail.FindDiskById(ctx, conn, rs.Primary.ID) @@ -129,32 +127,29 @@ func testAccCheckDiskExists(ctx context.Context, n string, disk *lightsail.Disk) return fmt.Errorf("Disk %q does not exist", rs.Primary.ID) } - *disk = *resp - return nil } } func TestAccLightsailDisk_disappears(t *testing.T) { ctx := acctest.Context(t) - var disk lightsail.Disk rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_disk.test" resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDiskDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccDiskConfig_basic(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckDiskExists(ctx, resourceName, &disk), + testAccCheckDiskExists(ctx, resourceName), acctest.CheckResourceDisappears(ctx, acctest.Provider, tflightsail.ResourceDisk(), resourceName), ), ExpectNonEmptyPlan: true, @@ -170,7 +165,7 @@ func testAccCheckDiskDestroy(ctx context.Context) resource.TestCheckFunc { continue } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() _, err := tflightsail.FindDiskById(ctx, conn, rs.Primary.ID) From edf441f5189721fcb52b62005a168e29c17b2d3e Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:41:33 -0400 Subject: [PATCH 21/81] lightsail: Amend distribution, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/distribution.go | 264 +++++++++++++-------- 1 file changed, 167 insertions(+), 97 deletions(-) diff --git a/internal/service/lightsail/distribution.go b/internal/service/lightsail/distribution.go index f6ff96235728..8bb6f6f09aae 100644 --- a/internal/service/lightsail/distribution.go +++ b/internal/service/lightsail/distribution.go @@ -7,15 +7,16 @@ import ( "regexp" "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" - "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/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/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/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/internal/verify" @@ -70,7 +71,7 @@ func ResourceDistribution() *schema.Resource { Type: schema.TypeString, Required: true, Description: "The cache behavior for the specified path.", - ValidateFunc: validation.StringInSlice(lightsail.BehaviorEnum_Values(), false), + ValidateFunc: validation.StringInSlice(flattenBehaviorEnumValues(types.BehaviorEnum("").Values()), false), }, "path": { Type: schema.TypeString, @@ -121,7 +122,7 @@ func ResourceDistribution() *schema.Resource { Type: schema.TypeString, Optional: true, Description: "Specifies which cookies to forward to the distribution's origin for a cache behavior: all, none, or allow-list to forward only the cookies specified in the cookiesAllowList parameter.", - ValidateFunc: validation.StringInSlice(lightsail.ForwardValues_Values(), false), + ValidateFunc: validation.StringInSlice(flattenForwardValuesValues(types.ForwardValues("").Values()), false), }, }, }, @@ -139,14 +140,14 @@ func ResourceDistribution() *schema.Resource { Description: "The specific headers to forward to your distribution's origin.", Elem: &schema.Schema{ Type: schema.TypeString, - ValidateFunc: validation.StringInSlice(lightsail.HeaderEnum_Values(), false), + ValidateFunc: validation.StringInSlice(flattenHeaderEnumValues(types.HeaderEnum("").Values()), false), }, }, "option": { Type: schema.TypeString, Optional: true, Description: "The headers that you want your distribution to forward to your origin and base caching on.", - ValidateFunc: validation.StringInSlice([]string{"default", lightsail.ForwardValuesAllowList, lightsail.ForwardValuesAll}, false), + ValidateFunc: validation.StringInSlice([]string{"default", string(types.ForwardValuesAllowList), string(types.ForwardValuesAll)}, false), }, }, }, @@ -207,7 +208,7 @@ func ResourceDistribution() *schema.Resource { Type: schema.TypeString, Required: true, Description: "The cache behavior of the distribution.", - ValidateFunc: validation.StringInSlice(lightsail.BehaviorEnum_Values(), false), + ValidateFunc: validation.StringInSlice(flattenBehaviorEnumValues(types.BehaviorEnum("").Values()), false), }, }, }, @@ -221,7 +222,7 @@ func ResourceDistribution() *schema.Resource { Type: schema.TypeString, Optional: true, Description: "The IP address type of the distribution.", - ValidateFunc: validation.StringInSlice(lightsail.IpAddressType_Values(), false), + ValidateFunc: validation.StringInSlice(flattenIpAddressTypeValues(types.IpAddressType("").Values()), false), Default: "dualstack", }, "location": { @@ -234,7 +235,7 @@ func ResourceDistribution() *schema.Resource { Type: schema.TypeString, Required: true, Description: "The Availability Zone.", - ValidateFunc: validation.StringInSlice(lightsail.BehaviorEnum_Values(), false), + ValidateFunc: validation.StringInSlice(flattenBehaviorEnumValues(types.BehaviorEnum("").Values()), false), }, "region_name": { Type: schema.TypeString, @@ -272,7 +273,7 @@ func ResourceDistribution() *schema.Resource { "protocol_policy": { Type: schema.TypeString, Optional: true, - ValidateFunc: validation.StringInSlice(lightsail.OriginProtocolPolicyEnum_Values(), false), + ValidateFunc: validation.StringInSlice(flattenOriginProtocolPolicyEnumValues(types.OriginProtocolPolicyEnum("").Values()), false), Description: "The protocol that your Amazon Lightsail distribution uses when establishing a connection with your origin to pull content.", }, "region_name": { @@ -322,7 +323,7 @@ const ( ) func resourceDistributionCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() in := &lightsail.CreateDistributionInput{ BundleId: aws.String(d.Get("bundle_id").(string)), @@ -341,10 +342,10 @@ func resourceDistributionCreate(ctx context.Context, d *schema.ResourceData, met } if v, ok := d.GetOk("ip_address_type"); ok { - in.IpAddressType = aws.String(v.(string)) + in.IpAddressType = types.IpAddressType(v.(string)) } - out, err := conn.CreateDistributionWithContext(ctx, in) + out, err := conn.CreateDistribution(ctx, in) if err != nil { return create.DiagError(names.Lightsail, create.ErrActionCreating, ResNameDistribution, d.Get("name").(string), err) @@ -354,9 +355,9 @@ func resourceDistributionCreate(ctx context.Context, d *schema.ResourceData, met return create.DiagError(names.Lightsail, create.ErrActionCreating, ResNameDistribution, d.Get("name").(string), errors.New("empty output")) } - id := aws.StringValue(out.Distribution.Name) + id := aws.ToString(out.Distribution.Name) - diag := expandOperation(ctx, conn, out.Operation, lightsail.OperationTypeCreateDistribution, ResNameDistribution, id) + diag := expandOperation(ctx, conn, *out.Operation, types.OperationTypeCreateDistribution, ResNameDistribution, id) if diag != nil { return diag @@ -371,13 +372,13 @@ func resourceDistributionCreate(ctx context.Context, d *schema.ResourceData, met DistributionName: aws.String(id), IsEnabled: aws.Bool(isEnabled), } - updateOut, err := conn.UpdateDistributionWithContext(ctx, updateIn) + updateOut, err := conn.UpdateDistribution(ctx, updateIn) if err != nil { return create.DiagError(names.Lightsail, create.ErrActionUpdating, ResNameDistribution, d.Id(), err) } - diagUpdate := expandOperation(ctx, conn, updateOut.Operation, lightsail.OperationTypeUpdateDistribution, ResNameDistribution, d.Id()) + diagUpdate := expandOperation(ctx, conn, *updateOut.Operation, types.OperationTypeUpdateDistribution, ResNameDistribution, d.Id()) if diagUpdate != nil { return diagUpdate @@ -388,7 +389,7 @@ func resourceDistributionCreate(ctx context.Context, d *schema.ResourceData, met } func resourceDistributionRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() out, err := FindDistributionByID(ctx, conn, d.Id()) @@ -442,7 +443,7 @@ func resourceDistributionRead(ctx context.Context, d *schema.ResourceData, meta } func resourceDistributionUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() update := false bundleUpdate := false @@ -486,17 +487,17 @@ func resourceDistributionUpdate(ctx context.Context, d *schema.ResourceData, met } if d.HasChange("ip_address_type") { - out, err := conn.SetIpAddressTypeWithContext(ctx, &lightsail.SetIpAddressTypeInput{ + out, err := conn.SetIpAddressType(ctx, &lightsail.SetIpAddressTypeInput{ ResourceName: aws.String(d.Id()), - ResourceType: aws.String("Distribution"), - IpAddressType: aws.String(d.Get("ip_address_type").(string)), + ResourceType: types.ResourceTypeDistribution, + IpAddressType: types.IpAddressType(d.Get("ip_address_type").(string)), }) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeSetIpAddressType, ResNameDistribution, d.Id(), err) + return create.DiagError(names.Lightsail, string(types.OperationTypeSetIpAddressType), ResNameDistribution, d.Id(), err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeSetIpAddressType, ResNameDistribution, d.Id()) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeSetIpAddressType, ResNameDistribution, d.Id()) if diag != nil { return diag @@ -505,12 +506,12 @@ func resourceDistributionUpdate(ctx context.Context, d *schema.ResourceData, met if update { log.Printf("[DEBUG] Updating Lightsail Distribution (%s): %#v", d.Id(), in) - out, err := conn.UpdateDistributionWithContext(ctx, in) + out, err := conn.UpdateDistribution(ctx, in) if err != nil { return create.DiagError(names.Lightsail, create.ErrActionUpdating, ResNameDistribution, d.Id(), err) } - diag := expandOperation(ctx, conn, out.Operation, lightsail.OperationTypeUpdateDistribution, ResNameDistribution, d.Id()) + diag := expandOperation(ctx, conn, *out.Operation, types.OperationTypeUpdateDistribution, ResNameDistribution, d.Id()) if diag != nil { return diag @@ -519,12 +520,12 @@ func resourceDistributionUpdate(ctx context.Context, d *schema.ResourceData, met if bundleUpdate { log.Printf("[DEBUG] Updating Lightsail Distribution Bundle (%s): %#v", d.Id(), in) - out, err := conn.UpdateDistributionBundleWithContext(ctx, bundleIn) + out, err := conn.UpdateDistributionBundle(ctx, bundleIn) if err != nil { return create.DiagError(names.Lightsail, create.ErrActionUpdating, ResNameDistribution, d.Id(), err) } - diag := expandOperation(ctx, conn, out.Operation, lightsail.OperationTypeUpdateDistributionBundle, ResNameDistribution, d.Id()) + diag := expandOperation(ctx, conn, *out.Operation, types.OperationTypeUpdateDistributionBundle, ResNameDistribution, d.Id()) if diag != nil { return diag @@ -535,15 +536,15 @@ func resourceDistributionUpdate(ctx context.Context, d *schema.ResourceData, met } func resourceDistributionDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() log.Printf("[INFO] Deleting Lightsail Distribution %s", d.Id()) - out, err := conn.DeleteDistributionWithContext(ctx, &lightsail.DeleteDistributionInput{ + out, err := conn.DeleteDistribution(ctx, &lightsail.DeleteDistributionInput{ DistributionName: aws.String(d.Id()), }) - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) || tfawserr.ErrMessageContains(err, lightsail.ErrCodeInvalidInputException, "Requested resource not found") { + if errs.IsA[*types.NotFoundException](err) || errs.IsA[*types.InvalidInputException](err) { return nil } @@ -551,7 +552,7 @@ func resourceDistributionDelete(ctx context.Context, d *schema.ResourceData, met return create.DiagError(names.Lightsail, create.ErrActionDeleting, ResNameDistribution, d.Id(), err) } - diag := expandOperation(ctx, conn, out.Operation, lightsail.OperationTypeDeleteDistribution, ResNameDistribution, d.Id()) + diag := expandOperation(ctx, conn, *out.Operation, types.OperationTypeDeleteDistribution, ResNameDistribution, d.Id()) if diag != nil { return diag @@ -560,12 +561,12 @@ func resourceDistributionDelete(ctx context.Context, d *schema.ResourceData, met return nil } -func FindDistributionByID(ctx context.Context, conn *lightsail.Lightsail, id string) (*lightsail.LightsailDistribution, error) { +func FindDistributionByID(ctx context.Context, conn *lightsail.Client, id string) (*types.LightsailDistribution, error) { in := &lightsail.GetDistributionsInput{ DistributionName: aws.String(id), } - out, err := conn.GetDistributionsWithContext(ctx, in) - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) || tfawserr.ErrMessageContains(err, lightsail.ErrCodeInvalidInputException, "Requested resource not found") { + out, err := conn.GetDistributions(ctx, in) + if errs.IsA[*types.NotFoundException](err) || errs.IsA[*types.InvalidInputException](err) { return nil, &retry.NotFoundError{ LastError: err, LastRequest: in, @@ -580,10 +581,10 @@ func FindDistributionByID(ctx context.Context, conn *lightsail.Lightsail, id str return nil, tfresource.NewEmptyResultError(in) } - return out.Distributions[0], nil + return &out.Distributions[0], nil } -func flattenCookieObject(apiObject *lightsail.CookieObject) map[string]interface{} { +func flattenCookieObject(apiObject *types.CookieObject) map[string]interface{} { if apiObject == nil { return nil } @@ -594,14 +595,14 @@ func flattenCookieObject(apiObject *lightsail.CookieObject) map[string]interface m["cookies_allow_list"] = v } - if v := apiObject.Option; v != nil { - m["option"] = aws.StringValue(v) + if v := apiObject.Option; v != "" { + m["option"] = v } return m } -func flattenHeaderObject(apiObject *lightsail.HeaderObject) map[string]interface{} { +func flattenHeaderObject(apiObject *types.HeaderObject) map[string]interface{} { if apiObject == nil { return nil } @@ -612,14 +613,14 @@ func flattenHeaderObject(apiObject *lightsail.HeaderObject) map[string]interface m["headers_allow_list"] = v } - if v := apiObject.Option; v != nil { - m["option"] = aws.StringValue(v) + if v := apiObject.Option; v != "" { + m["option"] = v } return m } -func flattenQueryStringObject(apiObject *lightsail.QueryStringObject) map[string]interface{} { +func flattenQueryStringObject(apiObject *types.QueryStringObject) map[string]interface{} { if apiObject == nil { return nil } @@ -631,13 +632,13 @@ func flattenQueryStringObject(apiObject *lightsail.QueryStringObject) map[string } if v := apiObject.Option; v != nil { - m["option"] = aws.BoolValue(v) + m["option"] = aws.ToBool(v) } return m } -func flattenCacheSettings(apiObject *lightsail.CacheSettings) map[string]interface{} { +func flattenCacheSettings(apiObject *types.CacheSettings) map[string]interface{} { if apiObject == nil { return nil } @@ -645,15 +646,15 @@ func flattenCacheSettings(apiObject *lightsail.CacheSettings) map[string]interfa m := map[string]interface{}{} if v := apiObject.AllowedHTTPMethods; v != nil { - m["allowed_http_methods"] = aws.StringValue(v) + m["allowed_http_methods"] = aws.ToString(v) } if v := apiObject.CachedHTTPMethods; v != nil { - m["cached_http_methods"] = aws.StringValue(v) + m["cached_http_methods"] = aws.ToString(v) } if v := apiObject.DefaultTTL; v != nil { - m["default_ttl"] = int(aws.Int64Value(v)) + m["default_ttl"] = int(aws.ToInt64(v)) } if v := apiObject.ForwardedCookies; v != nil { @@ -669,35 +670,35 @@ func flattenCacheSettings(apiObject *lightsail.CacheSettings) map[string]interfa } if v := apiObject.MaximumTTL; v != nil { - m["maximum_ttl"] = int(aws.Int64Value(v)) + m["maximum_ttl"] = int(aws.ToInt64(v)) } if v := apiObject.MinimumTTL; v != nil { - m["minimum_ttl"] = int(aws.Int64Value(v)) + m["minimum_ttl"] = int(aws.ToInt64(v)) } return m } -func flattenCacheBehaviorPerPath(apiObject *lightsail.CacheBehaviorPerPath) map[string]interface{} { - if apiObject == nil { +func flattenCacheBehaviorPerPath(apiObject types.CacheBehaviorPerPath) map[string]interface{} { + if apiObject == (types.CacheBehaviorPerPath{}) { return nil } m := map[string]interface{}{} - if v := apiObject.Behavior; v != nil { - m["behavior"] = aws.StringValue(v) + if v := apiObject.Behavior; v != "" { + m["behavior"] = v } if v := apiObject.Path; v != nil { - m["path"] = aws.StringValue(v) + m["path"] = aws.ToString(v) } return m } -func flattenCacheBehaviorsPerPath(apiObjects []*lightsail.CacheBehaviorPerPath) []interface{} { +func flattenCacheBehaviorsPerPath(apiObjects []types.CacheBehaviorPerPath) []interface{} { if len(apiObjects) == 0 { return nil } @@ -705,7 +706,7 @@ func flattenCacheBehaviorsPerPath(apiObjects []*lightsail.CacheBehaviorPerPath) var l []interface{} for _, apiObject := range apiObjects { - if apiObject == nil { + if apiObject == (types.CacheBehaviorPerPath{}) { continue } @@ -715,21 +716,21 @@ func flattenCacheBehaviorsPerPath(apiObjects []*lightsail.CacheBehaviorPerPath) return l } -func flattenCacheBehavior(apiObject *lightsail.CacheBehavior) map[string]interface{} { +func flattenCacheBehavior(apiObject *types.CacheBehavior) map[string]interface{} { if apiObject == nil { return nil } m := map[string]interface{}{} - if v := apiObject.Behavior; v != nil { - m["behavior"] = aws.StringValue(v) + if v := apiObject.Behavior; v != "" { + m["behavior"] = v } return m } -func flattenOrigin(apiObject *lightsail.Origin) map[string]interface{} { +func flattenOrigin(apiObject *types.Origin) map[string]interface{} { if apiObject == nil { return nil } @@ -737,55 +738,55 @@ func flattenOrigin(apiObject *lightsail.Origin) map[string]interface{} { m := map[string]interface{}{} if v := apiObject.Name; v != nil { - m["name"] = aws.StringValue(v) + m["name"] = aws.ToString(v) } - if v := apiObject.ProtocolPolicy; v != nil { - m["protocol_policy"] = aws.StringValue(v) + if v := apiObject.ProtocolPolicy; v != "" { + m["protocol_policy"] = v } - if v := apiObject.RegionName; v != nil { - m["region_name"] = aws.StringValue(v) + if v := apiObject.RegionName; v != "" { + m["region_name"] = v } - if v := apiObject.ResourceType; v != nil { - m["resource_type"] = aws.StringValue(v) + if v := apiObject.ResourceType; v != "" { + m["resource_type"] = v } return m } -func expandInputOrigin(tfMap map[string]interface{}) *lightsail.InputOrigin { +func expandInputOrigin(tfMap map[string]interface{}) *types.InputOrigin { if tfMap == nil { return nil } - a := &lightsail.InputOrigin{} + a := &types.InputOrigin{} if v, ok := tfMap["name"].(string); ok && v != "" { a.Name = aws.String(v) } if v, ok := tfMap["protocol_policy"].(string); ok && v != "" { - a.ProtocolPolicy = aws.String(v) + a.ProtocolPolicy = types.OriginProtocolPolicyEnum(v) } if v, ok := tfMap["region_name"].(string); ok && v != "" { - a.RegionName = aws.String(v) + a.RegionName = types.RegionName(v) } return a } -func expandCacheBehaviorPerPath(tfMap map[string]interface{}) *lightsail.CacheBehaviorPerPath { +func expandCacheBehaviorPerPath(tfMap map[string]interface{}) types.CacheBehaviorPerPath { if tfMap == nil { - return nil + return types.CacheBehaviorPerPath{} } - a := &lightsail.CacheBehaviorPerPath{} + a := types.CacheBehaviorPerPath{} if v, ok := tfMap["behavior"].(string); ok && v != "" { - a.Behavior = aws.String(v) + a.Behavior = types.BehaviorEnum(v) } if v, ok := tfMap["path"].(string); ok && v != "" { @@ -795,12 +796,12 @@ func expandCacheBehaviorPerPath(tfMap map[string]interface{}) *lightsail.CacheBe return a } -func expandCacheBehaviorsPerPath(tfList []interface{}) []*lightsail.CacheBehaviorPerPath { +func expandCacheBehaviorsPerPath(tfList []interface{}) []types.CacheBehaviorPerPath { if len(tfList) == 0 { return nil } - var s []*lightsail.CacheBehaviorPerPath + var s []types.CacheBehaviorPerPath for _, r := range tfList { m, ok := r.(map[string]interface{}) @@ -811,7 +812,7 @@ func expandCacheBehaviorsPerPath(tfList []interface{}) []*lightsail.CacheBehavio a := expandCacheBehaviorPerPath(m) - if a == nil { + if a == (types.CacheBehaviorPerPath{}) { continue } @@ -821,12 +822,12 @@ func expandCacheBehaviorsPerPath(tfList []interface{}) []*lightsail.CacheBehavio return s } -func expandAllowList(tfList []interface{}) []*string { +func expandAllowList(tfList []interface{}) []string { if len(tfList) == 0 { return nil } - var s []*string + var s []string for _, r := range tfList { m, ok := r.(string) @@ -835,54 +836,73 @@ func expandAllowList(tfList []interface{}) []*string { continue } - s = append(s, aws.String(m)) + s = append(s, m) } return s } -func expandCookieObject(tfMap map[string]interface{}) *lightsail.CookieObject { +func expandHeaderEnumList(tfList []interface{}) []types.HeaderEnum { + if len(tfList) == 0 { + return nil + } + + var s []types.HeaderEnum + + for _, r := range tfList { + m, ok := r.(string) + + if !ok { + continue + } + + s = append(s, types.HeaderEnum(m)) + } + + return s +} +func expandCookieObject(tfMap map[string]interface{}) *types.CookieObject { if tfMap == nil { return nil } - a := &lightsail.CookieObject{} + a := &types.CookieObject{} if v, ok := tfMap["cookies_allow_list"]; ok && len(v.(*schema.Set).List()) > 0 { a.CookiesAllowList = expandAllowList(v.(*schema.Set).List()) } if v, ok := tfMap["option"].(string); ok && v != "" { - a.Option = aws.String(v) + a.Option = types.ForwardValues(v) } return a } -func expandHeaderObject(tfMap map[string]interface{}) *lightsail.HeaderObject { +func expandHeaderObject(tfMap map[string]interface{}) *types.HeaderObject { if tfMap == nil { return nil } - a := &lightsail.HeaderObject{} + a := &types.HeaderObject{} if v, ok := tfMap["headers_allow_list"]; ok && len(v.(*schema.Set).List()) > 0 { - a.HeadersAllowList = expandAllowList(v.(*schema.Set).List()) + a.HeadersAllowList = expandHeaderEnumList(v.(*schema.Set).List()) } if v, ok := tfMap["option"].(string); ok && v != "" { - a.Option = aws.String(v) + a.Option = types.ForwardValues(v) } return a } -func expandQueryStringObject(tfMap map[string]interface{}) *lightsail.QueryStringObject { +func expandQueryStringObject(tfMap map[string]interface{}) *types.QueryStringObject { if tfMap == nil { return nil } - a := &lightsail.QueryStringObject{} + a := &types.QueryStringObject{} if v, ok := tfMap["query_strings_allowed_list"]; ok && len(v.(*schema.Set).List()) > 0 { a.QueryStringsAllowList = expandAllowList(v.(*schema.Set).List()) @@ -895,12 +915,12 @@ func expandQueryStringObject(tfMap map[string]interface{}) *lightsail.QueryStrin return a } -func expandCacheSettings(tfMap map[string]interface{}) *lightsail.CacheSettings { +func expandCacheSettings(tfMap map[string]interface{}) *types.CacheSettings { if tfMap == nil { return nil } - a := &lightsail.CacheSettings{} + a := &types.CacheSettings{} if v, ok := tfMap["allowed_http_methods"].(string); ok && v != "" { a.AllowedHTTPMethods = aws.String(v) @@ -937,16 +957,66 @@ func expandCacheSettings(tfMap map[string]interface{}) *lightsail.CacheSettings return a } -func expandCacheBehavior(tfMap map[string]interface{}) *lightsail.CacheBehavior { +func expandCacheBehavior(tfMap map[string]interface{}) *types.CacheBehavior { if tfMap == nil { return nil } - a := &lightsail.CacheBehavior{} + a := &types.CacheBehavior{} if v, ok := tfMap["behavior"].(string); ok && v != "" { - a.Behavior = aws.String(v) + a.Behavior = types.BehaviorEnum(v) } return a } + +func flattenForwardValuesValues(t []types.ForwardValues) []string { + var out []string + + for _, v := range t { + out = append(out, string(v)) + } + + return out +} + +func flattenHeaderEnumValues(t []types.HeaderEnum) []string { + var out []string + + for _, v := range t { + out = append(out, string(v)) + } + + return out +} + +func flattenIpAddressTypeValues(t []types.IpAddressType) []string { + var out []string + + for _, v := range t { + out = append(out, string(v)) + } + + return out +} + +func flattenBehaviorEnumValues(t []types.BehaviorEnum) []string { + var out []string + + for _, v := range t { + out = append(out, string(v)) + } + + return out +} + +func flattenOriginProtocolPolicyEnumValues(t []types.OriginProtocolPolicyEnum) []string { + var out []string + + for _, v := range t { + out = append(out, string(v)) + } + + return out +} From fb44931677fcaa76559d371dec313e3dc00378fe Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:41:54 -0400 Subject: [PATCH 22/81] lightsail: Amend distribution_test, migrate resource to aws-go-sdk-v2 --- .../service/lightsail/distribution_test.go | 64 +++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/internal/service/lightsail/distribution_test.go b/internal/service/lightsail/distribution_test.go index f8a56de28a7c..369bc077257c 100644 --- a/internal/service/lightsail/distribution_test.go +++ b/internal/service/lightsail/distribution_test.go @@ -7,8 +7,8 @@ import ( "regexp" "testing" - "github.com/aws/aws-sdk-go/aws/endpoints" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/types" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -53,11 +53,11 @@ func testAccDistribution_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) - acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) + acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDistributionDestroy(ctx), Steps: []resource.TestStep{ @@ -122,11 +122,11 @@ func testAccDistribution_isEnabled(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) - acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) + acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDistributionDestroy(ctx), Steps: []resource.TestStep{ @@ -165,11 +165,11 @@ func testAccDistribution_cacheBehavior(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) - acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) + acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDistributionDestroy(ctx), Steps: []resource.TestStep{ @@ -224,11 +224,11 @@ func testAccDistribution_defaultCacheBehavior(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) - acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) + acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDistributionDestroy(ctx), Steps: []resource.TestStep{ @@ -270,19 +270,19 @@ func testAccDistribution_ipAddressType(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) - acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) + acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDistributionDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccDistributionConfig_ipAddressType(rName, bucketName, lightsail.IpAddressTypeIpv4), + Config: testAccDistributionConfig_ipAddressType(rName, bucketName, string(types.IpAddressTypeIpv4)), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDistributionExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, "ip_address_type", lightsail.IpAddressTypeIpv4), + resource.TestCheckResourceAttr(resourceName, "ip_address_type", string(types.IpAddressTypeIpv4)), ), }, { @@ -291,10 +291,10 @@ func testAccDistribution_ipAddressType(t *testing.T) { ImportStateVerify: true, }, { - Config: testAccDistributionConfig_ipAddressType(rName, bucketName, lightsail.IpAddressTypeDualstack), + Config: testAccDistributionConfig_ipAddressType(rName, bucketName, string(types.IpAddressTypeDualstack)), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckDistributionExists(ctx, resourceName), - resource.TestCheckResourceAttr(resourceName, "ip_address_type", lightsail.IpAddressTypeDualstack), + resource.TestCheckResourceAttr(resourceName, "ip_address_type", string(types.IpAddressTypeDualstack)), ), }, }, @@ -314,11 +314,11 @@ func testAccDistribution_cacheBehaviorSettings(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) - acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) + acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDistributionDestroy(ctx), Steps: []resource.TestStep{ @@ -388,11 +388,11 @@ func testAccDistribution_tags(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) - acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) + acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDistributionDestroy(ctx), Steps: []resource.TestStep{ @@ -439,11 +439,11 @@ func testAccDistribution_disappears(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) - acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) + acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDistributionDestroy(ctx), Steps: []resource.TestStep{ @@ -461,7 +461,7 @@ func testAccDistribution_disappears(t *testing.T) { func testAccCheckDistributionDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() for _, rs := range s.RootModule().Resources { if rs.Type != "aws_lightsail_distribution" { @@ -496,7 +496,7 @@ func testAccCheckDistributionExists(ctx context.Context, name string) resource.T return create.Error(names.Lightsail, create.ErrActionCheckingExistence, tflightsail.ResNameDistribution, name, errors.New("not set")) } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() resp, err := tflightsail.FindDistributionByID(ctx, conn, rs.Primary.ID) if err != nil { From 1e7ac415b21819ce7cfa6951e4ea209e3a803d90 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:42:02 -0400 Subject: [PATCH 23/81] lightsail: Amend domain, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/domain.go | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/internal/service/lightsail/domain.go b/internal/service/lightsail/domain.go index 234a00610127..500e125c095e 100644 --- a/internal/service/lightsail/domain.go +++ b/internal/service/lightsail/domain.go @@ -4,12 +4,13 @@ import ( "context" "log" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" - "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/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/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" + "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" ) @@ -36,8 +37,8 @@ func ResourceDomain() *schema.Resource { func resourceDomainCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).LightsailConn() - _, err := conn.CreateDomainWithContext(ctx, &lightsail.CreateDomainInput{ + conn := meta.(*conns.AWSClient).LightsailClient() + _, err := conn.CreateDomain(ctx, &lightsail.CreateDomainInput{ DomainName: aws.String(d.Get("domain_name").(string)), }) @@ -52,13 +53,13 @@ func resourceDomainCreate(ctx context.Context, d *schema.ResourceData, meta inte func resourceDomainRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).LightsailConn() - resp, err := conn.GetDomainWithContext(ctx, &lightsail.GetDomainInput{ + conn := meta.(*conns.AWSClient).LightsailClient() + resp, err := conn.GetDomain(ctx, &lightsail.GetDomainInput{ DomainName: aws.String(d.Id()), }) if err != nil { - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { + if errs.IsA[*types.NotFoundException](err) { log.Printf("[WARN] Lightsail Domain (%s) not found, removing from state", d.Id()) d.SetId("") return diags @@ -72,8 +73,8 @@ func resourceDomainRead(ctx context.Context, d *schema.ResourceData, meta interf func resourceDomainDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).LightsailConn() - _, err := conn.DeleteDomainWithContext(ctx, &lightsail.DeleteDomainInput{ + conn := meta.(*conns.AWSClient).LightsailClient() + _, err := conn.DeleteDomain(ctx, &lightsail.DeleteDomainInput{ DomainName: aws.String(d.Id()), }) From 0091ccabe63adfc03b939a3b3f6a5a13489dc98a Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:42:13 -0400 Subject: [PATCH 24/81] lightsail: Amend domain_entry, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/domain_entry.go | 51 +++++++++++----------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/internal/service/lightsail/domain_entry.go b/internal/service/lightsail/domain_entry.go index 96b7e42f4f10..da3d68b02016 100644 --- a/internal/service/lightsail/domain_entry.go +++ b/internal/service/lightsail/domain_entry.go @@ -5,15 +5,16 @@ import ( "fmt" "strings" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" - "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/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/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/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/flex" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" @@ -75,12 +76,12 @@ func ResourceDomainEntry() *schema.Resource { } func resourceDomainEntryCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() name := d.Get("name").(string) req := &lightsail.CreateDomainEntryInput{ DomainName: aws.String(d.Get("domain_name").(string)), - DomainEntry: &lightsail.DomainEntry{ + DomainEntry: &types.DomainEntry{ IsAlias: aws.Bool(d.Get("is_alias").(bool)), Name: aws.String(expandDomainEntryName(name, d.Get("domain_name").(string))), Target: aws.String(d.Get("target").(string)), @@ -88,13 +89,13 @@ func resourceDomainEntryCreate(ctx context.Context, d *schema.ResourceData, meta }, } - resp, err := conn.CreateDomainEntryWithContext(ctx, req) + resp, err := conn.CreateDomainEntry(ctx, req) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeCreateDomain, ResNameDomainEntry, name, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeCreateDomain), ResNameDomainEntry, name, err) } - diag := expandOperations(ctx, conn, []*lightsail.Operation{resp.Operation}, lightsail.OperationTypeCreateDomain, ResNameDomainEntry, name) + diag := expandOperations(ctx, conn, []types.Operation{*resp.Operation}, types.OperationTypeCreateDomain, ResNameDomainEntry, name) if diag != nil { return diag @@ -120,7 +121,7 @@ func resourceDomainEntryCreate(ctx context.Context, d *schema.ResourceData, meta } func resourceDomainEntryRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() entry, err := FindDomainEntryById(ctx, conn, d.Id()) @@ -140,7 +141,7 @@ func resourceDomainEntryRead(ctx context.Context, d *schema.ResourceData, meta i return create.DiagError(names.Lightsail, create.ErrActionExpandingResourceId, ResNameDomainEntry, d.Id(), err) } - name := flattenDomainEntryName(aws.StringValue(entry.Name), domainName) + name := flattenDomainEntryName(aws.ToString(entry.Name), domainName) partCount := flex.ResourceIdPartCount(d.Id()) @@ -149,8 +150,8 @@ func resourceDomainEntryRead(ctx context.Context, d *schema.ResourceData, meta i idParts := []string{ name, domainName, - aws.StringValue(entry.Type), - aws.StringValue(entry.Target), + aws.ToString(entry.Type), + aws.ToString(entry.Target), } id, err := flex.FlattenResourceId(idParts, DomainEntryIdPartsCount, true) @@ -171,7 +172,7 @@ func resourceDomainEntryRead(ctx context.Context, d *schema.ResourceData, meta i } func resourceDomainEntryDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() domainName, err := expandDomainNameFromId(d.Id()) @@ -185,12 +186,12 @@ func resourceDomainEntryDelete(ctx context.Context, d *schema.ResourceData, meta return create.DiagError(names.Lightsail, create.ErrActionExpandingResourceId, ResNameDomainEntry, d.Id(), err) } - resp, err := conn.DeleteDomainEntryWithContext(ctx, &lightsail.DeleteDomainEntryInput{ + resp, err := conn.DeleteDomainEntry(ctx, &lightsail.DeleteDomainEntryInput{ DomainName: aws.String(domainName), DomainEntry: domainEntry, }) - if err != nil && tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { + if err != nil && errs.IsA[*types.NotFoundException](err) { return nil } @@ -198,7 +199,7 @@ func resourceDomainEntryDelete(ctx context.Context, d *schema.ResourceData, meta return create.DiagError(names.Lightsail, create.ErrActionDeleting, ResNameDomainEntry, d.Id(), err) } - diag := expandOperations(ctx, conn, []*lightsail.Operation{resp.Operation}, lightsail.OperationTypeDeleteDomain, ResNameDomainEntry, d.Id()) + diag := expandOperations(ctx, conn, []types.Operation{*resp.Operation}, types.OperationTypeDeleteDomain, ResNameDomainEntry, d.Id()) if diag != nil { return diag @@ -207,7 +208,7 @@ func resourceDomainEntryDelete(ctx context.Context, d *schema.ResourceData, meta return nil } -func expandDomainEntry(id string) (*lightsail.DomainEntry, error) { +func expandDomainEntry(id string) (*types.DomainEntry, error) { partCount := flex.ResourceIdPartCount(id) var name string @@ -242,7 +243,7 @@ func expandDomainEntry(id string) (*lightsail.DomainEntry, error) { recordType = idParts[2] recordTarget = idParts[3] } - entry := &lightsail.DomainEntry{ + entry := &types.DomainEntry{ Name: aws.String(expandDomainEntryName(name, domainName)), Type: aws.String(recordType), Target: aws.String(recordTarget), @@ -304,7 +305,7 @@ func flattenDomainEntryName(name, domainName string) string { return rn } -func FindDomainEntryById(ctx context.Context, conn *lightsail.Lightsail, id string) (*lightsail.DomainEntry, error) { +func FindDomainEntryById(ctx context.Context, conn *lightsail.Client, id string) (*types.DomainEntry, error) { partCount := flex.ResourceIdPartCount(id) in := &lightsail.GetDomainInput{} @@ -352,9 +353,9 @@ func FindDomainEntryById(ctx context.Context, conn *lightsail.Lightsail, id stri in.DomainName = aws.String(domainName) - out, err := conn.GetDomainWithContext(ctx, in) + out, err := conn.GetDomain(ctx, in) - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { + if errs.IsA[*types.NotFoundException](err) { return nil, &retry.NotFoundError{ LastError: err, LastRequest: in, @@ -365,12 +366,12 @@ func FindDomainEntryById(ctx context.Context, conn *lightsail.Lightsail, id stri return nil, err } - var entry *lightsail.DomainEntry + var entry types.DomainEntry entryExists := false for _, n := range out.Domain.DomainEntries { - if entryName == aws.StringValue(n.Name) && recordType == aws.StringValue(n.Type) && recordTarget == aws.StringValue(n.Target) { - entry = n + if entryName == aws.ToString(n.Name) && recordType == aws.ToString(n.Type) && recordTarget == aws.ToString(n.Target) { + entry = types.DomainEntry(n) entryExists = true break } @@ -380,5 +381,5 @@ func FindDomainEntryById(ctx context.Context, conn *lightsail.Lightsail, id stri return nil, tfresource.NewEmptyResultError(in) } - return entry, nil + return &entry, nil } From 27dd52cdca14542d5c215e794986554c3bcbcc18 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:42:24 -0400 Subject: [PATCH 25/81] lightsail: Amend domain_entry_test, migrate resource to aws-go-sdk-v2 --- .../service/lightsail/domain_entry_test.go | 65 +++++-------------- 1 file changed, 18 insertions(+), 47 deletions(-) diff --git a/internal/service/lightsail/domain_entry_test.go b/internal/service/lightsail/domain_entry_test.go index 2cfe0e0fb22c..e3fdc26d76b6 100644 --- a/internal/service/lightsail/domain_entry_test.go +++ b/internal/service/lightsail/domain_entry_test.go @@ -5,11 +5,9 @@ import ( "errors" "fmt" "testing" - "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/endpoints" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/types" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -23,21 +21,20 @@ import ( func TestAccLightsailDomainEntry_basic(t *testing.T) { ctx := acctest.Context(t) - var domainEntry lightsail.DomainEntry resourceName := "aws_lightsail_domain_entry.test" domainName := acctest.RandomDomainName() domainEntryName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDomainEntryDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccDomainEntryConfig_basic(domainName, domainEntryName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDomainEntryExists(ctx, resourceName, &domainEntry), + testAccCheckDomainEntryExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "domain_name", domainName), resource.TestCheckResourceAttr(resourceName, "name", domainEntryName), resource.TestCheckResourceAttr(resourceName, "target", "127.0.0.1"), @@ -64,21 +61,20 @@ func TestAccLightsailDomainEntry_basic(t *testing.T) { func TestAccLightsailDomainEntry_underscore(t *testing.T) { ctx := acctest.Context(t) - var domainEntry lightsail.DomainEntry resourceName := "aws_lightsail_domain_entry.test" domainName := acctest.RandomDomainName() domainEntryName := "_" + sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDomainEntryDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccDomainEntryConfig_basic(domainName, domainEntryName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDomainEntryExists(ctx, resourceName, &domainEntry), + testAccCheckDomainEntryExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "domain_name", domainName), resource.TestCheckResourceAttr(resourceName, "name", domainEntryName), resource.TestCheckResourceAttr(resourceName, "target", "127.0.0.1"), @@ -105,21 +101,20 @@ func TestAccLightsailDomainEntry_underscore(t *testing.T) { func TestAccLightsailDomainEntry_apex(t *testing.T) { ctx := acctest.Context(t) - var domainEntry lightsail.DomainEntry resourceName := "aws_lightsail_domain_entry.test" domainName := acctest.RandomDomainName() domainEntryName := "" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDomainEntryDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccDomainEntryConfig_basic(domainName, domainEntryName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDomainEntryExists(ctx, resourceName, &domainEntry), + testAccCheckDomainEntryExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "domain_name", domainName), resource.TestCheckResourceAttr(resourceName, "name", domainEntryName), resource.TestCheckResourceAttr(resourceName, "target", "127.0.0.1"), @@ -146,43 +141,21 @@ func TestAccLightsailDomainEntry_apex(t *testing.T) { func TestAccLightsailDomainEntry_disappears(t *testing.T) { ctx := acctest.Context(t) - var domainEntry lightsail.DomainEntry resourceName := "aws_lightsail_domain_entry.test" domainName := acctest.RandomDomainName() domainEntryName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) - testDestroy := func(*terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() - _, err := conn.DeleteDomainEntryWithContext(ctx, &lightsail.DeleteDomainEntryInput{ - DomainName: aws.String(domainName), - DomainEntry: &lightsail.DomainEntry{ - Name: aws.String(fmt.Sprintf("%s.%s", domainEntryName, domainName)), - Type: aws.String("A"), - Target: aws.String("127.0.0.1"), - }, - }) - - if err != nil { - return fmt.Errorf("error deleting Lightsail Domain Entry in disappear test") - } - - // sleep 7 seconds to give it time, so we don't have to poll - time.Sleep(7 * time.Second) - - return nil - } - resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDomainEntryDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccDomainEntryConfig_basic(domainName, domainEntryName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDomainEntryExists(ctx, resourceName, &domainEntry), - testDestroy, + testAccCheckDomainEntryExists(ctx, resourceName), + acctest.CheckResourceDisappears(ctx, acctest.Provider, tflightsail.ResourceDomainEntry(), resourceName), ), ExpectNonEmptyPlan: true, }, @@ -190,7 +163,7 @@ func TestAccLightsailDomainEntry_disappears(t *testing.T) { }) } -func testAccCheckDomainEntryExists(ctx context.Context, n string, domainEntry *lightsail.DomainEntry) resource.TestCheckFunc { +func testAccCheckDomainEntryExists(ctx context.Context, n string) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] @@ -202,7 +175,7 @@ func testAccCheckDomainEntryExists(ctx context.Context, n string, domainEntry *l return errors.New("No Lightsail Domain Entry ID is set") } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() resp, err := tflightsail.FindDomainEntryById(ctx, conn, rs.Primary.ID) @@ -214,8 +187,6 @@ func testAccCheckDomainEntryExists(ctx context.Context, n string, domainEntry *l return fmt.Errorf("DomainEntry %q does not exist", rs.Primary.ID) } - *domainEntry = *resp - return nil } } @@ -227,7 +198,7 @@ func testAccCheckDomainEntryDestroy(ctx context.Context) resource.TestCheckFunc continue } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() _, err := tflightsail.FindDomainEntryById(ctx, conn, rs.Primary.ID) From 7389720df15ba7d4e5a475a99a2435da1aacea04 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:42:36 -0400 Subject: [PATCH 26/81] lightsail: Amend domain_test, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/domain_test.go | 36 +++++++++++------------ 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/internal/service/lightsail/domain_test.go b/internal/service/lightsail/domain_test.go index d5fc7f14f1b8..6215ddf39bd7 100644 --- a/internal/service/lightsail/domain_test.go +++ b/internal/service/lightsail/domain_test.go @@ -6,34 +6,33 @@ import ( "fmt" "testing" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/endpoints" - "github.com/aws/aws-sdk-go/service/lightsail" - "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/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/types" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "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/errs" tflightsail "github.com/hashicorp/terraform-provider-aws/internal/service/lightsail" ) func TestAccLightsailDomain_basic(t *testing.T) { ctx := acctest.Context(t) - var domain lightsail.Domain lightsailDomainName := fmt.Sprintf("tf-test-lightsail-%s.com", sdkacctest.RandString(5)) resourceName := "aws_lightsail_domain.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDomainDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccDomainConfig_basic(lightsailDomainName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDomainExists(ctx, resourceName, &domain), + testAccCheckDomainExists(ctx, resourceName), ), }, }, @@ -42,20 +41,19 @@ func TestAccLightsailDomain_basic(t *testing.T) { func TestAccLightsailDomain_disappears(t *testing.T) { ctx := acctest.Context(t) - var domain lightsail.Domain lightsailDomainName := fmt.Sprintf("tf-test-lightsail-%s.com", sdkacctest.RandString(5)) resourceName := "aws_lightsail_domain.test" resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, endpoints.UsEast1RegionID) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDomainDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccDomainConfig_basic(lightsailDomainName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckDomainExists(ctx, resourceName, &domain), + testAccCheckDomainExists(ctx, resourceName), acctest.CheckResourceDisappears(ctx, acctest.Provider, tflightsail.ResourceDomain(), resourceName), ), ExpectNonEmptyPlan: true, @@ -64,7 +62,7 @@ func TestAccLightsailDomain_disappears(t *testing.T) { }) } -func testAccCheckDomainExists(ctx context.Context, n string, domain *lightsail.Domain) resource.TestCheckFunc { +func testAccCheckDomainExists(ctx context.Context, n string) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] if !ok { @@ -75,9 +73,9 @@ func testAccCheckDomainExists(ctx context.Context, n string, domain *lightsail.D return errors.New("No Lightsail Domain ID is set") } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() - resp, err := conn.GetDomainWithContext(ctx, &lightsail.GetDomainInput{ + resp, err := conn.GetDomain(ctx, &lightsail.GetDomainInput{ DomainName: aws.String(rs.Primary.ID), }) @@ -88,7 +86,7 @@ func testAccCheckDomainExists(ctx context.Context, n string, domain *lightsail.D if resp == nil || resp.Domain == nil { return fmt.Errorf("Domain (%s) not found", rs.Primary.ID) } - *domain = *resp.Domain + return nil } } @@ -100,13 +98,13 @@ func testAccCheckDomainDestroy(ctx context.Context) resource.TestCheckFunc { continue } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() - resp, err := conn.GetDomainWithContext(ctx, &lightsail.GetDomainInput{ + resp, err := conn.GetDomain(ctx, &lightsail.GetDomainInput{ DomainName: aws.String(rs.Primary.ID), }) - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { + if errs.IsA[*types.NotFoundException](err) { continue } From 2cab01aeed6b2c3c68ef5d3b2e27fb32ee4727ac Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:42:49 -0400 Subject: [PATCH 27/81] lightsail: Amend flex, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/flex.go | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/internal/service/lightsail/flex.go b/internal/service/lightsail/flex.go index 7bf6b736ec8d..b2511a2fc70e 100644 --- a/internal/service/lightsail/flex.go +++ b/internal/service/lightsail/flex.go @@ -4,32 +4,33 @@ import ( "context" "errors" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-provider-aws/internal/create" "github.com/hashicorp/terraform-provider-aws/names" ) // expandOperations provides a uniform approach for handling lightsail operations and errors. -func expandOperations(ctx context.Context, conn *lightsail.Lightsail, operations []*lightsail.Operation, action string, resource string, id string) diag.Diagnostics { +func expandOperations(ctx context.Context, conn *lightsail.Client, operations []types.Operation, action types.OperationType, resource string, id string) diag.Diagnostics { if len(operations) == 0 { - return create.DiagError(names.Lightsail, action, resource, id, errors.New("no operations found for request")) + return create.DiagError(names.Lightsail, string(action), resource, id, errors.New("no operations found for request")) } op := operations[0] err := waitOperation(ctx, conn, op.Id) if err != nil { - return create.DiagError(names.Lightsail, action, resource, id, errors.New("error waiting for request operation")) + return create.DiagError(names.Lightsail, string(action), resource, id, errors.New("error waiting for request operation")) } return nil } // expandOperation provides a uniform approach for handling a single lightsail operation and errors. -func expandOperation(ctx context.Context, conn *lightsail.Lightsail, operation *lightsail.Operation, action string, resource string, id string) diag.Diagnostics { - diag := expandOperations(ctx, conn, []*lightsail.Operation{operation}, action, resource, id) +func expandOperation(ctx context.Context, conn *lightsail.Client, operation types.Operation, action types.OperationType, resource string, id string) diag.Diagnostics { + diag := expandOperations(ctx, conn, []types.Operation{operation}, action, resource, id) if diag != nil { return diag @@ -38,7 +39,7 @@ func expandOperation(ctx context.Context, conn *lightsail.Lightsail, operation * return nil } -func flattenResourceLocation(apiObject *lightsail.ResourceLocation) map[string]interface{} { +func flattenResourceLocation(apiObject *types.ResourceLocation) map[string]interface{} { if apiObject == nil { return nil } @@ -46,11 +47,11 @@ func flattenResourceLocation(apiObject *lightsail.ResourceLocation) map[string]i m := map[string]interface{}{} if v := apiObject.AvailabilityZone; v != nil { - m["availability_zone"] = aws.StringValue(v) + m["availability_zone"] = aws.ToString(v) } - if v := apiObject.RegionName; v != nil { - m["region_name"] = aws.StringValue(v) + if v := apiObject.RegionName; string(v) != "" { + m["region_name"] = string(v) } return m From c8f62a5c8696c95619c52e2eeaa28ad525e4dda4 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:42:58 -0400 Subject: [PATCH 28/81] lightsail: Amend instance, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/instance.go | 118 ++++++++++++++++--------- 1 file changed, 76 insertions(+), 42 deletions(-) diff --git a/internal/service/lightsail/instance.go b/internal/service/lightsail/instance.go index 3eb9141bf2c9..3b2a34acc616 100644 --- a/internal/service/lightsail/instance.go +++ b/internal/service/lightsail/instance.go @@ -7,15 +7,17 @@ import ( "strings" "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" - "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/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff" + "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/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/internal/verify" @@ -44,7 +46,7 @@ func ResourceInstance() *schema.Resource { "type": { Type: schema.TypeString, Required: true, - ValidateFunc: validation.StringInSlice(lightsail.AddOnType_Values(), false), + ValidateFunc: validation.StringInSlice(flattenAddOnTypeValues(types.AddOnType("").Values()), false), }, "snapshot_time": { Type: schema.TypeString, @@ -167,7 +169,7 @@ func ResourceInstance() *schema.Resource { } func resourceInstanceCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() iName := d.Get("name").(string) @@ -175,7 +177,7 @@ func resourceInstanceCreate(ctx context.Context, d *schema.ResourceData, meta in AvailabilityZone: aws.String(d.Get("availability_zone").(string)), BlueprintId: aws.String(d.Get("blueprint_id").(string)), BundleId: aws.String(d.Get("bundle_id").(string)), - InstanceNames: aws.StringSlice([]string{iName}), + InstanceNames: []string{iName}, Tags: GetTagsIn(ctx), } @@ -188,15 +190,15 @@ func resourceInstanceCreate(ctx context.Context, d *schema.ResourceData, meta in } if v, ok := d.GetOk("ip_address_type"); ok { - in.IpAddressType = aws.String(v.(string)) + in.IpAddressType = types.IpAddressType(v.(string)) } - out, err := conn.CreateInstancesWithContext(ctx, &in) + out, err := conn.CreateInstances(ctx, &in) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeCreateInstance, ResInstance, iName, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeCreateInstance), ResInstance, iName, err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeCreateInstance, ResInstance, iName) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeCreateInstance, ResInstance, iName) if diag != nil { return diag @@ -211,13 +213,13 @@ func resourceInstanceCreate(ctx context.Context, d *schema.ResourceData, meta in AddOnRequest: expandAddOnRequest(d.Get("add_on").([]interface{})), } - out, err := conn.EnableAddOnWithContext(ctx, &in) + out, err := conn.EnableAddOn(ctx, &in) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeEnableAddOn, ResInstance, iName, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeEnableAddOn), ResInstance, iName, err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeEnableAddOn, ResInstance, iName) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeEnableAddOn, ResInstance, iName) if diag != nil { return diag @@ -228,7 +230,7 @@ func resourceInstanceCreate(ctx context.Context, d *schema.ResourceData, meta in } func resourceInstanceRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() out, err := FindInstanceById(ctx, conn, d.Id()) @@ -256,7 +258,7 @@ func resourceInstanceRead(ctx context.Context, d *schema.ResourceData, meta inte d.Set("cpu_count", out.Hardware.CpuCount) d.Set("ram_size", out.Hardware.RamSizeInGb) - d.Set("ipv6_addresses", aws.StringValueSlice(out.Ipv6Addresses)) + d.Set("ipv6_addresses", out.Ipv6Addresses) d.Set("ip_address_type", out.IpAddressType) d.Set("is_static_ip", out.IsStaticIp) d.Set("private_ip_address", out.PrivateIpAddress) @@ -268,13 +270,13 @@ func resourceInstanceRead(ctx context.Context, d *schema.ResourceData, meta inte } func resourceInstanceDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() - out, err := conn.DeleteInstanceWithContext(ctx, &lightsail.DeleteInstanceInput{ + conn := meta.(*conns.AWSClient).LightsailClient() + out, err := conn.DeleteInstance(ctx, &lightsail.DeleteInstanceInput{ InstanceName: aws.String(d.Id()), ForceDeleteAddOns: aws.Bool(true), }) - if err != nil && tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { + if err != nil && errs.IsA[*types.NotFoundException](err) { return nil } @@ -282,7 +284,7 @@ func resourceInstanceDelete(ctx context.Context, d *schema.ResourceData, meta in return create.DiagError(names.Lightsail, create.ErrActionDeleting, ResInstance, d.Id(), err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeDeleteInstance, ResInstance, d.Id()) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeDeleteInstance, ResInstance, d.Id()) if diag != nil { return diag @@ -292,20 +294,20 @@ func resourceInstanceDelete(ctx context.Context, d *schema.ResourceData, meta in } func resourceInstanceUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() if d.HasChange("ip_address_type") { - out, err := conn.SetIpAddressTypeWithContext(ctx, &lightsail.SetIpAddressTypeInput{ + out, err := conn.SetIpAddressType(ctx, &lightsail.SetIpAddressTypeInput{ ResourceName: aws.String(d.Id()), - ResourceType: aws.String("Instance"), - IpAddressType: aws.String(d.Get("ip_address_type").(string)), + ResourceType: types.ResourceTypeInstance, + IpAddressType: types.IpAddressType(d.Get("ip_address_type").(string)), }) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeSetIpAddressType, ResInstance, d.Id(), err) + return create.DiagError(names.Lightsail, string(types.OperationTypeSetIpAddressType), ResInstance, d.Id(), err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeSetIpAddressType, ResInstance, d.Id()) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeSetIpAddressType, ResInstance, d.Id()) if diag != nil { return diag @@ -315,7 +317,7 @@ func resourceInstanceUpdate(ctx context.Context, d *schema.ResourceData, meta in if d.HasChange("add_on") { o, n := d.GetChange("add_on") - if err := updateAddOnWithContext(ctx, conn, d.Id(), o, n); err != nil { + if err := updateAddOn(ctx, conn, d.Id(), o, n); err != nil { return err } } @@ -323,17 +325,17 @@ func resourceInstanceUpdate(ctx context.Context, d *schema.ResourceData, meta in return resourceInstanceRead(ctx, d, meta) } -func expandAddOnRequest(addOnListRaw []interface{}) *lightsail.AddOnRequest { +func expandAddOnRequest(addOnListRaw []interface{}) *types.AddOnRequest { if len(addOnListRaw) == 0 { - return &lightsail.AddOnRequest{} + return &types.AddOnRequest{} } - addOnRequest := &lightsail.AddOnRequest{} + addOnRequest := &types.AddOnRequest{} for _, addOnRaw := range addOnListRaw { addOnMap := addOnRaw.(map[string]interface{}) - addOnRequest.AddOnType = aws.String(addOnMap["type"].(string)) - addOnRequest.AutoSnapshotAddOnRequest = &lightsail.AutoSnapshotAddOnRequest{ + addOnRequest.AddOnType = types.AddOnType(addOnMap["type"].(string)) + addOnRequest.AutoSnapshotAddOnRequest = &types.AutoSnapshotAddOnRequest{ SnapshotTimeOfDay: aws.String(addOnMap["snapshot_time"].(string)), } } @@ -355,14 +357,14 @@ func expandAddOnEnabled(addOnListRaw []interface{}) bool { return enabled } -func flattenAddOns(addOns []*lightsail.AddOn) []interface{} { +func flattenAddOns(addOns []types.AddOn) []interface{} { var rawAddOns []interface{} for _, addOn := range addOns { rawAddOn := map[string]interface{}{ - "type": aws.StringValue(addOn.Name), - "snapshot_time": aws.StringValue(addOn.SnapshotTimeOfDay), - "status": aws.StringValue(addOn.Status), + "type": aws.ToString(addOn.Name), + "snapshot_time": aws.ToString(addOn.SnapshotTimeOfDay), + "status": aws.ToString(addOn.Status), } rawAddOns = append(rawAddOns, rawAddOn) } @@ -370,7 +372,7 @@ func flattenAddOns(addOns []*lightsail.AddOn) []interface{} { return rawAddOns } -func updateAddOnWithContext(ctx context.Context, conn *lightsail.Lightsail, name string, oldAddOnsRaw interface{}, newAddOnsRaw interface{}) diag.Diagnostics { +func updateAddOn(ctx context.Context, conn *lightsail.Client, name string, oldAddOnsRaw interface{}, newAddOnsRaw interface{}) diag.Diagnostics { oldAddOns := expandAddOnRequest(oldAddOnsRaw.([]interface{})) newAddOns := expandAddOnRequest(newAddOnsRaw.([]interface{})) oldAddOnStatus := expandAddOnEnabled(oldAddOnsRaw.([]interface{})) @@ -382,13 +384,13 @@ func updateAddOnWithContext(ctx context.Context, conn *lightsail.Lightsail, name AddOnType: oldAddOns.AddOnType, } - out, err := conn.DisableAddOnWithContext(ctx, &in) + out, err := conn.DisableAddOn(ctx, &in) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeDisableAddOn, ResInstance, name, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeDisableAddOn), ResInstance, name, err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeDisableAddOn, ResInstance, name) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeDisableAddOn, ResInstance, name) if diag != nil { return diag @@ -401,13 +403,13 @@ func updateAddOnWithContext(ctx context.Context, conn *lightsail.Lightsail, name AddOnRequest: newAddOns, } - out, err := conn.EnableAddOnWithContext(ctx, &in) + out, err := conn.EnableAddOn(ctx, &in) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeEnableAddOn, ResInstance, name, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeEnableAddOn), ResInstance, name, err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeEnableAddOn, ResInstance, name) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeEnableAddOn, ResInstance, name) if diag != nil { return diag @@ -416,3 +418,35 @@ func updateAddOnWithContext(ctx context.Context, conn *lightsail.Lightsail, name return nil } + +func flattenAddOnTypeValues(t []types.AddOnType) []string { + var out []string + + for _, v := range t { + out = append(out, string(v)) + } + + return out +} + +func FindInstanceById(ctx context.Context, conn *lightsail.Client, id string) (*types.Instance, error) { + in := &lightsail.GetInstanceInput{InstanceName: aws.String(id)} + out, err := conn.GetInstance(ctx, in) + + if errs.IsA[*types.NotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: in, + } + } + + if err != nil { + return nil, err + } + + if out == nil || out.Instance == nil { + return nil, tfresource.NewEmptyResultError(in) + } + + return out.Instance, nil +} From bd2a46b9bee29abb9b2c75c019172312c8acae70 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:43:09 -0400 Subject: [PATCH 29/81] lightsail: Amend instance_public_ports, migrate resource to aws-go-sdk-v2 --- .../lightsail/instance_public_ports.go | 95 ++++++++++--------- 1 file changed, 51 insertions(+), 44 deletions(-) diff --git a/internal/service/lightsail/instance_public_ports.go b/internal/service/lightsail/instance_public_ports.go index 433c87a321ba..522b8f090a74 100644 --- a/internal/service/lightsail/instance_public_ports.go +++ b/internal/service/lightsail/instance_public_ports.go @@ -6,8 +6,9 @@ import ( "fmt" "log" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/types" "github.com/hashicorp/aws-sdk-go-base/v2/awsv1shim/v2/tfawserr" multierror "github.com/hashicorp/go-multierror" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" @@ -78,7 +79,7 @@ func ResourceInstancePublicPorts() *schema.Resource { Type: schema.TypeString, Required: true, ForceNew: true, - ValidateFunc: validation.StringInSlice(lightsail.NetworkProtocol_Values(), false), + ValidateFunc: validation.StringInSlice(flattenNetworkProtocolValues(types.NetworkProtocol("").Values()), false), }, "to_port": { Type: schema.TypeInt, @@ -95,9 +96,9 @@ func ResourceInstancePublicPorts() *schema.Resource { func resourceInstancePublicPortsCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() - var portInfos []*lightsail.PortInfo + var portInfos []types.PortInfo if v, ok := d.GetOk("port_info"); ok && v.(*schema.Set).Len() > 0 { portInfos = expandPortInfos(v.(*schema.Set).List()) } @@ -107,7 +108,7 @@ func resourceInstancePublicPortsCreate(ctx context.Context, d *schema.ResourceDa PortInfos: portInfos, } - _, err := conn.PutInstancePublicPortsWithContext(ctx, input) + _, err := conn.PutInstancePublicPorts(ctx, input) if err != nil { return sdkdiag.AppendErrorf(diags, "unable to create public ports for instance %s: %s", d.Get("instance_name").(string), err) @@ -115,7 +116,7 @@ func resourceInstancePublicPortsCreate(ctx context.Context, d *schema.ResourceDa var buffer bytes.Buffer for _, portInfo := range portInfos { - buffer.WriteString(fmt.Sprintf("%s-%d-%d\n", aws.StringValue(portInfo.Protocol), aws.Int64Value(portInfo.FromPort), aws.Int64Value(portInfo.ToPort))) + buffer.WriteString(fmt.Sprintf("%s-%d-%d\n", string(portInfo.Protocol), int64(portInfo.FromPort), int64(portInfo.ToPort))) } d.SetId(fmt.Sprintf("%s-%d", d.Get("instance_name").(string), create.StringHashcode(buffer.String()))) @@ -125,13 +126,13 @@ func resourceInstancePublicPortsCreate(ctx context.Context, d *schema.ResourceDa func resourceInstancePublicPortsRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() input := &lightsail.GetInstancePortStatesInput{ InstanceName: aws.String(d.Get("instance_name").(string)), } - output, err := conn.GetInstancePortStatesWithContext(ctx, input) + output, err := conn.GetInstancePortStates(ctx, input) if !d.IsNewResource() && tfawserr.ErrCodeEquals(err, "NotFoundException") { log.Printf("[WARN] Lightsail instance public ports (%s) not found, removing from state", d.Id()) @@ -158,19 +159,19 @@ func resourceInstancePublicPortsRead(ctx context.Context, d *schema.ResourceData func resourceInstancePublicPortsDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() var err *multierror.Error - var portInfos []*lightsail.PortInfo + var portInfos []types.PortInfo if v, ok := d.GetOk("port_info"); ok && v.(*schema.Set).Len() > 0 { portInfos = expandPortInfos(v.(*schema.Set).List()) } for _, portInfo := range portInfos { - _, portError := conn.CloseInstancePublicPortsWithContext(ctx, &lightsail.CloseInstancePublicPortsInput{ + _, portError := conn.CloseInstancePublicPorts(ctx, &lightsail.CloseInstancePublicPortsInput{ InstanceName: aws.String(d.Get("instance_name").(string)), - PortInfo: portInfo, + PortInfo: &portInfo, }) if portError != nil { @@ -185,38 +186,38 @@ func resourceInstancePublicPortsDelete(ctx context.Context, d *schema.ResourceDa return diags } -func expandPortInfo(tfMap map[string]interface{}) *lightsail.PortInfo { - if tfMap == nil { - return nil - } +func expandPortInfo(tfMap map[string]interface{}) types.PortInfo { + // if tfMap == nil { + // return nil + // } - apiObject := &lightsail.PortInfo{ - FromPort: aws.Int64((int64)(tfMap["from_port"].(int))), - ToPort: aws.Int64((int64)(tfMap["to_port"].(int))), - Protocol: aws.String(tfMap["protocol"].(string)), + apiObject := types.PortInfo{ + FromPort: int32(tfMap["from_port"].(int)), + ToPort: int32(tfMap["to_port"].(int)), + Protocol: types.NetworkProtocol(tfMap["protocol"].(string)), } if v, ok := tfMap["cidrs"].(*schema.Set); ok && v.Len() > 0 { - apiObject.Cidrs = flex.ExpandStringSet(v) + apiObject.Cidrs = aws.ToStringSlice(flex.ExpandStringSet(v)) } if v, ok := tfMap["cidr_list_aliases"].(*schema.Set); ok && v.Len() > 0 { - apiObject.CidrListAliases = flex.ExpandStringSet(v) + apiObject.CidrListAliases = aws.ToStringSlice(flex.ExpandStringSet(v)) } if v, ok := tfMap["ipv6_cidrs"].(*schema.Set); ok && v.Len() > 0 { - apiObject.Ipv6Cidrs = flex.ExpandStringSet(v) + apiObject.Ipv6Cidrs = aws.ToStringSlice(flex.ExpandStringSet(v)) } return apiObject } -func expandPortInfos(tfList []interface{}) []*lightsail.PortInfo { +func expandPortInfos(tfList []interface{}) []types.PortInfo { if len(tfList) == 0 { return nil } - var apiObjects []*lightsail.PortInfo + var apiObjects []types.PortInfo for _, tfMapRaw := range tfList { tfMap, ok := tfMapRaw.(map[string]interface{}) @@ -227,43 +228,39 @@ func expandPortInfos(tfList []interface{}) []*lightsail.PortInfo { apiObject := expandPortInfo(tfMap) - if apiObject == nil { - continue - } - apiObjects = append(apiObjects, apiObject) } return apiObjects } -func flattenInstancePortState(apiObject *lightsail.InstancePortState) map[string]interface{} { - if apiObject == nil { - return nil - } +func flattenInstancePortState(apiObject types.InstancePortState) map[string]interface{} { + // if apiObject == (types.InstancePortState{}) { + // return nil + // } tfMap := map[string]interface{}{} - tfMap["from_port"] = aws.Int64Value(apiObject.FromPort) - tfMap["to_port"] = aws.Int64Value(apiObject.ToPort) - tfMap["protocol"] = aws.StringValue(apiObject.Protocol) + tfMap["from_port"] = int(apiObject.FromPort) + tfMap["to_port"] = int(apiObject.ToPort) + tfMap["protocol"] = string(apiObject.Protocol) if v := apiObject.Cidrs; v != nil { - tfMap["cidrs"] = aws.StringValueSlice(v) + tfMap["cidrs"] = v } if v := apiObject.CidrListAliases; v != nil { - tfMap["cidr_list_aliases"] = aws.StringValueSlice(v) + tfMap["cidr_list_aliases"] = v } if v := apiObject.Ipv6Cidrs; v != nil { - tfMap["ipv6_cidrs"] = aws.StringValueSlice(v) + tfMap["ipv6_cidrs"] = v } return tfMap } -func flattenInstancePortStates(apiObjects []*lightsail.InstancePortState) []interface{} { +func flattenInstancePortStates(apiObjects []types.InstancePortState) []interface{} { if len(apiObjects) == 0 { return nil } @@ -271,12 +268,22 @@ func flattenInstancePortStates(apiObjects []*lightsail.InstancePortState) []inte var tfList []interface{} for _, apiObject := range apiObjects { - if apiObject == nil { - continue - } + // if apiObject == nil { + // continue + // } tfList = append(tfList, flattenInstancePortState(apiObject)) } return tfList } + +func flattenNetworkProtocolValues(t []types.NetworkProtocol) []string { + var out []string + + for _, v := range t { + out = append(out, string(v)) + } + + return out +} From 95d428858a89ca252a8b44619b596a379ed455b9 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:43:26 -0400 Subject: [PATCH 30/81] lightsail: Amend instance_public_ports_test, migrate resource to aws-go-sdk-v2 --- .../lightsail/instance_public_ports_test.go | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/internal/service/lightsail/instance_public_ports_test.go b/internal/service/lightsail/instance_public_ports_test.go index 337f13837f54..a1b3af47f351 100644 --- a/internal/service/lightsail/instance_public_ports_test.go +++ b/internal/service/lightsail/instance_public_ports_test.go @@ -5,14 +5,15 @@ import ( "fmt" "testing" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" - "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/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/types" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "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/errs" tflightsail "github.com/hashicorp/terraform-provider-aws/internal/service/lightsail" ) @@ -24,10 +25,10 @@ func TestAccLightsailInstancePublicPorts_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstancePublicPortsDestroy(ctx), Steps: []resource.TestStep{ @@ -55,10 +56,10 @@ func TestAccLightsailInstancePublicPorts_multiple(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstancePublicPortsDestroy(ctx), Steps: []resource.TestStep{ @@ -91,10 +92,10 @@ func TestAccLightsailInstancePublicPorts_cidrs(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstancePublicPortsDestroy(ctx), Steps: []resource.TestStep{ @@ -125,10 +126,10 @@ func TestAccLightsailInstancePublicPorts_cidrListAliases(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstancePublicPortsDestroy(ctx), Steps: []resource.TestStep{ @@ -158,10 +159,10 @@ func TestAccLightsailInstancePublicPorts_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstancePublicPortsDestroy(ctx), Steps: []resource.TestStep{ @@ -186,10 +187,10 @@ func TestAccLightsailInstancePublicPorts_disappears_Instance(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstancePublicPortsDestroy(ctx), Steps: []resource.TestStep{ @@ -212,13 +213,13 @@ func testAccCheckInstancePublicPortsExists(ctx context.Context, resourceName str return fmt.Errorf("resource not found: %s", resourceName) } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() input := &lightsail.GetInstancePortStatesInput{ InstanceName: aws.String(rs.Primary.Attributes["instance_name"]), } - _, err := conn.GetInstancePortStatesWithContext(ctx, input) + _, err := conn.GetInstancePortStates(ctx, input) if err != nil { return fmt.Errorf("error getting Lightsail Instance Public Ports (%s): %w", rs.Primary.ID, err) @@ -230,7 +231,7 @@ func testAccCheckInstancePublicPortsExists(ctx context.Context, resourceName str func testAccCheckInstancePublicPortsDestroy(ctx context.Context) resource.TestCheckFunc { return func(s *terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() for _, rs := range s.RootModule().Resources { if rs.Type != "aws_lightsail_instance_public_ports" { @@ -241,9 +242,9 @@ func testAccCheckInstancePublicPortsDestroy(ctx context.Context) resource.TestCh InstanceName: aws.String(rs.Primary.Attributes["instance_name"]), } - output, err := conn.GetInstancePortStatesWithContext(ctx, input) + output, err := conn.GetInstancePortStates(ctx, input) - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { + if errs.IsA[*types.NotFoundException](err) { continue } From 848a2c82dfe59ff703d99b363f31d0f25195a5b9 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:43:37 -0400 Subject: [PATCH 31/81] lightsail: Amend instance_test, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/instance_test.go | 38 ++++++++++----------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/internal/service/lightsail/instance_test.go b/internal/service/lightsail/instance_test.go index 4caf213e04af..27b1360e42d3 100644 --- a/internal/service/lightsail/instance_test.go +++ b/internal/service/lightsail/instance_test.go @@ -7,7 +7,7 @@ import ( "regexp" "testing" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -36,10 +36,10 @@ func TestAccLightsailInstance_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstanceDestroy(ctx), Steps: []resource.TestStep{ @@ -73,10 +73,10 @@ func TestAccLightsailInstance_name(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstanceDestroy(ctx), Steps: []resource.TestStep{ @@ -130,10 +130,10 @@ func TestAccLightsailInstance_tags(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstanceDestroy(ctx), Steps: []resource.TestStep{ @@ -171,10 +171,10 @@ func TestAccLightsailInstance_IPAddressType(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstanceDestroy(ctx), Steps: []resource.TestStep{ @@ -213,10 +213,10 @@ func TestAccLightsailInstance_addOn(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstanceDestroy(ctx), Steps: []resource.TestStep{ @@ -280,10 +280,10 @@ func TestAccLightsailInstance_availabilityZone(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstanceDestroy(ctx), Steps: []resource.TestStep{ @@ -303,10 +303,10 @@ func TestAccLightsailInstance_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstanceDestroy(ctx), Steps: []resource.TestStep{ @@ -333,7 +333,7 @@ func testAccCheckInstanceExists(ctx context.Context, n string) resource.TestChec return errors.New("No LightsailInstance ID is set") } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() out, err := tflightsail.FindInstanceById(ctx, conn, rs.Primary.ID) @@ -356,7 +356,7 @@ func testAccCheckInstanceDestroy(ctx context.Context) resource.TestCheckFunc { continue } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() _, err := tflightsail.FindInstanceById(ctx, conn, rs.Primary.ID) @@ -376,11 +376,11 @@ func testAccCheckInstanceDestroy(ctx context.Context) resource.TestCheckFunc { } func testAccPreCheck(ctx context.Context, t *testing.T) { - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() input := &lightsail.GetInstancesInput{} - _, err := conn.GetInstancesWithContext(ctx, input) + _, err := conn.GetInstances(ctx, input) if acctest.PreCheckSkipError(err) { t.Skipf("skipping acceptance testing: %s", err) From 0ee78dff1e04f22dd76b9252285f7eb94802d9a7 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:43:47 -0400 Subject: [PATCH 32/81] lightsail: Amend key_pair, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/key_pair.go | 31 +++++++++++++------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/internal/service/lightsail/key_pair.go b/internal/service/lightsail/key_pair.go index 478442512b6e..4914f8d8f6ea 100644 --- a/internal/service/lightsail/key_pair.go +++ b/internal/service/lightsail/key_pair.go @@ -7,13 +7,14 @@ import ( "log" "strings" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" - "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/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/id" "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" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" "github.com/hashicorp/terraform-provider-aws/internal/vault/helper/pgpkeys" ) @@ -88,7 +89,7 @@ func ResourceKeyPair() *schema.Resource { func resourceKeyPairCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() var kName string if v, ok := d.GetOk("name"); ok { @@ -100,14 +101,14 @@ func resourceKeyPairCreate(ctx context.Context, d *schema.ResourceData, meta int } var pubKey string - var op *lightsail.Operation + var op *types.Operation if pubKeyInterface, ok := d.GetOk("public_key"); ok { pubKey = pubKeyInterface.(string) } if pubKey == "" { // creating new key - resp, err := conn.CreateKeyPairWithContext(ctx, &lightsail.CreateKeyPairInput{ + resp, err := conn.CreateKeyPair(ctx, &lightsail.CreateKeyPairInput{ KeyPairName: aws.String(kName), }) if err != nil { @@ -132,7 +133,7 @@ func resourceKeyPairCreate(ctx context.Context, d *schema.ResourceData, meta int return sdkdiag.AppendErrorf(diags, "creating Lightsail Key Pair (%s): %s", kName, err) } if pgpKey != "" { - fingerprint, encrypted, err := encryptValue(pgpKey, aws.StringValue(resp.PrivateKeyBase64), "Lightsail Private Key") + fingerprint, encrypted, err := encryptValue(pgpKey, aws.ToString(resp.PrivateKeyBase64), "Lightsail Private Key") if err != nil { return sdkdiag.AppendErrorf(diags, "creating Lightsail Key Pair (%s): %s", kName, err) } @@ -146,7 +147,7 @@ func resourceKeyPairCreate(ctx context.Context, d *schema.ResourceData, meta int op = resp.Operation } else { // importing key - resp, err := conn.ImportKeyPairWithContext(ctx, &lightsail.ImportKeyPairInput{ + resp, err := conn.ImportKeyPair(ctx, &lightsail.ImportKeyPairInput{ KeyPairName: aws.String(kName), PublicKeyBase64: aws.String(pubKey), }) @@ -159,7 +160,7 @@ func resourceKeyPairCreate(ctx context.Context, d *schema.ResourceData, meta int op = resp.Operation } - diag := expandOperations(ctx, conn, []*lightsail.Operation{op}, "CreateKeyPair", ResKeyPair, kName) + diag := expandOperations(ctx, conn, []types.Operation{*op}, "CreateKeyPair", ResKeyPair, kName) if diag != nil { return diag @@ -170,14 +171,14 @@ func resourceKeyPairCreate(ctx context.Context, d *schema.ResourceData, meta int func resourceKeyPairRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() - resp, err := conn.GetKeyPairWithContext(ctx, &lightsail.GetKeyPairInput{ + resp, err := conn.GetKeyPair(ctx, &lightsail.GetKeyPairInput{ KeyPairName: aws.String(d.Id()), }) if err != nil { - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { + if errs.IsA[*types.NotFoundException](err) { log.Printf("[WARN] Lightsail KeyPair (%s) not found, removing from state", d.Id()) d.SetId("") return diags @@ -194,8 +195,8 @@ func resourceKeyPairRead(ctx context.Context, d *schema.ResourceData, meta inter func resourceKeyPairDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).LightsailConn() - resp, err := conn.DeleteKeyPairWithContext(ctx, &lightsail.DeleteKeyPairInput{ + conn := meta.(*conns.AWSClient).LightsailClient() + resp, err := conn.DeleteKeyPair(ctx, &lightsail.DeleteKeyPairInput{ KeyPairName: aws.String(d.Id()), }) @@ -203,7 +204,7 @@ func resourceKeyPairDelete(ctx context.Context, d *schema.ResourceData, meta int return sdkdiag.AppendErrorf(diags, "deleting Lightsail Key Pair (%s): %s", d.Id(), err) } - diag := expandOperations(ctx, conn, []*lightsail.Operation{resp.Operation}, "DeleteKeyPair", ResKeyPair, d.Id()) + diag := expandOperations(ctx, conn, []types.Operation{*resp.Operation}, "DeleteKeyPair", ResKeyPair, d.Id()) if diag != nil { return diag From 469ffc8d4e4ff97f2a09f054f3a7985de5ed5ea4 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:44:02 -0400 Subject: [PATCH 33/81] lightsail: Amend key_pair_test, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/key_pair_test.go | 43 +++++++++------------ 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/internal/service/lightsail/key_pair_test.go b/internal/service/lightsail/key_pair_test.go index 216e57f51773..af9dbb422f8e 100644 --- a/internal/service/lightsail/key_pair_test.go +++ b/internal/service/lightsail/key_pair_test.go @@ -6,33 +6,33 @@ import ( "fmt" "testing" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" - "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/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/types" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "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/errs" ) func TestAccLightsailKeyPair_basic(t *testing.T) { ctx := acctest.Context(t) - var conf lightsail.KeyPair rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_key_pair.test" resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckKeyPairDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccKeyPairConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckKeyPairExists(ctx, resourceName, &conf), + testAccCheckKeyPairExists(ctx, resourceName), resource.TestCheckResourceAttrSet(resourceName, "arn"), resource.TestCheckResourceAttrSet(resourceName, "fingerprint"), resource.TestCheckResourceAttrSet(resourceName, "public_key"), @@ -45,7 +45,6 @@ func TestAccLightsailKeyPair_basic(t *testing.T) { func TestAccLightsailKeyPair_publicKey(t *testing.T) { ctx := acctest.Context(t) - var conf lightsail.KeyPair rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_key_pair.test" @@ -57,14 +56,14 @@ func TestAccLightsailKeyPair_publicKey(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckKeyPairDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccKeyPairConfig_imported(rName, publicKey), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckKeyPairExists(ctx, resourceName, &conf), + testAccCheckKeyPairExists(ctx, resourceName), resource.TestCheckResourceAttrSet(resourceName, "arn"), resource.TestCheckResourceAttrSet(resourceName, "fingerprint"), resource.TestCheckResourceAttrSet(resourceName, "public_key"), @@ -79,21 +78,20 @@ func TestAccLightsailKeyPair_publicKey(t *testing.T) { func TestAccLightsailKeyPair_encrypted(t *testing.T) { ctx := acctest.Context(t) - var conf lightsail.KeyPair rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_key_pair.test" resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckKeyPairDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccKeyPairConfig_encrypted(rName, testKeyPairPubKey1), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckKeyPairExists(ctx, resourceName, &conf), + testAccCheckKeyPairExists(ctx, resourceName), resource.TestCheckResourceAttrSet(resourceName, "arn"), resource.TestCheckResourceAttrSet(resourceName, "fingerprint"), resource.TestCheckResourceAttrSet(resourceName, "encrypted_fingerprint"), @@ -108,19 +106,17 @@ func TestAccLightsailKeyPair_encrypted(t *testing.T) { func TestAccLightsailKeyPair_namePrefix(t *testing.T) { ctx := acctest.Context(t) - var conf1, conf2 lightsail.KeyPair - resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckKeyPairDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccKeyPairConfig_prefixed(), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckKeyPairExists(ctx, "aws_lightsail_key_pair.lightsail_key_pair_test_omit", &conf1), - testAccCheckKeyPairExists(ctx, "aws_lightsail_key_pair.lightsail_key_pair_test_prefixed", &conf2), + testAccCheckKeyPairExists(ctx, "aws_lightsail_key_pair.lightsail_key_pair_test_omit"), + testAccCheckKeyPairExists(ctx, "aws_lightsail_key_pair.lightsail_key_pair_test_prefixed"), resource.TestCheckResourceAttrSet("aws_lightsail_key_pair.lightsail_key_pair_test_omit", "name"), resource.TestCheckResourceAttrSet("aws_lightsail_key_pair.lightsail_key_pair_test_prefixed", "name"), ), @@ -129,7 +125,7 @@ func TestAccLightsailKeyPair_namePrefix(t *testing.T) { }) } -func testAccCheckKeyPairExists(ctx context.Context, n string, res *lightsail.KeyPair) resource.TestCheckFunc { +func testAccCheckKeyPairExists(ctx context.Context, n string) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] if !ok { @@ -140,9 +136,9 @@ func testAccCheckKeyPairExists(ctx context.Context, n string, res *lightsail.Key return errors.New("No LightsailKeyPair set") } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() - respKeyPair, err := conn.GetKeyPairWithContext(ctx, &lightsail.GetKeyPairInput{ + respKeyPair, err := conn.GetKeyPair(ctx, &lightsail.GetKeyPairInput{ KeyPairName: aws.String(rs.Primary.Attributes["name"]), }) @@ -153,7 +149,6 @@ func testAccCheckKeyPairExists(ctx context.Context, n string, res *lightsail.Key if respKeyPair == nil || respKeyPair.KeyPair == nil { return fmt.Errorf("KeyPair (%s) not found", rs.Primary.Attributes["name"]) } - *res = *respKeyPair.KeyPair return nil } } @@ -165,13 +160,13 @@ func testAccCheckKeyPairDestroy(ctx context.Context) resource.TestCheckFunc { continue } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() - respKeyPair, err := conn.GetKeyPairWithContext(ctx, &lightsail.GetKeyPairInput{ + respKeyPair, err := conn.GetKeyPair(ctx, &lightsail.GetKeyPairInput{ KeyPairName: aws.String(rs.Primary.Attributes["name"]), }) - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { + if errs.IsA[*types.NotFoundException](err) { continue } From 9308aff893a957ab28f5e18b9d436219bc72ee39 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:44:15 -0400 Subject: [PATCH 34/81] lightsail: Amend lb, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/lb.go | 63 +++++++++++++++++++++++--------- 1 file changed, 45 insertions(+), 18 deletions(-) diff --git a/internal/service/lightsail/lb.go b/internal/service/lightsail/lb.go index 63833b6ab445..a21bf6f5d2ff 100644 --- a/internal/service/lightsail/lb.go +++ b/internal/service/lightsail/lb.go @@ -5,13 +5,16 @@ import ( "regexp" "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/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/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/internal/verify" @@ -95,11 +98,11 @@ func ResourceLoadBalancer() *schema.Resource { } func resourceLoadBalancerCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() lbName := d.Get("name").(string) in := lightsail.CreateLoadBalancerInput{ - InstancePort: aws.Int64(int64(d.Get("instance_port").(int))), + InstancePort: int32(d.Get("instance_port").(int)), LoadBalancerName: aws.String(lbName), Tags: GetTagsIn(ctx), } @@ -108,13 +111,13 @@ func resourceLoadBalancerCreate(ctx context.Context, d *schema.ResourceData, met in.HealthCheckPath = aws.String(d.Get("health_check_path").(string)) } - out, err := conn.CreateLoadBalancerWithContext(ctx, &in) + out, err := conn.CreateLoadBalancer(ctx, &in) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeCreateLoadBalancer, ResLoadBalancer, lbName, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeCreateLoadBalancer), ResLoadBalancer, lbName, err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeCreateLoadBalancer, ResLoadBalancer, lbName) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeCreateLoadBalancer, ResLoadBalancer, lbName) if diag != nil { return diag @@ -126,9 +129,9 @@ func resourceLoadBalancerCreate(ctx context.Context, d *schema.ResourceData, met } func resourceLoadBalancerRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() - lb, err := FindLoadBalancerByName(ctx, conn, d.Id()) + lb, err := FindLoadBalancerById(ctx, conn, d.Id()) if !d.IsNewResource() && tfresource.NotFound(err) { create.LogNotFoundRemoveState(names.Lightsail, create.ErrActionReading, ResLoadBalancer, d.Id()) @@ -157,7 +160,7 @@ func resourceLoadBalancerRead(ctx context.Context, d *schema.ResourceData, meta } func resourceLoadBalancerUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() lbName := d.Get("name").(string) in := &lightsail.UpdateLoadBalancerAttributeInput{ @@ -166,16 +169,16 @@ func resourceLoadBalancerUpdate(ctx context.Context, d *schema.ResourceData, met if d.HasChange("health_check_path") { healthCheckIn := in - healthCheckIn.AttributeName = aws.String("HealthCheckPath") + healthCheckIn.AttributeName = types.LoadBalancerAttributeNameHealthCheckPath healthCheckIn.AttributeValue = aws.String(d.Get("health_check_path").(string)) - out, err := conn.UpdateLoadBalancerAttributeWithContext(ctx, healthCheckIn) + out, err := conn.UpdateLoadBalancerAttribute(ctx, healthCheckIn) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancer, lbName, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeUpdateLoadBalancerAttribute), ResLoadBalancer, lbName, err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancer, lbName) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancer, lbName) if diag != nil { return diag @@ -186,18 +189,18 @@ func resourceLoadBalancerUpdate(ctx context.Context, d *schema.ResourceData, met } func resourceLoadBalancerDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() lbName := d.Get("name").(string) - out, err := conn.DeleteLoadBalancerWithContext(ctx, &lightsail.DeleteLoadBalancerInput{ + out, err := conn.DeleteLoadBalancer(ctx, &lightsail.DeleteLoadBalancerInput{ LoadBalancerName: aws.String(d.Id()), }) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeDeleteLoadBalancer, ResLoadBalancer, lbName, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeDeleteLoadBalancer), ResLoadBalancer, lbName, err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeDeleteLoadBalancer, ResLoadBalancer, lbName) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeDeleteLoadBalancer, ResLoadBalancer, lbName) if diag != nil { return diag @@ -205,3 +208,27 @@ func resourceLoadBalancerDelete(ctx context.Context, d *schema.ResourceData, met return nil } + +func FindLoadBalancerById(ctx context.Context, conn *lightsail.Client, name string) (*types.LoadBalancer, error) { + in := &lightsail.GetLoadBalancerInput{LoadBalancerName: aws.String(name)} + out, err := conn.GetLoadBalancer(ctx, in) + + if errs.IsA[*types.NotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: in, + } + } + + if err != nil { + return nil, err + } + + if out == nil || out.LoadBalancer == nil { + return nil, tfresource.NewEmptyResultError(in) + } + + lb := out.LoadBalancer + + return lb, nil +} From 954e624dd38f38d6a8c2fcfede8c94d7754f0c14 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:44:25 -0400 Subject: [PATCH 35/81] lightsail: Amend lb_attachment, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/lb_attachment.go | 71 +++++++++++++++++---- 1 file changed, 58 insertions(+), 13 deletions(-) diff --git a/internal/service/lightsail/lb_attachment.go b/internal/service/lightsail/lb_attachment.go index 118409934c41..c1f732d912cb 100644 --- a/internal/service/lightsail/lb_attachment.go +++ b/internal/service/lightsail/lb_attachment.go @@ -2,16 +2,20 @@ package lightsail import ( "context" + "errors" "regexp" "strings" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/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/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -48,20 +52,20 @@ func ResourceLoadBalancerAttachment() *schema.Resource { } func resourceLoadBalancerAttachmentCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() lbName := d.Get("lb_name").(string) req := lightsail.AttachInstancesToLoadBalancerInput{ LoadBalancerName: aws.String(lbName), - InstanceNames: aws.StringSlice([]string{d.Get("instance_name").(string)}), + InstanceNames: []string{d.Get("instance_name").(string)}, } - out, err := conn.AttachInstancesToLoadBalancerWithContext(ctx, &req) + out, err := conn.AttachInstancesToLoadBalancer(ctx, &req) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeAttachInstancesToLoadBalancer, ResLoadBalancerAttachment, lbName, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeAttachInstancesToLoadBalancer), ResLoadBalancerAttachment, lbName, err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeAttachInstancesToLoadBalancer, ResLoadBalancerAttachment, lbName) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeAttachInstancesToLoadBalancer, ResLoadBalancerAttachment, lbName) if diag != nil { return diag @@ -79,7 +83,7 @@ func resourceLoadBalancerAttachmentCreate(ctx context.Context, d *schema.Resourc } func resourceLoadBalancerAttachmentRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() out, err := FindLoadBalancerAttachmentById(ctx, conn, d.Id()) @@ -100,7 +104,7 @@ func resourceLoadBalancerAttachmentRead(ctx context.Context, d *schema.ResourceD } func resourceLoadBalancerAttachmentDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() id_parts := strings.SplitN(d.Id(), ",", -1) if len(id_parts) != 2 { @@ -112,16 +116,16 @@ func resourceLoadBalancerAttachmentDelete(ctx context.Context, d *schema.Resourc in := lightsail.DetachInstancesFromLoadBalancerInput{ LoadBalancerName: aws.String(lbName), - InstanceNames: aws.StringSlice([]string{iName}), + InstanceNames: []string{iName}, } - out, err := conn.DetachInstancesFromLoadBalancerWithContext(ctx, &in) + out, err := conn.DetachInstancesFromLoadBalancer(ctx, &in) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeDetachInstancesFromLoadBalancer, ResLoadBalancerAttachment, lbName, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeDetachInstancesFromLoadBalancer), ResLoadBalancerAttachment, lbName, err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeDetachInstancesFromLoadBalancer, ResLoadBalancerAttachment, lbName) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeDetachInstancesFromLoadBalancer, ResLoadBalancerAttachment, lbName) if diag != nil { return diag @@ -136,3 +140,44 @@ func expandLoadBalancerNameFromId(id string) string { return lbName } + +func FindLoadBalancerAttachmentById(ctx context.Context, conn *lightsail.Client, id string) (*string, error) { + id_parts := strings.SplitN(id, ",", -1) + if len(id_parts) != 2 { + return nil, errors.New("invalid load balancer attachment id") + } + + lbName := id_parts[0] + iName := id_parts[1] + + in := &lightsail.GetLoadBalancerInput{LoadBalancerName: aws.String(lbName)} + out, err := conn.GetLoadBalancer(ctx, in) + + if errs.IsA[*types.NotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: in, + } + } + + if err != nil { + return nil, err + } + + var entry *string + entryExists := false + + for _, n := range out.LoadBalancer.InstanceHealthSummary { + if iName == aws.ToString(n.InstanceName) { + entry = n.InstanceName + entryExists = true + break + } + } + + if !entryExists { + return nil, tfresource.NewEmptyResultError(in) + } + + return entry, nil +} From b3849e6e3c1c70efbf5b2968ee702b9d293baaf7 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:44:37 -0400 Subject: [PATCH 36/81] lightsail: Amend lb_attachment_test, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/lb_attachment_test.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/internal/service/lightsail/lb_attachment_test.go b/internal/service/lightsail/lb_attachment_test.go index 7daa1845f8a3..78cef8b17ea7 100644 --- a/internal/service/lightsail/lb_attachment_test.go +++ b/internal/service/lightsail/lb_attachment_test.go @@ -6,7 +6,7 @@ import ( "fmt" "testing" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -27,10 +27,10 @@ func testAccLoadBalancerAttachment_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerAttachmentDestroy(ctx), Steps: []resource.TestStep{ @@ -55,10 +55,10 @@ func testAccLoadBalancerAttachment_disappears(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerAttachmentDestroy(ctx), Steps: []resource.TestStep{ @@ -85,7 +85,7 @@ func testAccCheckLoadBalancerAttachmentExists(ctx context.Context, n string, liN return errors.New("No LightsailLoadBalancerAttachment ID is set") } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() out, err := tflightsail.FindLoadBalancerAttachmentById(ctx, conn, rs.Primary.ID) @@ -110,7 +110,7 @@ func testAccCheckLoadBalancerAttachmentDestroy(ctx context.Context) resource.Tes continue } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() _, err := tflightsail.FindLoadBalancerAttachmentById(ctx, conn, rs.Primary.ID) From 0922f92e5725e68e14766d177cdc3013d1872130 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:44:58 -0400 Subject: [PATCH 37/81] lightsail: Amend lb_certificate, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/lb_certificate.go | 81 +++++++++++++++----- 1 file changed, 63 insertions(+), 18 deletions(-) diff --git a/internal/service/lightsail/lb_certificate.go b/internal/service/lightsail/lb_certificate.go index 030b104e7dc7..41f8f507c1ef 100644 --- a/internal/service/lightsail/lb_certificate.go +++ b/internal/service/lightsail/lb_certificate.go @@ -2,19 +2,23 @@ package lightsail import ( "context" + "errors" "fmt" "regexp" "strings" "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/types" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff" + "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/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -138,7 +142,7 @@ func ResourceLoadBalancerCertificate() *schema.Resource { } func resourceLoadBalancerCertificateCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() certName := d.Get("name").(string) in := lightsail.CreateLoadBalancerTlsCertificateInput{ CertificateDomainName: aws.String(d.Get("domain_name").(string)), @@ -147,16 +151,16 @@ func resourceLoadBalancerCertificateCreate(ctx context.Context, d *schema.Resour } if v, ok := d.GetOk("subject_alternative_names"); ok { - in.CertificateAlternativeNames = aws.StringSlice(expandSubjectAlternativeNames(v)) + in.CertificateAlternativeNames = expandSubjectAlternativeNames(v) } - out, err := conn.CreateLoadBalancerTlsCertificateWithContext(ctx, &in) + out, err := conn.CreateLoadBalancerTlsCertificate(ctx, &in) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeCreateLoadBalancerTlsCertificate, ResLoadBalancerCertificate, certName, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeCreateLoadBalancerTlsCertificate), ResLoadBalancerCertificate, certName, err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeCreateLoadBalancerTlsCertificate, ResLoadBalancerCertificate, certName) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeCreateLoadBalancerTlsCertificate, ResLoadBalancerCertificate, certName) if diag != nil { return diag @@ -174,7 +178,7 @@ func resourceLoadBalancerCertificateCreate(ctx context.Context, d *schema.Resour } func resourceLoadBalancerCertificateRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() out, err := FindLoadBalancerCertificateById(ctx, conn, d.Id()) @@ -194,29 +198,29 @@ func resourceLoadBalancerCertificateRead(ctx context.Context, d *schema.Resource d.Set("domain_validation_records", flattenLoadBalancerDomainValidationRecords(out.DomainValidationRecords)) d.Set("lb_name", out.LoadBalancerName) d.Set("name", out.Name) - d.Set("subject_alternative_names", aws.StringValueSlice(out.SubjectAlternativeNames)) + d.Set("subject_alternative_names", out.SubjectAlternativeNames) d.Set("support_code", out.SupportCode) return nil } func resourceLoadBalancerCertificateDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() id_parts := strings.SplitN(d.Id(), ",", -1) lbName := id_parts[0] certName := id_parts[1] - out, err := conn.DeleteLoadBalancerTlsCertificateWithContext(ctx, &lightsail.DeleteLoadBalancerTlsCertificateInput{ + out, err := conn.DeleteLoadBalancerTlsCertificate(ctx, &lightsail.DeleteLoadBalancerTlsCertificateInput{ CertificateName: aws.String(certName), LoadBalancerName: aws.String(lbName), }) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeDeleteLoadBalancerTlsCertificate, ResLoadBalancerCertificate, certName, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeDeleteLoadBalancerTlsCertificate), ResLoadBalancerCertificate, certName, err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeDeleteLoadBalancerTlsCertificate, ResLoadBalancerCertificate, certName) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeDeleteLoadBalancerTlsCertificate, ResLoadBalancerCertificate, certName) if diag != nil { return diag @@ -225,18 +229,59 @@ func resourceLoadBalancerCertificateDelete(ctx context.Context, d *schema.Resour return nil } -func flattenLoadBalancerDomainValidationRecords(domainValidationRecords []*lightsail.LoadBalancerTlsCertificateDomainValidationRecord) []map[string]interface{} { +func flattenLoadBalancerDomainValidationRecords(domainValidationRecords []types.LoadBalancerTlsCertificateDomainValidationRecord) []map[string]interface{} { var domainValidationResult []map[string]interface{} for _, o := range domainValidationRecords { validationOption := map[string]interface{}{ - "domain_name": aws.StringValue(o.DomainName), - "resource_record_name": aws.StringValue(o.Name), - "resource_record_type": aws.StringValue(o.Type), - "resource_record_value": aws.StringValue(o.Value), + "domain_name": aws.ToString(o.DomainName), + "resource_record_name": aws.ToString(o.Name), + "resource_record_type": aws.ToString(o.Type), + "resource_record_value": aws.ToString(o.Value), } domainValidationResult = append(domainValidationResult, validationOption) } return domainValidationResult } + +func FindLoadBalancerCertificateById(ctx context.Context, conn *lightsail.Client, id string) (*types.LoadBalancerTlsCertificate, error) { + id_parts := strings.SplitN(id, ",", -1) + if len(id_parts) != 2 { + return nil, errors.New("invalid load balancer certificate id") + } + + lbName := id_parts[0] + cName := id_parts[1] + + in := &lightsail.GetLoadBalancerTlsCertificatesInput{LoadBalancerName: aws.String(lbName)} + out, err := conn.GetLoadBalancerTlsCertificates(ctx, in) + + if errs.IsA[*types.NotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: in, + } + } + + if err != nil { + return nil, err + } + + var entry *types.LoadBalancerTlsCertificate + entryExists := false + + for _, n := range out.TlsCertificates { + if cName == aws.ToString(n.Name) { + entry = &n + entryExists = true + break + } + } + + if !entryExists { + return nil, tfresource.NewEmptyResultError(in) + } + + return entry, nil +} From 24789bafa0b062ccb23732196a06d20d3f1b5440 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:45:20 -0400 Subject: [PATCH 38/81] lightsail: Amend lb_certificate_attachment, migrate resource to aws-go-sdk-v2 --- .../lightsail/lb_certificate_attachment.go | 59 ++++++++++++++++--- 1 file changed, 52 insertions(+), 7 deletions(-) diff --git a/internal/service/lightsail/lb_certificate_attachment.go b/internal/service/lightsail/lb_certificate_attachment.go index 74cc5cb12d45..ce6c9a2690d3 100644 --- a/internal/service/lightsail/lb_certificate_attachment.go +++ b/internal/service/lightsail/lb_certificate_attachment.go @@ -2,17 +2,21 @@ package lightsail import ( "context" + "errors" "log" "regexp" "strings" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/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/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -49,20 +53,20 @@ func ResourceLoadBalancerCertificateAttachment() *schema.Resource { } func resourceLoadBalancerCertificateAttachmentCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() certName := d.Get("certificate_name").(string) req := lightsail.AttachLoadBalancerTlsCertificateInput{ LoadBalancerName: aws.String(d.Get("lb_name").(string)), CertificateName: aws.String(certName), } - out, err := conn.AttachLoadBalancerTlsCertificateWithContext(ctx, &req) + out, err := conn.AttachLoadBalancerTlsCertificate(ctx, &req) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeAttachLoadBalancerTlsCertificate, ResLoadBalancerCertificateAttachment, certName, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeAttachLoadBalancerTlsCertificate), ResLoadBalancerCertificateAttachment, certName, err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeAttachLoadBalancerTlsCertificate, ResLoadBalancerCertificateAttachment, certName) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeAttachLoadBalancerTlsCertificate, ResLoadBalancerCertificateAttachment, certName) if diag != nil { return diag @@ -80,7 +84,7 @@ func resourceLoadBalancerCertificateAttachmentCreate(ctx context.Context, d *sch } func resourceLoadBalancerCertificateAttachmentRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() out, err := FindLoadBalancerCertificateAttachmentById(ctx, conn, d.Id()) @@ -104,3 +108,44 @@ func resourceLoadBalancerCertificateAttachmentDelete(ctx context.Context, d *sch log.Printf("[WARN] Cannot destroy Lightsail Load Balancer Certificate Attachment. Terraform will remove this resource from the state file, however resources may remain.") return nil } + +func FindLoadBalancerCertificateAttachmentById(ctx context.Context, conn *lightsail.Client, id string) (*string, error) { + id_parts := strings.SplitN(id, ",", -1) + if len(id_parts) != 2 { + return nil, errors.New("invalid load balancer certificate attachment id") + } + + lbName := id_parts[0] + cName := id_parts[1] + + in := &lightsail.GetLoadBalancerTlsCertificatesInput{LoadBalancerName: aws.String(lbName)} + out, err := conn.GetLoadBalancerTlsCertificates(ctx, in) + + if errs.IsA[*types.NotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: in, + } + } + + if err != nil { + return nil, err + } + + var entry *string + entryExists := false + + for _, n := range out.TlsCertificates { + if cName == aws.ToString(n.Name) && aws.ToBool(n.IsAttached) { + entry = n.Name + entryExists = true + break + } + } + + if !entryExists { + return nil, tfresource.NewEmptyResultError(in) + } + + return entry, nil +} From d718cb098646907c7be48cceb64539a449ea2df1 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:45:41 -0400 Subject: [PATCH 39/81] lightsail: Amend lb_certificate_attechment_test, migrate resource to aws-go-sdk-v2 --- .../service/lightsail/lb_certificate_attachment_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/service/lightsail/lb_certificate_attachment_test.go b/internal/service/lightsail/lb_certificate_attachment_test.go index 88e69a7e3742..2ecf6a65c1f3 100644 --- a/internal/service/lightsail/lb_certificate_attachment_test.go +++ b/internal/service/lightsail/lb_certificate_attachment_test.go @@ -5,7 +5,7 @@ import ( "regexp" "testing" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/acctest" @@ -20,10 +20,10 @@ func testAccLoadBalancerCertificateAttachment_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerCertificateDestroy(ctx), Steps: []resource.TestStep{ From 23e2a6a158b32167eb993b1b0520ad17a4444463 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:45:56 -0400 Subject: [PATCH 40/81] lightsail: Amend lb_certificate_test, migrate resource to aws-go-sdk-v2 --- .../service/lightsail/lb_certificate_test.go | 38 ++++++++----------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/internal/service/lightsail/lb_certificate_test.go b/internal/service/lightsail/lb_certificate_test.go index 093a2771fa57..b0c9ec9531eb 100644 --- a/internal/service/lightsail/lb_certificate_test.go +++ b/internal/service/lightsail/lb_certificate_test.go @@ -7,7 +7,7 @@ import ( "regexp" "testing" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -21,7 +21,6 @@ import ( func testAccLoadBalancerCertificate_basic(t *testing.T) { ctx := acctest.Context(t) - var certificate lightsail.LoadBalancerTlsCertificate resourceName := "aws_lightsail_lb_certificate.test" rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) lbName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -30,17 +29,17 @@ func testAccLoadBalancerCertificate_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerCertificateDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccLoadBalancerCertificateConfig_basic(rName, lbName, domainName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckLoadBalancerCertificateExists(ctx, resourceName, &certificate), + testAccCheckLoadBalancerCertificateExists(ctx, resourceName), acctest.MatchResourceAttrRegionalARN(resourceName, "arn", "lightsail", regexp.MustCompile(`LoadBalancerTlsCertificate/.+`)), resource.TestCheckResourceAttr(resourceName, "name", rName), resource.TestCheckResourceAttr(resourceName, "domain_name", domainName), @@ -58,7 +57,6 @@ func testAccLoadBalancerCertificate_basic(t *testing.T) { func testAccLoadBalancerCertificate_subjectAlternativeNames(t *testing.T) { ctx := acctest.Context(t) - var certificate lightsail.LoadBalancerTlsCertificate resourceName := "aws_lightsail_lb_certificate.test" rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) lbName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -68,17 +66,17 @@ func testAccLoadBalancerCertificate_subjectAlternativeNames(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerCertificateDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccLoadBalancerCertificateConfig_subjectAlternativeNames(rName, lbName, domainName, subjectAlternativeName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckLoadBalancerCertificateExists(ctx, resourceName, &certificate), + testAccCheckLoadBalancerCertificateExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "subject_alternative_names.#", "2"), resource.TestCheckTypeSetElemAttr(resourceName, "subject_alternative_names.*", subjectAlternativeName), resource.TestCheckTypeSetElemAttr(resourceName, "subject_alternative_names.*", domainName), @@ -90,7 +88,6 @@ func testAccLoadBalancerCertificate_subjectAlternativeNames(t *testing.T) { func testAccLoadBalancerCertificate_domainValidationRecords(t *testing.T) { ctx := acctest.Context(t) - var certificate lightsail.LoadBalancerTlsCertificate resourceName := "aws_lightsail_lb_certificate.test" rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) lbName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -102,17 +99,17 @@ func testAccLoadBalancerCertificate_domainValidationRecords(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerCertificateDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccLoadBalancerCertificateConfig_subjectAlternativeNames(rName, lbName, domainName, subjectAlternativeName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckLoadBalancerCertificateExists(ctx, resourceName, &certificate), + testAccCheckLoadBalancerCertificateExists(ctx, resourceName), resource.TestCheckTypeSetElemNestedAttrs(resourceName, "domain_validation_records.*", map[string]string{ "domain_name": domainName, "resource_record_type": "CNAME", @@ -129,7 +126,6 @@ func testAccLoadBalancerCertificate_domainValidationRecords(t *testing.T) { func testAccLoadBalancerCertificate_disappears(t *testing.T) { ctx := acctest.Context(t) - var certificate lightsail.LoadBalancerTlsCertificate resourceName := "aws_lightsail_lb_certificate.test" rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) lbName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -138,17 +134,17 @@ func testAccLoadBalancerCertificate_disappears(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerCertificateDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccLoadBalancerCertificateConfig_basic(rName, lbName, domainName), Check: resource.ComposeTestCheckFunc( - testAccCheckLoadBalancerCertificateExists(ctx, resourceName, &certificate), + testAccCheckLoadBalancerCertificateExists(ctx, resourceName), acctest.CheckResourceDisappears(ctx, acctest.Provider, tflightsail.ResourceLoadBalancerCertificate(), resourceName), ), ExpectNonEmptyPlan: true, @@ -164,7 +160,7 @@ func testAccCheckLoadBalancerCertificateDestroy(ctx context.Context) resource.Te continue } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() _, err := tflightsail.FindLoadBalancerCertificateById(ctx, conn, rs.Primary.ID) @@ -183,7 +179,7 @@ func testAccCheckLoadBalancerCertificateDestroy(ctx context.Context) resource.Te } } -func testAccCheckLoadBalancerCertificateExists(ctx context.Context, n string, certificate *lightsail.LoadBalancerTlsCertificate) resource.TestCheckFunc { +func testAccCheckLoadBalancerCertificateExists(ctx context.Context, n string) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] if !ok { @@ -194,7 +190,7 @@ func testAccCheckLoadBalancerCertificateExists(ctx context.Context, n string, ce return errors.New("No Certificate ID is set") } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() respCertificate, err := tflightsail.FindLoadBalancerCertificateById(ctx, conn, rs.Primary.ID) @@ -206,8 +202,6 @@ func testAccCheckLoadBalancerCertificateExists(ctx context.Context, n string, ce return fmt.Errorf("Load Balancer Certificate %q does not exist", rs.Primary.ID) } - *certificate = *respCertificate - return nil } } From 519f736e9b1f7fb347cbaf1cf4ec95561d5e5442 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:46:11 -0400 Subject: [PATCH 41/81] lightsail: Amend lb_https_redirection_policy, migrate resource to aws-go-sdk-v2 --- .../lightsail/lb_https_redirection_policy.go | 61 +++++++++++++------ 1 file changed, 43 insertions(+), 18 deletions(-) diff --git a/internal/service/lightsail/lb_https_redirection_policy.go b/internal/service/lightsail/lb_https_redirection_policy.go index a10239c9d7a4..ceb85e765dfa 100644 --- a/internal/service/lightsail/lb_https_redirection_policy.go +++ b/internal/service/lightsail/lb_https_redirection_policy.go @@ -5,13 +5,16 @@ import ( "fmt" "regexp" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/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/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -48,21 +51,21 @@ func ResourceLoadBalancerHTTPSRedirectionPolicy() *schema.Resource { } func resourceLoadBalancerHTTPSRedirectionPolicyCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() lbName := d.Get("lb_name").(string) in := lightsail.UpdateLoadBalancerAttributeInput{ LoadBalancerName: aws.String(lbName), - AttributeName: aws.String(lightsail.LoadBalancerAttributeNameHttpsRedirectionEnabled), + AttributeName: types.LoadBalancerAttributeNameHttpsRedirectionEnabled, AttributeValue: aws.String(fmt.Sprint(d.Get("enabled").(bool))), } - out, err := conn.UpdateLoadBalancerAttributeWithContext(ctx, &in) + out, err := conn.UpdateLoadBalancerAttribute(ctx, &in) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancerHTTPSRedirectionPolicy, lbName, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeUpdateLoadBalancerAttribute), ResLoadBalancerHTTPSRedirectionPolicy, lbName, err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancerHTTPSRedirectionPolicy, lbName) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancerHTTPSRedirectionPolicy, lbName) if diag != nil { return diag @@ -74,7 +77,7 @@ func resourceLoadBalancerHTTPSRedirectionPolicyCreate(ctx context.Context, d *sc } func resourceLoadBalancerHTTPSRedirectionPolicyRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() out, err := FindLoadBalancerHTTPSRedirectionPolicyById(ctx, conn, d.Id()) @@ -95,22 +98,22 @@ func resourceLoadBalancerHTTPSRedirectionPolicyRead(ctx context.Context, d *sche } func resourceLoadBalancerHTTPSRedirectionPolicyUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() lbName := d.Get("lb_name").(string) if d.HasChange("enabled") { in := lightsail.UpdateLoadBalancerAttributeInput{ LoadBalancerName: aws.String(lbName), - AttributeName: aws.String(lightsail.LoadBalancerAttributeNameHttpsRedirectionEnabled), + AttributeName: types.LoadBalancerAttributeNameHttpsRedirectionEnabled, AttributeValue: aws.String(fmt.Sprint(d.Get("enabled").(bool))), } - out, err := conn.UpdateLoadBalancerAttributeWithContext(ctx, &in) + out, err := conn.UpdateLoadBalancerAttribute(ctx, &in) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancerHTTPSRedirectionPolicy, lbName, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeUpdateLoadBalancerAttribute), ResLoadBalancerHTTPSRedirectionPolicy, lbName, err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancerHTTPSRedirectionPolicy, lbName) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancerHTTPSRedirectionPolicy, lbName) if diag != nil { return diag @@ -121,21 +124,21 @@ func resourceLoadBalancerHTTPSRedirectionPolicyUpdate(ctx context.Context, d *sc } func resourceLoadBalancerHTTPSRedirectionPolicyDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() lbName := d.Get("lb_name").(string) in := lightsail.UpdateLoadBalancerAttributeInput{ LoadBalancerName: aws.String(lbName), - AttributeName: aws.String(lightsail.LoadBalancerAttributeNameHttpsRedirectionEnabled), + AttributeName: types.LoadBalancerAttributeNameHttpsRedirectionEnabled, AttributeValue: aws.String("false"), } - out, err := conn.UpdateLoadBalancerAttributeWithContext(ctx, &in) + out, err := conn.UpdateLoadBalancerAttribute(ctx, &in) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancerHTTPSRedirectionPolicy, lbName, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeUpdateLoadBalancerAttribute), ResLoadBalancerHTTPSRedirectionPolicy, lbName, err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancerHTTPSRedirectionPolicy, lbName) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancerHTTPSRedirectionPolicy, lbName) if diag != nil { return diag @@ -143,3 +146,25 @@ func resourceLoadBalancerHTTPSRedirectionPolicyDelete(ctx context.Context, d *sc return nil } + +func FindLoadBalancerHTTPSRedirectionPolicyById(ctx context.Context, conn *lightsail.Client, id string) (*bool, error) { + in := &lightsail.GetLoadBalancerInput{LoadBalancerName: aws.String(id)} + out, err := conn.GetLoadBalancer(ctx, in) + + if errs.IsA[*types.NotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: in, + } + } + + if err != nil { + return nil, err + } + + if out == nil || out.LoadBalancer.HttpsRedirectionEnabled == nil { + return nil, tfresource.NewEmptyResultError(in) + } + + return out.LoadBalancer.HttpsRedirectionEnabled, nil +} From df955ad6500a71c423b30cd1053864a017c0ef11 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:46:27 -0400 Subject: [PATCH 42/81] lightsail: Amend lb_https_redirection_policy_test, migrate resource to aws-go-sdk-v2 --- .../service/lightsail/lb_https_redirection_policy_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/service/lightsail/lb_https_redirection_policy_test.go b/internal/service/lightsail/lb_https_redirection_policy_test.go index d4078bec5786..4a4dbe7c28c0 100644 --- a/internal/service/lightsail/lb_https_redirection_policy_test.go +++ b/internal/service/lightsail/lb_https_redirection_policy_test.go @@ -5,7 +5,7 @@ import ( "regexp" "testing" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/acctest" @@ -19,10 +19,10 @@ func testAccLoadBalancerHTTPSRedirectionPolicy_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerDestroy(ctx), Steps: []resource.TestStep{ From 2262b995e9197530728ab94df1f61192ed2f8d20 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:46:44 -0400 Subject: [PATCH 43/81] lightsail: Amend lb_stickiness_policy, migrate resource to aws-go-sdk-v2 --- .../service/lightsail/lb_stickiness_policy.go | 75 ++++++++++++------- 1 file changed, 50 insertions(+), 25 deletions(-) diff --git a/internal/service/lightsail/lb_stickiness_policy.go b/internal/service/lightsail/lb_stickiness_policy.go index 7977ecf73ab7..42fcf0c5af58 100644 --- a/internal/service/lightsail/lb_stickiness_policy.go +++ b/internal/service/lightsail/lb_stickiness_policy.go @@ -6,13 +6,16 @@ import ( "regexp" "strconv" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/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/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -53,7 +56,7 @@ func ResourceLoadBalancerStickinessPolicy() *schema.Resource { } func resourceLoadBalancerStickinessPolicyCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() lbName := d.Get("lb_name").(string) for _, v := range []string{"enabled", "cookie_duration"} { in := lightsail.UpdateLoadBalancerAttributeInput{ @@ -61,22 +64,22 @@ func resourceLoadBalancerStickinessPolicyCreate(ctx context.Context, d *schema.R } if v == "enabled" { - in.AttributeName = aws.String(lightsail.LoadBalancerAttributeNameSessionStickinessEnabled) + in.AttributeName = types.LoadBalancerAttributeNameSessionStickinessEnabled in.AttributeValue = aws.String(fmt.Sprint(d.Get("enabled").(bool))) } if v == "cookie_duration" { - in.AttributeName = aws.String(lightsail.LoadBalancerAttributeNameSessionStickinessLbCookieDurationSeconds) + in.AttributeName = types.LoadBalancerAttributeNameSessionStickinessLbCookieDurationSeconds in.AttributeValue = aws.String(fmt.Sprint(d.Get("cookie_duration").(int))) } - out, err := conn.UpdateLoadBalancerAttributeWithContext(ctx, &in) + out, err := conn.UpdateLoadBalancerAttribute(ctx, &in) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancerStickinessPolicy, lbName, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeUpdateLoadBalancerAttribute), ResLoadBalancerStickinessPolicy, lbName, err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancerStickinessPolicy, lbName) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancerStickinessPolicy, lbName) if diag != nil { return diag @@ -89,7 +92,7 @@ func resourceLoadBalancerStickinessPolicyCreate(ctx context.Context, d *schema.R } func resourceLoadBalancerStickinessPolicyRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() out, err := FindLoadBalancerStickinessPolicyById(ctx, conn, d.Id()) @@ -103,12 +106,12 @@ func resourceLoadBalancerStickinessPolicyRead(ctx context.Context, d *schema.Res return create.DiagError(names.Lightsail, create.ErrActionReading, ResLoadBalancerStickinessPolicy, d.Id(), err) } - boolValue, err := strconv.ParseBool(*out[lightsail.LoadBalancerAttributeNameSessionStickinessEnabled]) + boolValue, err := strconv.ParseBool(out[string(types.LoadBalancerAttributeNameSessionStickinessEnabled)]) if err != nil { return create.DiagError(names.Lightsail, create.ErrActionReading, ResLoadBalancerStickinessPolicy, d.Id(), err) } - intValue, err := strconv.Atoi(*out[lightsail.LoadBalancerAttributeNameSessionStickinessLbCookieDurationSeconds]) + intValue, err := strconv.Atoi(out[string(types.LoadBalancerAttributeNameSessionStickinessLbCookieDurationSeconds)]) if err != nil { return create.DiagError(names.Lightsail, create.ErrActionReading, ResLoadBalancerStickinessPolicy, d.Id(), err) } @@ -121,22 +124,22 @@ func resourceLoadBalancerStickinessPolicyRead(ctx context.Context, d *schema.Res } func resourceLoadBalancerStickinessPolicyUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() lbName := d.Get("lb_name").(string) if d.HasChange("enabled") { in := lightsail.UpdateLoadBalancerAttributeInput{ LoadBalancerName: aws.String(lbName), - AttributeName: aws.String(lightsail.LoadBalancerAttributeNameSessionStickinessEnabled), + AttributeName: types.LoadBalancerAttributeNameSessionStickinessEnabled, AttributeValue: aws.String(fmt.Sprint(d.Get("enabled").(bool))), } - out, err := conn.UpdateLoadBalancerAttributeWithContext(ctx, &in) + out, err := conn.UpdateLoadBalancerAttribute(ctx, &in) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancerStickinessPolicy, lbName, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeUpdateLoadBalancerAttribute), ResLoadBalancerStickinessPolicy, lbName, err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancerStickinessPolicy, lbName) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancerStickinessPolicy, lbName) if diag != nil { return diag @@ -146,17 +149,17 @@ func resourceLoadBalancerStickinessPolicyUpdate(ctx context.Context, d *schema.R if d.HasChange("cookie_duration") { in := lightsail.UpdateLoadBalancerAttributeInput{ LoadBalancerName: aws.String(lbName), - AttributeName: aws.String(lightsail.LoadBalancerAttributeNameSessionStickinessLbCookieDurationSeconds), + AttributeName: types.LoadBalancerAttributeNameSessionStickinessLbCookieDurationSeconds, AttributeValue: aws.String(fmt.Sprint(d.Get("cookie_duration").(int))), } - out, err := conn.UpdateLoadBalancerAttributeWithContext(ctx, &in) + out, err := conn.UpdateLoadBalancerAttribute(ctx, &in) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancerStickinessPolicy, lbName, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeUpdateLoadBalancerAttribute), ResLoadBalancerStickinessPolicy, lbName, err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancerStickinessPolicy, lbName) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancerStickinessPolicy, lbName) if diag != nil { return diag @@ -167,21 +170,21 @@ func resourceLoadBalancerStickinessPolicyUpdate(ctx context.Context, d *schema.R } func resourceLoadBalancerStickinessPolicyDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() lbName := d.Get("lb_name").(string) in := lightsail.UpdateLoadBalancerAttributeInput{ LoadBalancerName: aws.String(lbName), - AttributeName: aws.String(lightsail.LoadBalancerAttributeNameSessionStickinessEnabled), + AttributeName: types.LoadBalancerAttributeNameSessionStickinessEnabled, AttributeValue: aws.String("false"), } - out, err := conn.UpdateLoadBalancerAttributeWithContext(ctx, &in) + out, err := conn.UpdateLoadBalancerAttribute(ctx, &in) if err != nil { - return create.DiagError(names.Lightsail, lightsail.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancerStickinessPolicy, lbName, err) + return create.DiagError(names.Lightsail, string(types.OperationTypeUpdateLoadBalancerAttribute), ResLoadBalancerStickinessPolicy, lbName, err) } - diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancerStickinessPolicy, lbName) + diag := expandOperations(ctx, conn, out.Operations, types.OperationTypeUpdateLoadBalancerAttribute, ResLoadBalancerStickinessPolicy, lbName) if diag != nil { return diag @@ -189,3 +192,25 @@ func resourceLoadBalancerStickinessPolicyDelete(ctx context.Context, d *schema.R return nil } + +func FindLoadBalancerStickinessPolicyById(ctx context.Context, conn *lightsail.Client, id string) (map[string]string, error) { + in := &lightsail.GetLoadBalancerInput{LoadBalancerName: aws.String(id)} + out, err := conn.GetLoadBalancer(ctx, in) + + if errs.IsA[*types.NotFoundException](err) { + return nil, &retry.NotFoundError{ + LastError: err, + LastRequest: in, + } + } + + if err != nil { + return nil, err + } + + if out == nil || out.LoadBalancer.ConfigurationOptions == nil { + return nil, tfresource.NewEmptyResultError(in) + } + + return out.LoadBalancer.ConfigurationOptions, nil +} From fc947e45a27fae7e2b439938b0171a32a04229ff Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:47:02 -0400 Subject: [PATCH 44/81] lightsail: Amend lb_stickiness_policy_test, migrate resource to aws-go-sdk-v2 --- .../lightsail/lb_stickiness_policy_test.go | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/internal/service/lightsail/lb_stickiness_policy_test.go b/internal/service/lightsail/lb_stickiness_policy_test.go index 61fc215a111d..eb018090d155 100644 --- a/internal/service/lightsail/lb_stickiness_policy_test.go +++ b/internal/service/lightsail/lb_stickiness_policy_test.go @@ -6,7 +6,7 @@ import ( "fmt" "testing" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -25,10 +25,10 @@ func testAccLoadBalancerStickinessPolicy_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerDestroy(ctx), Steps: []resource.TestStep{ @@ -56,10 +56,10 @@ func testAccLoadBalancerStickinessPolicy_cookieDuration(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerDestroy(ctx), Steps: []resource.TestStep{ @@ -97,10 +97,10 @@ func testAccLoadBalancerStickinessPolicy_enabled(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerDestroy(ctx), Steps: []resource.TestStep{ @@ -137,10 +137,10 @@ func testAccLoadBalancerStickinessPolicy_disappears(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerDestroy(ctx), Steps: []resource.TestStep{ @@ -167,7 +167,7 @@ func testAccCheckLoadBalancerStickinessPolicyExists(ctx context.Context, n strin return errors.New("No LightsailLoadBalancerStickinessPolicy ID is set") } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() out, err := tflightsail.FindLoadBalancerStickinessPolicyById(ctx, conn, rs.Primary.ID) From 2b4d587a99078a66af39d977039e49d3734a62a9 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:47:14 -0400 Subject: [PATCH 45/81] lightsail: Amend lb_test, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/lb_test.go | 63 ++++++++++++--------------- 1 file changed, 28 insertions(+), 35 deletions(-) diff --git a/internal/service/lightsail/lb_test.go b/internal/service/lightsail/lb_test.go index 6aa299484ebe..1c1fc39b140f 100644 --- a/internal/service/lightsail/lb_test.go +++ b/internal/service/lightsail/lb_test.go @@ -8,8 +8,8 @@ import ( "testing" "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/lightsail" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" @@ -62,24 +62,23 @@ func TestAccLightsailLoadBalancer_serial(t *testing.T) { } func testAccLoadBalancer_basic(t *testing.T) { ctx := acctest.Context(t) - var lb lightsail.LoadBalancer rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_lb.test" resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccLoadBalancerConfig_basic(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckLoadBalancerExists(ctx, resourceName, &lb), + testAccCheckLoadBalancerExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "health_check_path", "/"), resource.TestCheckResourceAttr(resourceName, "instance_port", "80"), resource.TestCheckResourceAttrSet(resourceName, "dns_name"), @@ -96,7 +95,6 @@ func testAccLoadBalancer_basic(t *testing.T) { func testAccLoadBalancer_name(t *testing.T) { ctx := acctest.Context(t) - var lb lightsail.LoadBalancer rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) lightsailNameWithSpaces := fmt.Sprint(rName, "string with spaces") lightsailNameWithStartingDigit := fmt.Sprintf("01-%s", rName) @@ -106,10 +104,10 @@ func testAccLoadBalancer_name(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerDestroy(ctx), Steps: []resource.TestStep{ @@ -124,7 +122,7 @@ func testAccLoadBalancer_name(t *testing.T) { { Config: testAccLoadBalancerConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckLoadBalancerExists(ctx, resourceName, &lb), + testAccCheckLoadBalancerExists(ctx, resourceName), resource.TestCheckResourceAttrSet(resourceName, "health_check_path"), resource.TestCheckResourceAttrSet(resourceName, "instance_port"), ), @@ -132,7 +130,7 @@ func testAccLoadBalancer_name(t *testing.T) { { Config: testAccLoadBalancerConfig_basic(lightsailNameWithUnderscore), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckLoadBalancerExists(ctx, resourceName, &lb), + testAccCheckLoadBalancerExists(ctx, resourceName), resource.TestCheckResourceAttrSet(resourceName, "health_check_path"), resource.TestCheckResourceAttrSet(resourceName, "instance_port"), ), @@ -143,24 +141,23 @@ func testAccLoadBalancer_name(t *testing.T) { func testAccLoadBalancer_healthCheckPath(t *testing.T) { ctx := acctest.Context(t) - var lb lightsail.LoadBalancer rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_lb.test" resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccLoadBalancerConfig_healthCheckPath(rName, "/"), Check: resource.ComposeTestCheckFunc( - testAccCheckLoadBalancerExists(ctx, resourceName, &lb), + testAccCheckLoadBalancerExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "health_check_path", "/"), ), }, @@ -172,7 +169,7 @@ func testAccLoadBalancer_healthCheckPath(t *testing.T) { { Config: testAccLoadBalancerConfig_healthCheckPath(rName, "/healthcheck"), Check: resource.ComposeTestCheckFunc( - testAccCheckLoadBalancerExists(ctx, resourceName, &lb), + testAccCheckLoadBalancerExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "health_check_path", "/healthcheck"), ), }, @@ -182,24 +179,23 @@ func testAccLoadBalancer_healthCheckPath(t *testing.T) { func testAccLoadBalancer_tags(t *testing.T) { ctx := acctest.Context(t) - var lb1, lb2, lb3 lightsail.LoadBalancer rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_lb.test" resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccLoadBalancerConfig_tags1(rName, "key1", "value1"), Check: resource.ComposeTestCheckFunc( - testAccCheckLoadBalancerExists(ctx, resourceName, &lb1), + testAccCheckLoadBalancerExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "tags.%", "1"), resource.TestCheckResourceAttr(resourceName, "tags.key1", "value1"), ), @@ -212,7 +208,7 @@ func testAccLoadBalancer_tags(t *testing.T) { { Config: testAccLoadBalancerConfig_tags2(rName, "key1", "value1updated", "key2", "value2"), Check: resource.ComposeTestCheckFunc( - testAccCheckLoadBalancerExists(ctx, resourceName, &lb2), + testAccCheckLoadBalancerExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "tags.%", "2"), resource.TestCheckResourceAttr(resourceName, "tags.key1", "value1updated"), resource.TestCheckResourceAttr(resourceName, "tags.key2", "value2"), @@ -221,7 +217,7 @@ func testAccLoadBalancer_tags(t *testing.T) { { Config: testAccLoadBalancerConfig_tags1(rName, "key2", "value2"), Check: resource.ComposeTestCheckFunc( - testAccCheckLoadBalancerExists(ctx, resourceName, &lb3), + testAccCheckLoadBalancerExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "tags.%", "1"), resource.TestCheckResourceAttr(resourceName, "tags.key2", "value2"), ), @@ -230,7 +226,7 @@ func testAccLoadBalancer_tags(t *testing.T) { }) } -func testAccCheckLoadBalancerExists(ctx context.Context, n string, lb *lightsail.LoadBalancer) resource.TestCheckFunc { +func testAccCheckLoadBalancerExists(ctx context.Context, n string) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] if !ok { @@ -241,9 +237,9 @@ func testAccCheckLoadBalancerExists(ctx context.Context, n string, lb *lightsail return errors.New("No LightsailLoadBalancer ID is set") } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() - resp, err := tflightsail.FindLoadBalancerByName(ctx, conn, rs.Primary.ID) + resp, err := tflightsail.FindLoadBalancerById(ctx, conn, rs.Primary.ID) if err != nil { return err @@ -253,22 +249,19 @@ func testAccCheckLoadBalancerExists(ctx context.Context, n string, lb *lightsail return fmt.Errorf("Load Balancer %q does not exist", rs.Primary.ID) } - *lb = *resp - return nil } } func testAccLoadBalancer_disappears(t *testing.T) { ctx := acctest.Context(t) - var lb lightsail.LoadBalancer rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_lb.test" testDestroy := func(*terraform.State) error { // reach out and DELETE the LoadBalancer - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() - _, err := conn.DeleteLoadBalancerWithContext(ctx, &lightsail.DeleteLoadBalancerInput{ + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() + _, err := conn.DeleteLoadBalancer(ctx, &lightsail.DeleteLoadBalancerInput{ LoadBalancerName: aws.String(rName), }) @@ -285,17 +278,17 @@ func testAccLoadBalancer_disappears(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.EndpointsID) + acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccLoadBalancerConfig_basic(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckLoadBalancerExists(ctx, resourceName, &lb), + testAccCheckLoadBalancerExists(ctx, resourceName), testDestroy, ), ExpectNonEmptyPlan: true, @@ -311,9 +304,9 @@ func testAccCheckLoadBalancerDestroy(ctx context.Context) resource.TestCheckFunc continue } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() - _, err := tflightsail.FindLoadBalancerByName(ctx, conn, rs.Primary.ID) + _, err := tflightsail.FindLoadBalancerById(ctx, conn, rs.Primary.ID) if tfresource.NotFound(err) { continue From cf9b5b31ca7cd8c5a3242e06292198a527ef24a2 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:47:24 -0400 Subject: [PATCH 46/81] lightsail: Amend static_ip, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/static_ip.go | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/internal/service/lightsail/static_ip.go b/internal/service/lightsail/static_ip.go index 5a84881355e3..d97056f436c9 100644 --- a/internal/service/lightsail/static_ip.go +++ b/internal/service/lightsail/static_ip.go @@ -4,12 +4,13 @@ import ( "context" "log" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" - "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/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/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" + "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" ) @@ -44,11 +45,11 @@ func ResourceStaticIP() *schema.Resource { func resourceStaticIPCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() name := d.Get("name").(string) log.Printf("[INFO] Allocating Lightsail Static IP: %q", name) - _, err := conn.AllocateStaticIpWithContext(ctx, &lightsail.AllocateStaticIpInput{ + _, err := conn.AllocateStaticIp(ctx, &lightsail.AllocateStaticIpInput{ StaticIpName: aws.String(name), }) if err != nil { @@ -62,15 +63,15 @@ func resourceStaticIPCreate(ctx context.Context, d *schema.ResourceData, meta in func resourceStaticIPRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() name := d.Get("name").(string) log.Printf("[INFO] Reading Lightsail Static IP: %q", name) - out, err := conn.GetStaticIpWithContext(ctx, &lightsail.GetStaticIpInput{ + out, err := conn.GetStaticIp(ctx, &lightsail.GetStaticIpInput{ StaticIpName: aws.String(name), }) if err != nil { - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { + if errs.IsA[*types.NotFoundException](err) { log.Printf("[WARN] Lightsail Static IP (%s) not found, removing from state", d.Id()) d.SetId("") return diags @@ -87,11 +88,11 @@ func resourceStaticIPRead(ctx context.Context, d *schema.ResourceData, meta inte func resourceStaticIPDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() name := d.Get("name").(string) log.Printf("[INFO] Deleting Lightsail Static IP: %q", name) - _, err := conn.ReleaseStaticIpWithContext(ctx, &lightsail.ReleaseStaticIpInput{ + _, err := conn.ReleaseStaticIp(ctx, &lightsail.ReleaseStaticIpInput{ StaticIpName: aws.String(name), }) if err != nil { From 2bdd9edb1d9655dc863359f40cc69d7ac453d4b3 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:47:42 -0400 Subject: [PATCH 47/81] lightsail: Amend static_ip_attachment, migrate resource to aws-go-sdk-v2 --- .../service/lightsail/static_ip_attachment.go | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/internal/service/lightsail/static_ip_attachment.go b/internal/service/lightsail/static_ip_attachment.go index faa470e7da24..37c01ae3e8a7 100644 --- a/internal/service/lightsail/static_ip_attachment.go +++ b/internal/service/lightsail/static_ip_attachment.go @@ -4,12 +4,13 @@ import ( "context" "log" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" - "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/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/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" + "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" ) @@ -41,11 +42,11 @@ func ResourceStaticIPAttachment() *schema.Resource { func resourceStaticIPAttachmentCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() staticIpName := d.Get("static_ip_name").(string) log.Printf("[INFO] Creating Lightsail Static IP Attachment: %q", staticIpName) - _, err := conn.AttachStaticIpWithContext(ctx, &lightsail.AttachStaticIpInput{ + _, err := conn.AttachStaticIp(ctx, &lightsail.AttachStaticIpInput{ StaticIpName: aws.String(staticIpName), InstanceName: aws.String(d.Get("instance_name").(string)), }) @@ -60,15 +61,15 @@ func resourceStaticIPAttachmentCreate(ctx context.Context, d *schema.ResourceDat func resourceStaticIPAttachmentRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() staticIpName := d.Get("static_ip_name").(string) log.Printf("[INFO] Reading Lightsail Static IP Attachment: %q", staticIpName) - out, err := conn.GetStaticIpWithContext(ctx, &lightsail.GetStaticIpInput{ + out, err := conn.GetStaticIp(ctx, &lightsail.GetStaticIpInput{ StaticIpName: aws.String(staticIpName), }) if err != nil { - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { + if errs.IsA[*types.NotFoundException](err) { log.Printf("[WARN] Lightsail Static IP Attachment (%s) not found, removing from state", d.Id()) d.SetId("") return diags @@ -89,10 +90,10 @@ func resourceStaticIPAttachmentRead(ctx context.Context, d *schema.ResourceData, func resourceStaticIPAttachmentDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics - conn := meta.(*conns.AWSClient).LightsailConn() + conn := meta.(*conns.AWSClient).LightsailClient() name := d.Get("static_ip_name").(string) - _, err := conn.DetachStaticIpWithContext(ctx, &lightsail.DetachStaticIpInput{ + _, err := conn.DetachStaticIp(ctx, &lightsail.DetachStaticIpInput{ StaticIpName: aws.String(name), }) if err != nil { From a4b83b5d36bc21273e7f07b2e1a6755f0fd75d9f Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:48:01 -0400 Subject: [PATCH 48/81] lightsail: amend static_ip_attachment_test, migrate resource to aws-go-sdk-v2 --- .../lightsail/static_ip_attachment_test.go | 34 +++++++++---------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/internal/service/lightsail/static_ip_attachment_test.go b/internal/service/lightsail/static_ip_attachment_test.go index 98ed0418ffab..95fb5bfdc4ed 100644 --- a/internal/service/lightsail/static_ip_attachment_test.go +++ b/internal/service/lightsail/static_ip_attachment_test.go @@ -6,33 +6,33 @@ import ( "fmt" "testing" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" - "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/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/types" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "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/errs" ) func TestAccLightsailStaticIPAttachment_basic(t *testing.T) { ctx := acctest.Context(t) - var staticIp lightsail.StaticIp staticIpName := fmt.Sprintf("tf-test-lightsail-%s", sdkacctest.RandString(5)) instanceName := fmt.Sprintf("tf-test-lightsail-%s", sdkacctest.RandString(5)) keypairName := fmt.Sprintf("tf-test-lightsail-%s", sdkacctest.RandString(5)) resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckStaticIPAttachmentDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccStaticIPAttachmentConfig_basic(staticIpName, instanceName, keypairName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckStaticIPAttachmentExists(ctx, "aws_lightsail_static_ip_attachment.test", &staticIp), + testAccCheckStaticIPAttachmentExists(ctx, "aws_lightsail_static_ip_attachment.test"), resource.TestCheckResourceAttrSet("aws_lightsail_static_ip_attachment.test", "ip_address"), ), }, @@ -42,14 +42,13 @@ func TestAccLightsailStaticIPAttachment_basic(t *testing.T) { func TestAccLightsailStaticIPAttachment_disappears(t *testing.T) { ctx := acctest.Context(t) - var staticIp lightsail.StaticIp staticIpName := fmt.Sprintf("tf-test-lightsail-%s", sdkacctest.RandString(5)) instanceName := fmt.Sprintf("tf-test-lightsail-%s", sdkacctest.RandString(5)) keypairName := fmt.Sprintf("tf-test-lightsail-%s", sdkacctest.RandString(5)) staticIpDestroy := func(*terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() - _, err := conn.DetachStaticIpWithContext(ctx, &lightsail.DetachStaticIpInput{ + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() + _, err := conn.DetachStaticIp(ctx, &lightsail.DetachStaticIpInput{ StaticIpName: aws.String(staticIpName), }) @@ -62,14 +61,14 @@ func TestAccLightsailStaticIPAttachment_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckStaticIPAttachmentDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccStaticIPAttachmentConfig_basic(staticIpName, instanceName, keypairName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckStaticIPAttachmentExists(ctx, "aws_lightsail_static_ip_attachment.test", &staticIp), + testAccCheckStaticIPAttachmentExists(ctx, "aws_lightsail_static_ip_attachment.test"), staticIpDestroy, ), ExpectNonEmptyPlan: true, @@ -78,7 +77,7 @@ func TestAccLightsailStaticIPAttachment_disappears(t *testing.T) { }) } -func testAccCheckStaticIPAttachmentExists(ctx context.Context, n string, staticIp *lightsail.StaticIp) resource.TestCheckFunc { +func testAccCheckStaticIPAttachmentExists(ctx context.Context, n string) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] if !ok { @@ -89,9 +88,9 @@ func testAccCheckStaticIPAttachmentExists(ctx context.Context, n string, staticI return errors.New("No Lightsail Static IP Attachment ID is set") } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() - resp, err := conn.GetStaticIpWithContext(ctx, &lightsail.GetStaticIpInput{ + resp, err := conn.GetStaticIp(ctx, &lightsail.GetStaticIpInput{ StaticIpName: aws.String(rs.Primary.ID), }) if err != nil { @@ -106,7 +105,6 @@ func testAccCheckStaticIPAttachmentExists(ctx context.Context, n string, staticI return fmt.Errorf("Static IP (%s) not attached", rs.Primary.ID) } - *staticIp = *resp.StaticIp return nil } } @@ -118,13 +116,13 @@ func testAccCheckStaticIPAttachmentDestroy(ctx context.Context) resource.TestChe continue } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() - resp, err := conn.GetStaticIpWithContext(ctx, &lightsail.GetStaticIpInput{ + resp, err := conn.GetStaticIp(ctx, &lightsail.GetStaticIpInput{ StaticIpName: aws.String(rs.Primary.ID), }) - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { + if errs.IsA[*types.NotFoundException](err) { continue } From ac2d292fa7a9d4625bcddfd40646f5fedbcda266 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:48:16 -0400 Subject: [PATCH 49/81] lightsail: amend static_ip_test, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/static_ip_test.go | 35 ++++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/internal/service/lightsail/static_ip_test.go b/internal/service/lightsail/static_ip_test.go index 2b41c04473a8..a46685c61e8c 100644 --- a/internal/service/lightsail/static_ip_test.go +++ b/internal/service/lightsail/static_ip_test.go @@ -6,31 +6,31 @@ import ( "fmt" "testing" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" - "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/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/types" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "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/errs" ) func TestAccLightsailStaticIP_basic(t *testing.T) { ctx := acctest.Context(t) - var staticIp lightsail.StaticIp staticIpName := fmt.Sprintf("tf-test-lightsail-%s", sdkacctest.RandString(5)) resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckStaticIPDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccStaticIPConfig_basic(staticIpName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckStaticIPExists(ctx, "aws_lightsail_static_ip.test", &staticIp), + testAccCheckStaticIPExists(ctx, "aws_lightsail_static_ip.test"), ), }, }, @@ -39,12 +39,11 @@ func TestAccLightsailStaticIP_basic(t *testing.T) { func TestAccLightsailStaticIP_disappears(t *testing.T) { ctx := acctest.Context(t) - var staticIp lightsail.StaticIp staticIpName := fmt.Sprintf("tf-test-lightsail-%s", sdkacctest.RandString(5)) staticIpDestroy := func(*terraform.State) error { - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() - _, err := conn.ReleaseStaticIpWithContext(ctx, &lightsail.ReleaseStaticIpInput{ + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() + _, err := conn.ReleaseStaticIp(ctx, &lightsail.ReleaseStaticIpInput{ StaticIpName: aws.String(staticIpName), }) @@ -57,14 +56,14 @@ func TestAccLightsailStaticIP_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.EndpointsID), + ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckStaticIPDestroy(ctx), Steps: []resource.TestStep{ { Config: testAccStaticIPConfig_basic(staticIpName), Check: resource.ComposeAggregateTestCheckFunc( - testAccCheckStaticIPExists(ctx, "aws_lightsail_static_ip.test", &staticIp), + testAccCheckStaticIPExists(ctx, "aws_lightsail_static_ip.test"), staticIpDestroy, ), ExpectNonEmptyPlan: true, @@ -73,7 +72,7 @@ func TestAccLightsailStaticIP_disappears(t *testing.T) { }) } -func testAccCheckStaticIPExists(ctx context.Context, n string, staticIp *lightsail.StaticIp) resource.TestCheckFunc { +func testAccCheckStaticIPExists(ctx context.Context, n string) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] if !ok { @@ -84,9 +83,9 @@ func testAccCheckStaticIPExists(ctx context.Context, n string, staticIp *lightsa return errors.New("No Lightsail Static IP ID is set") } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() - resp, err := conn.GetStaticIpWithContext(ctx, &lightsail.GetStaticIpInput{ + resp, err := conn.GetStaticIp(ctx, &lightsail.GetStaticIpInput{ StaticIpName: aws.String(rs.Primary.ID), }) @@ -97,7 +96,7 @@ func testAccCheckStaticIPExists(ctx context.Context, n string, staticIp *lightsa if resp == nil || resp.StaticIp == nil { return fmt.Errorf("Static IP (%s) not found", rs.Primary.ID) } - *staticIp = *resp.StaticIp + return nil } } @@ -109,13 +108,13 @@ func testAccCheckStaticIPDestroy(ctx context.Context) resource.TestCheckFunc { continue } - conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailConn() + conn := acctest.Provider.Meta().(*conns.AWSClient).LightsailClient() - resp, err := conn.GetStaticIpWithContext(ctx, &lightsail.GetStaticIpInput{ + resp, err := conn.GetStaticIp(ctx, &lightsail.GetStaticIpInput{ StaticIpName: aws.String(rs.Primary.ID), }) - if tfawserr.ErrCodeEquals(err, lightsail.ErrCodeNotFoundException) { + if errs.IsA[*types.NotFoundException](err) { continue } From 76371943cbdeba5f0d5e2fa0ebbdc2a3f562319c Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:48:32 -0400 Subject: [PATCH 50/81] lightsail: Amend status, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/status.go | 50 ++++++++++++++-------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/internal/service/lightsail/status.go b/internal/service/lightsail/status.go index 4cba9fb1d71f..6358bf4924d3 100644 --- a/internal/service/lightsail/status.go +++ b/internal/service/lightsail/status.go @@ -6,13 +6,13 @@ import ( "log" "strconv" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/lightsail" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" ) -func statusContainerService(ctx context.Context, conn *lightsail.Lightsail, serviceName string) retry.StateRefreshFunc { +func statusContainerService(ctx context.Context, conn *lightsail.Client, serviceName string) retry.StateRefreshFunc { return func() (interface{}, string, error) { containerService, err := FindContainerServiceByName(ctx, conn, serviceName) @@ -24,11 +24,11 @@ func statusContainerService(ctx context.Context, conn *lightsail.Lightsail, serv return nil, "", err } - return containerService, aws.StringValue(containerService.State), nil + return containerService, string(containerService.State), nil } } -func statusContainerServiceDeploymentVersion(ctx context.Context, conn *lightsail.Lightsail, serviceName string, version int) retry.StateRefreshFunc { +func statusContainerServiceDeploymentVersion(ctx context.Context, conn *lightsail.Client, serviceName string, version int) retry.StateRefreshFunc { return func() (interface{}, string, error) { deployment, err := FindContainerServiceDeploymentByVersion(ctx, conn, serviceName, version) @@ -40,21 +40,21 @@ func statusContainerServiceDeploymentVersion(ctx context.Context, conn *lightsai return nil, "", err } - return deployment, aws.StringValue(deployment.State), nil + return deployment, string(deployment.State), nil } } // statusOperation is a method to check the status of a Lightsail Operation -func statusOperation(ctx context.Context, conn *lightsail.Lightsail, oid *string) retry.StateRefreshFunc { +func statusOperation(ctx context.Context, conn *lightsail.Client, oid *string) retry.StateRefreshFunc { return func() (interface{}, string, error) { input := &lightsail.GetOperationInput{ OperationId: oid, } - oidValue := aws.StringValue(oid) + oidValue := aws.ToString(oid) log.Printf("[DEBUG] Checking if Lightsail Operation (%s) is Completed", oidValue) - output, err := conn.GetOperationWithContext(ctx, input) + output, err := conn.GetOperation(ctx, input) if err != nil { return output, "FAILED", err @@ -64,22 +64,22 @@ func statusOperation(ctx context.Context, conn *lightsail.Lightsail, oid *string return nil, "Failed", fmt.Errorf("Error retrieving Operation info for operation (%s)", oidValue) } - log.Printf("[DEBUG] Lightsail Operation (%s) is currently %q", oidValue, *output.Operation.Status) - return output, *output.Operation.Status, nil + log.Printf("[DEBUG] Lightsail Operation (%s) is currently %q", oidValue, string(output.Operation.Status)) + return output, string(output.Operation.Status), nil } } // statusDatabase is a method to check the status of a Lightsail Relational Database -func statusDatabase(ctx context.Context, conn *lightsail.Lightsail, db *string) retry.StateRefreshFunc { +func statusDatabase(ctx context.Context, conn *lightsail.Client, db *string) retry.StateRefreshFunc { return func() (interface{}, string, error) { input := &lightsail.GetRelationalDatabaseInput{ RelationalDatabaseName: db, } - dbValue := aws.StringValue(db) + dbValue := aws.ToString(db) log.Printf("[DEBUG] Checking if Lightsail Database (%s) is in an available state.", dbValue) - output, err := conn.GetRelationalDatabaseWithContext(ctx, input) + output, err := conn.GetRelationalDatabase(ctx, input) if err != nil { return output, "FAILED", err @@ -95,16 +95,16 @@ func statusDatabase(ctx context.Context, conn *lightsail.Lightsail, db *string) } // statusDatabase is a method to check the status of a Lightsail Relational Database Backup Retention -func statusDatabaseBackupRetention(ctx context.Context, conn *lightsail.Lightsail, db *string) retry.StateRefreshFunc { +func statusDatabaseBackupRetention(ctx context.Context, conn *lightsail.Client, db *string) retry.StateRefreshFunc { return func() (interface{}, string, error) { input := &lightsail.GetRelationalDatabaseInput{ RelationalDatabaseName: db, } - dbValue := aws.StringValue(db) + dbValue := aws.ToString(db) log.Printf("[DEBUG] Checking if Lightsail Database (%s) Backup Retention setting has been updated.", dbValue) - output, err := conn.GetRelationalDatabaseWithContext(ctx, input) + output, err := conn.GetRelationalDatabase(ctx, input) if err != nil { return output, "FAILED", err @@ -114,20 +114,20 @@ func statusDatabaseBackupRetention(ctx context.Context, conn *lightsail.Lightsai return nil, "Failed", fmt.Errorf("Error retrieving Database info for (%s)", dbValue) } - return output, strconv.FormatBool(aws.BoolValue(output.RelationalDatabase.BackupRetentionEnabled)), nil + return output, strconv.FormatBool(aws.ToBool(output.RelationalDatabase.BackupRetentionEnabled)), nil } } -func statusDatabasePubliclyAccessible(ctx context.Context, conn *lightsail.Lightsail, db *string) retry.StateRefreshFunc { +func statusDatabasePubliclyAccessible(ctx context.Context, conn *lightsail.Client, db *string) retry.StateRefreshFunc { return func() (interface{}, string, error) { input := &lightsail.GetRelationalDatabaseInput{ RelationalDatabaseName: db, } - dbValue := aws.StringValue(db) + dbValue := aws.ToString(db) log.Printf("[DEBUG] Checking if Lightsail Database (%s) Backup Retention setting has been updated.", dbValue) - output, err := conn.GetRelationalDatabaseWithContext(ctx, input) + output, err := conn.GetRelationalDatabase(ctx, input) if err != nil { return output, "FAILED", err @@ -137,21 +137,21 @@ func statusDatabasePubliclyAccessible(ctx context.Context, conn *lightsail.Light return nil, "Failed", fmt.Errorf("Error retrieving Database info for (%s)", dbValue) } - return output, strconv.FormatBool(aws.BoolValue(output.RelationalDatabase.PubliclyAccessible)), nil + return output, strconv.FormatBool(aws.ToBool(output.RelationalDatabase.PubliclyAccessible)), nil } } -func statusInstance(ctx context.Context, conn *lightsail.Lightsail, iName *string) retry.StateRefreshFunc { +func statusInstance(ctx context.Context, conn *lightsail.Client, iName *string) retry.StateRefreshFunc { return func() (interface{}, string, error) { in := &lightsail.GetInstanceStateInput{ InstanceName: iName, } - iNameValue := aws.StringValue(iName) + iNameValue := aws.ToString(iName) log.Printf("[DEBUG] Checking if Lightsail Instance (%s) is in a ready state.", iNameValue) - out, err := conn.GetInstanceStateWithContext(ctx, in) + out, err := conn.GetInstanceState(ctx, in) if err != nil { return out, "FAILED", err From f72b9c4af73316ef9427fa96677da8dca58503b8 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:48:45 -0400 Subject: [PATCH 51/81] lightsail: Amend sweep, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/sweep.go | 30 ++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/internal/service/lightsail/sweep.go b/internal/service/lightsail/sweep.go index c59671f39d06..231baa665bfe 100644 --- a/internal/service/lightsail/sweep.go +++ b/internal/service/lightsail/sweep.go @@ -7,8 +7,8 @@ import ( "fmt" "log" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/lightsail" "github.com/hashicorp/go-multierror" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/conns" @@ -38,13 +38,13 @@ func sweepContainerServices(region string) error { if err != nil { return fmt.Errorf("Error getting client: %s", err) } - conn := client.(*conns.AWSClient).LightsailConn() + conn := client.(*conns.AWSClient).LightsailClient() input := &lightsail.GetContainerServicesInput{} var sweeperErrs *multierror.Error sweepResources := make([]sweep.Sweepable, 0) - output, err := conn.GetContainerServicesWithContext(ctx, input) + output, err := conn.GetContainerServices(ctx, input) if sweep.SkipSweepError(err) { log.Printf("[WARN] Skipping Lightsail Container Service sweep for %s: %s", region, err) @@ -62,7 +62,7 @@ func sweepContainerServices(region string) error { r := ResourceContainerService() d := r.Data(nil) - d.SetId(aws.StringValue(service.ContainerServiceName)) + d.SetId(aws.ToString(service.ContainerServiceName)) sweepResources = append(sweepResources, sweep.NewSweepResource(r, d, client)) } @@ -76,7 +76,7 @@ func sweepContainerServices(region string) error { sweeperErrs = multierror.Append(sweeperErrs, fmt.Errorf("error listing Lightsail Container Services for %s: %w", region, err)) } - if err := sweep.SweepOrchestratorWithContext(ctx, sweepResources); err != nil { + if err := sweep.SweepOrchestrator(ctx, sweepResources); err != nil { sweeperErrs = multierror.Append(sweeperErrs, fmt.Errorf("error sweeping Lightsail Container Services for %s: %w", region, err)) } @@ -89,13 +89,13 @@ func sweepInstances(region string) error { if err != nil { return fmt.Errorf("Error getting client: %s", err) } - conn := client.(*conns.AWSClient).LightsailConn() + conn := client.(*conns.AWSClient).LightsailClient() input := &lightsail.GetInstancesInput{} var sweeperErrs *multierror.Error for { - output, err := conn.GetInstancesWithContext(ctx, input) + output, err := conn.GetInstances(ctx, input) if sweep.SkipSweepError(err) { log.Printf("[WARN] Skipping Lightsail Instance sweep for %s: %s", region, err) @@ -107,13 +107,13 @@ func sweepInstances(region string) error { } for _, instance := range output.Instances { - name := aws.StringValue(instance.Name) + name := aws.ToString(instance.Name) input := &lightsail.DeleteInstanceInput{ InstanceName: instance.Name, } log.Printf("[INFO] Deleting Lightsail Instance: %s", name) - _, err := conn.DeleteInstanceWithContext(ctx, input) + _, err := conn.DeleteInstance(ctx, input) if err != nil { sweeperErr := fmt.Errorf("error deleting Lightsail Instance (%s): %s", name, err) @@ -122,7 +122,7 @@ func sweepInstances(region string) error { } } - if aws.StringValue(output.NextPageToken) == "" { + if aws.ToString(output.NextPageToken) == "" { break } @@ -138,12 +138,12 @@ func sweepStaticIPs(region string) error { if err != nil { return fmt.Errorf("Error getting client: %s", err) } - conn := client.(*conns.AWSClient).LightsailConn() + conn := client.(*conns.AWSClient).LightsailClient() input := &lightsail.GetStaticIpsInput{} for { - output, err := conn.GetStaticIpsWithContext(ctx, input) + output, err := conn.GetStaticIps(ctx, input) if err != nil { if sweep.SkipSweepError(err) { log.Printf("[WARN] Skipping Lightsail Static IP sweep for %s: %s", region, err) @@ -158,10 +158,10 @@ func sweepStaticIPs(region string) error { } for _, staticIp := range output.StaticIps { - name := aws.StringValue(staticIp.Name) + name := aws.ToString(staticIp.Name) log.Printf("[INFO] Deleting Lightsail Static IP %s", name) - _, err := conn.ReleaseStaticIpWithContext(ctx, &lightsail.ReleaseStaticIpInput{ + _, err := conn.ReleaseStaticIp(ctx, &lightsail.ReleaseStaticIpInput{ StaticIpName: aws.String(name), }) if err != nil { From 9b81196cb7d6259b8f026085851f3a9dcd55b705 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:48:58 -0400 Subject: [PATCH 52/81] Lightsail: Amend tags_gen, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/tags_gen.go | 30 +++++++++++++------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/internal/service/lightsail/tags_gen.go b/internal/service/lightsail/tags_gen.go index 0932714c8af2..8bbefb96658c 100644 --- a/internal/service/lightsail/tags_gen.go +++ b/internal/service/lightsail/tags_gen.go @@ -5,9 +5,9 @@ import ( "context" "fmt" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" - "github.com/aws/aws-sdk-go/service/lightsail/lightsailiface" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/lightsail" + awstypes "github.com/aws/aws-sdk-go-v2/service/lightsail/types" "github.com/hashicorp/terraform-provider-aws/internal/conns" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/types" @@ -17,11 +17,11 @@ import ( // []*SERVICE.Tag handling // Tags returns lightsail service tags. -func Tags(tags tftags.KeyValueTags) []*lightsail.Tag { - result := make([]*lightsail.Tag, 0, len(tags)) +func Tags(tags tftags.KeyValueTags) []awstypes.Tag { + result := make([]awstypes.Tag, 0, len(tags)) for k, v := range tags.Map() { - tag := &lightsail.Tag{ + tag := awstypes.Tag{ Key: aws.String(k), Value: aws.String(v), } @@ -33,11 +33,11 @@ func Tags(tags tftags.KeyValueTags) []*lightsail.Tag { } // KeyValueTags creates tftags.KeyValueTags from lightsail service tags. -func KeyValueTags(ctx context.Context, tags []*lightsail.Tag) tftags.KeyValueTags { +func KeyValueTags(ctx context.Context, tags []awstypes.Tag) tftags.KeyValueTags { m := make(map[string]*string, len(tags)) for _, tag := range tags { - m[aws.StringValue(tag.Key)] = tag.Value + m[aws.ToString(tag.Key)] = tag.Value } return tftags.New(ctx, m) @@ -45,7 +45,7 @@ func KeyValueTags(ctx context.Context, tags []*lightsail.Tag) tftags.KeyValueTag // GetTagsIn returns lightsail service tags from Context. // nil is returned if there are no input tags. -func GetTagsIn(ctx context.Context) []*lightsail.Tag { +func GetTagsIn(ctx context.Context) []awstypes.Tag { if inContext, ok := tftags.FromContext(ctx); ok { if tags := Tags(inContext.TagsIn.UnwrapOrDefault()); len(tags) > 0 { return tags @@ -56,7 +56,7 @@ func GetTagsIn(ctx context.Context) []*lightsail.Tag { } // SetTagsOut sets lightsail service tags in Context. -func SetTagsOut(ctx context.Context, tags []*lightsail.Tag) { +func SetTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) } @@ -65,7 +65,7 @@ func SetTagsOut(ctx context.Context, tags []*lightsail.Tag) { // UpdateTags updates lightsail service tags. // The identifier is typically the Amazon Resource Name (ARN), although // it may also be a different identifier depending on the service. -func UpdateTags(ctx context.Context, conn lightsailiface.LightsailAPI, identifier string, oldTagsMap, newTagsMap any) error { +func UpdateTags(ctx context.Context, conn *lightsail.Client, identifier string, oldTagsMap, newTagsMap any) error { oldTags := tftags.New(ctx, oldTagsMap) newTags := tftags.New(ctx, newTagsMap) @@ -74,10 +74,10 @@ func UpdateTags(ctx context.Context, conn lightsailiface.LightsailAPI, identifie if len(removedTags) > 0 { input := &lightsail.UntagResourceInput{ ResourceName: aws.String(identifier), - TagKeys: aws.StringSlice(removedTags.Keys()), + TagKeys: removedTags.Keys(), } - _, err := conn.UntagResourceWithContext(ctx, input) + _, err := conn.UntagResource(ctx, input) if err != nil { return fmt.Errorf("untagging resource (%s): %w", identifier, err) @@ -92,7 +92,7 @@ func UpdateTags(ctx context.Context, conn lightsailiface.LightsailAPI, identifie Tags: Tags(updatedTags), } - _, err := conn.TagResourceWithContext(ctx, input) + _, err := conn.TagResource(ctx, input) if err != nil { return fmt.Errorf("tagging resource (%s): %w", identifier, err) @@ -105,5 +105,5 @@ func UpdateTags(ctx context.Context, conn lightsailiface.LightsailAPI, identifie // UpdateTags updates lightsail service tags. // It is called from outside this package. func (p *servicePackage) UpdateTags(ctx context.Context, meta any, identifier string, oldTags, newTags any) error { - return UpdateTags(ctx, meta.(*conns.AWSClient).LightsailConn(), identifier, oldTags, newTags) + return UpdateTags(ctx, meta.(*conns.AWSClient).LightsailClient(), identifier, oldTags, newTags) } From a780009bfdc49a526cd8c7d82c6d6a1b9ec85a7a Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:49:10 -0400 Subject: [PATCH 53/81] lightsail: Amend wait, migrate resource to aws-go-sdk-v2 --- internal/service/lightsail/wait.go | 67 +++++++++++++++--------------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/internal/service/lightsail/wait.go b/internal/service/lightsail/wait.go index 4ae1d7d28099..eaddd9d75a5a 100644 --- a/internal/service/lightsail/wait.go +++ b/internal/service/lightsail/wait.go @@ -7,8 +7,9 @@ import ( "strconv" "time" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/lightsail" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/lightsail" + "github.com/aws/aws-sdk-go-v2/service/lightsail/types" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" ) @@ -35,10 +36,10 @@ const ( ) // waitOperation waits for an Operation to return Succeeded or Completed -func waitOperation(ctx context.Context, conn *lightsail.Lightsail, oid *string) error { +func waitOperation(ctx context.Context, conn *lightsail.Client, oid *string) error { stateConf := &retry.StateChangeConf{ - Pending: []string{lightsail.OperationStatusStarted}, - Target: []string{lightsail.OperationStatusCompleted, lightsail.OperationStatusSucceeded}, + Pending: []string{string(types.OperationStatusStarted)}, + Target: []string{string(types.OperationStatusCompleted), string(types.OperationStatusSucceeded)}, Refresh: statusOperation(ctx, conn, oid), Timeout: OperationTimeout, Delay: OperationDelay, @@ -55,7 +56,7 @@ func waitOperation(ctx context.Context, conn *lightsail.Lightsail, oid *string) } // waitDatabaseModified waits for a Modified Database return available -func waitDatabaseModified(ctx context.Context, conn *lightsail.Lightsail, db *string) (*lightsail.GetRelationalDatabaseOutput, error) { +func waitDatabaseModified(ctx context.Context, conn *lightsail.Client, db *string) (*lightsail.GetRelationalDatabaseOutput, error) { stateConf := &retry.StateChangeConf{ Pending: []string{DatabaseStateModifying}, Target: []string{DatabaseStateAvailable}, @@ -76,7 +77,7 @@ func waitDatabaseModified(ctx context.Context, conn *lightsail.Lightsail, db *st // waitDatabaseBackupRetentionModified waits for a Modified BackupRetention on Database return available -func waitDatabaseBackupRetentionModified(ctx context.Context, conn *lightsail.Lightsail, db *string, target bool) error { +func waitDatabaseBackupRetentionModified(ctx context.Context, conn *lightsail.Client, db *string, target bool) error { stateConf := &retry.StateChangeConf{ Pending: []string{strconv.FormatBool(!target)}, Target: []string{strconv.FormatBool(target)}, @@ -95,7 +96,7 @@ func waitDatabaseBackupRetentionModified(ctx context.Context, conn *lightsail.Li return err } -func waitDatabasePubliclyAccessibleModified(ctx context.Context, conn *lightsail.Lightsail, db *string, target bool) error { +func waitDatabasePubliclyAccessibleModified(ctx context.Context, conn *lightsail.Client, db *string, target bool) error { stateConf := &retry.StateChangeConf{ Pending: []string{strconv.FormatBool(!target)}, Target: []string{strconv.FormatBool(target)}, @@ -114,10 +115,10 @@ func waitDatabasePubliclyAccessibleModified(ctx context.Context, conn *lightsail return err } -func waitContainerServiceCreated(ctx context.Context, conn *lightsail.Lightsail, serviceName string, timeout time.Duration) error { +func waitContainerServiceCreated(ctx context.Context, conn *lightsail.Client, serviceName string, timeout time.Duration) error { stateConf := &retry.StateChangeConf{ - Pending: []string{lightsail.ContainerServiceStatePending}, - Target: []string{lightsail.ContainerServiceStateReady}, + Pending: []string{string(types.ContainerServiceStatePending)}, + Target: []string{string(types.ContainerServiceStateReady)}, Refresh: statusContainerService(ctx, conn, serviceName), Timeout: timeout, Delay: 5 * time.Second, @@ -126,9 +127,9 @@ func waitContainerServiceCreated(ctx context.Context, conn *lightsail.Lightsail, outputRaw, err := stateConf.WaitForStateContext(ctx) - if output, ok := outputRaw.(*lightsail.ContainerService); ok { + if output, ok := outputRaw.(*types.ContainerService); ok { if detail := output.StateDetail; detail != nil { - tfresource.SetLastError(err, fmt.Errorf("%s: %s", aws.StringValue(detail.Code), aws.StringValue(detail.Message))) + tfresource.SetLastError(err, fmt.Errorf("%s: %s", string(detail.Code), aws.ToString(detail.Message))) } return err @@ -137,10 +138,10 @@ func waitContainerServiceCreated(ctx context.Context, conn *lightsail.Lightsail, return err } -func waitContainerServiceDisabled(ctx context.Context, conn *lightsail.Lightsail, serviceName string, timeout time.Duration) error { +func waitContainerServiceDisabled(ctx context.Context, conn *lightsail.Client, serviceName string, timeout time.Duration) error { stateConf := &retry.StateChangeConf{ - Pending: []string{lightsail.ContainerServiceStateUpdating}, - Target: []string{lightsail.ContainerServiceStateDisabled}, + Pending: []string{string(types.ContainerServiceStateUpdating)}, + Target: []string{string(types.ContainerServiceStateDisabled)}, Refresh: statusContainerService(ctx, conn, serviceName), Timeout: timeout, Delay: 5 * time.Second, @@ -149,9 +150,9 @@ func waitContainerServiceDisabled(ctx context.Context, conn *lightsail.Lightsail outputRaw, err := stateConf.WaitForStateContext(ctx) - if output, ok := outputRaw.(*lightsail.ContainerService); ok { + if output, ok := outputRaw.(*types.ContainerService); ok { if detail := output.StateDetail; detail != nil { - tfresource.SetLastError(err, fmt.Errorf("%s: %s", aws.StringValue(detail.Code), aws.StringValue(detail.Message))) + tfresource.SetLastError(err, fmt.Errorf("%s: %s", string(detail.Code), aws.ToString(detail.Message))) } return err @@ -160,10 +161,10 @@ func waitContainerServiceDisabled(ctx context.Context, conn *lightsail.Lightsail return err } -func waitContainerServiceUpdated(ctx context.Context, conn *lightsail.Lightsail, serviceName string, timeout time.Duration) error { +func waitContainerServiceUpdated(ctx context.Context, conn *lightsail.Client, serviceName string, timeout time.Duration) error { stateConf := &retry.StateChangeConf{ - Pending: []string{lightsail.ContainerServiceStateUpdating}, - Target: []string{lightsail.ContainerServiceStateReady, lightsail.ContainerServiceStateRunning}, + Pending: []string{string(types.ContainerServiceStateUpdating)}, + Target: []string{string(types.ContainerServiceStateReady), string(types.ContainerServiceStateRunning)}, Refresh: statusContainerService(ctx, conn, serviceName), Timeout: timeout, Delay: 5 * time.Second, @@ -172,9 +173,9 @@ func waitContainerServiceUpdated(ctx context.Context, conn *lightsail.Lightsail, outputRaw, err := stateConf.WaitForStateContext(ctx) - if output, ok := outputRaw.(*lightsail.ContainerService); ok { + if output, ok := outputRaw.(*types.ContainerService); ok { if detail := output.StateDetail; detail != nil { - tfresource.SetLastError(err, fmt.Errorf("%s: %s", aws.StringValue(detail.Code), aws.StringValue(detail.Message))) + tfresource.SetLastError(err, fmt.Errorf("%s: %s", string(detail.Code), aws.ToString(detail.Message))) } return err @@ -183,9 +184,9 @@ func waitContainerServiceUpdated(ctx context.Context, conn *lightsail.Lightsail, return err } -func waitContainerServiceDeleted(ctx context.Context, conn *lightsail.Lightsail, serviceName string, timeout time.Duration) error { +func waitContainerServiceDeleted(ctx context.Context, conn *lightsail.Client, serviceName string, timeout time.Duration) error { stateConf := &retry.StateChangeConf{ - Pending: []string{lightsail.ContainerServiceStateDeleting}, + Pending: []string{string(types.ContainerServiceStateDeleting)}, Target: []string{}, Refresh: statusContainerService(ctx, conn, serviceName), Timeout: timeout, @@ -195,9 +196,9 @@ func waitContainerServiceDeleted(ctx context.Context, conn *lightsail.Lightsail, outputRaw, err := stateConf.WaitForStateContext(ctx) - if output, ok := outputRaw.(*lightsail.ContainerService); ok { + if output, ok := outputRaw.(*types.ContainerService); ok { if detail := output.StateDetail; detail != nil { - tfresource.SetLastError(err, fmt.Errorf("%s: %s", aws.StringValue(detail.Code), aws.StringValue(detail.Message))) + tfresource.SetLastError(err, fmt.Errorf("%s: %s", string(detail.Code), aws.ToString(detail.Message))) } return err @@ -206,10 +207,10 @@ func waitContainerServiceDeleted(ctx context.Context, conn *lightsail.Lightsail, return err } -func waitContainerServiceDeploymentVersionActive(ctx context.Context, conn *lightsail.Lightsail, serviceName string, version int, timeout time.Duration) error { +func waitContainerServiceDeploymentVersionActive(ctx context.Context, conn *lightsail.Client, serviceName string, version int, timeout time.Duration) error { stateConf := &retry.StateChangeConf{ - Pending: []string{lightsail.ContainerServiceDeploymentStateActivating}, - Target: []string{lightsail.ContainerServiceDeploymentStateActive}, + Pending: []string{string(types.ContainerServiceDeploymentStateActivating)}, + Target: []string{string(types.ContainerServiceDeploymentStateActive)}, Refresh: statusContainerServiceDeploymentVersion(ctx, conn, serviceName, version), Timeout: timeout, Delay: 5 * time.Second, @@ -218,8 +219,8 @@ func waitContainerServiceDeploymentVersionActive(ctx context.Context, conn *ligh outputRaw, err := stateConf.WaitForStateContext(ctx) - if output, ok := outputRaw.(*lightsail.ContainerServiceDeployment); ok { - if aws.StringValue(output.State) == lightsail.ContainerServiceDeploymentStateFailed { + if output, ok := outputRaw.(*types.ContainerServiceDeployment); ok { + if output.State == types.ContainerServiceDeploymentStateFailed { tfresource.SetLastError(err, errors.New("The deployment failed. Use the GetContainerLog action to view the log events for the containers in the deployment to try to determine the reason for the failure.")) } @@ -229,7 +230,7 @@ func waitContainerServiceDeploymentVersionActive(ctx context.Context, conn *ligh return err } -func waitInstanceStateWithContext(ctx context.Context, conn *lightsail.Lightsail, id *string) (*lightsail.GetInstanceStateOutput, error) { +func waitInstanceState(ctx context.Context, conn *lightsail.Client, id *string) (*lightsail.GetInstanceStateOutput, error) { stateConf := &retry.StateChangeConf{ Pending: []string{"pending", "stopping"}, Target: []string{"stopped", "running"}, From 403e9ed2c93bc954861b3a2f785a1e842caa7bba Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Thu, 8 Jun 2023 08:29:47 -0400 Subject: [PATCH 54/81] conns: Amend config_gen, re-generate with new Lightsail aws-go-sdk-v2 --- internal/conns/config_gen.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/internal/conns/config_gen.go b/internal/conns/config_gen.go index 51ecb0439022..c9b0906e8bc0 100644 --- a/internal/conns/config_gen.go +++ b/internal/conns/config_gen.go @@ -23,6 +23,7 @@ import ( "github.com/aws/aws-sdk-go-v2/service/ivschat" "github.com/aws/aws-sdk-go-v2/service/kendra" lambda_sdkv2 "github.com/aws/aws-sdk-go-v2/service/lambda" + "github.com/aws/aws-sdk-go-v2/service/lightsail" "github.com/aws/aws-sdk-go-v2/service/medialive" "github.com/aws/aws-sdk-go-v2/service/oam" "github.com/aws/aws-sdk-go-v2/service/opensearchserverless" @@ -205,7 +206,6 @@ import ( "github.com/aws/aws-sdk-go/service/lexruntimeservice" "github.com/aws/aws-sdk-go/service/lexruntimev2" "github.com/aws/aws-sdk-go/service/licensemanager" - "github.com/aws/aws-sdk-go/service/lightsail" "github.com/aws/aws-sdk-go/service/locationservice" "github.com/aws/aws-sdk-go/service/lookoutequipment" "github.com/aws/aws-sdk-go/service/lookoutforvision" @@ -483,7 +483,6 @@ func (c *Config) sdkv1Conns(client *AWSClient, sess *session.Session) { client.lexruntimeConn = lexruntimeservice.New(sess.Copy(&aws.Config{Endpoint: aws.String(c.Endpoints[names.LexRuntime])})) client.lexruntimev2Conn = lexruntimev2.New(sess.Copy(&aws.Config{Endpoint: aws.String(c.Endpoints[names.LexRuntimeV2])})) client.licensemanagerConn = licensemanager.New(sess.Copy(&aws.Config{Endpoint: aws.String(c.Endpoints[names.LicenseManager])})) - client.lightsailConn = lightsail.New(sess.Copy(&aws.Config{Endpoint: aws.String(c.Endpoints[names.Lightsail])})) client.locationConn = locationservice.New(sess.Copy(&aws.Config{Endpoint: aws.String(c.Endpoints[names.Location])})) client.logsConn = cloudwatchlogs.New(sess.Copy(&aws.Config{Endpoint: aws.String(c.Endpoints[names.Logs])})) client.lookoutequipmentConn = lookoutequipment.New(sess.Copy(&aws.Config{Endpoint: aws.String(c.Endpoints[names.LookoutEquipment])})) @@ -685,6 +684,11 @@ func (c *Config) sdkv2Conns(client *AWSClient, cfg aws_sdkv2.Config) { o.EndpointResolver = kendra.EndpointResolverFromURL(endpoint) } }) + client.lightsailClient = lightsail.NewFromConfig(cfg, func(o *lightsail.Options) { + if endpoint := c.Endpoints[names.Lightsail]; endpoint != "" { + o.EndpointResolver = lightsail.EndpointResolverFromURL(endpoint) + } + }) client.medialiveClient = medialive.NewFromConfig(cfg, func(o *medialive.Options) { if endpoint := c.Endpoints[names.MediaLive]; endpoint != "" { o.EndpointResolver = medialive.EndpointResolverFromURL(endpoint) From 0083d215a76a58f57c0bf3c16aed9e2a36c74068 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Thu, 8 Jun 2023 08:30:09 -0400 Subject: [PATCH 55/81] lightsail: Amend container_service_deployment_version, make fmt --- .../container_service_deployment_version.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/internal/service/lightsail/container_service_deployment_version.go b/internal/service/lightsail/container_service_deployment_version.go index 34bf44eebaef..bca5233f41f8 100644 --- a/internal/service/lightsail/container_service_deployment_version.go +++ b/internal/service/lightsail/container_service_deployment_version.go @@ -306,14 +306,14 @@ func expandContainerServiceProtocol(tfMap map[string]interface{}) map[string]typ for k, v := range tfMap { switch v { - case "HTTP": - apiObject[k] = types.ContainerServiceProtocolHttp - case "HTTPS": - apiObject[k] = types.ContainerServiceProtocolHttps - case "TCP": - apiObject[k] = types.ContainerServiceProtocolTcp - case "UDP": - apiObject[k] = types.ContainerServiceProtocolUdp + case "HTTP": + apiObject[k] = types.ContainerServiceProtocolHttp + case "HTTPS": + apiObject[k] = types.ContainerServiceProtocolHttps + case "TCP": + apiObject[k] = types.ContainerServiceProtocolTcp + case "UDP": + apiObject[k] = types.ContainerServiceProtocolUdp } } @@ -469,4 +469,4 @@ func FindContainerServiceDeploymentByVersion(ctx context.Context, conn *lightsai } return result, nil -} \ No newline at end of file +} From 3b56c8710fac2a5a9386d6fdeffc6ab749ac2d3c Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Thu, 8 Jun 2023 09:13:16 -0400 Subject: [PATCH 56/81] lightsail: Amend all tests, lowercase serviceID for partition check --- .../lightsail/bucket_access_key_test.go | 9 ++-- .../lightsail/bucket_resource_access_test.go | 9 ++-- internal/service/lightsail/bucket_test.go | 17 +++--- .../service/lightsail/certificate_test.go | 21 ++++---- ...ntainer_service_deployment_version_test.go | 25 ++++----- .../lightsail/container_service_test.go | 37 ++++++------- internal/service/lightsail/database_test.go | 53 ++++++++++--------- .../service/lightsail/disk_attachment_test.go | 9 ++-- internal/service/lightsail/disk_test.go | 13 ++--- .../service/lightsail/distribution_test.go | 33 ++++++------ .../service/lightsail/domain_entry_test.go | 9 ++-- internal/service/lightsail/domain_test.go | 5 +- .../lightsail/instance_public_ports_test.go | 25 ++++----- internal/service/lightsail/instance_test.go | 29 +++++----- internal/service/lightsail/key_pair_test.go | 9 ++-- .../service/lightsail/lb_attachment_test.go | 9 ++-- .../lb_certificate_attachment_test.go | 5 +- .../service/lightsail/lb_certificate_test.go | 17 +++--- .../lb_https_redirection_policy_test.go | 5 +- .../lightsail/lb_stickiness_policy_test.go | 17 +++--- internal/service/lightsail/lb_test.go | 21 ++++---- .../lightsail/static_ip_attachment_test.go | 5 +- internal/service/lightsail/static_ip_test.go | 5 +- 23 files changed, 205 insertions(+), 182 deletions(-) diff --git a/internal/service/lightsail/bucket_access_key_test.go b/internal/service/lightsail/bucket_access_key_test.go index ce3391aeadd4..65abf41cd8ee 100644 --- a/internal/service/lightsail/bucket_access_key_test.go +++ b/internal/service/lightsail/bucket_access_key_test.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "regexp" + "strings" "testing" "github.com/aws/aws-sdk-go-v2/service/lightsail" @@ -27,10 +28,10 @@ func TestAccLightsailBucketAccessKey_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckBucketAccessKeyDestroy(ctx), Steps: []resource.TestStep{ @@ -62,10 +63,10 @@ func TestAccLightsailBucketAccessKey_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckBucketAccessKeyDestroy(ctx), Steps: []resource.TestStep{ diff --git a/internal/service/lightsail/bucket_resource_access_test.go b/internal/service/lightsail/bucket_resource_access_test.go index 9a6d5adf59be..72f28cf48036 100644 --- a/internal/service/lightsail/bucket_resource_access_test.go +++ b/internal/service/lightsail/bucket_resource_access_test.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "strings" "testing" "github.com/aws/aws-sdk-go-v2/service/lightsail" @@ -27,10 +28,10 @@ func TestAccLightsailBucketResourceAccess_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckBucketResourceAccessDestroy(ctx), Steps: []resource.TestStep{ @@ -60,10 +61,10 @@ func TestAccLightsailBucketResourceAccess_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckBucketResourceAccessDestroy(ctx), Steps: []resource.TestStep{ diff --git a/internal/service/lightsail/bucket_test.go b/internal/service/lightsail/bucket_test.go index 31568cbc2d7b..b1a3be017e30 100644 --- a/internal/service/lightsail/bucket_test.go +++ b/internal/service/lightsail/bucket_test.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "regexp" + "strings" "testing" "github.com/aws/aws-sdk-go-v2/service/lightsail" @@ -27,10 +28,10 @@ func TestAccLightsailBucket_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckBucketDestroy(ctx), Steps: []resource.TestStep{ @@ -68,10 +69,10 @@ func TestAccLightsailBucket_BundleId(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckBucketDestroy(ctx), Steps: []resource.TestStep{ @@ -106,10 +107,10 @@ func TestAccLightsailBucket_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckBucketDestroy(ctx), Steps: []resource.TestStep{ @@ -133,10 +134,10 @@ func TestAccLightsailBucket_tags(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckBucketDestroy(ctx), Steps: []resource.TestStep{ diff --git a/internal/service/lightsail/certificate_test.go b/internal/service/lightsail/certificate_test.go index 2598818ff9e3..91f74f7554bc 100644 --- a/internal/service/lightsail/certificate_test.go +++ b/internal/service/lightsail/certificate_test.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "regexp" + "strings" "testing" "time" @@ -30,10 +31,10 @@ func TestAccLightsailCertificate_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckCertificateDestroy(ctx), Steps: []resource.TestStep{ @@ -66,10 +67,10 @@ func TestAccLightsailCertificate_subjectAlternativeNames(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckCertificateDestroy(ctx), Steps: []resource.TestStep{ @@ -98,10 +99,10 @@ func TestAccLightsailCertificate_DomainValidationOptions(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckCertificateDestroy(ctx), Steps: []resource.TestStep{ @@ -132,10 +133,10 @@ func TestAccLightsailCertificate_tags(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckCertificateDestroy(ctx), Steps: []resource.TestStep{ @@ -199,10 +200,10 @@ func TestAccLightsailCertificate_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckCertificateDestroy(ctx), Steps: []resource.TestStep{ diff --git a/internal/service/lightsail/container_service_deployment_version_test.go b/internal/service/lightsail/container_service_deployment_version_test.go index 75269267dd27..2abe3169db53 100644 --- a/internal/service/lightsail/container_service_deployment_version_test.go +++ b/internal/service/lightsail/container_service_deployment_version_test.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "regexp" + "strings" "testing" "github.com/aws/aws-sdk-go-v2/service/lightsail" @@ -103,10 +104,10 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_Basic(t *testin resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -145,10 +146,10 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_Multiple(t *tes resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -183,10 +184,10 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_Environment(t * resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -262,10 +263,10 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_Ports(t *testin resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -338,10 +339,10 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_PublicEndpoint( resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -449,10 +450,10 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_EnableService(t resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ diff --git a/internal/service/lightsail/container_service_test.go b/internal/service/lightsail/container_service_test.go index b6b6a1955129..4761e45a7650 100644 --- a/internal/service/lightsail/container_service_test.go +++ b/internal/service/lightsail/container_service_test.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "regexp" + "strings" "testing" "github.com/aws/aws-sdk-go-v2/service/lightsail" @@ -25,10 +26,10 @@ func TestAccLightsailContainerService_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -75,10 +76,10 @@ func TestAccLightsailContainerService_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -103,10 +104,10 @@ func TestAccLightsailContainerService_Name(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -136,10 +137,10 @@ func TestAccLightsailContainerService_IsDisabled(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -169,10 +170,10 @@ func TestAccLightsailContainerService_Power(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -201,10 +202,10 @@ func TestAccLightsailContainerService_PublicDomainNames(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -224,10 +225,10 @@ func TestAccLightsailContainerService_PrivateRegistryAccess(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -253,10 +254,10 @@ func TestAccLightsailContainerService_Scale(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ @@ -286,10 +287,10 @@ func TestAccLightsailContainerService_tags(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckContainerServiceDestroy(ctx), Steps: []resource.TestStep{ diff --git a/internal/service/lightsail/database_test.go b/internal/service/lightsail/database_test.go index 86c99b0b26e5..e28a7cf0d4b4 100644 --- a/internal/service/lightsail/database_test.go +++ b/internal/service/lightsail/database_test.go @@ -6,6 +6,7 @@ import ( "fmt" "log" "regexp" + "strings" "testing" "time" @@ -31,10 +32,10 @@ func TestAccLightsailDatabase_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ @@ -88,10 +89,10 @@ func TestAccLightsailDatabase_relationalDatabaseName(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ @@ -151,10 +152,10 @@ func TestAccLightsailDatabase_masterDatabaseName(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ @@ -218,10 +219,10 @@ func TestAccLightsailDatabase_masterUsername(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ @@ -288,10 +289,10 @@ func TestAccLightsailDatabase_masterPassword(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ @@ -333,10 +334,10 @@ func TestAccLightsailDatabase_preferredBackupWindow(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ @@ -388,10 +389,10 @@ func TestAccLightsailDatabase_preferredMaintenanceWindow(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ @@ -444,10 +445,10 @@ func TestAccLightsailDatabase_publiclyAccessible(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ @@ -488,10 +489,10 @@ func TestAccLightsailDatabase_backupRetentionEnabled(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ @@ -537,10 +538,10 @@ func TestAccLightsailDatabase_finalSnapshotName(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseSnapshotDestroy(ctx), Steps: []resource.TestStep{ @@ -589,10 +590,10 @@ func TestAccLightsailDatabase_tags(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ @@ -644,10 +645,10 @@ func TestAccLightsailDatabase_ha(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ @@ -702,11 +703,11 @@ func TestAccLightsailDatabase_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), CheckDestroy: testAccCheckDatabaseDestroy(ctx), Steps: []resource.TestStep{ { diff --git a/internal/service/lightsail/disk_attachment_test.go b/internal/service/lightsail/disk_attachment_test.go index b4d39ab8ee0c..b48fc93a053a 100644 --- a/internal/service/lightsail/disk_attachment_test.go +++ b/internal/service/lightsail/disk_attachment_test.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "regexp" + "strings" "testing" "github.com/aws/aws-sdk-go-v2/service/lightsail" @@ -30,10 +31,10 @@ func TestAccLightsailDiskAttachment_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDiskAttachmentDestroy(ctx), Steps: []resource.TestStep{ @@ -64,10 +65,10 @@ func TestAccLightsailDiskAttachment_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDiskAttachmentDestroy(ctx), Steps: []resource.TestStep{ diff --git a/internal/service/lightsail/disk_test.go b/internal/service/lightsail/disk_test.go index 0fadc2d393ee..f8d3dc505890 100644 --- a/internal/service/lightsail/disk_test.go +++ b/internal/service/lightsail/disk_test.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "regexp" + "strings" "testing" "github.com/aws/aws-sdk-go-v2/service/lightsail" @@ -27,10 +28,10 @@ func TestAccLightsailDisk_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDiskDestroy(ctx), Steps: []resource.TestStep{ @@ -63,10 +64,10 @@ func TestAccLightsailDisk_Tags(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDiskDestroy(ctx), Steps: []resource.TestStep{ @@ -139,10 +140,10 @@ func TestAccLightsailDisk_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDiskDestroy(ctx), Steps: []resource.TestStep{ diff --git a/internal/service/lightsail/distribution_test.go b/internal/service/lightsail/distribution_test.go index 369bc077257c..f19fe9c42eac 100644 --- a/internal/service/lightsail/distribution_test.go +++ b/internal/service/lightsail/distribution_test.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "regexp" + "strings" "testing" "github.com/aws/aws-sdk-go-v2/service/lightsail" @@ -53,11 +54,11 @@ func testAccDistribution_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDistributionDestroy(ctx), Steps: []resource.TestStep{ @@ -122,11 +123,11 @@ func testAccDistribution_isEnabled(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDistributionDestroy(ctx), Steps: []resource.TestStep{ @@ -165,11 +166,11 @@ func testAccDistribution_cacheBehavior(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDistributionDestroy(ctx), Steps: []resource.TestStep{ @@ -224,11 +225,11 @@ func testAccDistribution_defaultCacheBehavior(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDistributionDestroy(ctx), Steps: []resource.TestStep{ @@ -270,11 +271,11 @@ func testAccDistribution_ipAddressType(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDistributionDestroy(ctx), Steps: []resource.TestStep{ @@ -314,11 +315,11 @@ func testAccDistribution_cacheBehaviorSettings(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDistributionDestroy(ctx), Steps: []resource.TestStep{ @@ -388,11 +389,11 @@ func testAccDistribution_tags(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDistributionDestroy(ctx), Steps: []resource.TestStep{ @@ -439,11 +440,11 @@ func testAccDistribution_disappears(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDistributionDestroy(ctx), Steps: []resource.TestStep{ diff --git a/internal/service/lightsail/domain_entry_test.go b/internal/service/lightsail/domain_entry_test.go index e3fdc26d76b6..f5ce7a4fc633 100644 --- a/internal/service/lightsail/domain_entry_test.go +++ b/internal/service/lightsail/domain_entry_test.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "strings" "testing" "github.com/aws/aws-sdk-go-v2/service/lightsail" @@ -27,7 +28,7 @@ func TestAccLightsailDomainEntry_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDomainEntryDestroy(ctx), Steps: []resource.TestStep{ @@ -67,7 +68,7 @@ func TestAccLightsailDomainEntry_underscore(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDomainEntryDestroy(ctx), Steps: []resource.TestStep{ @@ -107,7 +108,7 @@ func TestAccLightsailDomainEntry_apex(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDomainEntryDestroy(ctx), Steps: []resource.TestStep{ @@ -147,7 +148,7 @@ func TestAccLightsailDomainEntry_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDomainEntryDestroy(ctx), Steps: []resource.TestStep{ diff --git a/internal/service/lightsail/domain_test.go b/internal/service/lightsail/domain_test.go index 6215ddf39bd7..50cc752bf335 100644 --- a/internal/service/lightsail/domain_test.go +++ b/internal/service/lightsail/domain_test.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "strings" "testing" "github.com/aws/aws-sdk-go-v2/aws" @@ -25,7 +26,7 @@ func TestAccLightsailDomain_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDomainDestroy(ctx), Steps: []resource.TestStep{ @@ -46,7 +47,7 @@ func TestAccLightsailDomain_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); acctest.PreCheckRegion(t, string(types.RegionNameUsEast1)) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckDomainDestroy(ctx), Steps: []resource.TestStep{ diff --git a/internal/service/lightsail/instance_public_ports_test.go b/internal/service/lightsail/instance_public_ports_test.go index a1b3af47f351..faf98c95a25d 100644 --- a/internal/service/lightsail/instance_public_ports_test.go +++ b/internal/service/lightsail/instance_public_ports_test.go @@ -3,6 +3,7 @@ package lightsail_test import ( "context" "fmt" + "strings" "testing" "github.com/aws/aws-sdk-go-v2/aws" @@ -25,10 +26,10 @@ func TestAccLightsailInstancePublicPorts_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstancePublicPortsDestroy(ctx), Steps: []resource.TestStep{ @@ -56,10 +57,10 @@ func TestAccLightsailInstancePublicPorts_multiple(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstancePublicPortsDestroy(ctx), Steps: []resource.TestStep{ @@ -92,10 +93,10 @@ func TestAccLightsailInstancePublicPorts_cidrs(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstancePublicPortsDestroy(ctx), Steps: []resource.TestStep{ @@ -126,10 +127,10 @@ func TestAccLightsailInstancePublicPorts_cidrListAliases(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstancePublicPortsDestroy(ctx), Steps: []resource.TestStep{ @@ -159,10 +160,10 @@ func TestAccLightsailInstancePublicPorts_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstancePublicPortsDestroy(ctx), Steps: []resource.TestStep{ @@ -187,10 +188,10 @@ func TestAccLightsailInstancePublicPorts_disappears_Instance(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstancePublicPortsDestroy(ctx), Steps: []resource.TestStep{ diff --git a/internal/service/lightsail/instance_test.go b/internal/service/lightsail/instance_test.go index 27b1360e42d3..bc5d696dfaa5 100644 --- a/internal/service/lightsail/instance_test.go +++ b/internal/service/lightsail/instance_test.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "regexp" + "strings" "testing" "github.com/aws/aws-sdk-go-v2/service/lightsail" @@ -36,10 +37,10 @@ func TestAccLightsailInstance_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstanceDestroy(ctx), Steps: []resource.TestStep{ @@ -73,10 +74,10 @@ func TestAccLightsailInstance_name(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstanceDestroy(ctx), Steps: []resource.TestStep{ @@ -130,10 +131,10 @@ func TestAccLightsailInstance_tags(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstanceDestroy(ctx), Steps: []resource.TestStep{ @@ -171,10 +172,10 @@ func TestAccLightsailInstance_IPAddressType(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstanceDestroy(ctx), Steps: []resource.TestStep{ @@ -213,10 +214,10 @@ func TestAccLightsailInstance_addOn(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstanceDestroy(ctx), Steps: []resource.TestStep{ @@ -280,10 +281,10 @@ func TestAccLightsailInstance_availabilityZone(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstanceDestroy(ctx), Steps: []resource.TestStep{ @@ -303,10 +304,10 @@ func TestAccLightsailInstance_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckInstanceDestroy(ctx), Steps: []resource.TestStep{ diff --git a/internal/service/lightsail/key_pair_test.go b/internal/service/lightsail/key_pair_test.go index af9dbb422f8e..608383ebb849 100644 --- a/internal/service/lightsail/key_pair_test.go +++ b/internal/service/lightsail/key_pair_test.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "strings" "testing" "github.com/aws/aws-sdk-go-v2/aws" @@ -25,7 +26,7 @@ func TestAccLightsailKeyPair_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckKeyPairDestroy(ctx), Steps: []resource.TestStep{ @@ -56,7 +57,7 @@ func TestAccLightsailKeyPair_publicKey(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckKeyPairDestroy(ctx), Steps: []resource.TestStep{ @@ -84,7 +85,7 @@ func TestAccLightsailKeyPair_encrypted(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckKeyPairDestroy(ctx), Steps: []resource.TestStep{ @@ -108,7 +109,7 @@ func TestAccLightsailKeyPair_namePrefix(t *testing.T) { ctx := acctest.Context(t) resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckKeyPairDestroy(ctx), Steps: []resource.TestStep{ diff --git a/internal/service/lightsail/lb_attachment_test.go b/internal/service/lightsail/lb_attachment_test.go index 78cef8b17ea7..a796830fca29 100644 --- a/internal/service/lightsail/lb_attachment_test.go +++ b/internal/service/lightsail/lb_attachment_test.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "strings" "testing" "github.com/aws/aws-sdk-go-v2/service/lightsail" @@ -27,10 +28,10 @@ func testAccLoadBalancerAttachment_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerAttachmentDestroy(ctx), Steps: []resource.TestStep{ @@ -55,10 +56,10 @@ func testAccLoadBalancerAttachment_disappears(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerAttachmentDestroy(ctx), Steps: []resource.TestStep{ diff --git a/internal/service/lightsail/lb_certificate_attachment_test.go b/internal/service/lightsail/lb_certificate_attachment_test.go index 2ecf6a65c1f3..7108eac9372d 100644 --- a/internal/service/lightsail/lb_certificate_attachment_test.go +++ b/internal/service/lightsail/lb_certificate_attachment_test.go @@ -3,6 +3,7 @@ package lightsail_test import ( "fmt" "regexp" + "strings" "testing" "github.com/aws/aws-sdk-go-v2/service/lightsail" @@ -20,10 +21,10 @@ func testAccLoadBalancerCertificateAttachment_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerCertificateDestroy(ctx), Steps: []resource.TestStep{ diff --git a/internal/service/lightsail/lb_certificate_test.go b/internal/service/lightsail/lb_certificate_test.go index b0c9ec9531eb..a07bc12db1eb 100644 --- a/internal/service/lightsail/lb_certificate_test.go +++ b/internal/service/lightsail/lb_certificate_test.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "regexp" + "strings" "testing" "github.com/aws/aws-sdk-go-v2/service/lightsail" @@ -29,10 +30,10 @@ func testAccLoadBalancerCertificate_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerCertificateDestroy(ctx), Steps: []resource.TestStep{ @@ -66,10 +67,10 @@ func testAccLoadBalancerCertificate_subjectAlternativeNames(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerCertificateDestroy(ctx), Steps: []resource.TestStep{ @@ -99,10 +100,10 @@ func testAccLoadBalancerCertificate_domainValidationRecords(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerCertificateDestroy(ctx), Steps: []resource.TestStep{ @@ -134,10 +135,10 @@ func testAccLoadBalancerCertificate_disappears(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerCertificateDestroy(ctx), Steps: []resource.TestStep{ diff --git a/internal/service/lightsail/lb_https_redirection_policy_test.go b/internal/service/lightsail/lb_https_redirection_policy_test.go index 4a4dbe7c28c0..09b1f542a814 100644 --- a/internal/service/lightsail/lb_https_redirection_policy_test.go +++ b/internal/service/lightsail/lb_https_redirection_policy_test.go @@ -3,6 +3,7 @@ package lightsail_test import ( "fmt" "regexp" + "strings" "testing" "github.com/aws/aws-sdk-go-v2/service/lightsail" @@ -19,10 +20,10 @@ func testAccLoadBalancerHTTPSRedirectionPolicy_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerDestroy(ctx), Steps: []resource.TestStep{ diff --git a/internal/service/lightsail/lb_stickiness_policy_test.go b/internal/service/lightsail/lb_stickiness_policy_test.go index eb018090d155..8a5551d6d47e 100644 --- a/internal/service/lightsail/lb_stickiness_policy_test.go +++ b/internal/service/lightsail/lb_stickiness_policy_test.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "strings" "testing" "github.com/aws/aws-sdk-go-v2/service/lightsail" @@ -25,10 +26,10 @@ func testAccLoadBalancerStickinessPolicy_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerDestroy(ctx), Steps: []resource.TestStep{ @@ -56,10 +57,10 @@ func testAccLoadBalancerStickinessPolicy_cookieDuration(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerDestroy(ctx), Steps: []resource.TestStep{ @@ -97,10 +98,10 @@ func testAccLoadBalancerStickinessPolicy_enabled(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerDestroy(ctx), Steps: []resource.TestStep{ @@ -137,10 +138,10 @@ func testAccLoadBalancerStickinessPolicy_disappears(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerDestroy(ctx), Steps: []resource.TestStep{ diff --git a/internal/service/lightsail/lb_test.go b/internal/service/lightsail/lb_test.go index 1c1fc39b140f..dd67e0e13b98 100644 --- a/internal/service/lightsail/lb_test.go +++ b/internal/service/lightsail/lb_test.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "regexp" + "strings" "testing" "time" @@ -68,10 +69,10 @@ func testAccLoadBalancer_basic(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerDestroy(ctx), Steps: []resource.TestStep{ @@ -104,10 +105,10 @@ func testAccLoadBalancer_name(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerDestroy(ctx), Steps: []resource.TestStep{ @@ -147,10 +148,10 @@ func testAccLoadBalancer_healthCheckPath(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerDestroy(ctx), Steps: []resource.TestStep{ @@ -185,10 +186,10 @@ func testAccLoadBalancer_tags(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerDestroy(ctx), Steps: []resource.TestStep{ @@ -278,10 +279,10 @@ func testAccLoadBalancer_disappears(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t) - acctest.PreCheckPartitionHasService(t, lightsail.ServiceID) + acctest.PreCheckPartitionHasService(t, strings.ToLower(lightsail.ServiceID)) testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckLoadBalancerDestroy(ctx), Steps: []resource.TestStep{ diff --git a/internal/service/lightsail/static_ip_attachment_test.go b/internal/service/lightsail/static_ip_attachment_test.go index 95fb5bfdc4ed..d8d505eccb31 100644 --- a/internal/service/lightsail/static_ip_attachment_test.go +++ b/internal/service/lightsail/static_ip_attachment_test.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "strings" "testing" "github.com/aws/aws-sdk-go-v2/aws" @@ -25,7 +26,7 @@ func TestAccLightsailStaticIPAttachment_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckStaticIPAttachmentDestroy(ctx), Steps: []resource.TestStep{ @@ -61,7 +62,7 @@ func TestAccLightsailStaticIPAttachment_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckStaticIPAttachmentDestroy(ctx), Steps: []resource.TestStep{ diff --git a/internal/service/lightsail/static_ip_test.go b/internal/service/lightsail/static_ip_test.go index a46685c61e8c..7d32d85e6230 100644 --- a/internal/service/lightsail/static_ip_test.go +++ b/internal/service/lightsail/static_ip_test.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "strings" "testing" "github.com/aws/aws-sdk-go-v2/aws" @@ -23,7 +24,7 @@ func TestAccLightsailStaticIP_basic(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckStaticIPDestroy(ctx), Steps: []resource.TestStep{ @@ -56,7 +57,7 @@ func TestAccLightsailStaticIP_disappears(t *testing.T) { resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, - ErrorCheck: acctest.ErrorCheck(t, lightsail.ServiceID), + ErrorCheck: acctest.ErrorCheck(t, strings.ToLower(lightsail.ServiceID)), ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, CheckDestroy: testAccCheckStaticIPDestroy(ctx), Steps: []resource.TestStep{ From 2f637f98b3345f16c9430951ed5faa092563a691 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Thu, 8 Jun 2023 10:51:01 -0400 Subject: [PATCH 57/81] lightsail: Amend all services to use IsANotFoundError function --- internal/service/lightsail/bucket.go | 2 +- .../service/lightsail/bucket_access_key.go | 2 +- .../lightsail/bucket_resource_access.go | 2 +- internal/service/lightsail/certificate.go | 2 +- .../service/lightsail/container_service.go | 5 ++--- .../container_service_deployment_version.go | 3 +-- internal/service/lightsail/database_test.go | 6 ++---- internal/service/lightsail/disk.go | 7 +++++-- internal/service/lightsail/disk_attachment.go | 3 +-- internal/service/lightsail/distribution.go | 4 ++-- internal/service/lightsail/domain.go | 4 +--- internal/service/lightsail/domain_entry.go | 2 +- internal/service/lightsail/domain_test.go | 3 +-- internal/service/lightsail/errs.go | 18 ++++++++++++++++++ internal/service/lightsail/instance.go | 2 +- .../lightsail/instance_public_ports_test.go | 4 +--- internal/service/lightsail/key_pair.go | 3 +-- internal/service/lightsail/key_pair_test.go | 5 ++--- internal/service/lightsail/lb.go | 3 +-- internal/service/lightsail/lb_attachment.go | 3 +-- internal/service/lightsail/lb_certificate.go | 3 +-- .../lightsail/lb_certificate_attachment.go | 3 +-- .../lightsail/lb_https_redirection_policy.go | 3 +-- .../service/lightsail/lb_stickiness_policy.go | 3 +-- internal/service/lightsail/static_ip.go | 4 +--- .../service/lightsail/static_ip_attachment.go | 4 +--- .../lightsail/static_ip_attachment_test.go | 5 ++--- internal/service/lightsail/static_ip_test.go | 5 ++--- 28 files changed, 55 insertions(+), 58 deletions(-) create mode 100644 internal/service/lightsail/errs.go diff --git a/internal/service/lightsail/bucket.go b/internal/service/lightsail/bucket.go index 3c6154d87e5f..fb2fb89f4a92 100644 --- a/internal/service/lightsail/bucket.go +++ b/internal/service/lightsail/bucket.go @@ -179,7 +179,7 @@ func FindBucketById(ctx context.Context, conn *lightsail.Client, id string) (*ty in := &lightsail.GetBucketsInput{BucketName: aws.String(id)} out, err := conn.GetBuckets(ctx, in) - if errs.IsA[*types.NotFoundException](err) { + if IsANotFoundError(err) { return nil, &retry.NotFoundError{ LastError: err, LastRequest: in, diff --git a/internal/service/lightsail/bucket_access_key.go b/internal/service/lightsail/bucket_access_key.go index cebc0a4c69d6..4a340281740e 100644 --- a/internal/service/lightsail/bucket_access_key.go +++ b/internal/service/lightsail/bucket_access_key.go @@ -156,7 +156,7 @@ func FindBucketAccessKeyById(ctx context.Context, conn *lightsail.Client, id str in := &lightsail.GetBucketAccessKeysInput{BucketName: aws.String(parts[0])} out, err := conn.GetBucketAccessKeys(ctx, in) - if errs.IsA[*types.NotFoundException](err) { + if IsANotFoundError(err) { return nil, &retry.NotFoundError{ LastError: err, LastRequest: in, diff --git a/internal/service/lightsail/bucket_resource_access.go b/internal/service/lightsail/bucket_resource_access.go index 3668a748fe67..7b10703dddae 100644 --- a/internal/service/lightsail/bucket_resource_access.go +++ b/internal/service/lightsail/bucket_resource_access.go @@ -155,7 +155,7 @@ func FindBucketResourceAccessById(ctx context.Context, conn *lightsail.Client, i out, err := conn.GetBuckets(ctx, in) - if errs.IsA[*types.NotFoundException](err) { + if IsANotFoundError(err) { return nil, &retry.NotFoundError{ LastError: err, LastRequest: in, diff --git a/internal/service/lightsail/certificate.go b/internal/service/lightsail/certificate.go index 30a0f2199adc..a736c81be6b6 100644 --- a/internal/service/lightsail/certificate.go +++ b/internal/service/lightsail/certificate.go @@ -265,7 +265,7 @@ func FindCertificateById(ctx context.Context, conn *lightsail.Client, name strin out, err := conn.GetCertificates(ctx, in) - if errs.IsA[*types.NotFoundException](err) { + if IsANotFoundError(err) { return nil, &retry.NotFoundError{ LastError: err, LastRequest: in, diff --git a/internal/service/lightsail/container_service.go b/internal/service/lightsail/container_service.go index 315a48d6c514..e7751778b91b 100644 --- a/internal/service/lightsail/container_service.go +++ b/internal/service/lightsail/container_service.go @@ -15,7 +15,6 @@ import ( "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/errs" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/internal/verify" @@ -299,7 +298,7 @@ func resourceContainerServiceDelete(ctx context.Context, d *schema.ResourceData, _, err := conn.DeleteContainerService(ctx, input) - if errs.IsA[*types.NotFoundException](err) { + if IsANotFoundError(err) { return nil } @@ -467,7 +466,7 @@ func FindContainerServiceByName(ctx context.Context, conn *lightsail.Client, ser output, err := conn.GetContainerServices(ctx, input) - if errs.IsA[*types.NotFoundException](err) { + if IsANotFoundError(err) { return nil, &retry.NotFoundError{ LastError: err, LastRequest: input, diff --git a/internal/service/lightsail/container_service_deployment_version.go b/internal/service/lightsail/container_service_deployment_version.go index bca5233f41f8..a657e798a07f 100644 --- a/internal/service/lightsail/container_service_deployment_version.go +++ b/internal/service/lightsail/container_service_deployment_version.go @@ -16,7 +16,6 @@ import ( "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/errs" "github.com/hashicorp/terraform-provider-aws/internal/flex" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" ) @@ -433,7 +432,7 @@ func FindContainerServiceDeploymentByVersion(ctx context.Context, conn *lightsai output, err := conn.GetContainerServiceDeployments(ctx, input) - if errs.IsA[*types.NotFoundException](err) { + if IsANotFoundError(err) { return nil, &retry.NotFoundError{ LastError: err, LastRequest: input, diff --git a/internal/service/lightsail/database_test.go b/internal/service/lightsail/database_test.go index e28a7cf0d4b4..bbd2af01cbe4 100644 --- a/internal/service/lightsail/database_test.go +++ b/internal/service/lightsail/database_test.go @@ -12,14 +12,12 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/lightsail" - "github.com/aws/aws-sdk-go-v2/service/lightsail/types" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "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/create" - "github.com/hashicorp/terraform-provider-aws/internal/errs" tflightsail "github.com/hashicorp/terraform-provider-aws/internal/service/lightsail" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -767,7 +765,7 @@ func testAccCheckDatabaseDestroy(ctx context.Context) resource.TestCheckFunc { respDatabase, err := conn.GetRelationalDatabase(ctx, ¶ms) - if errs.IsA[*types.NotFoundException](err) { + if tflightsail.IsANotFoundError(err) { continue } @@ -811,7 +809,7 @@ func testAccCheckDatabaseSnapshotDestroy(ctx context.Context) resource.TestCheck respDatabase, err := conn.GetRelationalDatabase(ctx, ¶ms) - if errs.IsA[*types.NotFoundException](err) { + if tflightsail.IsANotFoundError(err) { continue } diff --git a/internal/service/lightsail/disk.go b/internal/service/lightsail/disk.go index 0aa64e22b5be..6a67e739604d 100644 --- a/internal/service/lightsail/disk.go +++ b/internal/service/lightsail/disk.go @@ -14,7 +14,6 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/create" - "github.com/hashicorp/terraform-provider-aws/internal/errs" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/internal/verify" @@ -141,6 +140,10 @@ func resourceDiskDelete(ctx context.Context, d *schema.ResourceData, meta interf DiskName: aws.String(d.Id()), }) + if IsANotFoundError(err) { + return nil + } + if err != nil { return create.DiagError(names.Lightsail, string(types.OperationTypeDeleteDisk), ResDisk, d.Get("name").(string), err) } @@ -161,7 +164,7 @@ func FindDiskById(ctx context.Context, conn *lightsail.Client, id string) (*type out, err := conn.GetDisk(ctx, in) - if errs.IsA[*types.NotFoundException](err) { + if IsANotFoundError(err) { return nil, &retry.NotFoundError{ LastError: err, LastRequest: in, diff --git a/internal/service/lightsail/disk_attachment.go b/internal/service/lightsail/disk_attachment.go index e1fc5a07b6b3..e6e1d9222895 100644 --- a/internal/service/lightsail/disk_attachment.go +++ b/internal/service/lightsail/disk_attachment.go @@ -13,7 +13,6 @@ 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/create" - "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -188,7 +187,7 @@ func FindDiskAttachmentById(ctx context.Context, conn *lightsail.Client, id stri out, err := conn.GetDisk(ctx, in) - if errs.IsA[*types.NotFoundException](err) { + if IsANotFoundError(err) { return nil, &retry.NotFoundError{ LastError: err, LastRequest: in, diff --git a/internal/service/lightsail/distribution.go b/internal/service/lightsail/distribution.go index 8bb6f6f09aae..ea431d3c5561 100644 --- a/internal/service/lightsail/distribution.go +++ b/internal/service/lightsail/distribution.go @@ -544,7 +544,7 @@ func resourceDistributionDelete(ctx context.Context, d *schema.ResourceData, met DistributionName: aws.String(d.Id()), }) - if errs.IsA[*types.NotFoundException](err) || errs.IsA[*types.InvalidInputException](err) { + if IsANotFoundError(err) || errs.IsA[*types.InvalidInputException](err) { return nil } @@ -566,7 +566,7 @@ func FindDistributionByID(ctx context.Context, conn *lightsail.Client, id string DistributionName: aws.String(id), } out, err := conn.GetDistributions(ctx, in) - if errs.IsA[*types.NotFoundException](err) || errs.IsA[*types.InvalidInputException](err) { + if IsANotFoundError(err) || errs.IsA[*types.InvalidInputException](err) { return nil, &retry.NotFoundError{ LastError: err, LastRequest: in, diff --git a/internal/service/lightsail/domain.go b/internal/service/lightsail/domain.go index 500e125c095e..9511e7d97b05 100644 --- a/internal/service/lightsail/domain.go +++ b/internal/service/lightsail/domain.go @@ -6,11 +6,9 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/lightsail" - "github.com/aws/aws-sdk-go-v2/service/lightsail/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" - "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" ) @@ -59,7 +57,7 @@ func resourceDomainRead(ctx context.Context, d *schema.ResourceData, meta interf }) if err != nil { - if errs.IsA[*types.NotFoundException](err) { + if IsANotFoundError(err) { log.Printf("[WARN] Lightsail Domain (%s) not found, removing from state", d.Id()) d.SetId("") return diags diff --git a/internal/service/lightsail/domain_entry.go b/internal/service/lightsail/domain_entry.go index da3d68b02016..66efccdf8c9c 100644 --- a/internal/service/lightsail/domain_entry.go +++ b/internal/service/lightsail/domain_entry.go @@ -355,7 +355,7 @@ func FindDomainEntryById(ctx context.Context, conn *lightsail.Client, id string) out, err := conn.GetDomain(ctx, in) - if errs.IsA[*types.NotFoundException](err) { + if IsANotFoundError(err) { return nil, &retry.NotFoundError{ LastError: err, LastRequest: in, diff --git a/internal/service/lightsail/domain_test.go b/internal/service/lightsail/domain_test.go index 50cc752bf335..e1da5c6942f7 100644 --- a/internal/service/lightsail/domain_test.go +++ b/internal/service/lightsail/domain_test.go @@ -15,7 +15,6 @@ 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/errs" tflightsail "github.com/hashicorp/terraform-provider-aws/internal/service/lightsail" ) @@ -105,7 +104,7 @@ func testAccCheckDomainDestroy(ctx context.Context) resource.TestCheckFunc { DomainName: aws.String(rs.Primary.ID), }) - if errs.IsA[*types.NotFoundException](err) { + if tflightsail.IsANotFoundError(err) { continue } diff --git a/internal/service/lightsail/errs.go b/internal/service/lightsail/errs.go new file mode 100644 index 000000000000..c3c8644fed2e --- /dev/null +++ b/internal/service/lightsail/errs.go @@ -0,0 +1,18 @@ +package lightsail + +import ( + "strings" + + "github.com/aws/aws-sdk-go-v2/service/lightsail/types" + "github.com/hashicorp/terraform-provider-aws/internal/errs" +) + +// Some Operations do not properly return the types.NotFoundException error +// This function matches on the types.NotFoundException or if the error text contains "DoesNotExist" +func IsANotFoundError(err error) bool { + if err != nil { + return errs.IsA[*types.NotFoundException](err) || strings.Contains(err.Error(), "DoesNotExist") + } else { + return false + } +} diff --git a/internal/service/lightsail/instance.go b/internal/service/lightsail/instance.go index 3b2a34acc616..302df07f2018 100644 --- a/internal/service/lightsail/instance.go +++ b/internal/service/lightsail/instance.go @@ -433,7 +433,7 @@ func FindInstanceById(ctx context.Context, conn *lightsail.Client, id string) (* in := &lightsail.GetInstanceInput{InstanceName: aws.String(id)} out, err := conn.GetInstance(ctx, in) - if errs.IsA[*types.NotFoundException](err) { + if IsANotFoundError(err) { return nil, &retry.NotFoundError{ LastError: err, LastRequest: in, diff --git a/internal/service/lightsail/instance_public_ports_test.go b/internal/service/lightsail/instance_public_ports_test.go index faf98c95a25d..a660b66d938d 100644 --- a/internal/service/lightsail/instance_public_ports_test.go +++ b/internal/service/lightsail/instance_public_ports_test.go @@ -8,13 +8,11 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/lightsail" - "github.com/aws/aws-sdk-go-v2/service/lightsail/types" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "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/errs" tflightsail "github.com/hashicorp/terraform-provider-aws/internal/service/lightsail" ) @@ -245,7 +243,7 @@ func testAccCheckInstancePublicPortsDestroy(ctx context.Context) resource.TestCh output, err := conn.GetInstancePortStates(ctx, input) - if errs.IsA[*types.NotFoundException](err) { + if tflightsail.IsANotFoundError(err) { continue } diff --git a/internal/service/lightsail/key_pair.go b/internal/service/lightsail/key_pair.go index 4914f8d8f6ea..ba7c07f83ccb 100644 --- a/internal/service/lightsail/key_pair.go +++ b/internal/service/lightsail/key_pair.go @@ -14,7 +14,6 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/id" "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" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" "github.com/hashicorp/terraform-provider-aws/internal/vault/helper/pgpkeys" ) @@ -178,7 +177,7 @@ func resourceKeyPairRead(ctx context.Context, d *schema.ResourceData, meta inter }) if err != nil { - if errs.IsA[*types.NotFoundException](err) { + if IsANotFoundError(err) { log.Printf("[WARN] Lightsail KeyPair (%s) not found, removing from state", d.Id()) d.SetId("") return diags diff --git a/internal/service/lightsail/key_pair_test.go b/internal/service/lightsail/key_pair_test.go index 608383ebb849..d2cd2e4d6477 100644 --- a/internal/service/lightsail/key_pair_test.go +++ b/internal/service/lightsail/key_pair_test.go @@ -9,13 +9,12 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/lightsail" - "github.com/aws/aws-sdk-go-v2/service/lightsail/types" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "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/errs" + tflightsail "github.com/hashicorp/terraform-provider-aws/internal/service/lightsail" ) func TestAccLightsailKeyPair_basic(t *testing.T) { @@ -167,7 +166,7 @@ func testAccCheckKeyPairDestroy(ctx context.Context) resource.TestCheckFunc { KeyPairName: aws.String(rs.Primary.Attributes["name"]), }) - if errs.IsA[*types.NotFoundException](err) { + if tflightsail.IsANotFoundError(err) { continue } diff --git a/internal/service/lightsail/lb.go b/internal/service/lightsail/lb.go index a21bf6f5d2ff..7d82743c3a63 100644 --- a/internal/service/lightsail/lb.go +++ b/internal/service/lightsail/lb.go @@ -14,7 +14,6 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/create" - "github.com/hashicorp/terraform-provider-aws/internal/errs" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/internal/verify" @@ -213,7 +212,7 @@ func FindLoadBalancerById(ctx context.Context, conn *lightsail.Client, name stri in := &lightsail.GetLoadBalancerInput{LoadBalancerName: aws.String(name)} out, err := conn.GetLoadBalancer(ctx, in) - if errs.IsA[*types.NotFoundException](err) { + if IsANotFoundError(err) { return nil, &retry.NotFoundError{ LastError: err, LastRequest: in, diff --git a/internal/service/lightsail/lb_attachment.go b/internal/service/lightsail/lb_attachment.go index c1f732d912cb..e5f11ded34bd 100644 --- a/internal/service/lightsail/lb_attachment.go +++ b/internal/service/lightsail/lb_attachment.go @@ -15,7 +15,6 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/create" - "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -153,7 +152,7 @@ func FindLoadBalancerAttachmentById(ctx context.Context, conn *lightsail.Client, in := &lightsail.GetLoadBalancerInput{LoadBalancerName: aws.String(lbName)} out, err := conn.GetLoadBalancer(ctx, in) - if errs.IsA[*types.NotFoundException](err) { + if IsANotFoundError(err) { return nil, &retry.NotFoundError{ LastError: err, LastRequest: in, diff --git a/internal/service/lightsail/lb_certificate.go b/internal/service/lightsail/lb_certificate.go index 41f8f507c1ef..5dd05f7fc003 100644 --- a/internal/service/lightsail/lb_certificate.go +++ b/internal/service/lightsail/lb_certificate.go @@ -18,7 +18,6 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/create" - "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -257,7 +256,7 @@ func FindLoadBalancerCertificateById(ctx context.Context, conn *lightsail.Client in := &lightsail.GetLoadBalancerTlsCertificatesInput{LoadBalancerName: aws.String(lbName)} out, err := conn.GetLoadBalancerTlsCertificates(ctx, in) - if errs.IsA[*types.NotFoundException](err) { + if IsANotFoundError(err) { return nil, &retry.NotFoundError{ LastError: err, LastRequest: in, diff --git a/internal/service/lightsail/lb_certificate_attachment.go b/internal/service/lightsail/lb_certificate_attachment.go index ce6c9a2690d3..8a4866380178 100644 --- a/internal/service/lightsail/lb_certificate_attachment.go +++ b/internal/service/lightsail/lb_certificate_attachment.go @@ -16,7 +16,6 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/create" - "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -121,7 +120,7 @@ func FindLoadBalancerCertificateAttachmentById(ctx context.Context, conn *lights in := &lightsail.GetLoadBalancerTlsCertificatesInput{LoadBalancerName: aws.String(lbName)} out, err := conn.GetLoadBalancerTlsCertificates(ctx, in) - if errs.IsA[*types.NotFoundException](err) { + if IsANotFoundError(err) { return nil, &retry.NotFoundError{ LastError: err, LastRequest: in, diff --git a/internal/service/lightsail/lb_https_redirection_policy.go b/internal/service/lightsail/lb_https_redirection_policy.go index ceb85e765dfa..88ef03703d1a 100644 --- a/internal/service/lightsail/lb_https_redirection_policy.go +++ b/internal/service/lightsail/lb_https_redirection_policy.go @@ -14,7 +14,6 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/create" - "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -151,7 +150,7 @@ func FindLoadBalancerHTTPSRedirectionPolicyById(ctx context.Context, conn *light in := &lightsail.GetLoadBalancerInput{LoadBalancerName: aws.String(id)} out, err := conn.GetLoadBalancer(ctx, in) - if errs.IsA[*types.NotFoundException](err) { + if IsANotFoundError(err) { return nil, &retry.NotFoundError{ LastError: err, LastRequest: in, diff --git a/internal/service/lightsail/lb_stickiness_policy.go b/internal/service/lightsail/lb_stickiness_policy.go index 42fcf0c5af58..6d623accc7fc 100644 --- a/internal/service/lightsail/lb_stickiness_policy.go +++ b/internal/service/lightsail/lb_stickiness_policy.go @@ -15,7 +15,6 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/create" - "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -197,7 +196,7 @@ func FindLoadBalancerStickinessPolicyById(ctx context.Context, conn *lightsail.C in := &lightsail.GetLoadBalancerInput{LoadBalancerName: aws.String(id)} out, err := conn.GetLoadBalancer(ctx, in) - if errs.IsA[*types.NotFoundException](err) { + if IsANotFoundError(err) { return nil, &retry.NotFoundError{ LastError: err, LastRequest: in, diff --git a/internal/service/lightsail/static_ip.go b/internal/service/lightsail/static_ip.go index d97056f436c9..9460a87079db 100644 --- a/internal/service/lightsail/static_ip.go +++ b/internal/service/lightsail/static_ip.go @@ -6,11 +6,9 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/lightsail" - "github.com/aws/aws-sdk-go-v2/service/lightsail/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" - "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" ) @@ -71,7 +69,7 @@ func resourceStaticIPRead(ctx context.Context, d *schema.ResourceData, meta inte StaticIpName: aws.String(name), }) if err != nil { - if errs.IsA[*types.NotFoundException](err) { + if IsANotFoundError(err) { log.Printf("[WARN] Lightsail Static IP (%s) not found, removing from state", d.Id()) d.SetId("") return diags diff --git a/internal/service/lightsail/static_ip_attachment.go b/internal/service/lightsail/static_ip_attachment.go index 37c01ae3e8a7..03b54aa02711 100644 --- a/internal/service/lightsail/static_ip_attachment.go +++ b/internal/service/lightsail/static_ip_attachment.go @@ -6,11 +6,9 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/lightsail" - "github.com/aws/aws-sdk-go-v2/service/lightsail/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" - "github.com/hashicorp/terraform-provider-aws/internal/errs" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" ) @@ -69,7 +67,7 @@ func resourceStaticIPAttachmentRead(ctx context.Context, d *schema.ResourceData, StaticIpName: aws.String(staticIpName), }) if err != nil { - if errs.IsA[*types.NotFoundException](err) { + if IsANotFoundError(err) { log.Printf("[WARN] Lightsail Static IP Attachment (%s) not found, removing from state", d.Id()) d.SetId("") return diags diff --git a/internal/service/lightsail/static_ip_attachment_test.go b/internal/service/lightsail/static_ip_attachment_test.go index d8d505eccb31..9b4662701cc6 100644 --- a/internal/service/lightsail/static_ip_attachment_test.go +++ b/internal/service/lightsail/static_ip_attachment_test.go @@ -9,13 +9,12 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/lightsail" - "github.com/aws/aws-sdk-go-v2/service/lightsail/types" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "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/errs" + tflightsail "github.com/hashicorp/terraform-provider-aws/internal/service/lightsail" ) func TestAccLightsailStaticIPAttachment_basic(t *testing.T) { @@ -123,7 +122,7 @@ func testAccCheckStaticIPAttachmentDestroy(ctx context.Context) resource.TestChe StaticIpName: aws.String(rs.Primary.ID), }) - if errs.IsA[*types.NotFoundException](err) { + if tflightsail.IsANotFoundError(err) { continue } diff --git a/internal/service/lightsail/static_ip_test.go b/internal/service/lightsail/static_ip_test.go index 7d32d85e6230..de85ac4f34b1 100644 --- a/internal/service/lightsail/static_ip_test.go +++ b/internal/service/lightsail/static_ip_test.go @@ -9,13 +9,12 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/lightsail" - "github.com/aws/aws-sdk-go-v2/service/lightsail/types" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "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/errs" + tflightsail "github.com/hashicorp/terraform-provider-aws/internal/service/lightsail" ) func TestAccLightsailStaticIP_basic(t *testing.T) { @@ -115,7 +114,7 @@ func testAccCheckStaticIPDestroy(ctx context.Context) resource.TestCheckFunc { StaticIpName: aws.String(rs.Primary.ID), }) - if errs.IsA[*types.NotFoundException](err) { + if tflightsail.IsANotFoundError(err) { continue } From df7c7f9b7c529e868dd274f8fd18eb9528a046d2 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Thu, 8 Jun 2023 13:53:40 -0400 Subject: [PATCH 58/81] lightsail: Amend database, use new IsANotFoundError function --- internal/service/lightsail/database.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/internal/service/lightsail/database.go b/internal/service/lightsail/database.go index 9d3934aa6b3e..905191f187ea 100644 --- a/internal/service/lightsail/database.go +++ b/internal/service/lightsail/database.go @@ -13,7 +13,6 @@ import ( "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/errs" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/verify" "github.com/hashicorp/terraform-provider-aws/names" @@ -274,7 +273,7 @@ func resourceDatabaseRead(ctx context.Context, d *schema.ResourceData, meta inte // This is to support importing a resource that is not in a ready state. database, err := waitDatabaseModified(ctx, conn, aws.String(d.Id())) - if !d.IsNewResource() && errs.IsA[*types.NotFoundException](err) { + if !d.IsNewResource() && IsANotFoundError(err) { log.Printf("[WARN] Lightsail Relational Database (%s) not found, removing from state", d.Id()) d.SetId("") return nil From bda5e59fd777778a76fa3dc3e7d44670c4e568b8 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Thu, 8 Jun 2023 14:03:50 -0400 Subject: [PATCH 59/81] lightsail: Amend instance and instance_test, move to IsANotFoundError --- internal/service/lightsail/instance_public_ports.go | 3 +-- internal/service/lightsail/instance_test.go | 6 ++---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/internal/service/lightsail/instance_public_ports.go b/internal/service/lightsail/instance_public_ports.go index 522b8f090a74..02e0a2031d43 100644 --- a/internal/service/lightsail/instance_public_ports.go +++ b/internal/service/lightsail/instance_public_ports.go @@ -9,7 +9,6 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/lightsail" "github.com/aws/aws-sdk-go-v2/service/lightsail/types" - "github.com/hashicorp/aws-sdk-go-base/v2/awsv1shim/v2/tfawserr" multierror "github.com/hashicorp/go-multierror" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -134,7 +133,7 @@ func resourceInstancePublicPortsRead(ctx context.Context, d *schema.ResourceData output, err := conn.GetInstancePortStates(ctx, input) - if !d.IsNewResource() && tfawserr.ErrCodeEquals(err, "NotFoundException") { + if !d.IsNewResource() && IsANotFoundError(err) { log.Printf("[WARN] Lightsail instance public ports (%s) not found, removing from state", d.Id()) d.SetId("") return diags diff --git a/internal/service/lightsail/instance_test.go b/internal/service/lightsail/instance_test.go index bc5d696dfaa5..b02a47ecd643 100644 --- a/internal/service/lightsail/instance_test.go +++ b/internal/service/lightsail/instance_test.go @@ -146,7 +146,7 @@ func TestAccLightsailInstance_tags(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "blueprint_id"), resource.TestCheckResourceAttrSet(resourceName, "bundle_id"), resource.TestCheckResourceAttrSet(resourceName, "key_pair_name"), - resource.TestCheckResourceAttr(resourceName, "tags.%", "2"), + resource.TestCheckResourceAttr(resourceName, "tags.%", "1"), ), }, { @@ -157,7 +157,7 @@ func TestAccLightsailInstance_tags(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "blueprint_id"), resource.TestCheckResourceAttrSet(resourceName, "bundle_id"), resource.TestCheckResourceAttrSet(resourceName, "key_pair_name"), - resource.TestCheckResourceAttr(resourceName, "tags.%", "3"), + resource.TestCheckResourceAttr(resourceName, "tags.%", "2"), ), }, }, @@ -442,7 +442,6 @@ resource "aws_lightsail_instance" "test" { tags = { Name = "tf-test" - KeyOnlyTag = "" } } `, rName)) @@ -460,7 +459,6 @@ resource "aws_lightsail_instance" "test" { tags = { Name = "tf-test", - KeyOnlyTag = "" ExtraName = "tf-test" } } From a017635e599edf334abeeb31889b5be03596addf Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Thu, 8 Jun 2023 14:36:49 -0400 Subject: [PATCH 60/81] conns: Amend config, remove un needed lightsail reties --- internal/conns/config.go | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/internal/conns/config.go b/internal/conns/config.go index 2f45f62fc343..2fe0e4a13a67 100644 --- a/internal/conns/config.go +++ b/internal/conns/config.go @@ -24,7 +24,6 @@ import ( "github.com/aws/aws-sdk-go/service/globalaccelerator" "github.com/aws/aws-sdk-go/service/kafka" "github.com/aws/aws-sdk-go/service/kinesis" - "github.com/aws/aws-sdk-go/service/lightsail" "github.com/aws/aws-sdk-go/service/organizations" "github.com/aws/aws-sdk-go/service/route53" "github.com/aws/aws-sdk-go/service/route53recoverycontrolconfig" @@ -460,20 +459,6 @@ func (c *Config) ConfigureProvider(ctx context.Context, client *AWSClient) (*AWS } }) - client.lightsailConn.Handlers.Retry.PushBack(func(r *request.Request) { - switch r.Operation.Name { - case "CreateContainerService", "UpdateContainerService", "CreateContainerServiceDeployment": - if tfawserr.ErrMessageContains(r.Error, lightsail.ErrCodeInvalidInputException, "Please try again in a few minutes") { - r.Retryable = aws.Bool(true) - } - case "DeleteContainerService": - if tfawserr.ErrMessageContains(r.Error, lightsail.ErrCodeInvalidInputException, "Please try again in a few minutes") || - tfawserr.ErrMessageContains(r.Error, lightsail.ErrCodeInvalidInputException, "Please wait for it to complete before trying again") { - r.Retryable = aws.Bool(true) - } - } - }) - client.organizationsConn.Handlers.Retry.PushBack(func(r *request.Request) { // Retry on the following error: // ConcurrentModificationException: AWS Organizations can't complete your request because it conflicts with another attempt to modify the same entity. Try again later. From 3cfa3a57331beb66525ab4b500b7c0c16cf6c2d5 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Thu, 8 Jun 2023 15:44:48 -0400 Subject: [PATCH 61/81] lightsail: Amend container_service_test, Serialize tests --- .../lightsail/container_service_test.go | 38 ++++++++++++++----- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/internal/service/lightsail/container_service_test.go b/internal/service/lightsail/container_service_test.go index 4761e45a7650..734ae609fd56 100644 --- a/internal/service/lightsail/container_service_test.go +++ b/internal/service/lightsail/container_service_test.go @@ -18,7 +18,27 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/tfresource" ) -func TestAccLightsailContainerService_basic(t *testing.T) { +// LightSail only allows 5 Container Serivces pending per account. Serializing these tests simplifies running all +// Container tests without risk of hitting the account limit. +func TestAccLightsailContainerService_serial(t *testing.T) { + t.Parallel() + + testCases := map[string]func(t *testing.T){ + "basic": testAccLightsailContainerService_basic, + "disappears": testAccLightsailContainerService_disappears, + "name": testAccLightsailContainerService_name, + "is_disabled": testAccLightsailContainerService_isDisabled, + "power": testAccLightsailContainerService_power, + "public_domain_names": testAccLightsailContainerService_publicDomainNames, + "private_registry_access": testAccLightsailContainerService_privateRegistryAccess, + "scale": testAccLightsailContainerService_scale, + "tags": testAccLightsailContainerService_tags, + } + + acctest.RunSerialTests1Levels(t, testCases, 0) +} + +func testAccLightsailContainerService_basic(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_container_service.test" @@ -68,7 +88,7 @@ func TestAccLightsailContainerService_basic(t *testing.T) { }) } -func TestAccLightsailContainerService_disappears(t *testing.T) { +func testAccLightsailContainerService_disappears(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_container_service.test" @@ -95,7 +115,7 @@ func TestAccLightsailContainerService_disappears(t *testing.T) { }) } -func TestAccLightsailContainerService_Name(t *testing.T) { +func testAccLightsailContainerService_name(t *testing.T) { ctx := acctest.Context(t) rName1 := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) rName2 := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -129,7 +149,7 @@ func TestAccLightsailContainerService_Name(t *testing.T) { }) } -func TestAccLightsailContainerService_IsDisabled(t *testing.T) { +func testAccLightsailContainerService_isDisabled(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_container_service.test" @@ -162,7 +182,7 @@ func TestAccLightsailContainerService_IsDisabled(t *testing.T) { }) } -func TestAccLightsailContainerService_Power(t *testing.T) { +func testAccLightsailContainerService_power(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_container_service.test" @@ -195,7 +215,7 @@ func TestAccLightsailContainerService_Power(t *testing.T) { }) } -func TestAccLightsailContainerService_PublicDomainNames(t *testing.T) { +func testAccLightsailContainerService_publicDomainNames(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -217,7 +237,7 @@ func TestAccLightsailContainerService_PublicDomainNames(t *testing.T) { }) } -func TestAccLightsailContainerService_PrivateRegistryAccess(t *testing.T) { +func testAccLightsailContainerService_privateRegistryAccess(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_container_service.test" @@ -246,7 +266,7 @@ func TestAccLightsailContainerService_PrivateRegistryAccess(t *testing.T) { }) } -func TestAccLightsailContainerService_Scale(t *testing.T) { +func testAccLightsailContainerService_scale(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_container_service.test" @@ -279,7 +299,7 @@ func TestAccLightsailContainerService_Scale(t *testing.T) { }) } -func TestAccLightsailContainerService_tags(t *testing.T) { +func testAccLightsailContainerService_tags(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_container_service.test" From 6fd1e7f21e679dd0c2fd638c344d40b708e91ab0 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Thu, 8 Jun 2023 15:45:15 -0400 Subject: [PATCH 62/81] lightsail: Amend container_service_deployment_version_test, serialize tests --- ...ntainer_service_deployment_version_test.go | 29 +++++++++++++++---- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/internal/service/lightsail/container_service_deployment_version_test.go b/internal/service/lightsail/container_service_deployment_version_test.go index 2abe3169db53..f92bdc381e49 100644 --- a/internal/service/lightsail/container_service_deployment_version_test.go +++ b/internal/service/lightsail/container_service_deployment_version_test.go @@ -22,6 +22,23 @@ const ( redisImage = "redis:latest" ) +// LightSail only allows 5 Container Serivces pending per account. Serializing these tests simplifies running all +// Container tests without risk of hitting the account limit. +func TestAccLightsailContainerServiceDeploymentVersion_serial(t *testing.T) { + t.Parallel() + + testCases := map[string]func(t *testing.T){ + "basic": testAccLightsailContainerServiceDeploymentVersion_container_basic, + "multiple": testAccLightsailContainerServiceDeploymentVersion_container_multiple, + "environment": testAccLightsailContainerServiceDeploymentVersion_container_environment, + "ports": testAccLightsailContainerServiceDeploymentVersion_container_ports, + "public_endpoint": testAccLightsailContainerServiceDeploymentVersion_container_publicEndpoint, + "enable_service": testAccLightsailContainerServiceDeploymentVersion_Container_enableService, + } + + acctest.RunSerialTests1Levels(t, testCases, 0) +} + func TestContainerServiceDeploymentVersionParseResourceID(t *testing.T) { t.Parallel() @@ -95,7 +112,7 @@ func TestContainerServiceDeploymentVersionParseResourceID(t *testing.T) { } } -func TestAccLightsailContainerServiceDeploymentVersion_Container_Basic(t *testing.T) { +func testAccLightsailContainerServiceDeploymentVersion_container_basic(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) containerName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -136,7 +153,7 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_Basic(t *testin }) } -func TestAccLightsailContainerServiceDeploymentVersion_Container_Multiple(t *testing.T) { +func testAccLightsailContainerServiceDeploymentVersion_container_multiple(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) containerName1 := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -175,7 +192,7 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_Multiple(t *tes }) } -func TestAccLightsailContainerServiceDeploymentVersion_Container_Environment(t *testing.T) { +func testAccLightsailContainerServiceDeploymentVersion_container_environment(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) containerName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -254,7 +271,7 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_Environment(t * }) } -func TestAccLightsailContainerServiceDeploymentVersion_Container_Ports(t *testing.T) { +func testAccLightsailContainerServiceDeploymentVersion_container_ports(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) containerName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -328,7 +345,7 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_Ports(t *testin }) } -func TestAccLightsailContainerServiceDeploymentVersion_Container_PublicEndpoint(t *testing.T) { +func testAccLightsailContainerServiceDeploymentVersion_container_publicEndpoint(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) containerName1 := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -441,7 +458,7 @@ func TestAccLightsailContainerServiceDeploymentVersion_Container_PublicEndpoint( }) } -func TestAccLightsailContainerServiceDeploymentVersion_Container_EnableService(t *testing.T) { +func testAccLightsailContainerServiceDeploymentVersion_Container_enableService(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) containerName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) From bf195d24c8955ebb8edd011e07f97434c391434e Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Thu, 8 Jun 2023 15:55:29 -0400 Subject: [PATCH 63/81] lightsail: Amend container_service_test, fix test serialization --- ...ntainer_service_deployment_version_test.go | 18 +++++++------- .../lightsail/container_service_test.go | 24 ++++++++++--------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/internal/service/lightsail/container_service_deployment_version_test.go b/internal/service/lightsail/container_service_deployment_version_test.go index f92bdc381e49..7296d5a7c122 100644 --- a/internal/service/lightsail/container_service_deployment_version_test.go +++ b/internal/service/lightsail/container_service_deployment_version_test.go @@ -27,16 +27,18 @@ const ( func TestAccLightsailContainerServiceDeploymentVersion_serial(t *testing.T) { t.Parallel() - testCases := map[string]func(t *testing.T){ - "basic": testAccLightsailContainerServiceDeploymentVersion_container_basic, - "multiple": testAccLightsailContainerServiceDeploymentVersion_container_multiple, - "environment": testAccLightsailContainerServiceDeploymentVersion_container_environment, - "ports": testAccLightsailContainerServiceDeploymentVersion_container_ports, - "public_endpoint": testAccLightsailContainerServiceDeploymentVersion_container_publicEndpoint, - "enable_service": testAccLightsailContainerServiceDeploymentVersion_Container_enableService, + testCases := map[string]map[string]func(t *testing.T){ + "container_deployment_version": { + "basic": testAccLightsailContainerServiceDeploymentVersion_container_basic, + "multiple": testAccLightsailContainerServiceDeploymentVersion_container_multiple, + "environment": testAccLightsailContainerServiceDeploymentVersion_container_environment, + "ports": testAccLightsailContainerServiceDeploymentVersion_container_ports, + "public_endpoint": testAccLightsailContainerServiceDeploymentVersion_container_publicEndpoint, + "enable_service": testAccLightsailContainerServiceDeploymentVersion_Container_enableService, + }, } - acctest.RunSerialTests1Levels(t, testCases, 0) + acctest.RunSerialTests2Levels(t, testCases, 0) } func TestContainerServiceDeploymentVersionParseResourceID(t *testing.T) { diff --git a/internal/service/lightsail/container_service_test.go b/internal/service/lightsail/container_service_test.go index 734ae609fd56..32694efa6de5 100644 --- a/internal/service/lightsail/container_service_test.go +++ b/internal/service/lightsail/container_service_test.go @@ -23,19 +23,21 @@ import ( func TestAccLightsailContainerService_serial(t *testing.T) { t.Parallel() - testCases := map[string]func(t *testing.T){ - "basic": testAccLightsailContainerService_basic, - "disappears": testAccLightsailContainerService_disappears, - "name": testAccLightsailContainerService_name, - "is_disabled": testAccLightsailContainerService_isDisabled, - "power": testAccLightsailContainerService_power, - "public_domain_names": testAccLightsailContainerService_publicDomainNames, - "private_registry_access": testAccLightsailContainerService_privateRegistryAccess, - "scale": testAccLightsailContainerService_scale, - "tags": testAccLightsailContainerService_tags, + testCases := map[string]map[string]func(t *testing.T){ + "container_service": { + "basic": testAccLightsailContainerService_basic, + "disappears": testAccLightsailContainerService_disappears, + "name": testAccLightsailContainerService_name, + "is_disabled": testAccLightsailContainerService_isDisabled, + "power": testAccLightsailContainerService_power, + "public_domain_names": testAccLightsailContainerService_publicDomainNames, + "private_registry_access": testAccLightsailContainerService_privateRegistryAccess, + "scale": testAccLightsailContainerService_scale, + "tags": testAccLightsailContainerService_tags, + }, } - acctest.RunSerialTests1Levels(t, testCases, 0) + acctest.RunSerialTests2Levels(t, testCases, 0) } func testAccLightsailContainerService_basic(t *testing.T) { From 7aba50452e3639386fdfdab4de7a49905dbf1925 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Fri, 9 Jun 2023 13:27:28 -0400 Subject: [PATCH 64/81] conns: move lightsail to manual client --- internal/conns/config_gen.go | 6 ------ names/names_data.csv | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/internal/conns/config_gen.go b/internal/conns/config_gen.go index c9b0906e8bc0..7dc7898c37b8 100644 --- a/internal/conns/config_gen.go +++ b/internal/conns/config_gen.go @@ -23,7 +23,6 @@ import ( "github.com/aws/aws-sdk-go-v2/service/ivschat" "github.com/aws/aws-sdk-go-v2/service/kendra" lambda_sdkv2 "github.com/aws/aws-sdk-go-v2/service/lambda" - "github.com/aws/aws-sdk-go-v2/service/lightsail" "github.com/aws/aws-sdk-go-v2/service/medialive" "github.com/aws/aws-sdk-go-v2/service/oam" "github.com/aws/aws-sdk-go-v2/service/opensearchserverless" @@ -684,11 +683,6 @@ func (c *Config) sdkv2Conns(client *AWSClient, cfg aws_sdkv2.Config) { o.EndpointResolver = kendra.EndpointResolverFromURL(endpoint) } }) - client.lightsailClient = lightsail.NewFromConfig(cfg, func(o *lightsail.Options) { - if endpoint := c.Endpoints[names.Lightsail]; endpoint != "" { - o.EndpointResolver = lightsail.EndpointResolverFromURL(endpoint) - } - }) client.medialiveClient = medialive.NewFromConfig(cfg, func(o *medialive.Options) { if endpoint := c.Endpoints[names.MediaLive]; endpoint != "" { o.EndpointResolver = medialive.EndpointResolverFromURL(endpoint) diff --git a/names/names_data.csv b/names/names_data.csv index 87604552fa29..69372999a738 100644 --- a/names/names_data.csv +++ b/names/names_data.csv @@ -217,7 +217,7 @@ lexv2-models,lexv2models,lexmodelsv2,lexmodelsv2,,lexmodelsv2,,lexv2models,LexMo lex-runtime,lexruntime,lexruntimeservice,lexruntimeservice,,lexruntime,,lexruntimeservice,LexRuntime,LexRuntimeService,,1,,,aws_lexruntime_,,lexruntime_,Lex Runtime,Amazon,,,,, lexv2-runtime,lexv2runtime,lexruntimev2,lexruntimev2,,lexruntimev2,,lexv2runtime,LexRuntimeV2,LexRuntimeV2,,1,,,aws_lexruntimev2_,,lexruntimev2_,Lex Runtime V2,Amazon,,,,, license-manager,licensemanager,licensemanager,licensemanager,,licensemanager,,,LicenseManager,LicenseManager,,1,,,aws_licensemanager_,,licensemanager_,License Manager,AWS,,,,, -lightsail,lightsail,lightsail,lightsail,,lightsail,,,Lightsail,Lightsail,,,2,,aws_lightsail_,,lightsail_,Lightsail,Amazon,,,,, +lightsail,lightsail,lightsail,lightsail,,lightsail,,,Lightsail,Lightsail,x,,2,,aws_lightsail_,,lightsail_,Lightsail,Amazon,,,,, location,location,locationservice,location,,location,,locationservice,Location,LocationService,,1,,,aws_location_,,location_,Location,Amazon,,,,, lookoutequipment,lookoutequipment,lookoutequipment,lookoutequipment,,lookoutequipment,,,LookoutEquipment,LookoutEquipment,,1,,,aws_lookoutequipment_,,lookoutequipment_,Lookout for Equipment,Amazon,,,,, lookoutmetrics,lookoutmetrics,lookoutmetrics,lookoutmetrics,,lookoutmetrics,,,LookoutMetrics,LookoutMetrics,,1,,,aws_lookoutmetrics_,,lookoutmetrics_,Lookout for Metrics,Amazon,,,,, From 65a3e006cd6e7c4c963c63e3f206b66001e75d85 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Fri, 9 Jun 2023 13:28:05 -0400 Subject: [PATCH 65/81] lightsail: Amend container_service_deployment_version, fix container pointer --- .../service/lightsail/container_service_deployment_version.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/service/lightsail/container_service_deployment_version.go b/internal/service/lightsail/container_service_deployment_version.go index a657e798a07f..576b40ac7697 100644 --- a/internal/service/lightsail/container_service_deployment_version.go +++ b/internal/service/lightsail/container_service_deployment_version.go @@ -274,7 +274,7 @@ func expandContainerServiceDeploymentContainers(tfList []interface{}) map[string containerName := tfMap["container_name"].(string) - container := &types.Container{ + container := types.Container{ Image: aws.String(tfMap["image"].(string)), } @@ -290,7 +290,7 @@ func expandContainerServiceDeploymentContainers(tfList []interface{}) map[string container.Ports = expandContainerServiceProtocol(v) } - result[containerName] = *container + result[containerName] = container } return result From 150105bdde96935cb50f6e51083b4a6a39239357 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Fri, 9 Jun 2023 13:28:43 -0400 Subject: [PATCH 66/81] lightsail: Amend container_service_deployment_version_test, Remove serialized tests --- ...ntainer_service_deployment_version_test.go | 31 ++++--------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/internal/service/lightsail/container_service_deployment_version_test.go b/internal/service/lightsail/container_service_deployment_version_test.go index 7296d5a7c122..2cc8f3b83f73 100644 --- a/internal/service/lightsail/container_service_deployment_version_test.go +++ b/internal/service/lightsail/container_service_deployment_version_test.go @@ -22,25 +22,6 @@ const ( redisImage = "redis:latest" ) -// LightSail only allows 5 Container Serivces pending per account. Serializing these tests simplifies running all -// Container tests without risk of hitting the account limit. -func TestAccLightsailContainerServiceDeploymentVersion_serial(t *testing.T) { - t.Parallel() - - testCases := map[string]map[string]func(t *testing.T){ - "container_deployment_version": { - "basic": testAccLightsailContainerServiceDeploymentVersion_container_basic, - "multiple": testAccLightsailContainerServiceDeploymentVersion_container_multiple, - "environment": testAccLightsailContainerServiceDeploymentVersion_container_environment, - "ports": testAccLightsailContainerServiceDeploymentVersion_container_ports, - "public_endpoint": testAccLightsailContainerServiceDeploymentVersion_container_publicEndpoint, - "enable_service": testAccLightsailContainerServiceDeploymentVersion_Container_enableService, - }, - } - - acctest.RunSerialTests2Levels(t, testCases, 0) -} - func TestContainerServiceDeploymentVersionParseResourceID(t *testing.T) { t.Parallel() @@ -114,7 +95,7 @@ func TestContainerServiceDeploymentVersionParseResourceID(t *testing.T) { } } -func testAccLightsailContainerServiceDeploymentVersion_container_basic(t *testing.T) { +func TestAccLightsailContainerServiceDeploymentVersion_container_basic(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) containerName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -155,7 +136,7 @@ func testAccLightsailContainerServiceDeploymentVersion_container_basic(t *testin }) } -func testAccLightsailContainerServiceDeploymentVersion_container_multiple(t *testing.T) { +func TestAccLightsailContainerServiceDeploymentVersion_container_multiple(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) containerName1 := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -194,7 +175,7 @@ func testAccLightsailContainerServiceDeploymentVersion_container_multiple(t *tes }) } -func testAccLightsailContainerServiceDeploymentVersion_container_environment(t *testing.T) { +func TestAccLightsailContainerServiceDeploymentVersion_container_environment(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) containerName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -273,7 +254,7 @@ func testAccLightsailContainerServiceDeploymentVersion_container_environment(t * }) } -func testAccLightsailContainerServiceDeploymentVersion_container_ports(t *testing.T) { +func TestAccLightsailContainerServiceDeploymentVersion_container_ports(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) containerName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -347,7 +328,7 @@ func testAccLightsailContainerServiceDeploymentVersion_container_ports(t *testin }) } -func testAccLightsailContainerServiceDeploymentVersion_container_publicEndpoint(t *testing.T) { +func TestAccLightsailContainerServiceDeploymentVersion_container_publicEndpoint(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) containerName1 := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -460,7 +441,7 @@ func testAccLightsailContainerServiceDeploymentVersion_container_publicEndpoint( }) } -func testAccLightsailContainerServiceDeploymentVersion_Container_enableService(t *testing.T) { +func TestAccLightsailContainerServiceDeploymentVersion_Container_enableService(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) containerName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) From c8216e64d2c64b5d70ad518a5a6e4951e7805e96 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Fri, 9 Jun 2023 13:29:18 -0400 Subject: [PATCH 67/81] lightsail: Amend container_service_test, remove serialized runner --- .../lightsail/container_service_test.go | 39 +++++-------------- 1 file changed, 9 insertions(+), 30 deletions(-) diff --git a/internal/service/lightsail/container_service_test.go b/internal/service/lightsail/container_service_test.go index 32694efa6de5..a80e80c3e0f0 100644 --- a/internal/service/lightsail/container_service_test.go +++ b/internal/service/lightsail/container_service_test.go @@ -18,29 +18,8 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/tfresource" ) -// LightSail only allows 5 Container Serivces pending per account. Serializing these tests simplifies running all -// Container tests without risk of hitting the account limit. -func TestAccLightsailContainerService_serial(t *testing.T) { - t.Parallel() - - testCases := map[string]map[string]func(t *testing.T){ - "container_service": { - "basic": testAccLightsailContainerService_basic, - "disappears": testAccLightsailContainerService_disappears, - "name": testAccLightsailContainerService_name, - "is_disabled": testAccLightsailContainerService_isDisabled, - "power": testAccLightsailContainerService_power, - "public_domain_names": testAccLightsailContainerService_publicDomainNames, - "private_registry_access": testAccLightsailContainerService_privateRegistryAccess, - "scale": testAccLightsailContainerService_scale, - "tags": testAccLightsailContainerService_tags, - }, - } - - acctest.RunSerialTests2Levels(t, testCases, 0) -} -func testAccLightsailContainerService_basic(t *testing.T) { +func TestAccLightsailContainerService_basic(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_container_service.test" @@ -90,7 +69,7 @@ func testAccLightsailContainerService_basic(t *testing.T) { }) } -func testAccLightsailContainerService_disappears(t *testing.T) { +func TestAccLightsailContainerService_disappears(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_container_service.test" @@ -117,7 +96,7 @@ func testAccLightsailContainerService_disappears(t *testing.T) { }) } -func testAccLightsailContainerService_name(t *testing.T) { +func TestAccLightsailContainerService_name(t *testing.T) { ctx := acctest.Context(t) rName1 := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) rName2 := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -151,7 +130,7 @@ func testAccLightsailContainerService_name(t *testing.T) { }) } -func testAccLightsailContainerService_isDisabled(t *testing.T) { +func TestAccLightsailContainerService_isDisabled(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_container_service.test" @@ -184,7 +163,7 @@ func testAccLightsailContainerService_isDisabled(t *testing.T) { }) } -func testAccLightsailContainerService_power(t *testing.T) { +func TestAccLightsailContainerService_power(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_container_service.test" @@ -217,7 +196,7 @@ func testAccLightsailContainerService_power(t *testing.T) { }) } -func testAccLightsailContainerService_publicDomainNames(t *testing.T) { +func TestAccLightsailContainerService_publicDomainNames(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -239,7 +218,7 @@ func testAccLightsailContainerService_publicDomainNames(t *testing.T) { }) } -func testAccLightsailContainerService_privateRegistryAccess(t *testing.T) { +func TestAccLightsailContainerService_privateRegistryAccess(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_container_service.test" @@ -268,7 +247,7 @@ func testAccLightsailContainerService_privateRegistryAccess(t *testing.T) { }) } -func testAccLightsailContainerService_scale(t *testing.T) { +func TestAccLightsailContainerService_scale(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_container_service.test" @@ -301,7 +280,7 @@ func testAccLightsailContainerService_scale(t *testing.T) { }) } -func testAccLightsailContainerService_tags(t *testing.T) { +func TestAccLightsailContainerService_tags(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_lightsail_container_service.test" From 51f7d4734fceadcc3120e25b2d3095f1161870b4 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Fri, 9 Jun 2023 13:29:42 -0400 Subject: [PATCH 68/81] lightsail: Amend distribution, move to enum.Slice --- internal/service/lightsail/distribution.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/internal/service/lightsail/distribution.go b/internal/service/lightsail/distribution.go index ea431d3c5561..0fb284838b84 100644 --- a/internal/service/lightsail/distribution.go +++ b/internal/service/lightsail/distribution.go @@ -16,6 +16,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/create" + "github.com/hashicorp/terraform-provider-aws/internal/enum" "github.com/hashicorp/terraform-provider-aws/internal/errs" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" @@ -147,7 +148,7 @@ func ResourceDistribution() *schema.Resource { Type: schema.TypeString, Optional: true, Description: "The headers that you want your distribution to forward to your origin and base caching on.", - ValidateFunc: validation.StringInSlice([]string{"default", string(types.ForwardValuesAllowList), string(types.ForwardValuesAll)}, false), + ValidateFunc: validation.StringInSlice(enum.Slice("default", types.ForwardValuesAllowList, types.ForwardValuesAll), false), }, }, }, @@ -222,7 +223,7 @@ func ResourceDistribution() *schema.Resource { Type: schema.TypeString, Optional: true, Description: "The IP address type of the distribution.", - ValidateFunc: validation.StringInSlice(flattenIpAddressTypeValues(types.IpAddressType("").Values()), false), + ValidateFunc: validation.StringInSlice(flattenIPAddressTypeValues(types.IpAddressType("").Values()), false), Default: "dualstack", }, "location": { @@ -991,7 +992,7 @@ func flattenHeaderEnumValues(t []types.HeaderEnum) []string { return out } -func flattenIpAddressTypeValues(t []types.IpAddressType) []string { +func flattenIPAddressTypeValues(t []types.IpAddressType) []string { var out []string for _, v := range t { From 8b9271c80b24f37474c58a4714dee80395ff36cd Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Fri, 9 Jun 2023 13:30:00 -0400 Subject: [PATCH 69/81] lightsail: Amend sweep, resolve build issues --- internal/service/lightsail/sweep.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/internal/service/lightsail/sweep.go b/internal/service/lightsail/sweep.go index 231baa665bfe..91a9224bd603 100644 --- a/internal/service/lightsail/sweep.go +++ b/internal/service/lightsail/sweep.go @@ -56,10 +56,6 @@ func sweepContainerServices(region string) error { } for _, service := range output.ContainerServices { - if service == nil { - continue - } - r := ResourceContainerService() d := r.Data(nil) d.SetId(aws.ToString(service.ContainerServiceName)) @@ -76,7 +72,7 @@ func sweepContainerServices(region string) error { sweeperErrs = multierror.Append(sweeperErrs, fmt.Errorf("error listing Lightsail Container Services for %s: %w", region, err)) } - if err := sweep.SweepOrchestrator(ctx, sweepResources); err != nil { + if err := sweep.SweepOrchestrator(sweepResources); err != nil { sweeperErrs = multierror.Append(sweeperErrs, fmt.Errorf("error sweeping Lightsail Container Services for %s: %w", region, err)) } From 5b757632918dc72adf2a200daf304241a2fa0c4d Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Fri, 9 Jun 2023 13:30:15 -0400 Subject: [PATCH 70/81] lightsail: Amend wait, move to enum.Slice --- internal/service/lightsail/wait.go | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/internal/service/lightsail/wait.go b/internal/service/lightsail/wait.go index eaddd9d75a5a..729e8d503c5a 100644 --- a/internal/service/lightsail/wait.go +++ b/internal/service/lightsail/wait.go @@ -11,6 +11,7 @@ import ( "github.com/aws/aws-sdk-go-v2/service/lightsail" "github.com/aws/aws-sdk-go-v2/service/lightsail/types" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" + "github.com/hashicorp/terraform-provider-aws/internal/enum" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" ) @@ -38,8 +39,8 @@ const ( // waitOperation waits for an Operation to return Succeeded or Completed func waitOperation(ctx context.Context, conn *lightsail.Client, oid *string) error { stateConf := &retry.StateChangeConf{ - Pending: []string{string(types.OperationStatusStarted)}, - Target: []string{string(types.OperationStatusCompleted), string(types.OperationStatusSucceeded)}, + Pending: enum.Slice(types.OperationStatusStarted), + Target: enum.Slice(types.OperationStatusCompleted, types.OperationStatusSucceeded), Refresh: statusOperation(ctx, conn, oid), Timeout: OperationTimeout, Delay: OperationDelay, @@ -117,8 +118,8 @@ func waitDatabasePubliclyAccessibleModified(ctx context.Context, conn *lightsail func waitContainerServiceCreated(ctx context.Context, conn *lightsail.Client, serviceName string, timeout time.Duration) error { stateConf := &retry.StateChangeConf{ - Pending: []string{string(types.ContainerServiceStatePending)}, - Target: []string{string(types.ContainerServiceStateReady)}, + Pending: enum.Slice(types.ContainerServiceStatePending), + Target: enum.Slice(types.ContainerServiceStateReady), Refresh: statusContainerService(ctx, conn, serviceName), Timeout: timeout, Delay: 5 * time.Second, @@ -140,8 +141,8 @@ func waitContainerServiceCreated(ctx context.Context, conn *lightsail.Client, se func waitContainerServiceDisabled(ctx context.Context, conn *lightsail.Client, serviceName string, timeout time.Duration) error { stateConf := &retry.StateChangeConf{ - Pending: []string{string(types.ContainerServiceStateUpdating)}, - Target: []string{string(types.ContainerServiceStateDisabled)}, + Pending: enum.Slice(types.ContainerServiceStateUpdating), + Target: enum.Slice(types.ContainerServiceStateDisabled), Refresh: statusContainerService(ctx, conn, serviceName), Timeout: timeout, Delay: 5 * time.Second, @@ -163,8 +164,8 @@ func waitContainerServiceDisabled(ctx context.Context, conn *lightsail.Client, s func waitContainerServiceUpdated(ctx context.Context, conn *lightsail.Client, serviceName string, timeout time.Duration) error { stateConf := &retry.StateChangeConf{ - Pending: []string{string(types.ContainerServiceStateUpdating)}, - Target: []string{string(types.ContainerServiceStateReady), string(types.ContainerServiceStateRunning)}, + Pending: enum.Slice(types.ContainerServiceStateUpdating), + Target: enum.Slice(types.ContainerServiceStateReady, types.ContainerServiceStateRunning), Refresh: statusContainerService(ctx, conn, serviceName), Timeout: timeout, Delay: 5 * time.Second, @@ -186,7 +187,7 @@ func waitContainerServiceUpdated(ctx context.Context, conn *lightsail.Client, se func waitContainerServiceDeleted(ctx context.Context, conn *lightsail.Client, serviceName string, timeout time.Duration) error { stateConf := &retry.StateChangeConf{ - Pending: []string{string(types.ContainerServiceStateDeleting)}, + Pending: enum.Slice(types.ContainerServiceStateDeleting), Target: []string{}, Refresh: statusContainerService(ctx, conn, serviceName), Timeout: timeout, @@ -209,8 +210,8 @@ func waitContainerServiceDeleted(ctx context.Context, conn *lightsail.Client, se func waitContainerServiceDeploymentVersionActive(ctx context.Context, conn *lightsail.Client, serviceName string, version int, timeout time.Duration) error { stateConf := &retry.StateChangeConf{ - Pending: []string{string(types.ContainerServiceDeploymentStateActivating)}, - Target: []string{string(types.ContainerServiceDeploymentStateActive)}, + Pending: enum.Slice(types.ContainerServiceDeploymentStateActivating), + Target: enum.Slice(types.ContainerServiceDeploymentStateActive), Refresh: statusContainerServiceDeploymentVersion(ctx, conn, serviceName, version), Timeout: timeout, Delay: 5 * time.Second, From c2bf7ea1aeb45ccd01d916c3b5c251b2067d4cc6 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Fri, 9 Jun 2023 13:30:54 -0400 Subject: [PATCH 71/81] conns: Amend config, add custom lightsailClient config with retries --- internal/conns/config.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/internal/conns/config.go b/internal/conns/config.go index 2fe0e4a13a67..e6412aff3181 100644 --- a/internal/conns/config.go +++ b/internal/conns/config.go @@ -4,8 +4,14 @@ import ( "context" "log" "strings" + "fmt" + "time" + awsv2 "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/aws/retry" "github.com/aws/aws-sdk-go-v2/feature/ec2/imds" + "github.com/aws/aws-sdk-go-v2/service/lightsail" + lightsailTypes "github.com/aws/aws-sdk-go-v2/service/lightsail/types" "github.com/aws/aws-sdk-go-v2/service/route53domains" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/endpoints" @@ -531,5 +537,27 @@ func (c *Config) ConfigureProvider(ctx context.Context, client *AWSClient) (*AWS } }) + client.lightsailClient = lightsail.NewFromConfig(cfg, func(o *lightsail.Options) { + var lightsailRetryable retry.IsErrorRetryableFunc + lightsailRetryable = func(e error) awsv2.Ternary { + var invalidInput lightsailTypes.InvalidInputException + if tfawserr.ErrMessageContains(e, invalidInput.ErrorCode(), "Please try again in a few minutes") || + tfawserr.ErrMessageContains(e, invalidInput.ErrorCode(), "Please wait for it to complete before trying again") { + return awsv2.TrueTernary + } + return awsv2.UnknownTernary + } + + if endpoint := c.Endpoints[names.Lightsail]; endpoint != "" { + o.EndpointResolver = lightsail.EndpointResolverFromURL(endpoint) + } + + o.Retryer = retry.NewStandard(func(options *retry.StandardOptions) { + options.Retryables = append(options.Retryables, lightsailRetryable) + options.MaxAttempts = 18 + options.Backoff = retry.NewExponentialJitterBackoff(time.Second * 10) + }) + }) + return client, nil } From 0060845e5334b188c0e8ed532ee73143af60fa3d Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Fri, 9 Jun 2023 13:37:10 -0400 Subject: [PATCH 72/81] lightsail: Amend container_service_test, fmt --- internal/service/lightsail/container_service_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/internal/service/lightsail/container_service_test.go b/internal/service/lightsail/container_service_test.go index a80e80c3e0f0..3863363dbca0 100644 --- a/internal/service/lightsail/container_service_test.go +++ b/internal/service/lightsail/container_service_test.go @@ -18,7 +18,6 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/tfresource" ) - func TestAccLightsailContainerService_basic(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) From cd59f70283059d9558d2c35f19b589ba98604a9b Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Fri, 9 Jun 2023 13:49:27 -0400 Subject: [PATCH 73/81] lightsail: Amend instance_test, fmt --- internal/service/lightsail/instance_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/service/lightsail/instance_test.go b/internal/service/lightsail/instance_test.go index b02a47ecd643..9c9554d14eb7 100644 --- a/internal/service/lightsail/instance_test.go +++ b/internal/service/lightsail/instance_test.go @@ -441,7 +441,7 @@ resource "aws_lightsail_instance" "test" { bundle_id = "nano_1_0" tags = { - Name = "tf-test" + Name = "tf-test" } } `, rName)) @@ -458,8 +458,8 @@ resource "aws_lightsail_instance" "test" { bundle_id = "nano_1_0" tags = { - Name = "tf-test", - ExtraName = "tf-test" + Name = "tf-test", + ExtraName = "tf-test" } } `, rName)) From ae34eb0fe84e8e09bde3a628e4064b69782c2acd Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Fri, 9 Jun 2023 13:51:35 -0400 Subject: [PATCH 74/81] conns: Amend config, resolve lightsail retry --- internal/conns/config.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/internal/conns/config.go b/internal/conns/config.go index 7f28ae506db1..382cc9c08cc0 100644 --- a/internal/conns/config.go +++ b/internal/conns/config.go @@ -4,14 +4,12 @@ import ( "context" "log" "strings" - "fmt" "time" awsv2 "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/aws/retry" "github.com/aws/aws-sdk-go-v2/feature/ec2/imds" "github.com/aws/aws-sdk-go-v2/service/lightsail" - lightsailTypes "github.com/aws/aws-sdk-go-v2/service/lightsail/types" "github.com/aws/aws-sdk-go-v2/service/route53domains" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/endpoints" @@ -539,9 +537,7 @@ func (c *Config) ConfigureProvider(ctx context.Context, client *AWSClient) (*AWS client.lightsailClient = lightsail.NewFromConfig(cfg, func(o *lightsail.Options) { var lightsailRetryable retry.IsErrorRetryableFunc lightsailRetryable = func(e error) awsv2.Ternary { - var invalidInput lightsailTypes.InvalidInputException - if tfawserr.ErrMessageContains(e, invalidInput.ErrorCode(), "Please try again in a few minutes") || - tfawserr.ErrMessageContains(e, invalidInput.ErrorCode(), "Please wait for it to complete before trying again") { + if strings.Contains(e.Error(), "Please try again in a few minutes") || strings.Contains(e.Error(), "Please wait for it to complete before trying again") { return awsv2.TrueTernary } return awsv2.UnknownTernary From eaebccdc46c19acf543e6d2621f06ea81342f868 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Sat, 10 Jun 2023 10:56:52 -0400 Subject: [PATCH 75/81] conns: Amend config, move number to const --- internal/conns/config.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/internal/conns/config.go b/internal/conns/config.go index 382cc9c08cc0..3ce1caf92f8c 100644 --- a/internal/conns/config.go +++ b/internal/conns/config.go @@ -48,6 +48,10 @@ import ( "github.com/hashicorp/terraform-provider-aws/names" ) +const ( + tenBackOff = 10 +) + type Config struct { AccessKey string AllowedAccountIds []string @@ -535,13 +539,12 @@ func (c *Config) ConfigureProvider(ctx context.Context, client *AWSClient) (*AWS }) client.lightsailClient = lightsail.NewFromConfig(cfg, func(o *lightsail.Options) { - var lightsailRetryable retry.IsErrorRetryableFunc - lightsailRetryable = func(e error) awsv2.Ternary { + lightsailRetryable := retry.IsErrorRetryableFunc(func(e error) awsv2.Ternary { if strings.Contains(e.Error(), "Please try again in a few minutes") || strings.Contains(e.Error(), "Please wait for it to complete before trying again") { return awsv2.TrueTernary } return awsv2.UnknownTernary - } + }) if endpoint := c.Endpoints[names.Lightsail]; endpoint != "" { o.EndpointResolver = lightsail.EndpointResolverFromURL(endpoint) @@ -550,7 +553,7 @@ func (c *Config) ConfigureProvider(ctx context.Context, client *AWSClient) (*AWS o.Retryer = retry.NewStandard(func(options *retry.StandardOptions) { options.Retryables = append(options.Retryables, lightsailRetryable) options.MaxAttempts = 18 - options.Backoff = retry.NewExponentialJitterBackoff(time.Second * 10) + options.Backoff = retry.NewExponentialJitterBackoff(time.Second * tenBackOff) }) }) From ef7cc5d959c5ebffa8491d426ef65a3522f0cd80 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Sat, 10 Jun 2023 10:59:32 -0400 Subject: [PATCH 76/81] lightsail: Amend bucket_access_key, remove type conversion in loop --- internal/service/lightsail/bucket_access_key.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/service/lightsail/bucket_access_key.go b/internal/service/lightsail/bucket_access_key.go index 4a340281740e..69e673ada43f 100644 --- a/internal/service/lightsail/bucket_access_key.go +++ b/internal/service/lightsail/bucket_access_key.go @@ -167,12 +167,12 @@ func FindBucketAccessKeyById(ctx context.Context, conn *lightsail.Client, id str return nil, err } - var entry *types.AccessKey + var entry types.AccessKey entryExists := false for _, n := range out.AccessKeys { if parts[1] == aws.ToString(n.AccessKeyId) { - entry = &n + entry = n entryExists = true break } @@ -182,5 +182,5 @@ func FindBucketAccessKeyById(ctx context.Context, conn *lightsail.Client, id str return nil, tfresource.NewEmptyResultError(in) } - return entry, nil + return &entry, nil } From d990d4459bbf9acaa44164424709384c2c4b6afb Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Sat, 10 Jun 2023 11:05:34 -0400 Subject: [PATCH 77/81] lightsail: Amend bucket_resource_access, remove type conversion in loop --- internal/service/lightsail/bucket_resource_access.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/service/lightsail/bucket_resource_access.go b/internal/service/lightsail/bucket_resource_access.go index 7b10703dddae..4f258476d4af 100644 --- a/internal/service/lightsail/bucket_resource_access.go +++ b/internal/service/lightsail/bucket_resource_access.go @@ -171,12 +171,12 @@ func FindBucketResourceAccessById(ctx context.Context, conn *lightsail.Client, i } bucket := out.Buckets[0] - var entry *types.ResourceReceivingAccess + var entry types.ResourceReceivingAccess entryExists := false for _, n := range bucket.ResourcesReceivingAccess { if parts[1] == aws.ToString(n.Name) { - entry = &n + entry = n entryExists = true break } @@ -186,5 +186,5 @@ func FindBucketResourceAccessById(ctx context.Context, conn *lightsail.Client, i return nil, tfresource.NewEmptyResultError(in) } - return entry, nil + return &entry, nil } From a182d82e53773926aa8bb1a0e49d1b42da1b3cf0 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Sat, 10 Jun 2023 11:07:15 -0400 Subject: [PATCH 78/81] lightsail: Amend container_service_deployment_version, remove type conversion in loop --- .../lightsail/container_service_deployment_version.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/internal/service/lightsail/container_service_deployment_version.go b/internal/service/lightsail/container_service_deployment_version.go index 576b40ac7697..fb4375252ebb 100644 --- a/internal/service/lightsail/container_service_deployment_version.go +++ b/internal/service/lightsail/container_service_deployment_version.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "log" + "reflect" "strconv" "strings" "time" @@ -447,25 +448,25 @@ func FindContainerServiceDeploymentByVersion(ctx context.Context, conn *lightsai return nil, tfresource.NewEmptyResultError(input) } - var result *types.ContainerServiceDeployment + var result types.ContainerServiceDeployment for _, deployment := range output.Deployments { - if &deployment == nil { + if reflect.DeepEqual(deployment, types.ContainerServiceDeployment{}) { continue } if int(aws.ToInt32(deployment.Version)) == version { - result = &deployment + result = deployment break } } - if result == nil { + if reflect.DeepEqual(result, types.ContainerServiceDeployment{}) { return nil, &retry.NotFoundError{ Message: "Empty result", LastRequest: input, } } - return result, nil + return &result, nil } From 7967cffbc40808617cc6768a0b40c7ecaa518734 Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Sat, 10 Jun 2023 11:07:38 -0400 Subject: [PATCH 79/81] lightsail: Amend domain_entry, remove type conversion --- internal/service/lightsail/domain_entry.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/service/lightsail/domain_entry.go b/internal/service/lightsail/domain_entry.go index 66efccdf8c9c..a23ee40ce151 100644 --- a/internal/service/lightsail/domain_entry.go +++ b/internal/service/lightsail/domain_entry.go @@ -371,7 +371,7 @@ func FindDomainEntryById(ctx context.Context, conn *lightsail.Client, id string) for _, n := range out.Domain.DomainEntries { if entryName == aws.ToString(n.Name) && recordType == aws.ToString(n.Type) && recordTarget == aws.ToString(n.Target) { - entry = types.DomainEntry(n) + entry = n entryExists = true break } From 70a74b55ed93d7e8548e6dea50a6faef6b0b649d Mon Sep 17 00:00:00 2001 From: Brittan DeYoung <32572259+brittandeyoung@users.noreply.github.com> Date: Sat, 10 Jun 2023 11:07:57 -0400 Subject: [PATCH 80/81] lightsail: Amend lb_certificate, remove type conversion in loop --- internal/service/lightsail/lb_certificate.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/service/lightsail/lb_certificate.go b/internal/service/lightsail/lb_certificate.go index 36a8b62971d3..5027e4fd1a32 100644 --- a/internal/service/lightsail/lb_certificate.go +++ b/internal/service/lightsail/lb_certificate.go @@ -267,12 +267,12 @@ func FindLoadBalancerCertificateById(ctx context.Context, conn *lightsail.Client return nil, err } - var entry *types.LoadBalancerTlsCertificate + var entry types.LoadBalancerTlsCertificate entryExists := false for _, n := range out.TlsCertificates { if cName == aws.ToString(n.Name) { - entry = &n + entry = n entryExists = true break } @@ -282,5 +282,5 @@ func FindLoadBalancerCertificateById(ctx context.Context, conn *lightsail.Client return nil, tfresource.NewEmptyResultError(in) } - return entry, nil + return &entry, nil } From 945ccee0b6f50630a7bcdd99a37a97ab84120e41 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 12 Jun 2023 14:06:19 -0400 Subject: [PATCH 81/81] 'sweep.SweepOrchestrator' -> 'sweep.SweepOrchestratorWithContext'. --- internal/service/lightsail/sweep.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/service/lightsail/sweep.go b/internal/service/lightsail/sweep.go index d635ffbf0a91..94a62fca6299 100644 --- a/internal/service/lightsail/sweep.go +++ b/internal/service/lightsail/sweep.go @@ -72,7 +72,7 @@ func sweepContainerServices(region string) error { sweeperErrs = multierror.Append(sweeperErrs, fmt.Errorf("error listing Lightsail Container Services for %s: %w", region, err)) } - if err := sweep.SweepOrchestrator(sweepResources); err != nil { + if err := sweep.SweepOrchestratorWithContext(ctx, sweepResources); err != nil { sweeperErrs = multierror.Append(sweeperErrs, fmt.Errorf("error sweeping Lightsail Container Services for %s: %w", region, err)) }