Skip to content

Commit 5888a48

Browse files
committed
chore: factor all sweepers in the sdk
1 parent 93859f4 commit 5888a48

File tree

27 files changed

+86
-1621
lines changed

27 files changed

+86
-1621
lines changed
Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
package accounttestfuncs
22

33
import (
4-
"fmt"
5-
64
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7-
accountSDK "github.com/scaleway/scaleway-sdk-go/api/account/v3"
8-
"github.com/scaleway/scaleway-sdk-go/scw"
5+
"github.com/scaleway/scaleway-sdk-go/api/account/v3/sweepers"
96
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
10-
"github.com/scaleway/terraform-provider-scaleway/v2/internal/logging"
117
)
128

139
func AddTestSweepers() {
@@ -18,28 +14,5 @@ func AddTestSweepers() {
1814
}
1915

2016
func testSweepAccountProject(_ string) error {
21-
return acctest.Sweep(func(scwClient *scw.Client) error {
22-
accountAPI := accountSDK.NewProjectAPI(scwClient)
23-
24-
logging.L.Debugf("sweeper: destroying the project")
25-
26-
req := &accountSDK.ProjectAPIListProjectsRequest{}
27-
listProjects, err := accountAPI.ListProjects(req, scw.WithAllPages())
28-
if err != nil {
29-
return fmt.Errorf("failed to list projects: %w", err)
30-
}
31-
for _, project := range listProjects.Projects {
32-
// Do not delete default project
33-
if project.ID == req.OrganizationID || !acctest.IsTestResource(project.Name) {
34-
continue
35-
}
36-
err = accountAPI.DeleteProject(&accountSDK.ProjectAPIDeleteProjectRequest{
37-
ProjectID: project.ID,
38-
})
39-
if err != nil {
40-
return fmt.Errorf("failed to delete project: %w", err)
41-
}
42-
}
43-
return nil
44-
})
17+
return acctest.Sweep(sweepers.SweepProjects)
4518
}
Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
package applesilicontestfuncs
22

33
import (
4-
"fmt"
5-
64
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
75
applesiliconSDK "github.com/scaleway/scaleway-sdk-go/api/applesilicon/v1alpha1"
8-
"github.com/scaleway/scaleway-sdk-go/scw"
6+
"github.com/scaleway/scaleway-sdk-go/api/instance/v1/sweepers"
97
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
10-
"github.com/scaleway/terraform-provider-scaleway/v2/internal/logging"
118
)
129

1310
func AddTestSweepers() {
@@ -18,24 +15,5 @@ func AddTestSweepers() {
1815
}
1916

2017
func testSweepAppleSiliconServer(_ string) error {
21-
return acctest.SweepZones([]scw.Zone{scw.ZoneFrPar1}, func(scwClient *scw.Client, zone scw.Zone) error {
22-
asAPI := applesiliconSDK.NewAPI(scwClient)
23-
logging.L.Debugf("sweeper: destroying the apple silicon instance in (%s)", zone)
24-
listServers, err := asAPI.ListServers(&applesiliconSDK.ListServersRequest{Zone: zone}, scw.WithAllPages())
25-
if err != nil {
26-
return fmt.Errorf("error listing apple silicon servers in (%s) in sweeper: %s", zone, err)
27-
}
28-
29-
for _, server := range listServers.Servers {
30-
errDelete := asAPI.DeleteServer(&applesiliconSDK.DeleteServerRequest{
31-
ServerID: server.ID,
32-
Zone: zone,
33-
})
34-
if errDelete != nil {
35-
return fmt.Errorf("error deleting apple silicon server in sweeper: %s", err)
36-
}
37-
}
38-
39-
return nil
40-
})
18+
return acctest.SweepZones((&applesiliconSDK.API{}).Zones(), sweepers.SweepServers)
4119
}
Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
package baremetaltestfuncs
22

33
import (
4-
"fmt"
5-
64
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
75
baremetalSDK "github.com/scaleway/scaleway-sdk-go/api/baremetal/v1"
8-
"github.com/scaleway/scaleway-sdk-go/scw"
6+
"github.com/scaleway/scaleway-sdk-go/api/baremetal/v1/sweepers"
97
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
10-
"github.com/scaleway/terraform-provider-scaleway/v2/internal/logging"
118
)
129

1310
func AddTestSweepers() {
@@ -18,25 +15,5 @@ func AddTestSweepers() {
1815
}
1916

2017
func testSweepServer(_ string) error {
21-
return acctest.SweepZones([]scw.Zone{scw.ZoneFrPar2}, func(scwClient *scw.Client, zone scw.Zone) error {
22-
baremetalAPI := baremetalSDK.NewAPI(scwClient)
23-
logging.L.Debugf("sweeper: destroying the baremetal server in (%s)", zone)
24-
listServers, err := baremetalAPI.ListServers(&baremetalSDK.ListServersRequest{Zone: zone}, scw.WithAllPages())
25-
if err != nil {
26-
logging.L.Warningf("error listing servers in (%s) in sweeper: %s", zone, err)
27-
return nil
28-
}
29-
30-
for _, server := range listServers.Servers {
31-
_, err := baremetalAPI.DeleteServer(&baremetalSDK.DeleteServerRequest{
32-
Zone: zone,
33-
ServerID: server.ID,
34-
})
35-
if err != nil {
36-
return fmt.Errorf("error deleting server in sweeper: %s", err)
37-
}
38-
}
39-
40-
return nil
41-
})
18+
return acctest.SweepZones((&baremetalSDK.API{}).Zones(), sweepers.SweepServers)
4219
}
Lines changed: 3 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
package blocktestfuncs
22

33
import (
4-
"fmt"
5-
64
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
75
blockSDK "github.com/scaleway/scaleway-sdk-go/api/block/v1alpha1"
8-
"github.com/scaleway/scaleway-sdk-go/scw"
6+
"github.com/scaleway/scaleway-sdk-go/api/block/v1alpha1/sweepers"
97
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
10-
"github.com/scaleway/terraform-provider-scaleway/v2/internal/logging"
118
)
129

1310
func AddTestSweepers() {
@@ -22,57 +19,9 @@ func AddTestSweepers() {
2219
}
2320

2421
func testSweepBlockVolume(_ string) error {
25-
return acctest.SweepZones((&blockSDK.API{}).Zones(), func(scwClient *scw.Client, zone scw.Zone) error {
26-
blockAPI := blockSDK.NewAPI(scwClient)
27-
logging.L.Debugf("sweeper: destroying the block volumes in (%s)", zone)
28-
listVolumes, err := blockAPI.ListVolumes(
29-
&blockSDK.ListVolumesRequest{
30-
Zone: zone,
31-
}, scw.WithAllPages())
32-
if err != nil {
33-
return fmt.Errorf("error listing volume in (%s) in sweeper: %s", zone, err)
34-
}
35-
36-
for _, volume := range listVolumes.Volumes {
37-
err := blockAPI.DeleteVolume(&blockSDK.DeleteVolumeRequest{
38-
VolumeID: volume.ID,
39-
Zone: zone,
40-
})
41-
if err != nil {
42-
logging.L.Debugf("sweeper: error (%s)", err)
43-
44-
return fmt.Errorf("error deleting volume in sweeper: %s", err)
45-
}
46-
}
47-
48-
return nil
49-
})
22+
return acctest.SweepZones((&blockSDK.API{}).Zones(), sweepers.SweepVolumes)
5023
}
5124

5225
func testSweepSnapshot(_ string) error {
53-
return acctest.SweepZones((&blockSDK.API{}).Zones(), func(scwClient *scw.Client, zone scw.Zone) error {
54-
blockAPI := blockSDK.NewAPI(scwClient)
55-
logging.L.Debugf("sweeper: destroying the block snapshots in (%s)", zone)
56-
listSnapshots, err := blockAPI.ListSnapshots(
57-
&blockSDK.ListSnapshotsRequest{
58-
Zone: zone,
59-
}, scw.WithAllPages())
60-
if err != nil {
61-
return fmt.Errorf("error listing snapshot in (%s) in sweeper: %s", zone, err)
62-
}
63-
64-
for _, snapshot := range listSnapshots.Snapshots {
65-
err := blockAPI.DeleteSnapshot(&blockSDK.DeleteSnapshotRequest{
66-
SnapshotID: snapshot.ID,
67-
Zone: zone,
68-
})
69-
if err != nil {
70-
logging.L.Debugf("sweeper: error (%s)", err)
71-
72-
return fmt.Errorf("error deleting snapshot in sweeper: %s", err)
73-
}
74-
}
75-
76-
return nil
77-
})
26+
return acctest.SweepZones((&blockSDK.API{}).Zones(), sweepers.SweepSnapshots)
7827
}
Lines changed: 4 additions & 161 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,13 @@
11
package cockpittestfuncs
22

33
import (
4-
"fmt"
5-
"strings"
6-
74
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
8-
accountSDK "github.com/scaleway/scaleway-sdk-go/api/account/v3"
9-
"github.com/scaleway/scaleway-sdk-go/api/cockpit/v1"
5+
"github.com/scaleway/scaleway-sdk-go/api/cockpit/v1/sweepers"
106
"github.com/scaleway/scaleway-sdk-go/scw"
117
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
12-
"github.com/scaleway/terraform-provider-scaleway/v2/internal/httperrors"
138
)
149

1510
func AddTestSweepers() {
16-
resource.AddTestSweepers("scaleway_cockpit", &resource.Sweeper{
17-
Name: "scaleway_cockpit",
18-
F: testSweepCockpit,
19-
})
2011
resource.AddTestSweepers("scaleway_cockpit_grafana_user", &resource.Sweeper{
2112
Name: "scaleway_cockpit_grafana_user",
2213
F: testSweepCockpitGrafanaUser,
@@ -32,161 +23,13 @@ func AddTestSweepers() {
3223
}
3324

3425
func testSweepCockpitToken(_ string) error {
35-
return acctest.Sweep(func(scwClient *scw.Client) error {
36-
accountAPI := accountSDK.NewProjectAPI(scwClient)
37-
cockpitAPI := cockpit.NewRegionalAPI(scwClient)
38-
39-
listProjects, err := accountAPI.ListProjects(&accountSDK.ProjectAPIListProjectsRequest{}, scw.WithAllPages())
40-
if err != nil {
41-
return fmt.Errorf("failed to list projects: %w", err)
42-
}
43-
44-
for _, project := range listProjects.Projects {
45-
if !strings.HasPrefix(project.Name, "tf_tests") {
46-
continue
47-
}
48-
49-
listTokens, err := cockpitAPI.ListTokens(&cockpit.RegionalAPIListTokensRequest{
50-
ProjectID: project.ID,
51-
}, scw.WithAllPages())
52-
if err != nil {
53-
if httperrors.Is404(err) {
54-
return nil
55-
}
56-
57-
return fmt.Errorf("failed to list tokens: %w", err)
58-
}
59-
60-
for _, token := range listTokens.Tokens {
61-
err = cockpitAPI.DeleteToken(&cockpit.RegionalAPIDeleteTokenRequest{
62-
TokenID: token.ID,
63-
})
64-
if err != nil {
65-
if !httperrors.Is404(err) {
66-
return fmt.Errorf("failed to delete token: %w", err)
67-
}
68-
}
69-
}
70-
}
71-
72-
return nil
73-
})
26+
return acctest.Sweep(sweepers.SweepToken)
7427
}
7528

7629
func testSweepCockpitGrafanaUser(_ string) error {
77-
return acctest.Sweep(func(scwClient *scw.Client) error {
78-
accountAPI := accountSDK.NewProjectAPI(scwClient)
79-
cockpitAPI := cockpit.NewGlobalAPI(scwClient)
80-
81-
listProjects, err := accountAPI.ListProjects(&accountSDK.ProjectAPIListProjectsRequest{}, scw.WithAllPages())
82-
if err != nil {
83-
return fmt.Errorf("failed to list projects: %w", err)
84-
}
85-
86-
for _, project := range listProjects.Projects {
87-
if !strings.HasPrefix(project.Name, "tf_tests") {
88-
continue
89-
}
90-
91-
listGrafanaUsers, err := cockpitAPI.ListGrafanaUsers(&cockpit.GlobalAPIListGrafanaUsersRequest{
92-
ProjectID: project.ID,
93-
}, scw.WithAllPages())
94-
if err != nil {
95-
if httperrors.Is404(err) {
96-
return nil
97-
}
98-
99-
return fmt.Errorf("failed to list grafana users: %w", err)
100-
}
101-
102-
for _, grafanaUser := range listGrafanaUsers.GrafanaUsers {
103-
err = cockpitAPI.DeleteGrafanaUser(&cockpit.GlobalAPIDeleteGrafanaUserRequest{
104-
ProjectID: project.ID,
105-
GrafanaUserID: grafanaUser.ID,
106-
})
107-
if err != nil {
108-
if !httperrors.Is404(err) {
109-
return fmt.Errorf("failed to delete grafana user: %w", err)
110-
}
111-
}
112-
}
113-
}
114-
115-
return nil
116-
})
117-
}
118-
119-
func testSweepCockpit(_ string) error {
120-
return acctest.Sweep(func(scwClient *scw.Client) error {
121-
accountAPI := accountSDK.NewProjectAPI(scwClient)
122-
123-
listProjects, err := accountAPI.ListProjects(&accountSDK.ProjectAPIListProjectsRequest{}, scw.WithAllPages())
124-
if err != nil {
125-
return fmt.Errorf("failed to list projects: %w", err)
126-
}
127-
128-
for _, project := range listProjects.Projects {
129-
if !strings.HasPrefix(project.Name, "tf_tests") {
130-
continue
131-
}
132-
133-
if err != nil {
134-
if !httperrors.Is404(err) {
135-
return fmt.Errorf("failed to deactivate cockpit: %w", err)
136-
}
137-
}
138-
139-
if err != nil {
140-
if !httperrors.Is404(err) {
141-
return fmt.Errorf("failed to deactivate cockpit: %w", err)
142-
}
143-
}
144-
}
145-
146-
return nil
147-
})
30+
return acctest.Sweep(sweepers.SweepGrafanaUser)
14831
}
14932

15033
func testSweepCockpitSource(_ string) error {
151-
return acctest.SweepRegions(scw.AllRegions, func(scwClient *scw.Client, region scw.Region) error {
152-
accountAPI := accountSDK.NewProjectAPI(scwClient)
153-
cockpitAPI := cockpit.NewRegionalAPI(scwClient)
154-
155-
listProjects, err := accountAPI.ListProjects(&accountSDK.ProjectAPIListProjectsRequest{}, scw.WithAllPages())
156-
if err != nil {
157-
return fmt.Errorf("failed to list projects: %w", err)
158-
}
159-
160-
for _, project := range listProjects.Projects {
161-
if !strings.HasPrefix(project.Name, "tf_tests") {
162-
continue
163-
}
164-
165-
listDatasources, err := cockpitAPI.ListDataSources(&cockpit.RegionalAPIListDataSourcesRequest{
166-
ProjectID: project.ID,
167-
Region: region,
168-
}, scw.WithAllPages())
169-
if err != nil {
170-
if httperrors.Is404(err) {
171-
return nil
172-
}
173-
174-
return fmt.Errorf("failed to list sources: %w", err)
175-
}
176-
177-
for _, datsource := range listDatasources.DataSources {
178-
err = cockpitAPI.DeleteDataSource(&cockpit.RegionalAPIDeleteDataSourceRequest{
179-
DataSourceID: datsource.ID,
180-
Region: region,
181-
})
182-
if err != nil {
183-
if !httperrors.Is404(err) {
184-
return fmt.Errorf("failed to delete cockpit source: %w", err)
185-
}
186-
}
187-
}
188-
}
189-
190-
return nil
191-
})
34+
return acctest.SweepRegions(scw.AllRegions, sweepers.SweepSource)
19235
}

0 commit comments

Comments
 (0)