Skip to content

Commit 8fe770e

Browse files
artbinArtem Kulyabin
andauthored
Fix vsphere machine creation error handling (#13)
Co-authored-by: Artem Kulyabin <[email protected]>
1 parent df7c3e1 commit 8fe770e

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

pkg/controller/machine.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ const (
5858
)
5959

6060
/*
61-
SECTION
62-
Machine controller - Machine add, update, delete watches
61+
SECTION
62+
Machine controller - Machine add, update, delete watches
6363
*/
6464
func (c *controller) addMachine(obj interface{}) {
6565
klog.V(4).Infof("Adding machine object")
@@ -247,8 +247,8 @@ func (c *controller) reconcileClusterMachine(machine *v1alpha1.Machine) error {
247247
}
248248

249249
/*
250-
SECTION
251-
Machine controller - nodeToMachine
250+
SECTION
251+
Machine controller - nodeToMachine
252252
*/
253253
func (c *controller) addNodeToMachine(obj interface{}) {
254254
node := obj.(*corev1.Node)
@@ -515,12 +515,16 @@ func (c *controller) machineCreate(machine *v1alpha1.Machine, driver driver.Driv
515515
actualProviderID = providerID
516516
}
517517
}
518+
var timeoutActive bool
518519
if actualProviderID == "" {
519520
actualProviderID, nodeName, err = driver.Create()
520521
var e drivers.CreateError
521522
if errors.As(err, &e) && e.HasSideEffects() && actualProviderID != "" {
522523
klog.Errorf("Side-effects left, applying machineID %q to Machine object", actualProviderID)
523524

525+
// Without this, the machine object will be stuck in a CrashLoopBackOff state forever
526+
timeoutActive = true
527+
524528
for {
525529
machineName := machine.Name
526530

@@ -555,7 +559,7 @@ func (c *controller) machineCreate(machine *v1alpha1.Machine, driver driver.Driv
555559
}
556560
currentStatus := v1alpha1.CurrentStatus{
557561
Phase: v1alpha1.MachineCrashLoopBackOff,
558-
TimeoutActive: false,
562+
TimeoutActive: timeoutActive,
559563
LastUpdateTime: metav1.Now(),
560564
}
561565
c.updateMachineStatus(machine, lastOperation, currentStatus)
@@ -1100,8 +1104,8 @@ func (c *controller) deleteMachineFinalizers(machine *v1alpha1.Machine) {
11001104
}
11011105

11021106
/*
1103-
SECTION
1104-
Helper Functions
1107+
SECTION
1108+
Helper Functions
11051109
*/
11061110
func (c *controller) isHealthy(machine *v1alpha1.Machine) bool {
11071111
numOfConditions := len(machine.Status.Conditions)

0 commit comments

Comments
 (0)