@@ -137,12 +137,13 @@ func (r *CloudStackMachineReconciler) Reconcile(req ctrl.Request) (retRes ctrl.R
137
137
}
138
138
139
139
// Reconcile a VM instance for creates/updates
140
- return r .reconcile (log , csCluster , csMachine , machine )
140
+ return r .reconcile (log , ctx , csCluster , csMachine , machine )
141
141
}
142
142
143
143
// Actually reconcile/Create a VM instance.
144
144
func (r * CloudStackMachineReconciler ) reconcile (
145
145
log logr.Logger ,
146
+ ctx context.Context ,
146
147
csCluster * infrav1.CloudStackCluster ,
147
148
csMachine * infrav1.CloudStackMachine ,
148
149
machine * capiv1.Machine ) (ctrl.Result , error ) {
@@ -189,6 +190,12 @@ func (r *CloudStackMachineReconciler) reconcile(
189
190
if csMachine .Status .InstanceState == "Running" {
190
191
log .Info ("Machine instance is Running..." )
191
192
csMachine .Status .Ready = true
193
+ } else if csMachine .Status .InstanceState == "Error" {
194
+ log .Info ("CloudStackMachine VM in error state. Deleting associated Machine." , "csMachine" , csMachine )
195
+ if err := r .Client .Delete (ctx , machine ); err != nil {
196
+ return ctrl.Result {}, err
197
+ }
198
+ return ctrl.Result {RequeueAfter : RequeueTimeout }, nil
192
199
} else {
193
200
log .Info (fmt .Sprintf ("Instance not ready, is %s." , csMachine .Status .InstanceState ))
194
201
return ctrl.Result {RequeueAfter : RequeueTimeout }, nil
0 commit comments