Skip to content

Commit 0781019

Browse files
authored
chore: add support for sweepers (#4379)
1 parent 0686b22 commit 0781019

File tree

4 files changed

+205
-3
lines changed

4 files changed

+205
-3
lines changed

.github/workflows/nightly.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,11 @@ jobs:
8686
env:
8787
SLACK_WEBHOOK_NIGHTLY: ${{ secrets.SLACK_WEBHOOK_NIGHTLY }}
8888
FAILED_PRODUCT: ${{ matrix.products }}
89+
- name: Run Sweepers
90+
run: go run -v ./cmd/scw-sweepers
91+
env:
92+
SCW_DEBUG: 1
93+
SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY }}
94+
SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY }}
95+
SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_DEFAULT_ORGANIZATION_ID }}
96+
SCW_DEFAULT_PROJECT_ID: ${{ secrets.SCW_DEFAULT_PROJECT_ID }}

cmd/scw-sweeper/main.go

Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
package main
2+
3+
import (
4+
"log"
5+
"os"
6+
7+
accountSweeper "github.com/scaleway/scaleway-sdk-go/api/account/v3/sweepers"
8+
applesiliconSweeper "github.com/scaleway/scaleway-sdk-go/api/applesilicon/v1alpha1/sweepers"
9+
baremetalSweeper "github.com/scaleway/scaleway-sdk-go/api/baremetal/v1/sweepers"
10+
blockSweeper "github.com/scaleway/scaleway-sdk-go/api/block/v1alpha1/sweepers"
11+
cockpitSweeper "github.com/scaleway/scaleway-sdk-go/api/cockpit/v1/sweepers"
12+
containerSweeper "github.com/scaleway/scaleway-sdk-go/api/container/v1beta1/sweepers"
13+
flexibleipSweeper "github.com/scaleway/scaleway-sdk-go/api/flexibleip/v1alpha1/sweepers"
14+
functionSweeper "github.com/scaleway/scaleway-sdk-go/api/function/v1beta1/sweepers"
15+
inferenceSweeper "github.com/scaleway/scaleway-sdk-go/api/inference/v1beta1/sweepers"
16+
instanceSweeper "github.com/scaleway/scaleway-sdk-go/api/instance/v1/sweepers"
17+
iotSweeper "github.com/scaleway/scaleway-sdk-go/api/iot/v1/sweepers"
18+
ipamSweeper "github.com/scaleway/scaleway-sdk-go/api/ipam/v1/sweepers"
19+
jobsSweeper "github.com/scaleway/scaleway-sdk-go/api/jobs/v1alpha1/sweepers"
20+
k8sSweeper "github.com/scaleway/scaleway-sdk-go/api/k8s/v1/sweepers"
21+
lbSweeper "github.com/scaleway/scaleway-sdk-go/api/lb/v1/sweepers"
22+
mnqSweeper "github.com/scaleway/scaleway-sdk-go/api/mnq/v1beta1/sweepers"
23+
mongodbSweeper "github.com/scaleway/scaleway-sdk-go/api/mongodb/v1alpha1/sweepers"
24+
rdbSweeper "github.com/scaleway/scaleway-sdk-go/api/rdb/v1/sweepers"
25+
redisSweeper "github.com/scaleway/scaleway-sdk-go/api/redis/v1/sweepers"
26+
registrySweeper "github.com/scaleway/scaleway-sdk-go/api/registry/v1/sweepers"
27+
secretSweeper "github.com/scaleway/scaleway-sdk-go/api/secret/v1beta1/sweepers"
28+
sdbSweeper "github.com/scaleway/scaleway-sdk-go/api/serverless_sqldb/v1alpha1/sweepers"
29+
vpcSweeper "github.com/scaleway/scaleway-sdk-go/api/vpc/v2/sweepers"
30+
vpcgwSweeper "github.com/scaleway/scaleway-sdk-go/api/vpcgw/v1/sweepers"
31+
webhostingSweeper "github.com/scaleway/scaleway-sdk-go/api/webhosting/v1alpha1/sweepers"
32+
"github.com/scaleway/scaleway-sdk-go/scw"
33+
)
34+
35+
func main() {
36+
exitCode := mainNoExit()
37+
os.Exit(exitCode)
38+
}
39+
40+
func mainNoExit() int {
41+
config, err := scw.LoadConfig()
42+
if err != nil {
43+
// handle error
44+
log.Fatal(err)
45+
}
46+
activeProfile, err := config.GetActiveProfile()
47+
if err != nil {
48+
// handle error
49+
log.Fatal(err)
50+
}
51+
52+
envProfile := scw.LoadEnvProfile()
53+
profile := scw.MergeProfiles(activeProfile, envProfile)
54+
55+
client, err := scw.NewClient(
56+
scw.WithProfile(profile),
57+
scw.WithUserAgent("scw-sweeper"),
58+
scw.WithEnv(),
59+
)
60+
if err != nil {
61+
log.Fatalf("Cannot create Scaleway client: %s", err)
62+
}
63+
64+
err = accountSweeper.SweepAll(client)
65+
if err != nil {
66+
return -1
67+
}
68+
69+
err = applesiliconSweeper.SweepAllLocalities(client)
70+
if err != nil {
71+
return -1
72+
}
73+
74+
err = baremetalSweeper.SweepAllLocalities(client)
75+
if err != nil {
76+
return -1
77+
}
78+
79+
err = cockpitSweeper.SweepAllLocalities(client)
80+
if err != nil {
81+
return -1
82+
}
83+
84+
err = containerSweeper.SweepAllLocalities(client)
85+
if err != nil {
86+
return -1
87+
}
88+
89+
err = flexibleipSweeper.SweepAllLocalities(client)
90+
if err != nil {
91+
return -1
92+
}
93+
94+
err = functionSweeper.SweepAllLocalities(client)
95+
if err != nil {
96+
return -1
97+
}
98+
99+
err = inferenceSweeper.SweepAllLocalities(client)
100+
if err != nil {
101+
return -1
102+
}
103+
104+
err = instanceSweeper.SweepAllLocalities(client)
105+
if err != nil {
106+
return -1
107+
}
108+
109+
// Instance servers need to be swept before volumes and snapshots can be swept
110+
// because volumes and snapshots are attached to servers.
111+
err = blockSweeper.SweepAllLocalities(client)
112+
if err != nil {
113+
return -1
114+
}
115+
116+
err = iotSweeper.SweepAllLocalities(client)
117+
if err != nil {
118+
return -1
119+
}
120+
121+
err = ipamSweeper.SweepAllLocalities(client)
122+
if err != nil {
123+
return -1
124+
}
125+
126+
err = jobsSweeper.SweepAllLocalities(client)
127+
if err != nil {
128+
return -1
129+
}
130+
131+
err = k8sSweeper.SweepAllLocalities(client)
132+
if err != nil {
133+
return -1
134+
}
135+
136+
err = lbSweeper.SweepAllLocalities(client)
137+
if err != nil {
138+
return -1
139+
}
140+
141+
err = mongodbSweeper.SweepAllLocalities(client)
142+
if err != nil {
143+
return -1
144+
}
145+
146+
err = mnqSweeper.SweepAllLocalities(client)
147+
if err != nil {
148+
return -1
149+
}
150+
151+
err = rdbSweeper.SweepAllLocalities(client)
152+
if err != nil {
153+
return -1
154+
}
155+
156+
err = redisSweeper.SweepAllLocalities(client)
157+
if err != nil {
158+
return -1
159+
}
160+
161+
err = registrySweeper.SweepAllLocalities(client)
162+
if err != nil {
163+
return -1
164+
}
165+
166+
err = secretSweeper.SweepAllLocalities(client)
167+
if err != nil {
168+
return -1
169+
}
170+
171+
err = sdbSweeper.SweepAllLocalities(client)
172+
if err != nil {
173+
return -1
174+
}
175+
176+
err = vpcSweeper.SweepAllLocalities(client)
177+
if err != nil {
178+
return -1
179+
}
180+
181+
err = vpcgwSweeper.SweepAllLocalities(client)
182+
if err != nil {
183+
log.Fatalf("Error sweeping vpcgw: %s", err)
184+
return -1
185+
}
186+
187+
err = webhostingSweeper.SweepAllLocalities(client)
188+
if err != nil {
189+
log.Fatalf("Error sweeping webhosting: %s", err)
190+
return -1
191+
}
192+
193+
return 0
194+
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ require (
2626
github.com/mattn/go-isatty v0.0.20
2727
github.com/moby/buildkit v0.13.2
2828
github.com/opencontainers/go-digest v1.0.0
29-
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30.0.20241219084541-35c11c799f4c
29+
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30.0.20241224153503-37a05773a198
3030
github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966
3131
github.com/spf13/cobra v1.8.1
3232
github.com/spf13/pflag v1.0.5

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -466,8 +466,8 @@ github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUz
466466
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
467467
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI=
468468
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs=
469-
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30.0.20241219084541-35c11c799f4c h1:WMtLyaN8cHQFLmCS8bqnDRs+UOLxai1fyNb2BbQ+hC4=
470-
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30.0.20241219084541-35c11c799f4c/go.mod h1:kzh+BSAvpoyHHdHBCDhmSWtBc1NbLMZ2lWHqnBoxFks=
469+
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30.0.20241224153503-37a05773a198 h1:ym2tXsg7ZCAnZlKmB07jMApvvi5TE66lXWH6xRZTsFE=
470+
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.30.0.20241224153503-37a05773a198/go.mod h1:kzh+BSAvpoyHHdHBCDhmSWtBc1NbLMZ2lWHqnBoxFks=
471471
github.com/sclevine/spec v1.4.0 h1:z/Q9idDcay5m5irkZ28M7PtQM4aOISzOpj4bUPkDee8=
472472
github.com/sclevine/spec v1.4.0/go.mod h1:LvpgJaFyvQzRvc1kaDs0bulYwzC70PbiYjC4QnFHkOM=
473473
github.com/secure-systems-lab/go-securesystemslib v0.8.0 h1:mr5An6X45Kb2nddcFlbmfHkLguCE9laoZCUzEEpIZXA=

0 commit comments

Comments
 (0)