You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Refactor ClusterExtensionRevision status conditions and add phase-level status reporting
Consolidate the three separate revision conditions (Available, Progressing,
Succeeded) into a single "Ready" condition with granular reason codes
(Ready, Reconciling, ProbeFailure, ValidationFailed, ObjectCollision,
ProgressDeadlineExceeded, Transitioning, RollingOut, Archived). This
simplifies the revision status model while providing more specific failure
information.
Key changes:
- Replace Available/Progressing/Succeeded conditions with a unified Ready
condition on ClusterExtensionRevision
- Add per-phase status reporting (phaseStatuses) with states: Applied,
Progressing, Failed, Pending, Transitioning - including failing probe
details per object
- Move progress deadline checking from the revision controller to the
ClusterExtension reconcile steps, tracking deadlines via sync.Map per
ClusterExtension UID
- Remove progressDeadlineMinutes from ClusterExtensionRevision spec (now
driven by ClusterExtension spec only)
- Refactor RevisionStates from a struct with Installed/RollingOut fields
to a sorted slice with Installed()/RollingOut()/Latest() accessor methods,
adding State and ClusterExtensionGeneration fields to RevisionMetadata
- Track ClusterExtension generation in revision annotations to enable
generation-aware resolution skipping during active rollouts
- Add ServiceAccount watch to revision controller for parent
ClusterExtension
- Update CRD printer columns from Available/Progressing to Ready/Reason
- Add test catalog entries (test-operator 1.0.2 and 1.0.3)
- Update all tests and generated manifests/CRDs
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
// ClusterExtensionRevisionStatus defines the observed state of a ClusterExtensionRevision.
188
242
typeClusterExtensionRevisionStatusstruct {
189
243
// conditions is an optional list of status conditions describing the state of the
190
244
// ClusterExtensionRevision.
191
245
//
192
-
// The Progressing condition represents whether the revision is actively rolling out:
193
-
// - When status is True and reason is RollingOut, the ClusterExtensionRevision rollout is actively making progress and is in transition.
194
-
// - When status is True and reason is Retrying, the ClusterExtensionRevision has encountered an error that could be resolved on subsequent reconciliation attempts.
195
-
// - When status is True and reason is Succeeded, the ClusterExtensionRevision has reached the desired state.
196
-
// - When status is False and reason is Blocked, the ClusterExtensionRevision has encountered an error that requires manual intervention for recovery.
246
+
// The Ready condition represents whether the revision has been successfully rolled out and is ready:
247
+
// - When status is True and reason is Ready, all ClusterExtensionRevision resources have been applied and all progression probes are successful.
248
+
// - When status is False and reason is RollingOut, the ClusterExtensionRevision rollout is actively making progress and objects are being applied.
249
+
// - When status is False and reason is Reconciling, the ClusterExtensionRevision is being reconciled or retrying after an error.
250
+
// - When status is False and reason is ProbeFailure, one or more objects are failing their readiness probes.
251
+
// - When status is False and reason is ValidationFailed, the revision failed preflight validation checks.
252
+
// - When status is False and reason is ObjectCollision, the revision encountered object ownership collisions.
253
+
// - When status is False and reason is ProgressDeadlineExceeded, the revision has not completed within the specified progress deadline.
254
+
// - When status is False and reason is Transitioning, the revision's objects are being transitioned to a newer revision.
197
255
// - When status is False and reason is Archived, the ClusterExtensionRevision is archived and not being actively reconciled.
198
256
//
199
-
// The Available condition represents whether the revision has been successfully rolled out and is available:
200
-
// - When status is True and reason is ProbesSucceeded, the ClusterExtensionRevision has been successfully rolled out and all objects pass their readiness probes.
201
-
// - When status is False and reason is ProbeFailure, one or more objects are failing their readiness probes during rollout.
202
-
// - When status is Unknown and reason is Reconciling, the ClusterExtensionRevision has encountered an error that prevented it from observing the probes.
203
-
// - When status is Unknown and reason is Archived, the ClusterExtensionRevision has been archived and its objects have been torn down.
204
-
// - When status is Unknown and reason is Migrated, the ClusterExtensionRevision was migrated from an existing release and object status probe results have not yet been observed.
205
-
//
206
-
// The Succeeded condition represents whether the revision has successfully completed its rollout:
207
-
// - When status is True and reason is Succeeded, the ClusterExtensionRevision has successfully completed its rollout. This condition is set once and persists even if the revision later becomes unavailable.
0 commit comments