diff --git a/internal/controller/incusmachine_controller.go b/internal/controller/incusmachine_controller.go index f39a884..8419974 100644 --- a/internal/controller/incusmachine_controller.go +++ b/internal/controller/incusmachine_controller.go @@ -274,8 +274,14 @@ func (r *IncusMachineReconciler) reconcileNormal(ctx context.Context, cluster *c } dataSecretName := *machine.Spec.Bootstrap.DataSecretName - _, err := r.IncusClient.GetInstance(ctx, incusMachine.Name) + output, err := r.IncusClient.GetInstance(ctx, incusMachine.Name) if err == nil { + if r.isMachineReady(ctx, output) { + log.Info("IncusMachine instance is ready") + + incusMachine.Status.Ready = true + } + return ctrl.Result{}, nil } if !errors.Is(err, incus.ErrorInstanceNotFound) { @@ -325,6 +331,10 @@ func (r *IncusMachineReconciler) getBootstrapData(ctx context.Context, namespace return string(value), bootstrapv1.Format(format), nil } +func (r *IncusMachineReconciler) isMachineReady(ctx context.Context, output *incus.GetInstanceOutput) bool { + return output.StatusCode == api.Ready +} + // SetupWithManager sets up the controller with the Manager. func (r *IncusMachineReconciler) SetupWithManager(ctx context.Context, mgr ctrl.Manager) error { clusterToIncusMachines, err := util.ClusterToTypedObjectsMapper(mgr.GetClient(), &infrav1alpha1.IncusMachineList{}, mgr.GetScheme())