|
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