Skip to content

Commit 865b37a

Browse files
authored
ci(sweeper): continue execution when resources cannot be deleted (scaleway#4886)
1 parent 9b33bf4 commit 865b37a

File tree

1 file changed

+63
-77
lines changed

1 file changed

+63
-77
lines changed

cmd/scw-sweeper/main.go

Lines changed: 63 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package main
22

33
import (
4+
"fmt"
45
"log"
56
"os"
67

@@ -65,190 +66,175 @@ func mainNoExit() int {
6566
log.Fatalf("Cannot create Scaleway client: %s", err)
6667
}
6768

69+
var errors []string
70+
6871
err = accountSweeper.SweepAll(client)
6972
if err != nil {
70-
log.Fatalf("Error sweeping account: %s", err)
71-
72-
return -1
73+
log.Printf("Error sweeping account: %s", err)
74+
errors = append(errors, fmt.Sprintf("account: %s", err))
7375
}
7476

7577
err = applesiliconSweeper.SweepAllLocalities(client)
7678
if err != nil {
77-
log.Fatalf("Error sweeping applesilicon: %s", err)
78-
79-
return -1
79+
log.Printf("Error sweeping applesilicon: %s", err)
80+
errors = append(errors, fmt.Sprintf("applesilicon: %s", err))
8081
}
8182

8283
err = baremetalSweeper.SweepAllLocalities(client)
8384
if err != nil {
84-
log.Fatalf("Error sweeping baremetal: %s", err)
85-
86-
return -1
85+
log.Printf("Error sweeping baremetal: %s", err)
86+
errors = append(errors, fmt.Sprintf("baremetal: %s", err))
8787
}
8888

8989
err = cockpitSweeper.SweepAllLocalities(client)
9090
if err != nil {
91-
log.Fatalf("Error sweeping cockpit: %s", err)
92-
93-
return -1
91+
log.Printf("Error sweeping cockpit: %s", err)
92+
errors = append(errors, fmt.Sprintf("cockpit: %s", err))
9493
}
9594

9695
err = containerSweeper.SweepAllLocalities(client)
9796
if err != nil {
98-
log.Fatalf("Error sweeping container: %s", err)
99-
100-
return -1
97+
log.Printf("Error sweeping container: %s", err)
98+
errors = append(errors, fmt.Sprintf("container: %s", err))
10199
}
102100

103101
err = flexibleipSweeper.SweepAllLocalities(client)
104102
if err != nil {
105-
log.Fatalf("Error sweeping flexibleip: %s", err)
106-
107-
return -1
103+
log.Printf("Error sweeping flexibleip: %s", err)
104+
errors = append(errors, fmt.Sprintf("flexibleip: %s", err))
108105
}
109106

110107
err = functionSweeper.SweepAllLocalities(client)
111108
if err != nil {
112-
log.Fatalf("Error sweeping function: %s", err)
113-
114-
return -1
109+
log.Printf("Error sweeping function: %s", err)
110+
errors = append(errors, fmt.Sprintf("function: %s", err))
115111
}
116112

117113
err = iamSweeper.SweepSSHKey(client)
118114
if err != nil {
119-
log.Fatalf("Error sweeping iam: %s", err)
120-
121-
return -1
115+
log.Printf("Error sweeping iam: %s", err)
116+
errors = append(errors, fmt.Sprintf("iam: %s", err))
122117
}
123118

124119
err = inferenceSweeper.SweepAllLocalities(client)
125120
if err != nil {
126-
log.Fatalf("Error sweeping inference: %s", err)
127-
128-
return -1
121+
log.Printf("Error sweeping inference: %s", err)
122+
errors = append(errors, fmt.Sprintf("inference: %s", err))
129123
}
130124

131125
err = instanceSweeper.SweepAllLocalities(client)
132126
if err != nil {
133-
log.Fatalf("Error sweeping instance: %s", err)
134-
135-
return -1
127+
log.Printf("Error sweeping instance: %s", err)
128+
errors = append(errors, fmt.Sprintf("instance: %s", err))
136129
}
137130

138131
// Instance servers need to be swept before volumes and snapshots can be swept
139132
// because volumes and snapshots are attached to servers.
140133
err = blockSweeper.SweepAllLocalities(client)
141134
if err != nil {
142-
log.Fatalf("Error sweeping block: %s", err)
143-
144-
return -1
135+
log.Printf("Error sweeping block: %s", err)
136+
errors = append(errors, fmt.Sprintf("block: %s", err))
145137
}
146138

147139
err = iotSweeper.SweepAllLocalities(client)
148140
if err != nil {
149-
log.Fatalf("Error sweeping iot: %s", err)
150-
151-
return -1
141+
log.Printf("Error sweeping iot: %s", err)
142+
errors = append(errors, fmt.Sprintf("iot: %s", err))
152143
}
153144

154145
err = jobsSweeper.SweepAllLocalities(client)
155146
if err != nil {
156-
log.Fatalf("Error sweeping jobs: %s", err)
157-
158-
return -1
147+
log.Printf("Error sweeping jobs: %s", err)
148+
errors = append(errors, fmt.Sprintf("jobs: %s", err))
159149
}
160150

161151
err = k8sSweeper.SweepAllLocalities(client)
162152
if err != nil {
163-
log.Fatalf("Error sweeping k8s: %s", err)
164-
165-
return -1
153+
log.Printf("Error sweeping k8s: %s", err)
154+
errors = append(errors, fmt.Sprintf("k8s: %s", err))
166155
}
167156

168157
err = lbSweeper.SweepAllLocalities(client)
169158
if err != nil {
170-
log.Fatalf("Error sweeping lb: %s", err)
171-
172-
return -1
159+
log.Printf("Error sweeping lb: %s", err)
160+
errors = append(errors, fmt.Sprintf("lb: %s", err))
173161
}
174162

175163
err = mongodbSweeper.SweepAllLocalities(client)
176164
if err != nil {
177-
log.Fatalf("Error sweeping mongodb: %s", err)
178-
179-
return -1
165+
log.Printf("Error sweeping mongodb: %s", err)
166+
errors = append(errors, fmt.Sprintf("mongodb: %s", err))
180167
}
181168

182169
err = mnqSweeper.SweepAllLocalities(client)
183170
if err != nil {
184-
log.Fatalf("Error sweeping mnq: %s", err)
185-
186-
return -1
171+
log.Printf("Error sweeping mnq: %s", err)
172+
errors = append(errors, fmt.Sprintf("mnq: %s", err))
187173
}
188174

189175
err = rdbSweeper.SweepAllLocalities(client)
190176
if err != nil {
191-
log.Fatalf("Error sweeping rdb: %s", err)
192-
193-
return -1
177+
log.Printf("Error sweeping rdb: %s", err)
178+
errors = append(errors, fmt.Sprintf("rdb: %s", err))
194179
}
195180

196181
err = redisSweeper.SweepAllLocalities(client)
197182
if err != nil {
198-
log.Fatalf("Error sweeping redis: %s", err)
199-
200-
return -1
183+
log.Printf("Error sweeping redis: %s", err)
184+
errors = append(errors, fmt.Sprintf("redis: %s", err))
201185
}
202186

203187
err = registrySweeper.SweepAllLocalities(client)
204188
if err != nil {
205-
log.Fatalf("Error sweeping registry: %s", err)
206-
207-
return -1
189+
log.Printf("Error sweeping registry: %s", err)
190+
errors = append(errors, fmt.Sprintf("registry: %s", err))
208191
}
209192

210193
err = secretSweeper.SweepAllLocalities(client)
211194
if err != nil {
212-
log.Fatalf("Error sweeping secret: %s", err)
213-
214-
return -1
195+
log.Printf("Error sweeping secret: %s", err)
196+
errors = append(errors, fmt.Sprintf("secret: %s", err))
215197
}
216198

217199
err = sdbSweeper.SweepAllLocalities(client)
218200
if err != nil {
219-
log.Fatalf("Error sweeping sdb: %s", err)
220-
221-
return -1
201+
log.Printf("Error sweeping sdb: %s", err)
202+
errors = append(errors, fmt.Sprintf("sdb: %s", err))
222203
}
223204

224205
err = vpcSweeper.SweepAllLocalities(client)
225206
if err != nil {
226-
log.Fatalf("Error sweeping vpc: %s", err)
227-
228-
return -1
207+
log.Printf("Error sweeping vpc: %s", err)
208+
errors = append(errors, fmt.Sprintf("vpc: %s", err))
229209
}
230210

231211
err = vpcgwSweeper.SweepAllLocalities(client)
232212
if err != nil {
233-
log.Fatalf("Error sweeping vpcgw: %s", err)
234-
235-
return -1
213+
log.Printf("Error sweeping vpcgw: %s", err)
214+
errors = append(errors, fmt.Sprintf("vpcgw: %s", err))
236215
}
237216

238217
err = webhostingSweeper.SweepAllLocalities(client)
239218
if err != nil {
240-
log.Fatalf("Error sweeping webhosting: %s", err)
241-
242-
return -1
219+
log.Printf("Error sweeping webhosting: %s", err)
220+
errors = append(errors, fmt.Sprintf("webhosting: %s", err))
243221
}
244222

245223
// IPAM IPs need to be swept in the end because we need to be sure
246224
// that every resource with an attached ip is destroyed before executing it.
247225
err = ipamSweeper.SweepAllLocalities(client)
248226
if err != nil {
249-
log.Fatalf("Error sweeping ipam: %s", err)
227+
log.Printf("Error sweeping ipam: %s", err)
228+
errors = append(errors, fmt.Sprintf("ipam: %s", err))
229+
}
250230

251-
return -1
231+
// If there were any errors, log them all and exit with fatal
232+
if len(errors) > 0 {
233+
log.Printf("Sweeper completed with %d errors:", len(errors))
234+
for _, errMsg := range errors {
235+
log.Printf(" - %s", errMsg)
236+
}
237+
log.Fatalf("Sweeper failed with %d errors", len(errors))
252238
}
253239

254240
return 0

0 commit comments

Comments
 (0)