Skip to content

Commit 93284e8

Browse files
committed
Added more instance running states and updated Ready condition to consider these.
1 parent cee93b2 commit 93284e8

3 files changed

Lines changed: 44 additions & 5 deletions

File tree

api/v1alpha/instance_types.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,9 @@ const (
384384
// InstanceReady indicates that the instance is ready
385385
InstanceReady = "Ready"
386386

387+
// InstanceRunning indicates that the instance is running
388+
InstanceRunning = "Running"
389+
387390
// InstanceProgrammed indicates that the instance has been programmed
388391
InstanceProgrammed = "Programmed"
389392
)
@@ -395,6 +398,18 @@ const (
395398
// InstanceReadyReasonRunning indicates that the instance is running
396399
InstanceReadyReasonRunning = "Running"
397400

401+
// InstanceRunningReasonStopped indicates that the instance is stopped
402+
InstanceRunningReasonStopped = "Stopped"
403+
404+
// InstanceRunningReasonStarting indicates that the instance is starting
405+
InstanceRunningReasonStarting = "Starting"
406+
407+
// InstanceRunningReasonStopping indicates that the instance is stopping
408+
InstanceRunningReasonStopping = "Stopping"
409+
410+
// InstanceRunningReasonRunning indicates that the instance is running
411+
InstanceRunningReasonRunning = "Running"
412+
398413
// InstanceProgrammedReasonPendingProgramming indicates that the instance has not been programmed
399414
InstanceProgrammedReasonPendingProgramming = "PendingProgramming"
400415

internal/controller/instance_controller.go

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,6 @@ func (r *InstanceReconciler) Reconcile(ctx context.Context, req mcreconcile.Requ
4747
return ctrl.Result{}, err
4848
}
4949

50-
if !instance.DeletionTimestamp.IsZero() {
51-
return ctrl.Result{}, nil
52-
}
53-
5450
logger.Info("reconciling instance")
5551
defer logger.Info("reconcile complete")
5652

@@ -94,7 +90,6 @@ func (r *InstanceReconciler) Reconcile(ctx context.Context, req mcreconcile.Requ
9490
reason = condition.Reason
9591
}
9692

97-
logger.Info("updating instance status", "instance", instance.Name)
9893
if _, err := controllerutil.CreateOrPatch(ctx, cl.GetClient(), &instance, func() error {
9994
apimeta.SetStatusCondition(&instance.Status.Conditions, metav1.Condition{
10095
Type: computev1alpha.InstanceReady,
@@ -112,6 +107,33 @@ func (r *InstanceReconciler) Reconcile(ctx context.Context, req mcreconcile.Requ
112107

113108
logger.Info("instance is programmed", "instance", instance.Name)
114109

110+
if condition := apimeta.FindStatusCondition(instance.Status.Conditions, computev1alpha.InstanceRunning); condition.Status != metav1.ConditionTrue {
111+
logger.Info("instance is not running", "instance", instance.Name)
112+
message := "Instance is not running"
113+
if condition.Status != metav1.ConditionUnknown {
114+
message = condition.Message
115+
}
116+
117+
reason := "Pending"
118+
if condition.Reason != "Pending" {
119+
reason = condition.Reason
120+
}
121+
122+
if _, err := controllerutil.CreateOrPatch(ctx, cl.GetClient(), &instance, func() error {
123+
apimeta.SetStatusCondition(&instance.Status.Conditions, metav1.Condition{
124+
Type: computev1alpha.InstanceReady,
125+
Status: metav1.ConditionFalse,
126+
Reason: reason,
127+
Message: message,
128+
ObservedGeneration: instance.Generation,
129+
})
130+
return nil
131+
}); err != nil {
132+
return ctrl.Result{}, fmt.Errorf("failed updating instance status: %w", err)
133+
}
134+
return ctrl.Result{}, nil
135+
}
136+
115137
if _, err := controllerutil.CreateOrPatch(ctx, cl.GetClient(), &instance, func() error {
116138
apimeta.SetStatusCondition(&instance.Status.Conditions, metav1.Condition{
117139
Type: computev1alpha.InstanceReady,

internal/controller/workloaddeployment_controller.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,8 @@ func (r *WorkloadDeploymentReconciler) Reconcile(ctx context.Context, req mcreco
138138
}
139139
}
140140

141+
// TODO(jreese) update deployment status conditions
142+
141143
return ctrl.Result{}, nil
142144
}
143145

0 commit comments

Comments
 (0)