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{}