Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

BugFix and Cleanup: Implement new Lightsail expandOperations across all Lightsail resources. Additionally fix 3 reported Lightsail Bugs. #30056

Merged
merged 43 commits into from
Mar 16, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
aa8af20
lightsail: Add flex, Add expandOperations to standardize operation ha…
brittandeyoung Mar 15, 2023
8e2bd12
lightsail: Amend bucket, expandOperations
brittandeyoung Mar 15, 2023
24cd89b
lightsail: Amend bucket_access_key, expandOperations
brittandeyoung Mar 15, 2023
febf37c
lightsail: Amend bucket_resource_access, expandOperations
brittandeyoung Mar 15, 2023
d702874
lightsail: Amend certificate, expandOperations
brittandeyoung Mar 15, 2023
41e847b
lightsail: Amend database, expandOperations
brittandeyoung Mar 15, 2023
ab38674
lightsail: Amend disk, expandOperations
brittandeyoung Mar 15, 2023
c4b15b4
lightsail: Amend disk_attachment, expandOperations
brittandeyoung Mar 15, 2023
4d60747
lightsail: Amend domain_entry, expandOperations
brittandeyoung Mar 15, 2023
7acc770
lightsail: Amend instance, expandOperations
brittandeyoung Mar 15, 2023
c9e618d
lightsail: Amend instance_public_ports_test, update blueprint id to v…
brittandeyoung Mar 15, 2023
5f24583
lightsail: Amend key_pair, expandOperations
brittandeyoung Mar 15, 2023
1db20da
lightsail: Amend lb, expandOperations
brittandeyoung Mar 15, 2023
b7bb7ce
lightsail: Amend lb_attachment, expandOperations
brittandeyoung Mar 15, 2023
95546b2
lightsail: Amend lb_attachment_test, update blueprint id to valid
brittandeyoung Mar 15, 2023
65bfa0f
lightsail: Amend lb_certificate, expandOperations
brittandeyoung Mar 15, 2023
bb9075b
lightsail: Amend lb_certificate_attachment, expandOperations
brittandeyoung Mar 15, 2023
9469dc6
lightsail: Amend lb_https_redirection_policy, expandOperations
brittandeyoung Mar 15, 2023
59fe30e
lightsail: Amend lb_stickiness_policy, expandOperations
brittandeyoung Mar 15, 2023
36854ba
lightsail: Amend static_ip_attachment_test, update to valid blueprint id
brittandeyoung Mar 15, 2023
158bd25
lightsail: Amend disk_attachment, correct resource name
brittandeyoung Mar 15, 2023
d9954a5
lightsail: Amend lb_attachment, correct action
brittandeyoung Mar 15, 2023
78a0c78
website: Amend lightsail_disk_attachment, correct blueprint_id
brittandeyoung Mar 15, 2023
652faaa
website: Amend lightsail_instance, correct blueprint_id
brittandeyoung Mar 15, 2023
d116a94
website: Amend lightsail_instance_public_ports, correct blueprint_id
brittandeyoung Mar 15, 2023
4d4a581
website: Amend lightsail_lb_attachment, correct blueprint_id
brittandeyoung Mar 15, 2023
ae12750
lightsail: Amend flex, proper casing of errors
brittandeyoung Mar 15, 2023
ae4f0d6
lightsail: Amend domain, resolve failure to delete errors
brittandeyoung Mar 15, 2023
af51d48
lightsail: Amend find, allow domain entry to start with _
brittandeyoung Mar 15, 2023
0ac6971
lightsail: Amend domain_entry, allow domain_entry to start with _
brittandeyoung Mar 15, 2023
123e1b2
lightsail: Amend domain_entry_test, add test for entry starting with _
brittandeyoung Mar 15, 2023
02718cd
lightsail: Amend instance, require availability_zone to be in the sam…
brittandeyoung Mar 15, 2023
ad5d04c
lightsail: Amend instance_test, add test for new error when providing…
brittandeyoung Mar 15, 2023
ae82c7f
lightsail: Amend lb_attachment_test, serialize all lb tests
brittandeyoung Mar 16, 2023
5c4c821
lightsail: Amend lb_certificate_attachment_test, serialize all lb tests
brittandeyoung Mar 16, 2023
c1360e9
lightsail: Amend lb_certificate_test, serialize all lb tests
brittandeyoung Mar 16, 2023
70d4fe3
lightsail: Amend lb_https_redirection_policy_test, serialize all lb t…
brittandeyoung Mar 16, 2023
4245d64
lightsail: Amend lb_stickiness_policy_test, serialize all lb tests
brittandeyoung Mar 16, 2023
de3776b
lightsail: Amend lb_test, serialize all lb tests
brittandeyoung Mar 16, 2023
ce1b79a
lightsail: Amend instance_test, remove hard coded region
brittandeyoung Mar 16, 2023
fb4da05
lightsail: Amend wait, remove unused waitOperationWithContext
brittandeyoung Mar 16, 2023
04916ca
Merge branch 'main' into td-lightsail_expandOperations
brittandeyoung Mar 16, 2023
2cc1646
changelog: Create 30056 change log
brittandeyoung Mar 16, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .changelog/30056.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
```release-note:bug
resource/aws_lightsail_domain_entry: Moved the error handling of an improperly formatted ID to be before attempting to access the id_parts. This will cause a proper empty resource message instead of a panic when ID is not properly formed.
```

```release-note:bug
resource/aws_lightsail_instance: Added a check to ensure that the availability_zone value is within the current region of the provider.
```

```release-note:bug
resource/aws_lightsail_domain_entry: Allow for the domain entry to begin with an underscore.
```
34 changes: 11 additions & 23 deletions internal/service/lightsail/bucket.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package lightsail

import (
"context"
"errors"
"time"

"github.com/aws/aws-sdk-go/aws"
Expand Down Expand Up @@ -90,18 +89,14 @@ func resourceBucketCreate(ctx context.Context, d *schema.ResourceData, meta inte
return create.DiagError(names.Lightsail, lightsail.OperationTypeCreateBucket, ResBucket, d.Get("name").(string), err)
}

if len(out.Operations) == 0 {
return create.DiagError(names.Lightsail, lightsail.OperationTypeCreateBucket, ResBucket, d.Get("name").(string), errors.New("No operations found for Create Bucket request"))
}

op := out.Operations[0]
id := d.Get("name").(string)
diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeCreateBucket, ResBucket, id)

err = waitOperation(ctx, conn, op.Id)
if err != nil {
return create.DiagError(names.Lightsail, lightsail.OperationTypeCreateBucket, ResBucket, d.Get("name").(string), errors.New("Error waiting for Create Bucket request operation"))
if diag != nil {
return diag
}

d.SetId(d.Get("name").(string))
d.SetId(id)

return resourceBucketRead(ctx, d, meta)
}
Expand Down Expand Up @@ -176,15 +171,10 @@ func resourceBucketUpdate(ctx context.Context, d *schema.ResourceData, meta inte
return create.DiagError(names.Lightsail, lightsail.OperationTypeUpdateBucket, ResBucket, d.Get("name").(string), err)
}

if len(out.Operations) == 0 {
return create.DiagError(names.Lightsail, lightsail.OperationTypeUpdateBucket, ResBucket, d.Get("name").(string), errors.New("No operations found for request"))
}

op := out.Operations[0]
diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeUpdateBucket, ResBucket, d.Get("name").(string))

err = waitOperation(ctx, conn, op.Id)
if err != nil {
return create.DiagError(names.Lightsail, lightsail.OperationTypeUpdateBucket, ResBucket, d.Get("name").(string), errors.New("Error waiting for request operation"))
if diag != nil {
return diag
}
}

Expand All @@ -205,12 +195,10 @@ func resourceBucketDelete(ctx context.Context, d *schema.ResourceData, meta inte
return create.DiagError(names.CE, create.ErrActionDeleting, ResBucket, d.Id(), err)
}

op := out.Operations[0]
diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeDeleteBucket, ResBucket, d.Id())

err = waitOperation(ctx, conn, op.Id)

if err != nil {
return create.DiagError(names.Lightsail, lightsail.OperationTypeDeleteCertificate, ResBucket, d.Id(), err)
if diag != nil {
return diag
}

return nil
Expand Down
20 changes: 6 additions & 14 deletions internal/service/lightsail/bucket_access_key.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package lightsail

import (
"context"
"errors"
"regexp"
"time"

Expand Down Expand Up @@ -73,15 +72,10 @@ func resourceBucketAccessKeyCreate(ctx context.Context, d *schema.ResourceData,
return create.DiagError(names.Lightsail, lightsail.OperationTypeCreateBucketAccessKey, ResBucketAccessKey, d.Get("bucket_name").(string), err)
}

if len(out.Operations) == 0 {
return create.DiagError(names.Lightsail, lightsail.OperationTypeCreateBucketAccessKey, ResBucketAccessKey, d.Get("bucket_name").(string), errors.New("No operations found for request"))
}

op := out.Operations[0]
diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeCreateBucketAccessKey, ResBucketAccessKey, d.Get("bucket_name").(string))

err = waitOperation(ctx, conn, op.Id)
if err != nil {
return create.DiagError(names.Lightsail, lightsail.OperationTypeCreateBucketAccessKey, ResBucketAccessKey, d.Get("bucket_name").(string), errors.New("Error waiting for request operation"))
if diag != nil {
return diag
}

idParts := []string{d.Get("bucket_name").(string), *out.AccessKey.AccessKeyId}
Expand Down Expand Up @@ -141,12 +135,10 @@ func resourceBucketAccessKeyDelete(ctx context.Context, d *schema.ResourceData,
return create.DiagError(names.Lightsail, create.ErrActionDeleting, ResBucketAccessKey, d.Id(), err)
}

op := out.Operations[0]
diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeDeleteBucketAccessKey, ResBucketAccessKey, d.Id())

err = waitOperation(ctx, conn, op.Id)

if err != nil {
return create.DiagError(names.Lightsail, lightsail.OperationTypeDeleteCertificate, ResBucketAccessKey, d.Id(), err)
if diag != nil {
return diag
}

return nil
Expand Down
20 changes: 6 additions & 14 deletions internal/service/lightsail/bucket_resource_access.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package lightsail

import (
"context"
"errors"
"regexp"

"github.com/aws/aws-sdk-go/aws"
Expand Down Expand Up @@ -64,15 +63,10 @@ func resourceBucketResourceAccessCreate(ctx context.Context, d *schema.ResourceD
return create.DiagError(names.Lightsail, lightsail.OperationTypeSetResourceAccessForBucket, ResBucketResourceAccess, d.Get("bucket_name").(string), err)
}

if len(out.Operations) == 0 {
return create.DiagError(names.Lightsail, lightsail.OperationTypeSetResourceAccessForBucket, ResBucketResourceAccess, d.Get("bucket_name").(string), errors.New("No operations found for request"))
}

op := out.Operations[0]
diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeSetResourceAccessForBucket, ResBucketResourceAccess, d.Get("bucket_name").(string))

err = waitOperation(ctx, conn, op.Id)
if err != nil {
return create.DiagError(names.Lightsail, lightsail.OperationTypeSetResourceAccessForBucket, ResBucketResourceAccess, d.Get("bucket_name").(string), errors.New("Error waiting for request operation"))
if diag != nil {
return diag
}

idParts := []string{d.Get("bucket_name").(string), d.Get("resource_name").(string)}
Expand Down Expand Up @@ -136,12 +130,10 @@ func resourceBucketResourceAccessDelete(ctx context.Context, d *schema.ResourceD
return create.DiagError(names.Lightsail, lightsail.OperationTypeSetResourceAccessForBucket, ResBucketResourceAccess, d.Id(), err)
}

op := out.Operations[0]
diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeSetResourceAccessForBucket, ResBucketResourceAccess, d.Id())

err = waitOperation(ctx, conn, op.Id)

if err != nil {
return create.DiagError(names.Lightsail, lightsail.OperationTypeSetResourceAccessForBucket, ResBucketResourceAccess, d.Id(), err)
if diag != nil {
return diag
}

return nil
Expand Down
23 changes: 8 additions & 15 deletions internal/service/lightsail/certificate.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package lightsail

import (
"context"
"errors"
"fmt"
"regexp"
"time"
Expand Down Expand Up @@ -152,18 +151,14 @@ func resourceCertificateCreate(ctx context.Context, d *schema.ResourceData, meta
return create.DiagError(names.Lightsail, lightsail.OperationTypeCreateCertificate, ResCertificate, d.Get("name").(string), err)
}

if len(resp.Operations) == 0 {
return create.DiagError(names.Lightsail, lightsail.OperationTypeCreateCertificate, ResCertificate, d.Get("name").(string), errors.New("No operations found for CreateCertificate request"))
}

op := resp.Operations[0]
id := d.Get("name").(string)
diag := expandOperations(ctx, conn, resp.Operations, lightsail.OperationTypeCreateCertificate, ResCertificate, id)

err = waitOperation(ctx, conn, op.Id)
if err != nil {
return create.DiagError(names.Lightsail, lightsail.OperationTypeCreateCertificate, ResCertificate, d.Get("name").(string), errors.New("Error waiting for Create Certificate request operation"))
if diag != nil {
return diag
}

d.SetId(d.Get("name").(string))
d.SetId(id)

return resourceCertificateRead(ctx, d, meta)
}
Expand Down Expand Up @@ -243,12 +238,10 @@ func resourceCertificateDelete(ctx context.Context, d *schema.ResourceData, meta
return create.DiagError(names.CE, create.ErrActionDeleting, ResCertificate, d.Id(), err)
}

op := resp.Operations[0]
diag := expandOperations(ctx, conn, resp.Operations, lightsail.OperationTypeDeleteCertificate, ResCertificate, d.Id())

err = waitOperation(ctx, conn, op.Id)

if err != nil {
return create.DiagError(names.Lightsail, lightsail.OperationTypeDeleteCertificate, ResCertificate, d.Id(), err)
if diag != nil {
return diag
}

return nil
Expand Down
26 changes: 17 additions & 9 deletions internal/service/lightsail/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -227,12 +227,14 @@ func resourceDatabaseCreate(ctx context.Context, d *schema.ResourceData, meta in
return diag.Errorf("creating Lightsail Relational Database (%s): %s", relationalDatabaseName, err)
}

d.SetId(relationalDatabaseName)
diagError := expandOperations(ctx, conn, output.Operations, lightsail.OperationTypeCreateRelationalDatabase, ResNameDatabase, relationalDatabaseName)

if err := waitOperationWithContext(ctx, conn, output.Operations[0].Id); err != nil {
return diag.Errorf("waiting for Lightsail Relational Database (%s) create: %s", d.Id(), err)
if diagError != nil {
return diagError
}

d.SetId(relationalDatabaseName)

// Backup Retention is not a value you can pass on creation and defaults to true.
// Forcing an update of the value after creation if the backup_retention_enabled value is false.
if !d.Get("backup_retention_enabled").(bool) {
Expand All @@ -248,8 +250,10 @@ func resourceDatabaseCreate(ctx context.Context, d *schema.ResourceData, meta in
return diag.Errorf("updating Lightsail Relational Database (%s) backup retention: %s", d.Id(), err)
}

if err := waitOperationWithContext(ctx, conn, output.Operations[0].Id); err != nil {
return diag.Errorf("waiting for Lightsail Relational Database (%s) update: %s", d.Id(), err)
diagError := expandOperations(ctx, conn, output.Operations, lightsail.OperationTypeUpdateRelationalDatabase, ResNameDatabase, relationalDatabaseName)

if diagError != nil {
return diagError
}

if err := waitDatabaseBackupRetentionModified(ctx, conn, aws.String(d.Id()), false); err != nil {
Expand Down Expand Up @@ -366,8 +370,10 @@ func resourceDatabaseUpdate(ctx context.Context, d *schema.ResourceData, meta in
return diag.Errorf("updating Lightsail Relational Database (%s): %s", d.Id(), err)
}

if err := waitOperationWithContext(ctx, conn, output.Operations[0].Id); err != nil {
return diag.Errorf("waiting for Lightsail Relational Database (%s) update: %s", d.Id(), err)
diagError := expandOperations(ctx, conn, output.Operations, lightsail.OperationTypeUpdateRelationalDatabase, ResNameDatabase, d.Id())

if diagError != nil {
return diagError
}

if d.HasChange("backup_retention_enabled") {
Expand Down Expand Up @@ -428,8 +434,10 @@ func resourceDatabaseDelete(ctx context.Context, d *schema.ResourceData, meta in
return diag.Errorf("deleting Lightsail Relational Database (%s): %s", d.Id(), err)
}

if err := waitOperationWithContext(ctx, conn, output.Operations[0].Id); err != nil {
return diag.Errorf("waiting for Lightsail Relational Database (%s) delete: %s", d.Id(), err)
diagError := expandOperations(ctx, conn, output.Operations, lightsail.OperationTypeDeleteRelationalDatabase, ResNameDatabase, d.Id())

if diagError != nil {
return diagError
}

return nil
Expand Down
31 changes: 11 additions & 20 deletions internal/service/lightsail/disk.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package lightsail

import (
"context"
"errors"
"regexp"
"time"

Expand Down Expand Up @@ -75,11 +74,12 @@ func resourceDiskCreate(ctx context.Context, d *schema.ResourceData, meta interf
conn := meta.(*conns.AWSClient).LightsailConn()
defaultTagsConfig := meta.(*conns.AWSClient).DefaultTagsConfig
tags := defaultTagsConfig.MergeTags(tftags.New(ctx, d.Get("tags").(map[string]interface{})))
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))),
DiskName: aws.String(d.Get("name").(string)),
DiskName: aws.String(id),
}

if len(tags) > 0 {
Expand All @@ -89,21 +89,17 @@ func resourceDiskCreate(ctx context.Context, d *schema.ResourceData, meta interf
out, err := conn.CreateDiskWithContext(ctx, &in)

if err != nil {
return create.DiagError(names.Lightsail, lightsail.OperationTypeCreateDisk, ResDisk, d.Get("name").(string), err)
return create.DiagError(names.Lightsail, lightsail.OperationTypeCreateDisk, ResDisk, id, err)
}

if len(out.Operations) == 0 {
return create.DiagError(names.Lightsail, lightsail.OperationTypeCreateDisk, ResDisk, d.Get("name").(string), errors.New("No operations found for Create Disk request"))
}

op := out.Operations[0]
d.SetId(d.Get("name").(string))
diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeCreateDisk, ResDisk, id)

err = waitOperation(ctx, conn, op.Id)
if err != nil {
return create.DiagError(names.Lightsail, lightsail.OperationTypeCreateDisk, ResDisk, d.Get("name").(string), errors.New("Error waiting for Create Disk request operation"))
if diag != nil {
return diag
}

d.SetId(id)

return resourceDiskRead(ctx, d, meta)
}

Expand Down Expand Up @@ -178,15 +174,10 @@ func resourceDiskDelete(ctx context.Context, d *schema.ResourceData, meta interf
return create.DiagError(names.Lightsail, lightsail.OperationTypeDeleteDisk, ResDisk, d.Get("name").(string), err)
}

if len(out.Operations) == 0 {
return create.DiagError(names.Lightsail, lightsail.OperationTypeDeleteDisk, ResDisk, d.Get("name").(string), errors.New("No operations found for Delete Disk request"))
}

op := out.Operations[0]
diag := expandOperations(ctx, conn, out.Operations, lightsail.OperationTypeDeleteDisk, ResDisk, d.Id())

err = waitOperation(ctx, conn, op.Id)
if err != nil {
return create.DiagError(names.Lightsail, lightsail.OperationTypeDeleteDisk, ResDisk, d.Get("name").(string), errors.New("Error waiting for Delete Disk request operation"))
if diag != nil {
return diag
}

return nil
Expand Down
Loading