Skip to content

chore: fix sweepers execution #685

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 2 commits into from
Nov 9, 2020
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
6 changes: 6 additions & 0 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,9 @@ jobs:
SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY }}
SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY }}
SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_DEFAULT_ORGANIZATION_ID }}
- name: Run sweepers
run: make sweep
env:
SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY }}
SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY }}
SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_DEFAULT_ORGANIZATION_ID }}
4 changes: 3 additions & 1 deletion GNUmakefile
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
SWEEP?=all_regions
SWEEP_DIR?=./scaleway
TEST?=$$(go list ./... |grep -v 'vendor')
GOFMT_FILES?=$$(find . -name '*.go' |grep -v vendor)
WEBSITE_REPO=github.com/hashicorp/terraform-website
Expand All @@ -11,7 +13,7 @@ build: fmtcheck

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

test: fmtcheck
go test -i $(TEST) || exit 1
Expand Down
9 changes: 7 additions & 2 deletions scaleway/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,6 @@ func Provider(config *ProviderConfig) plugin.ProviderFunc {
meta, err := buildMeta(&MetaConfig{
providerSchema: data,
terraformVersion: terraformVersion,
httpClient: &http.Client{Transport: newRetryableTransport(http.DefaultTransport)},
})
if err != nil {
return nil, diag.FromErr(err)
Expand Down Expand Up @@ -167,7 +166,13 @@ func buildMeta(config *MetaConfig) (*Meta, error) {
opts := []scw.ClientOption{
scw.WithUserAgent(fmt.Sprintf("terraform-provider/%s terraform/%s", version, config.terraformVersion)),
scw.WithProfile(profile),
scw.WithHTTPClient(config.httpClient),
}

defaultHTTPClient := &http.Client{Transport: newRetryableTransport(http.DefaultTransport)}
if config.httpClient != nil {
opts = append(opts, scw.WithHTTPClient(config.httpClient))
} else {
opts = append(opts, scw.WithHTTPClient(defaultHTTPClient))
}

scwClient, err := scw.NewClient(opts...)
Expand Down
36 changes: 17 additions & 19 deletions scaleway/resource_account_ssh_key_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,30 +17,28 @@ func init() {
})
}

func testSweepAccountSSHKey(region string) error {
scwClient, err := sharedClientForRegion(scw.Region(region))
if err != nil {
return fmt.Errorf("error getting client in sweeper: %s", err)
}
accountAPI := account.NewAPI(scwClient)

l.Debugf("sweeper: destroying the SSH keys")
func testSweepAccountSSHKey(_ string) error {
return sweepZones([]scw.Zone{scw.ZoneFrPar1}, func(scwClient *scw.Client, zone scw.Zone) error {
accountAPI := account.NewAPI(scwClient)

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

for _, sshKey := range listSSHKeys.SSHKeys {
err := accountAPI.DeleteSSHKey(&account.DeleteSSHKeyRequest{
SSHKeyID: sshKey.ID,
})
listSSHKeys, err := accountAPI.ListSSHKeys(&account.ListSSHKeysRequest{}, scw.WithAllPages())
if err != nil {
return fmt.Errorf("error deleting SSH key in sweeper: %s", err)
return fmt.Errorf("error listing SSH keys in sweeper: %s", err)
}
}

return nil
for _, sshKey := range listSSHKeys.SSHKeys {
err := accountAPI.DeleteSSHKey(&account.DeleteSSHKeyRequest{
SSHKeyID: sshKey.ID,
})
if err != nil {
return fmt.Errorf("error deleting SSH key in sweeper: %s", err)
}
}

return nil
})
}

func TestAccScalewayAccountSSHKey_basic(t *testing.T) {
Expand Down
39 changes: 20 additions & 19 deletions scaleway/resource_k8s_cluster_beta_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,29 +39,30 @@ func testAccScalewayK8SClusterGetLatestVersion(tt *TestTools) {
}
}

func testSweepK8SCluster(region string) error {
scwClient, err := sharedClientForRegion(scw.Region(region))
if err != nil {
return fmt.Errorf("error getting client in sweeper: %s", err)
}
k8sAPI := k8s.NewAPI(scwClient)

l.Debugf("sweeper: destroying the k8s cluster in (%s)", region)
listClusters, err := k8sAPI.ListClusters(&k8s.ListClustersRequest{}, scw.WithAllPages())
if err != nil {
return fmt.Errorf("error listing clusters in (%s) in sweeper: %s", region, err)
}
func testSweepK8SCluster(_ string) error {
return sweepRegions([]scw.Region{scw.RegionFrPar, scw.RegionNlAms}, func(scwClient *scw.Client, region scw.Region) error {
k8sAPI := k8s.NewAPI(scwClient)

for _, cluster := range listClusters.Clusters {
_, err := k8sAPI.DeleteCluster(&k8s.DeleteClusterRequest{
ClusterID: cluster.ID,
})
l.Debugf("sweeper: destroying the k8s cluster in (%s)", region)
listClusters, err := k8sAPI.ListClusters(&k8s.ListClustersRequest{
Region: region,
}, scw.WithAllPages())
if err != nil {
return fmt.Errorf("error deleting cluster in sweeper: %s", err)
return fmt.Errorf("error listing clusters in (%s) in sweeper: %s", region, err)
}
}

return nil
for _, cluster := range listClusters.Clusters {
_, err := k8sAPI.DeleteCluster(&k8s.DeleteClusterRequest{
ClusterID: cluster.ID,
Region: region,
})
if err != nil {
return fmt.Errorf("error deleting cluster in sweeper: %s", err)
}
}

return nil
})
}

func TestAccScalewayK8SCluster_Deprecated(t *testing.T) {
Expand Down
41 changes: 21 additions & 20 deletions scaleway/resource_lb_beta_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,30 +17,31 @@ func init() {
})
}

func testSweepLB(region string) error {
scwClient, err := sharedClientForRegion(scw.Region(region))
if err != nil {
return fmt.Errorf("error getting client in sweeper: %s", err)
}
lbAPI := lb.NewAPI(scwClient)

l.Debugf("sweeper: destroying the lbs in (%s)", region)
listLBs, err := lbAPI.ListLBs(&lb.ListLBsRequest{}, scw.WithAllPages())
if err != nil {
return fmt.Errorf("error listing lbs in (%s) in sweeper: %s", region, err)
}
func testSweepLB(_ string) error {
return sweepRegions([]scw.Region{scw.RegionFrPar, scw.RegionNlAms, scw.RegionPlWaw}, func(scwClient *scw.Client, region scw.Region) error {
lbAPI := lb.NewAPI(scwClient)

for _, l := range listLBs.LBs {
err := lbAPI.DeleteLB(&lb.DeleteLBRequest{
LBID: l.ID,
ReleaseIP: true,
})
l.Debugf("sweeper: destroying the lbs in (%s)", region)
listLBs, err := lbAPI.ListLBs(&lb.ListLBsRequest{
Region: region,
}, scw.WithAllPages())
if err != nil {
return fmt.Errorf("error deleting lb in sweeper: %s", err)
return fmt.Errorf("error listing lbs in (%s) in sweeper: %s", region, err)
}
}

return nil
for _, l := range listLBs.LBs {
err := lbAPI.DeleteLB(&lb.DeleteLBRequest{
LBID: l.ID,
ReleaseIP: true,
Region: region,
})
if err != nil {
return fmt.Errorf("error deleting lb in sweeper: %s", err)
}
}

return nil
})
}

func TestAccScalewayLbLb_WithIP(t *testing.T) {
Expand Down
38 changes: 18 additions & 20 deletions scaleway/resource_lb_ip_beta_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,31 +17,29 @@ func init() {
})
}

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

l.Debugf("sweeper: destroying the lb ips in (%s)", region)
listIPs, err := lbAPI.ListIPs(&lb.ListIPsRequest{}, scw.WithAllPages())
if err != nil {
return fmt.Errorf("error listing lb ips in (%s) in sweeper: %s", region, err)
}
l.Debugf("sweeper: destroying the lb ips in (%s)", region)
listIPs, err := lbAPI.ListIPs(&lb.ListIPsRequest{}, scw.WithAllPages())
if err != nil {
return fmt.Errorf("error listing lb ips in (%s) in sweeper: %s", region, err)
}

for _, ip := range listIPs.IPs {
if ip.LBID == nil {
err := lbAPI.ReleaseIP(&lb.ReleaseIPRequest{
IPID: ip.ID,
})
if err != nil {
return fmt.Errorf("error deleting lb ip in sweeper: %s", err)
for _, ip := range listIPs.IPs {
if ip.LBID == nil {
err := lbAPI.ReleaseIP(&lb.ReleaseIPRequest{
IPID: ip.ID,
})
if err != nil {
return fmt.Errorf("error deleting lb ip in sweeper: %s", err)
}
}
}
}

return nil
return nil
})
}

func TestAccScalewayLbIP_Basic(t *testing.T) {
Expand Down
40 changes: 21 additions & 19 deletions scaleway/resource_object_bucket_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,28 +115,30 @@ func testAccCheckScalewayObjectBucketDestroy(tt *TestTools) resource.TestCheckFu
}
}

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

listBucketResponse, err := s3client.ListBuckets(&s3.ListBucketsInput{})
if err != nil {
return fmt.Errorf("couldn't list buckets: %s", err)
}
listBucketResponse, err := s3client.ListBuckets(&s3.ListBucketsInput{})
if err != nil {
return fmt.Errorf("couldn't list buckets: %s", err)
}

for _, bucket := range listBucketResponse.Buckets {
l.Debugf("Deleting %q bucket", *bucket.Name)
if strings.HasPrefix(*bucket.Name, "terraform-test") {
_, err := s3client.DeleteBucket(&s3.DeleteBucketInput{
Bucket: bucket.Name,
})
if err != nil {
return fmt.Errorf("error deleting bucket in Sweeper: %s", err)
for _, bucket := range listBucketResponse.Buckets {
l.Debugf("Deleting %q bucket", *bucket.Name)
if strings.HasPrefix(*bucket.Name, "terraform-test") {
_, err := s3client.DeleteBucket(&s3.DeleteBucketInput{
Bucket: bucket.Name,
})
if err != nil {
return fmt.Errorf("error deleting bucket in Sweeper: %s", err)
}
}
}
}

return nil
return nil
})
}
6 changes: 0 additions & 6 deletions scaleway/sweeper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,6 @@ func sweepRegions(regions []scw.Region, f func(scwClient *scw.Client, region scw
return nil
}

// sharedClientForRegion returns a Scaleway client needed for the sweeper
// functions for a given region {fr-par,nl-ams}
func sharedClientForRegion(region scw.Region) (*scw.Client, error) {
return sharedClientForZone(region.GetZones()[0])
}

// sharedClientForZone returns a Scaleway client needed for the sweeper
// functions for a given zone
func sharedClientForZone(zone scw.Zone) (*scw.Client, error) {
Expand Down