Skip to content

Commit b54f719

Browse files
committed
Add finalizer only when deployVM no error
1 parent 5ac795b commit b54f719

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

controllers/cloudstackmachine_controller.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,11 +223,11 @@ func (r *CloudStackMachineReconciliationRunner) GetOrCreateVMInstance() (retRes
223223
r.Recorder.Eventf(r.ReconciliationSubject, "Warning", "Creating", CSMachineCreationFailed, err.Error())
224224
}
225225
if err == nil && !controllerutil.ContainsFinalizer(r.ReconciliationSubject, infrav1.MachineFinalizer) { // Fetched or Created?
226+
controllerutil.AddFinalizer(r.ReconciliationSubject, infrav1.MachineFinalizer)
226227
r.Recorder.Eventf(r.ReconciliationSubject, "Normal", "Created", CSMachineCreationSuccess)
227228
r.Log.Info(CSMachineCreationSuccess, "instanceStatus", r.ReconciliationSubject.Status)
228229
}
229-
// Always add the finalizer regardless. It can't be added twice anyway.
230-
controllerutil.AddFinalizer(r.ReconciliationSubject, infrav1.MachineFinalizer)
230+
231231
return ctrl.Result{}, err
232232
}
233233

pkg/cloud/instance.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -277,13 +277,15 @@ func (c *client) GetOrCreateVMInstance(
277277
listVirtualMachineParams.SetName(csMachine.Name)
278278
if listVirtualMachinesResponse, err2 := c.cs.VirtualMachine.ListVirtualMachines(listVirtualMachineParams); err2 == nil && listVirtualMachinesResponse.Count > 0 {
279279
csMachine.Spec.InstanceID = pointer.StringPtr(listVirtualMachinesResponse.VirtualMachines[0].Id)
280+
csMachine.Status.InstanceState = listVirtualMachinesResponse.VirtualMachines[0].State
280281
} else {
281282
c.customMetrics.EvaluateErrorAndIncrementAcsReconciliationErrorCounter(err2)
283+
return err
282284
}
283-
return err
285+
} else {
286+
csMachine.Spec.InstanceID = pointer.StringPtr(deployVMResp.Id)
287+
csMachine.Status.Status = pointer.String(metav1.StatusSuccess)
284288
}
285-
csMachine.Spec.InstanceID = pointer.StringPtr(deployVMResp.Id)
286-
csMachine.Status.Status = pointer.String(metav1.StatusSuccess)
287289
// Resolve uses a VM metrics request response to fill cloudstack machine status.
288290
// The deployment response is insufficient.
289291
return c.ResolveVMInstanceDetails(csMachine)

0 commit comments

Comments
 (0)