Skip to content

Commit a30e138

Browse files
committed
wafv2: New-style sweepers.
1 parent a273a62 commit a30e138

File tree

1 file changed

+53
-168
lines changed

1 file changed

+53
-168
lines changed

internal/service/wafv2/sweep.go

+53-168
Original file line numberDiff line numberDiff line change
@@ -4,71 +4,63 @@
44
package wafv2
55

66
import (
7-
"fmt"
7+
"context"
88
"log"
99
"strings"
1010

1111
"github.com/aws/aws-sdk-go-v2/aws"
1212
"github.com/aws/aws-sdk-go-v2/service/wafv2"
1313
awstypes "github.com/aws/aws-sdk-go-v2/service/wafv2/types"
14-
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
14+
"github.com/hashicorp/terraform-provider-aws/internal/conns"
1515
"github.com/hashicorp/terraform-provider-aws/internal/sweep"
1616
"github.com/hashicorp/terraform-provider-aws/internal/sweep/awsv2"
1717
"github.com/hashicorp/terraform-provider-aws/internal/sweep/framework"
1818
"github.com/hashicorp/terraform-provider-aws/names"
1919
)
2020

2121
func RegisterSweepers() {
22-
resource.AddTestSweepers("aws_wafv2_ip_set", &resource.Sweeper{
23-
Name: "aws_wafv2_ip_set",
24-
F: sweepIPSets,
25-
Dependencies: []string{
26-
"aws_wafv2_rule_group",
27-
"aws_wafv2_web_acl",
28-
},
29-
})
22+
awsv2.Register("aws_wafv2_api_key", sweepAPIKeys)
23+
awsv2.Register("aws_wafv2_ip_set", sweepIPSets, "aws_wafv2_rule_group", "aws_wafv2_web_acl")
24+
awsv2.Register("aws_wafv2_regex_pattern_set", sweepRegexPatternSets, "aws_wafv2_rule_group", "aws_wafv2_web_acl")
25+
awsv2.Register("aws_wafv2_rule_group", sweepRuleGroups, "aws_wafv2_web_acl")
26+
awsv2.Register("aws_wafv2_web_acl", sweepWebACLs)
27+
}
3028

31-
resource.AddTestSweepers("aws_wafv2_regex_pattern_set", &resource.Sweeper{
32-
Name: "aws_wafv2_regex_pattern_set",
33-
F: sweepRegexPatternSets,
34-
Dependencies: []string{
35-
"aws_wafv2_rule_group",
36-
"aws_wafv2_web_acl",
37-
},
38-
})
29+
func sweepAPIKeys(ctx context.Context, client *conns.AWSClient) ([]sweep.Sweepable, error) {
30+
conn := client.WAFV2Client(ctx)
31+
var input wafv2.ListAPIKeysInput
32+
input.Scope = awstypes.ScopeRegional
33+
sweepResources := make([]sweep.Sweepable, 0)
3934

40-
resource.AddTestSweepers("aws_wafv2_rule_group", &resource.Sweeper{
41-
Name: "aws_wafv2_rule_group",
42-
F: sweepRuleGroups,
43-
Dependencies: []string{
44-
"aws_wafv2_web_acl",
45-
},
46-
})
35+
err := listAPIKeysPages(ctx, conn, &input, func(page *wafv2.ListAPIKeysOutput, lastPage bool) bool {
36+
if page == nil {
37+
return !lastPage
38+
}
4739

48-
resource.AddTestSweepers("aws_wafv2_web_acl", &resource.Sweeper{
49-
Name: "aws_wafv2_web_acl",
50-
F: sweepWebACLs,
51-
})
40+
for _, v := range page.APIKeySummaries {
41+
sweepResources = append(sweepResources, framework.NewSweepResource(newAPIKeyResource, client,
42+
framework.NewAttribute("api_key", aws.ToString(v.APIKey)),
43+
framework.NewAttribute(names.AttrScope, awstypes.ScopeRegional),
44+
))
45+
}
5246

53-
resource.AddTestSweepers("aws_wafv2_api_key", &resource.Sweeper{
54-
Name: "aws_wafv2_api_key",
55-
F: sweepAPIKeys,
47+
return !lastPage
5648
})
57-
}
5849

59-
func sweepIPSets(region string) error {
60-
ctx := sweep.Context(region)
61-
client, err := sweep.SharedRegionalSweepClient(ctx, region)
6250
if err != nil {
63-
return fmt.Errorf("error getting client: %s", err)
51+
return nil, err
6452
}
53+
54+
return sweepResources, nil
55+
}
56+
57+
func sweepIPSets(ctx context.Context, client *conns.AWSClient) ([]sweep.Sweepable, error) {
6558
conn := client.WAFV2Client(ctx)
66-
input := &wafv2.ListIPSetsInput{
67-
Scope: awstypes.ScopeRegional,
68-
}
59+
var input wafv2.ListIPSetsInput
60+
input.Scope = awstypes.ScopeRegional
6961
sweepResources := make([]sweep.Sweepable, 0)
7062

71-
err = listIPSetsPages(ctx, conn, input, func(page *wafv2.ListIPSetsOutput, lastPage bool) bool {
63+
err := listIPSetsPages(ctx, conn, &input, func(page *wafv2.ListIPSetsOutput, lastPage bool) bool {
7264
if page == nil {
7365
return !lastPage
7466
}
@@ -87,37 +79,20 @@ func sweepIPSets(region string) error {
8779
return !lastPage
8880
})
8981

90-
if awsv2.SkipSweepError(err) {
91-
log.Printf("[WARN] Skipping WAFv2 IPSet sweep for %s: %s", region, err)
92-
return nil
93-
}
94-
95-
if err != nil {
96-
return fmt.Errorf("error listing WAFv2 IPSets (%s): %w", region, err)
97-
}
98-
99-
err = sweep.SweepOrchestrator(ctx, sweepResources)
100-
10182
if err != nil {
102-
return fmt.Errorf("error sweeping WAFv2 IPSets (%s): %w", region, err)
83+
return nil, err
10384
}
10485

105-
return nil
86+
return sweepResources, nil
10687
}
10788

108-
func sweepRegexPatternSets(region string) error {
109-
ctx := sweep.Context(region)
110-
client, err := sweep.SharedRegionalSweepClient(ctx, region)
111-
if err != nil {
112-
return fmt.Errorf("error getting client: %s", err)
113-
}
89+
func sweepRegexPatternSets(ctx context.Context, client *conns.AWSClient) ([]sweep.Sweepable, error) {
11490
conn := client.WAFV2Client(ctx)
115-
input := &wafv2.ListRegexPatternSetsInput{
116-
Scope: awstypes.ScopeRegional,
117-
}
91+
var input wafv2.ListRegexPatternSetsInput
92+
input.Scope = awstypes.ScopeRegional
11893
sweepResources := make([]sweep.Sweepable, 0)
11994

120-
err = listRegexPatternSetsPages(ctx, conn, input, func(page *wafv2.ListRegexPatternSetsOutput, lastPage bool) bool {
95+
err := listRegexPatternSetsPages(ctx, conn, &input, func(page *wafv2.ListRegexPatternSetsOutput, lastPage bool) bool {
12196
if page == nil {
12297
return !lastPage
12398
}
@@ -136,37 +111,20 @@ func sweepRegexPatternSets(region string) error {
136111
return !lastPage
137112
})
138113

139-
if awsv2.SkipSweepError(err) {
140-
log.Printf("[WARN] Skipping WAFv2 RegexPatternSet sweep for %s: %s", region, err)
141-
return nil
142-
}
143-
144114
if err != nil {
145-
return fmt.Errorf("error listing WAFv2 RegexPatternSets (%s): %w", region, err)
115+
return nil, err
146116
}
147117

148-
err = sweep.SweepOrchestrator(ctx, sweepResources)
149-
150-
if err != nil {
151-
return fmt.Errorf("error sweeping WAFv2 RegexPatternSets (%s): %w", region, err)
152-
}
153-
154-
return nil
118+
return sweepResources, nil
155119
}
156120

157-
func sweepRuleGroups(region string) error {
158-
ctx := sweep.Context(region)
159-
client, err := sweep.SharedRegionalSweepClient(ctx, region)
160-
if err != nil {
161-
return fmt.Errorf("error getting client: %s", err)
162-
}
121+
func sweepRuleGroups(ctx context.Context, client *conns.AWSClient) ([]sweep.Sweepable, error) {
163122
conn := client.WAFV2Client(ctx)
164-
input := &wafv2.ListRuleGroupsInput{
165-
Scope: awstypes.ScopeRegional,
166-
}
123+
var input wafv2.ListRuleGroupsInput
124+
input.Scope = awstypes.ScopeRegional
167125
sweepResources := make([]sweep.Sweepable, 0)
168126

169-
err = listRuleGroupsPages(ctx, conn, input, func(page *wafv2.ListRuleGroupsOutput, lastPage bool) bool {
127+
err := listRuleGroupsPages(ctx, conn, &input, func(page *wafv2.ListRuleGroupsOutput, lastPage bool) bool {
170128
if page == nil {
171129
return !lastPage
172130
}
@@ -185,37 +143,20 @@ func sweepRuleGroups(region string) error {
185143
return !lastPage
186144
})
187145

188-
if awsv2.SkipSweepError(err) {
189-
log.Printf("[WARN] Skipping WAFv2 RuleGroup sweep for %s: %s", region, err)
190-
return nil
191-
}
192-
193146
if err != nil {
194-
return fmt.Errorf("error listing WAFv2 RuleGroups (%s): %w", region, err)
147+
return nil, err
195148
}
196149

197-
err = sweep.SweepOrchestrator(ctx, sweepResources)
198-
199-
if err != nil {
200-
return fmt.Errorf("error sweeping WAFv2 RuleGroups (%s): %w", region, err)
201-
}
202-
203-
return nil
150+
return sweepResources, nil
204151
}
205152

206-
func sweepWebACLs(region string) error {
207-
ctx := sweep.Context(region)
208-
client, err := sweep.SharedRegionalSweepClient(ctx, region)
209-
if err != nil {
210-
return fmt.Errorf("error getting client: %s", err)
211-
}
153+
func sweepWebACLs(ctx context.Context, client *conns.AWSClient) ([]sweep.Sweepable, error) {
212154
conn := client.WAFV2Client(ctx)
213-
input := &wafv2.ListWebACLsInput{
214-
Scope: awstypes.ScopeRegional,
215-
}
155+
var input wafv2.ListWebACLsInput
156+
input.Scope = awstypes.ScopeRegional
216157
sweepResources := make([]sweep.Sweepable, 0)
217158

218-
err = listWebACLsPages(ctx, conn, input, func(page *wafv2.ListWebACLsOutput, lastPage bool) bool {
159+
err := listWebACLsPages(ctx, conn, &input, func(page *wafv2.ListWebACLsOutput, lastPage bool) bool {
219160
if page == nil {
220161
return !lastPage
221162
}
@@ -244,65 +185,9 @@ func sweepWebACLs(region string) error {
244185
return !lastPage
245186
})
246187

247-
if awsv2.SkipSweepError(err) {
248-
log.Printf("[WARN] Skipping WAFv2 WebACL sweep for %s: %s", region, err)
249-
return nil
250-
}
251-
252-
if err != nil {
253-
return fmt.Errorf("error listing WAFv2 WebACLs (%s): %w", region, err)
254-
}
255-
256-
err = sweep.SweepOrchestrator(ctx, sweepResources)
257-
258-
if err != nil {
259-
return fmt.Errorf("error sweeping WAFv2 WebACLs (%s): %w", region, err)
260-
}
261-
262-
return nil
263-
}
264-
265-
func sweepAPIKeys(region string) error {
266-
ctx := sweep.Context(region)
267-
client, err := sweep.SharedRegionalSweepClient(ctx, region)
268-
if err != nil {
269-
return fmt.Errorf("error getting client: %w", err)
270-
}
271-
conn := client.WAFV2Client(ctx)
272-
273-
sweepResources := make([]sweep.Sweepable, 0)
274-
275-
input := &wafv2.ListAPIKeysInput{
276-
Scope: awstypes.ScopeRegional,
277-
}
278-
279-
err = listAPIKeysPages(ctx, conn, input, func(page *wafv2.ListAPIKeysOutput, lastPage bool) bool {
280-
if page == nil {
281-
return !lastPage
282-
}
283-
284-
for _, v := range page.APIKeySummaries {
285-
sweepResources = append(sweepResources, framework.NewSweepResource(newAPIKeyResource, client,
286-
framework.NewAttribute("api_key", aws.ToString(v.APIKey)),
287-
framework.NewAttribute("token_domains", v.TokenDomains),
288-
framework.NewAttribute(names.AttrScope, awstypes.ScopeRegional),
289-
))
290-
}
291-
return !lastPage
292-
})
293-
294-
if awsv2.SkipSweepError(err) {
295-
log.Printf("[WARN] Skipping WAFv2 API Key sweep for %s scope in %s: %s", awstypes.ScopeRegional, region, err)
296-
return nil
297-
}
298-
if err != nil {
299-
return fmt.Errorf("error listing WAFv2 API Keys in (%s) for scope %s: %w", region, awstypes.ScopeRegional, err)
300-
}
301-
302-
err = sweep.SweepOrchestrator(ctx, sweepResources)
303188
if err != nil {
304-
return fmt.Errorf("error sweeping WAFv2 API Keys (%s): %w", region, err)
189+
return nil, err
305190
}
306191

307-
return nil
192+
return sweepResources, nil
308193
}

0 commit comments

Comments
 (0)