|
1 | 1 | package main |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "fmt" |
4 | 5 | "log" |
5 | 6 | "os" |
6 | 7 |
|
@@ -65,190 +66,175 @@ func mainNoExit() int { |
65 | 66 | log.Fatalf("Cannot create Scaleway client: %s", err) |
66 | 67 | } |
67 | 68 |
|
| 69 | + var errors []string |
| 70 | + |
68 | 71 | err = accountSweeper.SweepAll(client) |
69 | 72 | 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)) |
73 | 75 | } |
74 | 76 |
|
75 | 77 | err = applesiliconSweeper.SweepAllLocalities(client) |
76 | 78 | 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)) |
80 | 81 | } |
81 | 82 |
|
82 | 83 | err = baremetalSweeper.SweepAllLocalities(client) |
83 | 84 | 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)) |
87 | 87 | } |
88 | 88 |
|
89 | 89 | err = cockpitSweeper.SweepAllLocalities(client) |
90 | 90 | 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)) |
94 | 93 | } |
95 | 94 |
|
96 | 95 | err = containerSweeper.SweepAllLocalities(client) |
97 | 96 | 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)) |
101 | 99 | } |
102 | 100 |
|
103 | 101 | err = flexibleipSweeper.SweepAllLocalities(client) |
104 | 102 | 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)) |
108 | 105 | } |
109 | 106 |
|
110 | 107 | err = functionSweeper.SweepAllLocalities(client) |
111 | 108 | 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)) |
115 | 111 | } |
116 | 112 |
|
117 | 113 | err = iamSweeper.SweepSSHKey(client) |
118 | 114 | 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)) |
122 | 117 | } |
123 | 118 |
|
124 | 119 | err = inferenceSweeper.SweepAllLocalities(client) |
125 | 120 | 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)) |
129 | 123 | } |
130 | 124 |
|
131 | 125 | err = instanceSweeper.SweepAllLocalities(client) |
132 | 126 | 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)) |
136 | 129 | } |
137 | 130 |
|
138 | 131 | // Instance servers need to be swept before volumes and snapshots can be swept |
139 | 132 | // because volumes and snapshots are attached to servers. |
140 | 133 | err = blockSweeper.SweepAllLocalities(client) |
141 | 134 | 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)) |
145 | 137 | } |
146 | 138 |
|
147 | 139 | err = iotSweeper.SweepAllLocalities(client) |
148 | 140 | 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)) |
152 | 143 | } |
153 | 144 |
|
154 | 145 | err = jobsSweeper.SweepAllLocalities(client) |
155 | 146 | 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)) |
159 | 149 | } |
160 | 150 |
|
161 | 151 | err = k8sSweeper.SweepAllLocalities(client) |
162 | 152 | 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)) |
166 | 155 | } |
167 | 156 |
|
168 | 157 | err = lbSweeper.SweepAllLocalities(client) |
169 | 158 | 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)) |
173 | 161 | } |
174 | 162 |
|
175 | 163 | err = mongodbSweeper.SweepAllLocalities(client) |
176 | 164 | 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)) |
180 | 167 | } |
181 | 168 |
|
182 | 169 | err = mnqSweeper.SweepAllLocalities(client) |
183 | 170 | 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)) |
187 | 173 | } |
188 | 174 |
|
189 | 175 | err = rdbSweeper.SweepAllLocalities(client) |
190 | 176 | 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)) |
194 | 179 | } |
195 | 180 |
|
196 | 181 | err = redisSweeper.SweepAllLocalities(client) |
197 | 182 | 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)) |
201 | 185 | } |
202 | 186 |
|
203 | 187 | err = registrySweeper.SweepAllLocalities(client) |
204 | 188 | 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)) |
208 | 191 | } |
209 | 192 |
|
210 | 193 | err = secretSweeper.SweepAllLocalities(client) |
211 | 194 | 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)) |
215 | 197 | } |
216 | 198 |
|
217 | 199 | err = sdbSweeper.SweepAllLocalities(client) |
218 | 200 | 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)) |
222 | 203 | } |
223 | 204 |
|
224 | 205 | err = vpcSweeper.SweepAllLocalities(client) |
225 | 206 | 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)) |
229 | 209 | } |
230 | 210 |
|
231 | 211 | err = vpcgwSweeper.SweepAllLocalities(client) |
232 | 212 | 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)) |
236 | 215 | } |
237 | 216 |
|
238 | 217 | err = webhostingSweeper.SweepAllLocalities(client) |
239 | 218 | 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)) |
243 | 221 | } |
244 | 222 |
|
245 | 223 | // IPAM IPs need to be swept in the end because we need to be sure |
246 | 224 | // that every resource with an attached ip is destroyed before executing it. |
247 | 225 | err = ipamSweeper.SweepAllLocalities(client) |
248 | 226 | 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 | + } |
250 | 230 |
|
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)) |
252 | 238 | } |
253 | 239 |
|
254 | 240 | return 0 |
|
0 commit comments