Skip to content

Commit

Permalink
elasticsearch: Migrate sweepers to AWS SDK for Go v2.
Browse files Browse the repository at this point in the history
  • Loading branch information
ewbankkit committed Aug 23, 2024
1 parent b989b33 commit 5a49343
Showing 1 changed file with 18 additions and 39 deletions.
57 changes: 18 additions & 39 deletions internal/service/elasticsearch/sweep.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)

Expand All @@ -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
}

Expand All @@ -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
}

0 comments on commit 5a49343

Please sign in to comment.