Skip to content

Commit e98c500

Browse files
committed
Fix patching OpenstackMachine's immutable spec during reconcile
when the VM is vanished (cannot be fetched but existed at some point)
1 parent e590271 commit e98c500

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

controllers/openstackmachine_controller.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -439,12 +439,18 @@ func (r *OpenStackMachineReconciler) getOrCreate(logger logr.Logger, cluster *cl
439439
}
440440

441441
if instanceStatus == nil {
442-
instanceSpec := machineToInstanceSpec(openStackCluster, machine, openStackMachine, userData)
443-
logger.Info("Machine does not exist, creating Machine", "name", openStackMachine.Name)
444-
instanceStatus, err = computeService.CreateInstance(openStackMachine, openStackCluster, instanceSpec, cluster.Name)
445-
if err != nil {
446-
conditions.MarkFalse(openStackMachine, infrav1.InstanceReadyCondition, infrav1.InstanceCreateFailedReason, clusterv1.ConditionSeverityError, err.Error())
447-
return nil, fmt.Errorf("create OpenStack instance: %w", err)
442+
if openStackMachine.Spec.InstanceID != nil {
443+
logger.Info("Not reconciling machine in failed state. The previously existing OpenStack instance is no longer available")
444+
conditions.MarkFalse(openStackMachine, infrav1.InstanceReadyCondition, infrav1.InstanceNotFoundReason, clusterv1.ConditionSeverityError, "virtual machine no longer exists")
445+
return nil, nil
446+
} else {
447+
instanceSpec := machineToInstanceSpec(openStackCluster, machine, openStackMachine, userData)
448+
logger.Info("Machine does not exist, creating Machine", "name", openStackMachine.Name)
449+
instanceStatus, err = computeService.CreateInstance(openStackMachine, openStackCluster, instanceSpec, cluster.Name)
450+
if err != nil {
451+
conditions.MarkFalse(openStackMachine, infrav1.InstanceReadyCondition, infrav1.InstanceCreateFailedReason, clusterv1.ConditionSeverityError, err.Error())
452+
return nil, fmt.Errorf("create OpenStack instance: %w", err)
453+
}
448454
}
449455
}
450456

0 commit comments

Comments
 (0)