Skip to content

Commit 3c760f7

Browse files
committed
Onboarding: Refactor deleting servers
Delete all servers, and do not abort on the first failure.
1 parent 8fcf045 commit 3c760f7

1 file changed

Lines changed: 31 additions & 20 deletions

File tree

internal/controller/onboarding_controller.go

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

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

323305
aggs, err := aggregatesByName(ctx, r.computeClient)
@@ -355,6 +337,35 @@ func (r *OnboardingController) completeOnboarding(ctx context.Context, host stri
355337
return ctrl.Result{}, r.Status().Update(ctx, hv)
356338
}
357339

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

0 commit comments

Comments
 (0)