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
{{ message }}
Repository navigation
Commit ea773ca
Browse filesBrowse the repository at this point in the historyBrowse files
authored
📖 align ClusterObjectSet concept doc with the single Ready condition (#3021)
The ClusterObjectSet reports only a Ready condition; the Progressing and
Succeeded conditions were removed and rollout completion is tracked by the
status.completedAt timestamp. Align the concept doc accordingly:
- Drop the stale Progressing and Succeeded condition sections.
- Note that completion is recorded in status.completedAt (new "Completion" section).
- Remove the Migrated Ready reason row (no such reason is emitted).
- Add the ProgressDeadlineExceeded Ready reason row, which the controller emits
and the API doc already documents but the concept table was missing.
- Replace "reports Succeeded" references in the transition/upgrade flows with
"rolled out successfully".
Signed-off-by: Per G. da Silva <pegoncal@redhat.com>
Co-authored-by: Per G. da Silva <pegoncal@redhat.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
| False |`Archived`| No longer actively reconciled |
199
+
ClusterObjectSets report a single `Ready` condition describing their current state. Rollout *completion* is recorded separately as a timestamp in `status.completedAt`, not as a condition.
212
200
213
201
### Ready
214
202
@@ -222,16 +210,16 @@ Indicates whether all objects in the revision have been successfully rolled out
222
210
| False |`ObjectCollision`| One or more objects are controlled by another owner, or are unowned and collision protection prevents adoption |
223
211
| False |`PreconditionsNotMet`| A precondition for applying the revision is not yet satisfied (a referenced Secret is mutable or has invalid or changed content, or a preflight dry-run was rejected, e.g. an immutable field, a conflicting object, or RBAC/dependency CRDs not yet propagated); the revision keeps retrying and recovers once the precondition is met |
224
212
| False |`InvalidSpecification`| The revision spec is invalid (a malformed revision/phase object or progression probe); requires a spec change |
213
+
| False |`ProgressDeadlineExceeded`| The revision did not roll out within `spec.progressDeadlineMinutes`|
225
214
| False |`Archiving`| The revision is being archived; owned objects are still being torn down |
226
215
| False |`Archived`| Objects torn down after archival |
227
216
| Unknown |`Pending`| The revision has not yet been evaluated (initial state) |
228
-
| Unknown |`Migrated`| Migrated from existing release; probes not yet observed |
229
217
230
218
On a revision's first reconciliation the `Ready` condition is initialized to `Unknown`/`Pending`, so it is always present. A transient internal error (e.g. an API read failure) leaves the `Ready` condition unchanged and is retried with backoff; it is not reported as a distinct reason (while the revision is still `Pending`, it stays `Unknown`/`Pending`).
231
219
232
-
### Succeeded
220
+
### Completion (`status.completedAt`)
233
221
234
-
A terminal condition set once the rollout completes. It persists even if the revision later becomes unavailable, marking that this version was successfully deployed at least once.
222
+
The first time a revision becomes ready, the controller stamps `status.completedAt` with the current time. This timestamp is set once and never changes, marking that this revision successfully rolled out at least once — it persists even if the revision later becomes not ready. The ClusterExtension controller uses it to determine the installed revision.
235
223
236
224
## How operator-controller uses ClusterObjectSets
237
225
@@ -254,7 +242,7 @@ When a ClusterExtension is upgraded to a new version:
254
242
1. A new ClusterObjectSet is created with `revision: N+1`
255
243
2. Both old and new revisions are `Active` during the transition
256
244
3. Objects transition ownership from the old revision to the new one
257
-
4. Once the new revision reports `Succeeded`, the old revision is archived
245
+
4. Once the new revision has rolled out successfully, the old revision is archived
258
246
5. Older archived revisions are garbage collected, keeping the last 5 for auditing
0 commit comments