Skip to content

Commit df8b502

Browse files
authored
chore: fix sweepers execution (#685)
1 parent be07334 commit df8b502

9 files changed

+113
-106
lines changed

.github/workflows/nightly.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,9 @@ jobs:
3838
SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY }}
3939
SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY }}
4040
SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_DEFAULT_ORGANIZATION_ID }}
41+
- name: Run sweepers
42+
run: make sweep
43+
env:
44+
SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY }}
45+
SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY }}
46+
SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_DEFAULT_ORGANIZATION_ID }}

GNUmakefile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
SWEEP?=all_regions
2+
SWEEP_DIR?=./scaleway
13
TEST?=$$(go list ./... |grep -v 'vendor')
24
GOFMT_FILES?=$$(find . -name '*.go' |grep -v vendor)
35
WEBSITE_REPO=github.com/hashicorp/terraform-website
@@ -11,7 +13,7 @@ build: fmtcheck
1113

1214
sweep:
1315
@echo "WARNING: This will destroy infrastructure. Use only in development accounts."
14-
go test $(TEST) -v -sweep=$(SWEEP) $(SWEEPARGS)
16+
go test $(SWEEP_DIR) -v -sweep=$(SWEEP) $(SWEEPARGS) -timeout 60m
1517

1618
test: fmtcheck
1719
go test -i $(TEST) || exit 1

scaleway/provider.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,6 @@ func Provider(config *ProviderConfig) plugin.ProviderFunc {
114114
meta, err := buildMeta(&MetaConfig{
115115
providerSchema: data,
116116
terraformVersion: terraformVersion,
117-
httpClient: &http.Client{Transport: newRetryableTransport(http.DefaultTransport)},
118117
})
119118
if err != nil {
120119
return nil, diag.FromErr(err)
@@ -167,7 +166,13 @@ func buildMeta(config *MetaConfig) (*Meta, error) {
167166
opts := []scw.ClientOption{
168167
scw.WithUserAgent(fmt.Sprintf("terraform-provider/%s terraform/%s", version, config.terraformVersion)),
169168
scw.WithProfile(profile),
170-
scw.WithHTTPClient(config.httpClient),
169+
}
170+
171+
defaultHTTPClient := &http.Client{Transport: newRetryableTransport(http.DefaultTransport)}
172+
if config.httpClient != nil {
173+
opts = append(opts, scw.WithHTTPClient(config.httpClient))
174+
} else {
175+
opts = append(opts, scw.WithHTTPClient(defaultHTTPClient))
171176
}
172177

173178
scwClient, err := scw.NewClient(opts...)

scaleway/resource_account_ssh_key_test.go

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,30 +17,28 @@ func init() {
1717
})
1818
}
1919

20-
func testSweepAccountSSHKey(region string) error {
21-
scwClient, err := sharedClientForRegion(scw.Region(region))
22-
if err != nil {
23-
return fmt.Errorf("error getting client in sweeper: %s", err)
24-
}
25-
accountAPI := account.NewAPI(scwClient)
26-
27-
l.Debugf("sweeper: destroying the SSH keys")
20+
func testSweepAccountSSHKey(_ string) error {
21+
return sweepZones([]scw.Zone{scw.ZoneFrPar1}, func(scwClient *scw.Client, zone scw.Zone) error {
22+
accountAPI := account.NewAPI(scwClient)
2823

29-
listSSHKeys, err := accountAPI.ListSSHKeys(&account.ListSSHKeysRequest{}, scw.WithAllPages())
30-
if err != nil {
31-
return fmt.Errorf("error listing SSH keys in sweeper: %s", err)
32-
}
24+
l.Debugf("sweeper: destroying the SSH keys")
3325

34-
for _, sshKey := range listSSHKeys.SSHKeys {
35-
err := accountAPI.DeleteSSHKey(&account.DeleteSSHKeyRequest{
36-
SSHKeyID: sshKey.ID,
37-
})
26+
listSSHKeys, err := accountAPI.ListSSHKeys(&account.ListSSHKeysRequest{}, scw.WithAllPages())
3827
if err != nil {
39-
return fmt.Errorf("error deleting SSH key in sweeper: %s", err)
28+
return fmt.Errorf("error listing SSH keys in sweeper: %s", err)
4029
}
41-
}
4230

43-
return nil
31+
for _, sshKey := range listSSHKeys.SSHKeys {
32+
err := accountAPI.DeleteSSHKey(&account.DeleteSSHKeyRequest{
33+
SSHKeyID: sshKey.ID,
34+
})
35+
if err != nil {
36+
return fmt.Errorf("error deleting SSH key in sweeper: %s", err)
37+
}
38+
}
39+
40+
return nil
41+
})
4442
}
4543

4644
func TestAccScalewayAccountSSHKey_basic(t *testing.T) {

scaleway/resource_k8s_cluster_beta_test.go

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -39,29 +39,30 @@ func testAccScalewayK8SClusterGetLatestVersion(tt *TestTools) {
3939
}
4040
}
4141

42-
func testSweepK8SCluster(region string) error {
43-
scwClient, err := sharedClientForRegion(scw.Region(region))
44-
if err != nil {
45-
return fmt.Errorf("error getting client in sweeper: %s", err)
46-
}
47-
k8sAPI := k8s.NewAPI(scwClient)
48-
49-
l.Debugf("sweeper: destroying the k8s cluster in (%s)", region)
50-
listClusters, err := k8sAPI.ListClusters(&k8s.ListClustersRequest{}, scw.WithAllPages())
51-
if err != nil {
52-
return fmt.Errorf("error listing clusters in (%s) in sweeper: %s", region, err)
53-
}
42+
func testSweepK8SCluster(_ string) error {
43+
return sweepRegions([]scw.Region{scw.RegionFrPar, scw.RegionNlAms}, func(scwClient *scw.Client, region scw.Region) error {
44+
k8sAPI := k8s.NewAPI(scwClient)
5445

55-
for _, cluster := range listClusters.Clusters {
56-
_, err := k8sAPI.DeleteCluster(&k8s.DeleteClusterRequest{
57-
ClusterID: cluster.ID,
58-
})
46+
l.Debugf("sweeper: destroying the k8s cluster in (%s)", region)
47+
listClusters, err := k8sAPI.ListClusters(&k8s.ListClustersRequest{
48+
Region: region,
49+
}, scw.WithAllPages())
5950
if err != nil {
60-
return fmt.Errorf("error deleting cluster in sweeper: %s", err)
51+
return fmt.Errorf("error listing clusters in (%s) in sweeper: %s", region, err)
6152
}
62-
}
6353

64-
return nil
54+
for _, cluster := range listClusters.Clusters {
55+
_, err := k8sAPI.DeleteCluster(&k8s.DeleteClusterRequest{
56+
ClusterID: cluster.ID,
57+
Region: region,
58+
})
59+
if err != nil {
60+
return fmt.Errorf("error deleting cluster in sweeper: %s", err)
61+
}
62+
}
63+
64+
return nil
65+
})
6566
}
6667

6768
func TestAccScalewayK8SCluster_Deprecated(t *testing.T) {

scaleway/resource_lb_beta_test.go

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,30 +17,31 @@ func init() {
1717
})
1818
}
1919

20-
func testSweepLB(region string) error {
21-
scwClient, err := sharedClientForRegion(scw.Region(region))
22-
if err != nil {
23-
return fmt.Errorf("error getting client in sweeper: %s", err)
24-
}
25-
lbAPI := lb.NewAPI(scwClient)
26-
27-
l.Debugf("sweeper: destroying the lbs in (%s)", region)
28-
listLBs, err := lbAPI.ListLBs(&lb.ListLBsRequest{}, scw.WithAllPages())
29-
if err != nil {
30-
return fmt.Errorf("error listing lbs in (%s) in sweeper: %s", region, err)
31-
}
20+
func testSweepLB(_ string) error {
21+
return sweepRegions([]scw.Region{scw.RegionFrPar, scw.RegionNlAms, scw.RegionPlWaw}, func(scwClient *scw.Client, region scw.Region) error {
22+
lbAPI := lb.NewAPI(scwClient)
3223

33-
for _, l := range listLBs.LBs {
34-
err := lbAPI.DeleteLB(&lb.DeleteLBRequest{
35-
LBID: l.ID,
36-
ReleaseIP: true,
37-
})
24+
l.Debugf("sweeper: destroying the lbs in (%s)", region)
25+
listLBs, err := lbAPI.ListLBs(&lb.ListLBsRequest{
26+
Region: region,
27+
}, scw.WithAllPages())
3828
if err != nil {
39-
return fmt.Errorf("error deleting lb in sweeper: %s", err)
29+
return fmt.Errorf("error listing lbs in (%s) in sweeper: %s", region, err)
4030
}
41-
}
4231

43-
return nil
32+
for _, l := range listLBs.LBs {
33+
err := lbAPI.DeleteLB(&lb.DeleteLBRequest{
34+
LBID: l.ID,
35+
ReleaseIP: true,
36+
Region: region,
37+
})
38+
if err != nil {
39+
return fmt.Errorf("error deleting lb in sweeper: %s", err)
40+
}
41+
}
42+
43+
return nil
44+
})
4445
}
4546

4647
func TestAccScalewayLbLb_WithIP(t *testing.T) {

scaleway/resource_lb_ip_beta_test.go

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,31 +17,29 @@ func init() {
1717
})
1818
}
1919

20-
func testSweepLBIP(region string) error {
21-
scwClient, err := sharedClientForRegion(scw.Region(region))
22-
if err != nil {
23-
return fmt.Errorf("error getting client in sweeper: %s", err)
24-
}
25-
lbAPI := lb.NewAPI(scwClient)
20+
func testSweepLBIP(_ string) error {
21+
return sweepRegions([]scw.Region{scw.RegionFrPar, scw.RegionNlAms, scw.RegionPlWaw}, func(scwClient *scw.Client, region scw.Region) error {
22+
lbAPI := lb.NewAPI(scwClient)
2623

27-
l.Debugf("sweeper: destroying the lb ips in (%s)", region)
28-
listIPs, err := lbAPI.ListIPs(&lb.ListIPsRequest{}, scw.WithAllPages())
29-
if err != nil {
30-
return fmt.Errorf("error listing lb ips in (%s) in sweeper: %s", region, err)
31-
}
24+
l.Debugf("sweeper: destroying the lb ips in (%s)", region)
25+
listIPs, err := lbAPI.ListIPs(&lb.ListIPsRequest{}, scw.WithAllPages())
26+
if err != nil {
27+
return fmt.Errorf("error listing lb ips in (%s) in sweeper: %s", region, err)
28+
}
3229

33-
for _, ip := range listIPs.IPs {
34-
if ip.LBID == nil {
35-
err := lbAPI.ReleaseIP(&lb.ReleaseIPRequest{
36-
IPID: ip.ID,
37-
})
38-
if err != nil {
39-
return fmt.Errorf("error deleting lb ip in sweeper: %s", err)
30+
for _, ip := range listIPs.IPs {
31+
if ip.LBID == nil {
32+
err := lbAPI.ReleaseIP(&lb.ReleaseIPRequest{
33+
IPID: ip.ID,
34+
})
35+
if err != nil {
36+
return fmt.Errorf("error deleting lb ip in sweeper: %s", err)
37+
}
4038
}
4139
}
42-
}
4340

44-
return nil
41+
return nil
42+
})
4543
}
4644

4745
func TestAccScalewayLbIP_Basic(t *testing.T) {

scaleway/resource_object_bucket_test.go

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -115,28 +115,30 @@ func testAccCheckScalewayObjectBucketDestroy(tt *TestTools) resource.TestCheckFu
115115
}
116116
}
117117

118-
func testSweepStorageObjectBucket(region string) error {
119-
s3client, err := sharedS3ClientForRegion(scw.Region(region))
120-
if err != nil {
121-
return fmt.Errorf("error getting client: %s", err)
122-
}
118+
func testSweepStorageObjectBucket(_ string) error {
119+
return sweepRegions([]scw.Region{scw.RegionFrPar, scw.RegionNlAms, scw.RegionPlWaw}, func(scwClient *scw.Client, region scw.Region) error {
120+
s3client, err := sharedS3ClientForRegion(region)
121+
if err != nil {
122+
return fmt.Errorf("error getting client: %s", err)
123+
}
123124

124-
listBucketResponse, err := s3client.ListBuckets(&s3.ListBucketsInput{})
125-
if err != nil {
126-
return fmt.Errorf("couldn't list buckets: %s", err)
127-
}
125+
listBucketResponse, err := s3client.ListBuckets(&s3.ListBucketsInput{})
126+
if err != nil {
127+
return fmt.Errorf("couldn't list buckets: %s", err)
128+
}
128129

129-
for _, bucket := range listBucketResponse.Buckets {
130-
l.Debugf("Deleting %q bucket", *bucket.Name)
131-
if strings.HasPrefix(*bucket.Name, "terraform-test") {
132-
_, err := s3client.DeleteBucket(&s3.DeleteBucketInput{
133-
Bucket: bucket.Name,
134-
})
135-
if err != nil {
136-
return fmt.Errorf("error deleting bucket in Sweeper: %s", err)
130+
for _, bucket := range listBucketResponse.Buckets {
131+
l.Debugf("Deleting %q bucket", *bucket.Name)
132+
if strings.HasPrefix(*bucket.Name, "terraform-test") {
133+
_, err := s3client.DeleteBucket(&s3.DeleteBucketInput{
134+
Bucket: bucket.Name,
135+
})
136+
if err != nil {
137+
return fmt.Errorf("error deleting bucket in Sweeper: %s", err)
138+
}
137139
}
138140
}
139-
}
140141

141-
return nil
142+
return nil
143+
})
142144
}

scaleway/sweeper_test.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,6 @@ func sweepRegions(regions []scw.Region, f func(scwClient *scw.Client, region scw
3636
return nil
3737
}
3838

39-
// sharedClientForRegion returns a Scaleway client needed for the sweeper
40-
// functions for a given region {fr-par,nl-ams}
41-
func sharedClientForRegion(region scw.Region) (*scw.Client, error) {
42-
return sharedClientForZone(region.GetZones()[0])
43-
}
44-
4539
// sharedClientForZone returns a Scaleway client needed for the sweeper
4640
// functions for a given zone
4741
func sharedClientForZone(zone scw.Zone) (*scw.Client, error) {

0 commit comments

Comments
 (0)