From 5a493436a57dcb43177a7b32e99ccdef57b8ede5 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 23 Aug 2024 16:28:36 -0400 Subject: [PATCH] elasticsearch: Migrate sweepers to AWS SDK for Go v2. --- internal/service/elasticsearch/sweep.go | 57 ++++++++----------------- 1 file changed, 18 insertions(+), 39 deletions(-) diff --git a/internal/service/elasticsearch/sweep.go b/internal/service/elasticsearch/sweep.go index 1ca44031c635..2680f4e1db00 100644 --- a/internal/service/elasticsearch/sweep.go +++ b/internal/service/elasticsearch/sweep.go @@ -10,10 +10,9 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/elasticsearchservice" awstypes "github.com/aws/aws-sdk-go-v2/service/elasticsearchservice/types" - "github.com/hashicorp/go-multierror" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/sweep" - "github.com/hashicorp/terraform-provider-aws/internal/sweep/awsv1" + "github.com/hashicorp/terraform-provider-aws/internal/sweep/awsv2" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -27,59 +26,42 @@ func RegisterSweepers() { func sweepDomains(region string) error { ctx := sweep.Context(region) client, err := sweep.SharedRegionalSweepClient(ctx, region) - if err != nil { return fmt.Errorf("error getting client: %w", err) } - + input := &elasticsearchservice.ListDomainNamesInput{ + EngineType: awstypes.EngineTypeElasticsearch, + } conn := client.ElasticsearchClient(ctx) sweepResources := make([]sweep.Sweepable, 0) - var errs *multierror.Error - input := &elasticsearchservice.ListDomainNamesInput{} - - // ListDomainNames has no pagination support whatsoever output, err := conn.ListDomainNames(ctx, input) - if awsv1.SkipSweepError(err) { + if awsv2.SkipSweepError(err) { log.Printf("[WARN] Skipping Elasticsearch Domain sweep for %s: %s", region, err) - return errs.ErrorOrNil() + return nil } if err != nil { - sweeperErr := fmt.Errorf("error listing Elasticsearch Domains: %w", err) - log.Printf("[ERROR] %s", sweeperErr) - errs = multierror.Append(errs, sweeperErr) - return errs.ErrorOrNil() - } - - if output == nil { - log.Printf("[WARN] Skipping Elasticsearch Domain sweep for %s: empty response", region) - return errs.ErrorOrNil() + return fmt.Errorf("error listing MSK Clusters (%s): %w", region, err) } - for _, domainInfo := range output.DomainNames { - name := aws.ToString(domainInfo.DomainName) + for _, v := range output.DomainNames { + name := aws.ToString(v.DomainName) - if domainInfo.EngineType != awstypes.EngineTypeElasticsearch { - log.Printf("[INFO] Skipping Elasticsearch Domain %s: EngineType = %s", name, string(domainInfo.EngineType)) + if engineType := v.EngineType; engineType != awstypes.EngineTypeElasticsearch { + log.Printf("[INFO] Skipping Elasticsearch Domain %s: EngineType=%s", name, engineType) continue } - // Elasticsearch Domains have regularly gotten stuck in a "being deleted" state - // e.g. Deleted and Processing are both true for days in the API - // Filter out domains that are Deleted already. - output, err := findDomainByName(ctx, conn, name) + if err != nil { - sweeperErr := fmt.Errorf("error describing Elasticsearch Domain (%s): %w", name, err) - log.Printf("[ERROR] %s", sweeperErr) - errs = multierror.Append(errs, sweeperErr) continue } - if output != nil && aws.ToBool(output.Deleted) { - log.Printf("[INFO] Skipping Elasticsearch Domain (%s) with deleted status", name) + if aws.ToBool(output.Deleted) { + log.Printf("[INFO] Skipping Elasticsearch Domain %s: Deleted", name) continue } @@ -91,14 +73,11 @@ func sweepDomains(region string) error { sweepResources = append(sweepResources, sweep.NewSweepResource(r, d, client)) } - if err = sweep.SweepOrchestrator(ctx, sweepResources); err != nil { - errs = multierror.Append(errs, fmt.Errorf("error sweeping Elasticsearch Domains for %s: %w", region, err)) - } + err = sweep.SweepOrchestrator(ctx, sweepResources) - if awsv1.SkipSweepError(errs.ErrorOrNil()) { - log.Printf("[WARN] Skipping Elasticsearch Domain sweep for %s: %s", region, errs) - return nil + if err != nil { + return fmt.Errorf("error sweeping Elasticsearch Domains (%s): %w", region, err) } - return errs.ErrorOrNil() + return nil }