Skip to content

Commit dc2d0ba

Browse files
committed
Fix patching OpenstackMachine's immutable spec during reconcile
when the VM is vanished (cannot be fetched but existed at some point) Signed-off-by: Jan Mraz <[email protected]>
1 parent e590271 commit dc2d0ba

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

controllers/openstackmachine_controller.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -439,12 +439,17 @@ 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+
return nil, nil
445+
} else {
446+
instanceSpec := machineToInstanceSpec(openStackCluster, machine, openStackMachine, userData)
447+
logger.Info("Machine does not exist, creating Machine", "name", openStackMachine.Name)
448+
instanceStatus, err = computeService.CreateInstance(openStackMachine, openStackCluster, instanceSpec, cluster.Name)
449+
if err != nil {
450+
conditions.MarkFalse(openStackMachine, infrav1.InstanceReadyCondition, infrav1.InstanceCreateFailedReason, clusterv1.ConditionSeverityError, err.Error())
451+
return nil, fmt.Errorf("create OpenStack instance: %w", err)
452+
}
448453
}
449454
}
450455

0 commit comments

Comments
 (0)