Skip to content

Commit e923ff7

Browse files
committed
Onboarding: Refactor deleting servers
Delete all servers, and do not abort on the first failure.
1 parent 72e5f5e commit e923ff7

File tree

1 file changed

+31
-20
lines changed

1 file changed

+31
-20
lines changed

internal/controller/onboarding_controller.go

Lines changed: 31 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -261,27 +261,9 @@ func (r *OnboardingController) smokeTest(ctx context.Context, hv *kvmv1.Hypervis
261261
func (r *OnboardingController) completeOnboarding(ctx context.Context, host string, hv *kvmv1.Hypervisor) (ctrl.Result, error) {
262262
log := logger.FromContext(ctx)
263263

264-
serverPrefix := fmt.Sprintf("%v-%v", testPrefixName, host)
265-
266-
serverPages, err := servers.ListSimple(r.testComputeClient, servers.ListOpts{
267-
Name: serverPrefix,
268-
}).AllPages(ctx)
269-
270-
if err != nil && !gophercloud.ResponseCodeIs(err, http.StatusNotFound) {
271-
return ctrl.Result{}, err
272-
}
273-
274-
serverList, err := servers.ExtractServers(serverPages)
264+
err := r.deleteTestServers(ctx, host)
275265
if err != nil {
276-
return ctrl.Result{}, err
277-
}
278-
279-
for _, server := range serverList {
280-
log.Info("deleting server", "name", server.Name)
281-
err = servers.Delete(ctx, r.testComputeClient, server.ID).ExtractErr()
282-
if err != nil && !gophercloud.ResponseCodeIs(err, http.StatusNotFound) {
283-
return ctrl.Result{}, err
284-
}
266+
return ctrl.Result{}, fmt.Errorf("failed to delete test servers due to %w", err)
285267
}
286268

287269
aggs, err := aggregatesByName(ctx, r.computeClient)
@@ -319,6 +301,35 @@ func (r *OnboardingController) completeOnboarding(ctx context.Context, host stri
319301
return ctrl.Result{}, r.Status().Update(ctx, hv)
320302
}
321303

304+
func (r *OnboardingController) deleteTestServers(ctx context.Context, host string) error {
305+
log := logger.FromContext(ctx)
306+
serverPrefix := fmt.Sprintf("%v-%v", testPrefixName, host)
307+
308+
serverPages, err := servers.ListSimple(r.testComputeClient, servers.ListOpts{
309+
Name: serverPrefix,
310+
}).AllPages(ctx)
311+
312+
if err != nil && !gophercloud.ResponseCodeIs(err, http.StatusNotFound) {
313+
return err
314+
}
315+
316+
serverList, err := servers.ExtractServers(serverPages)
317+
if err != nil {
318+
return err
319+
}
320+
321+
errs := make([]error, 0)
322+
for _, server := range serverList {
323+
log.Info("deleting server", "name", server.Name)
324+
err = servers.Delete(ctx, r.testComputeClient, server.ID).ExtractErr()
325+
if err != nil && !gophercloud.ResponseCodeIs(err, http.StatusNotFound) {
326+
errs = append(errs, err)
327+
}
328+
}
329+
330+
return errors.Join(errs...)
331+
}
332+
322333
func (r *OnboardingController) ensureNovaProperties(ctx context.Context, hv *kvmv1.Hypervisor) error {
323334
hypervisorAddress := hv.Labels[corev1.LabelHostname]
324335
if hypervisorAddress == "" {

0 commit comments

Comments
 (0)