From 0e5da48f225dffd01807e174c07b5c4a7c4178ce Mon Sep 17 00:00:00 2001 From: Joseph Callen Date: Wed, 13 Aug 2025 10:16:18 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix:=20use=20machine's=20.spec.f?= =?UTF-8?q?ailureDomain=20with=20fallback=20to=20vspheremachine's=20.spec.?= =?UTF-8?q?failureDomain=20if=20not=20defined?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit sets failureDomain string defaulting to `machine.Spec.FailureDomain`. If failureDomain is an empty string then `vsphereMachine.Spec.FailureDomain` is checked for nil, if defined `failureDomain` is set to `vsphereMachine.Spec.FailureDomain`. This resolves an issue where virtual machines are not placed within vm-host groups in a timely manner causing misplacement in the topology. --- controllers/vspherevm_controller.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/controllers/vspherevm_controller.go b/controllers/vspherevm_controller.go index 7518c9d551..fc7ebf70e9 100644 --- a/controllers/vspherevm_controller.go +++ b/controllers/vspherevm_controller.go @@ -230,11 +230,16 @@ func (r vmReconciler) Reconcile(ctx context.Context, req ctrl.Request) (_ ctrl.R return ctrl.Result{}, err } + failureDomain := ptr.Deref(machine.Spec.FailureDomain, "") + if failureDomain == "" && vsphereMachine.Spec.FailureDomain != nil { + failureDomain = *vsphereMachine.Spec.FailureDomain + } + var vsphereFailureDomain *infrav1.VSphereFailureDomain - if failureDomain := machine.Spec.FailureDomain; failureDomain != nil { + if failureDomain != "" { vsphereDeploymentZone := &infrav1.VSphereDeploymentZone{} - if err := r.Client.Get(ctx, apitypes.NamespacedName{Name: *failureDomain}, vsphereDeploymentZone); err != nil { - return reconcile.Result{}, errors.Wrapf(err, "failed to get VSphereDeploymentZone %s", *failureDomain) + if err := r.Client.Get(ctx, apitypes.NamespacedName{Name: failureDomain}, vsphereDeploymentZone); err != nil { + return reconcile.Result{}, errors.Wrapf(err, "failed to get VSphereDeploymentZone %s", failureDomain) } vsphereFailureDomain = &infrav1.VSphereFailureDomain{}