From 20ba3364226f2701783af0d9420ec66c739a4dd6 Mon Sep 17 00:00:00 2001 From: Daniel Rieske Date: Tue, 13 Aug 2024 21:53:06 +0200 Subject: [PATCH] fix: `TestAccRedshiftServerlessWorkgroup_baseAndMaxCapacityAndPubliclyAccessible` you need a snapshot to be able to update the capacity. During the creation of this `conflictExceptions` occur. We already retry on the deletion for it so it makes sense for update aswell. make testacc TESTARGS='-run=TestAccRedshiftServerlessWorkgroup_baseAndMaxCapacityAndPubliclyAccessible' PKG=redshiftserverless make: Verifying source code with gofmt... ==> Checking that code complies with gofmt requirements... TF_ACC=1 go1.22.6 test ./internal/service/redshiftserverless/... -v -count 1 -parallel 20 -run=TestAccRedshiftServerlessWorkgroup_baseAndMaxCapacityAndPubliclyAccessible -timeout 360m === RUN TestAccRedshiftServerlessWorkgroup_baseAndMaxCapacityAndPubliclyAccessible === PAUSE TestAccRedshiftServerlessWorkgroup_baseAndMaxCapacityAndPubliclyAccessible === CONT TestAccRedshiftServerlessWorkgroup_baseAndMaxCapacityAndPubliclyAccessible --- PASS: TestAccRedshiftServerlessWorkgroup_baseAndMaxCapacityAndPubliclyAccessible (2002.95s) PASS ok github.com/hashicorp/terraform-provider-aws/internal/service/redshiftserverless 2007.594s --- internal/service/redshiftserverless/workgroup.go | 9 ++++++++- internal/service/redshiftserverless/workgroup_test.go | 6 ++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/internal/service/redshiftserverless/workgroup.go b/internal/service/redshiftserverless/workgroup.go index 9d97a7469a6c..bc5849561a70 100644 --- a/internal/service/redshiftserverless/workgroup.go +++ b/internal/service/redshiftserverless/workgroup.go @@ -475,8 +475,14 @@ func resourceWorkgroupDelete(ctx context.Context, d *schema.ResourceData, meta i } func updateWorkgroup(ctx context.Context, conn *redshiftserverless.Client, input *redshiftserverless.UpdateWorkgroupInput, timeout time.Duration) error { + _, err := tfresource.RetryWhenIsAErrorMessageContains[*awstypes.ConflictException](ctx, workgroupUpdatedTimeout, + func() (interface{}, error) { + return conn.UpdateWorkgroup(ctx, input) + }, + // "ConflictException: There is an operation running on the workgroup. Try to update it later." + "operation running") + name := aws.ToString(input.WorkgroupName) - _, err := conn.UpdateWorkgroup(ctx, input) if err != nil { return fmt.Errorf("updating Redshift Serverless Workgroup (%s): %w", name, err) @@ -491,6 +497,7 @@ func updateWorkgroup(ctx context.Context, conn *redshiftserverless.Client, input const ( workgroupDeletedTimeout = 10 * time.Minute + workgroupUpdatedTimeout = 10 * time.Minute ) func findWorkgroupByName(ctx context.Context, conn *redshiftserverless.Client, name string) (*awstypes.Workgroup, error) { diff --git a/internal/service/redshiftserverless/workgroup_test.go b/internal/service/redshiftserverless/workgroup_test.go index 446dbe57c0ac..ec436c49c748 100644 --- a/internal/service/redshiftserverless/workgroup_test.go +++ b/internal/service/redshiftserverless/workgroup_test.go @@ -403,6 +403,12 @@ resource "aws_redshiftserverless_workgroup" "test" { workgroup_name = %[1]q base_capacity = %[2]d } + +resource "aws_redshiftserverless_snapshot" "test" { + namespace_name = aws_redshiftserverless_workgroup.test.namespace_name + snapshot_name = %[1]q + retention_period = 10 +} `, rName, baseCapacity) }