Skip to content

Commit c6a2ca3

Browse files
committed
Onboarding: Refactor deleting servers
Delete all servers, and do not abort on the first failure.
1 parent 88cb3af commit c6a2ca3

File tree

1 file changed

+31
-21
lines changed

1 file changed

+31
-21
lines changed

internal/controller/onboarding_controller.go

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -296,28 +296,9 @@ func (r *OnboardingController) smokeTest(ctx context.Context, node *corev1.Node,
296296
func (r *OnboardingController) completeOnboarding(ctx context.Context, host string, node *corev1.Node, hv *kvmv1.Hypervisor) (ctrl.Result, error) {
297297
log := logger.FromContext(ctx)
298298

299-
serverPrefix := fmt.Sprintf("%v-%v", testPrefixName, host)
300-
301-
serverPages, err := servers.ListSimple(r.testComputeClient, servers.ListOpts{
302-
Name: serverPrefix,
303-
}).AllPages(ctx)
304-
305-
if err != nil && !gophercloud.ResponseCodeIs(err, http.StatusNotFound) {
306-
return ctrl.Result{}, err
307-
}
308-
309-
serverList, err := servers.ExtractServers(serverPages)
299+
err := r.deleteTestServers(ctx, host)
310300
if err != nil {
311-
return ctrl.Result{}, err
312-
}
313-
314-
for _, server := range serverList {
315-
log.Info("deleting server", "name", server.Name)
316-
err = servers.Delete(ctx, r.testComputeClient, server.ID).ExtractErr()
317-
if gophercloud.ResponseCodeIs(err, http.StatusNotFound) {
318-
continue
319-
}
320-
return ctrl.Result{}, err
301+
return ctrl.Result{}, fmt.Errorf("failed to delete test servers due to %w", err)
321302
}
322303

323304
aggs, err := aggregatesByName(ctx, r.computeClient)
@@ -355,6 +336,35 @@ func (r *OnboardingController) completeOnboarding(ctx context.Context, host stri
355336
return ctrl.Result{}, r.Status().Update(ctx, hv)
356337
}
357338

339+
func (r *OnboardingController) deleteTestServers(ctx context.Context, host string) error {
340+
log := logger.FromContext(ctx)
341+
serverPrefix := fmt.Sprintf("%v-%v", testPrefixName, host)
342+
343+
serverPages, err := servers.ListSimple(r.testComputeClient, servers.ListOpts{
344+
Name: serverPrefix,
345+
}).AllPages(ctx)
346+
347+
if err != nil && !gophercloud.ResponseCodeIs(err, http.StatusNotFound) {
348+
return err
349+
}
350+
351+
serverList, err := servers.ExtractServers(serverPages)
352+
if err != nil {
353+
return err
354+
}
355+
356+
errs := make([]error, 0)
357+
for _, server := range serverList {
358+
log.Info("deleting server", "name", server.Name)
359+
err = servers.Delete(ctx, r.testComputeClient, server.ID).ExtractErr()
360+
if err != nil && !gophercloud.ResponseCodeIs(err, http.StatusNotFound) {
361+
errs = append(errs, err)
362+
}
363+
}
364+
365+
return errors.Join(errs...)
366+
}
367+
358368
func (r *OnboardingController) ensureNovaProperties(ctx context.Context, hv *kvmv1.Hypervisor) error {
359369
node := &corev1.Node{}
360370
if err := r.Get(ctx, types.NamespacedName{Name: hv.Name}, node); err != nil {

0 commit comments

Comments
 (0)