@@ -439,12 +439,18 @@ func (r *OpenStackMachineReconciler) getOrCreate(logger logr.Logger, cluster *cl
439
439
}
440
440
441
441
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
+ }
448
454
}
449
455
}
450
456
0 commit comments