Skip to content

refactor(sweepers): change sweepers format to include dependencies #2509

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Apr 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion GNUmakefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
SWEEP?=all_regions
SWEEP_DIR?=./scaleway
SWEEP_DIR?=./internal/services/*
TEST?=$$(go list ./... |grep -v 'vendor')
GOFMT_FILES?=$$(find . -name '*.go' |grep -v vendor)
WEBSITE_REPO=github.com/hashicorp/terraform-website
Expand Down
36 changes: 0 additions & 36 deletions internal/services/account/project_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,47 +7,11 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
accountSDK "github.com/scaleway/scaleway-sdk-go/api/account/v3"
"github.com/scaleway/scaleway-sdk-go/scw"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/httperrors"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/logging"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/services/account"
)

func init() {
resource.AddTestSweepers("scaleway_account_project", &resource.Sweeper{
Name: "scaleway_account_project",
F: testSweepAccountProject,
})
}

func testSweepAccountProject(_ string) error {
return acctest.Sweep(func(scwClient *scw.Client) error {
accountAPI := accountSDK.NewProjectAPI(scwClient)

logging.L.Debugf("sweeper: destroying the project")

req := &accountSDK.ProjectAPIListProjectsRequest{}
listProjects, err := accountAPI.ListProjects(req, scw.WithAllPages())
if err != nil {
return fmt.Errorf("failed to list projects: %w", err)
}
for _, project := range listProjects.Projects {
// Do not delete default project
if project.ID == req.OrganizationID || !acctest.IsTestResource(project.Name) {
continue
}
err = accountAPI.DeleteProject(&accountSDK.ProjectAPIDeleteProjectRequest{
ProjectID: project.ID,
})
if err != nil {
return fmt.Errorf("failed to delete project: %w", err)
}
}
return nil
})
}

func TestAccProject_Basic(t *testing.T) {
tt := acctest.NewTestTools(t)
defer tt.Cleanup()
Expand Down
16 changes: 16 additions & 0 deletions internal/services/account/sweep_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package account_test

import (
"testing"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
accounttestfuncs "github.com/scaleway/terraform-provider-scaleway/v2/internal/services/account/testfuncs"
)

func init() {
accounttestfuncs.AddTestSweepers()
}

func TestMain(m *testing.M) {
resource.TestMain(m)
}
45 changes: 45 additions & 0 deletions internal/services/account/testfuncs/sweep.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package accounttestfuncs

import (
"fmt"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
accountSDK "github.com/scaleway/scaleway-sdk-go/api/account/v3"
"github.com/scaleway/scaleway-sdk-go/scw"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/logging"
)

func AddTestSweepers() {
resource.AddTestSweepers("scaleway_account_project", &resource.Sweeper{
Name: "scaleway_account_project",
F: testSweepAccountProject,
})
}

func testSweepAccountProject(_ string) error {
return acctest.Sweep(func(scwClient *scw.Client) error {
accountAPI := accountSDK.NewProjectAPI(scwClient)

logging.L.Debugf("sweeper: destroying the project")

req := &accountSDK.ProjectAPIListProjectsRequest{}
listProjects, err := accountAPI.ListProjects(req, scw.WithAllPages())
if err != nil {
return fmt.Errorf("failed to list projects: %w", err)
}
for _, project := range listProjects.Projects {
// Do not delete default project
if project.ID == req.OrganizationID || !acctest.IsTestResource(project.Name) {
continue
}
err = accountAPI.DeleteProject(&accountSDK.ProjectAPIDeleteProjectRequest{
ProjectID: project.ID,
})
if err != nil {
return fmt.Errorf("failed to delete project: %w", err)
}
}
return nil
})
}
32 changes: 0 additions & 32 deletions internal/services/applesilicon/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,43 +7,11 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
applesiliconSDK "github.com/scaleway/scaleway-sdk-go/api/applesilicon/v1alpha1"
"github.com/scaleway/scaleway-sdk-go/scw"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/httperrors"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/logging"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/services/applesilicon"
)

func init() {
resource.AddTestSweepers("scaleway_apple_silicon_instance", &resource.Sweeper{
Name: "scaleway_apple_silicon",
F: testSweepAppleSiliconServer,
})
}

func testSweepAppleSiliconServer(_ string) error {
return acctest.SweepZones([]scw.Zone{scw.ZoneFrPar1}, func(scwClient *scw.Client, zone scw.Zone) error {
asAPI := applesiliconSDK.NewAPI(scwClient)
logging.L.Debugf("sweeper: destroying the apple silicon instance in (%s)", zone)
listServers, err := asAPI.ListServers(&applesiliconSDK.ListServersRequest{Zone: zone}, scw.WithAllPages())
if err != nil {
return fmt.Errorf("error listing apple silicon servers in (%s) in sweeper: %s", zone, err)
}

for _, server := range listServers.Servers {
errDelete := asAPI.DeleteServer(&applesiliconSDK.DeleteServerRequest{
ServerID: server.ID,
Zone: zone,
})
if errDelete != nil {
return fmt.Errorf("error deleting apple silicon server in sweeper: %s", err)
}
}

return nil
})
}

func TestAccServer_Basic(t *testing.T) {
t.Skip("Skipping AppleSilicon test as this kind of server can't be deleted before 24h")
tt := acctest.NewTestTools(t)
Expand Down
16 changes: 16 additions & 0 deletions internal/services/applesilicon/sweep_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package applesilicon_test

import (
"testing"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
applesilicontestfuncs "github.com/scaleway/terraform-provider-scaleway/v2/internal/services/applesilicon/testfuncs"
)

func init() {
applesilicontestfuncs.AddTestSweepers()
}

func TestMain(m *testing.M) {
resource.TestMain(m)
}
41 changes: 41 additions & 0 deletions internal/services/applesilicon/testfuncs/sweep.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package applesilicontestfuncs

import (
"fmt"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
applesiliconSDK "github.com/scaleway/scaleway-sdk-go/api/applesilicon/v1alpha1"
"github.com/scaleway/scaleway-sdk-go/scw"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/logging"
)

func AddTestSweepers() {
resource.AddTestSweepers("scaleway_apple_silicon_instance", &resource.Sweeper{
Name: "scaleway_apple_silicon",
F: testSweepAppleSiliconServer,
})
}

func testSweepAppleSiliconServer(_ string) error {
return acctest.SweepZones([]scw.Zone{scw.ZoneFrPar1}, func(scwClient *scw.Client, zone scw.Zone) error {
asAPI := applesiliconSDK.NewAPI(scwClient)
logging.L.Debugf("sweeper: destroying the apple silicon instance in (%s)", zone)
listServers, err := asAPI.ListServers(&applesiliconSDK.ListServersRequest{Zone: zone}, scw.WithAllPages())
if err != nil {
return fmt.Errorf("error listing apple silicon servers in (%s) in sweeper: %s", zone, err)
}

for _, server := range listServers.Servers {
errDelete := asAPI.DeleteServer(&applesiliconSDK.DeleteServerRequest{
ServerID: server.ID,
Zone: zone,
})
if errDelete != nil {
return fmt.Errorf("error deleting apple silicon server in sweeper: %s", err)
}
}

return nil
})
}
33 changes: 0 additions & 33 deletions internal/services/baremetal/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,46 +8,13 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
baremetalSDK "github.com/scaleway/scaleway-sdk-go/api/baremetal/v1"
"github.com/scaleway/scaleway-sdk-go/scw"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/logging"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/services/baremetal"
baremetalchecks "github.com/scaleway/terraform-provider-scaleway/v2/internal/services/baremetal/testfuncs"
)

const SSHKeyBaremetal = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM7HUxRyQtB2rnlhQUcbDGCZcTJg7OvoznOiyC9W6IxH [email protected]"

func init() {
resource.AddTestSweepers("scaleway_baremetal_server", &resource.Sweeper{
Name: "scaleway_baremetal_server",
F: testSweepServer,
})
}

func testSweepServer(_ string) error {
return acctest.SweepZones([]scw.Zone{scw.ZoneFrPar2}, func(scwClient *scw.Client, zone scw.Zone) error {
baremetalAPI := baremetalSDK.NewAPI(scwClient)
logging.L.Debugf("sweeper: destroying the baremetal server in (%s)", zone)
listServers, err := baremetalAPI.ListServers(&baremetalSDK.ListServersRequest{Zone: zone}, scw.WithAllPages())
if err != nil {
logging.L.Warningf("error listing servers in (%s) in sweeper: %s", zone, err)
return nil
}

for _, server := range listServers.Servers {
_, err := baremetalAPI.DeleteServer(&baremetalSDK.DeleteServerRequest{
Zone: zone,
ServerID: server.ID,
})
if err != nil {
return fmt.Errorf("error deleting server in sweeper: %s", err)
}
}

return nil
})
}

func TestAccServer_Basic(t *testing.T) {
t.Skip("Skipping Baremetal Server test as no stock is available currently")
tt := acctest.NewTestTools(t)
Expand Down
16 changes: 16 additions & 0 deletions internal/services/baremetal/sweep_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package baremetal_test

import (
"testing"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
baremetaltestfuncs "github.com/scaleway/terraform-provider-scaleway/v2/internal/services/baremetal/testfuncs"
)

func init() {
baremetaltestfuncs.AddTestSweepers()
}

func TestMain(m *testing.M) {
resource.TestMain(m)
}
2 changes: 1 addition & 1 deletion internal/services/baremetal/testfuncs/checks.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package baremetalchecks
package baremetaltestfuncs

import (
"fmt"
Expand Down
42 changes: 42 additions & 0 deletions internal/services/baremetal/testfuncs/sweep.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package baremetaltestfuncs

import (
"fmt"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
baremetalSDK "github.com/scaleway/scaleway-sdk-go/api/baremetal/v1"
"github.com/scaleway/scaleway-sdk-go/scw"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/logging"
)

func AddTestSweepers() {
resource.AddTestSweepers("scaleway_baremetal_server", &resource.Sweeper{
Name: "scaleway_baremetal_server",
F: testSweepServer,
})
}

func testSweepServer(_ string) error {
return acctest.SweepZones([]scw.Zone{scw.ZoneFrPar2}, func(scwClient *scw.Client, zone scw.Zone) error {
baremetalAPI := baremetalSDK.NewAPI(scwClient)
logging.L.Debugf("sweeper: destroying the baremetal server in (%s)", zone)
listServers, err := baremetalAPI.ListServers(&baremetalSDK.ListServersRequest{Zone: zone}, scw.WithAllPages())
if err != nil {
logging.L.Warningf("error listing servers in (%s) in sweeper: %s", zone, err)
return nil
}

for _, server := range listServers.Servers {
_, err := baremetalAPI.DeleteServer(&baremetalSDK.DeleteServerRequest{
Zone: zone,
ServerID: server.ID,
})
if err != nil {
return fmt.Errorf("error deleting server in sweeper: %s", err)
}
}

return nil
})
}
37 changes: 0 additions & 37 deletions internal/services/block/snapshot_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,48 +7,11 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
blockSDK "github.com/scaleway/scaleway-sdk-go/api/block/v1alpha1"
"github.com/scaleway/scaleway-sdk-go/scw"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/acctest"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/httperrors"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/logging"
"github.com/scaleway/terraform-provider-scaleway/v2/internal/services/block"
)

func init() {
resource.AddTestSweepers("scaleway_block_snapshot", &resource.Sweeper{
Name: "scaleway_block_snapshot",
F: testSweepSnapshot,
})
}

func testSweepSnapshot(_ string) error {
return acctest.SweepZones((&blockSDK.API{}).Zones(), func(scwClient *scw.Client, zone scw.Zone) error {
blockAPI := blockSDK.NewAPI(scwClient)
logging.L.Debugf("sweeper: destroying the block snapshots in (%s)", zone)
listSnapshots, err := blockAPI.ListSnapshots(
&blockSDK.ListSnapshotsRequest{
Zone: zone,
}, scw.WithAllPages())
if err != nil {
return fmt.Errorf("error listing snapshot in (%s) in sweeper: %s", zone, err)
}

for _, snapshot := range listSnapshots.Snapshots {
err := blockAPI.DeleteSnapshot(&blockSDK.DeleteSnapshotRequest{
SnapshotID: snapshot.ID,
Zone: zone,
})
if err != nil {
logging.L.Debugf("sweeper: error (%s)", err)

return fmt.Errorf("error deleting snapshot in sweeper: %s", err)
}
}

return nil
})
}

func TestAccSnapshot_Basic(t *testing.T) {
tt := acctest.NewTestTools(t)
defer tt.Cleanup()
Expand Down
16 changes: 16 additions & 0 deletions internal/services/block/sweep_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package block_test

import (
"testing"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
blocktestfuncs "github.com/scaleway/terraform-provider-scaleway/v2/internal/services/block/testfuncs"
)

func init() {
blocktestfuncs.AddTestSweepers()
}

func TestMain(m *testing.M) {
resource.TestMain(m)
}
Loading