Skip to content

Commit 2ca0350

Browse files
chore(Boxcutter): Rename ClusterExtensionRevision to ClusterObjectSet (#2589)
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 46d66e1 commit 2ca0350

File tree

57 files changed

+3646
-3646
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+3646
-3646
lines changed

.claude/commands/list-e2e-steps.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ Organize steps into these 10 categories. For each step, document:
6666
2. **Catalog Management** - ClusterCatalog creation, updates, image tagging, deletion
6767
3. **ClusterExtension Lifecycle** - Apply, update, remove ClusterExtension resources
6868
4. **ClusterExtension Status & Conditions** - Condition checks, transition times, reconciliation
69-
5. **ClusterExtensionRevision** - Revision-specific condition checks, archival, annotations, labels, active revisions
69+
5. **ClusterObjectSet** - Revision-specific condition checks, archival, annotations, labels, active revisions
7070
6. **Generic Resource Operations** - Get, delete, restore, match arbitrary resources
7171
7. **Test Operator Control** - Marking test-operator deployment ready/not-ready
7272
8. **Metrics** - Fetching and validating Prometheus metrics

AGENTS.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ operator-controller is the central component of Operator Lifecycle Manager (OLM)
1111
install and manage cluster extensions. The project follows a microservices architecture with two main binaries:
1212

1313
**operator-controller**
14-
- manages `ClusterExtension` and `ClusterExtensionRevision` CRDs
14+
- manages `ClusterExtension` and `ClusterObjectSet` CRDs
1515
- resolves bundles from configured source
1616
- unpacks bundles and renders manifests from them
1717
- applies manifests with phase-based rollouts
@@ -193,7 +193,7 @@ make generate
193193

194194
- **Primary CRDs:**
195195
- `ClusterExtension` - declares desired extension installations
196-
- `ClusterExtensionRevision` - revision management (experimental)
196+
- `ClusterObjectSet` - revision management (experimental)
197197
- `ClusterCatalog` - catalog source definitions
198198
- **API domain:** `olm.operatorframework.io`
199199
- This is the API group of our user-facing CRDs
@@ -204,7 +204,7 @@ make generate
204204

205205
Two manifest variants exist:
206206
- **Standard:** Production-ready features
207-
- **Experimental:** Features under development/testing (includes `ClusterExtensionRevision` API)
207+
- **Experimental:** Features under development/testing (includes `ClusterObjectSet` API)
208208

209209
---
210210

@@ -330,7 +330,7 @@ Two manifest variants exist:
330330

331331
**operator-controller:**
332332
- `ClusterExtension` controller - manages extension installations
333-
- `ClusterExtensionRevision` controller - manages revision lifecycle
333+
- `ClusterObjectSet` controller - manages revision lifecycle
334334
- Resolver - bundle version selection
335335
- Applier - applies manifests to cluster
336336
- Content Manager - manages extension content

api/v1/clusterextension_types.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -468,9 +468,9 @@ type BundleMetadata struct {
468468
Version string `json:"version"`
469469
}
470470

471-
// RevisionStatus defines the observed state of a ClusterExtensionRevision.
471+
// RevisionStatus defines the observed state of a ClusterObjectSet.
472472
type RevisionStatus struct {
473-
// name of the ClusterExtensionRevision resource
473+
// name of the ClusterObjectSet resource
474474
Name string `json:"name"`
475475
// conditions optionally expose Progressing and Available condition of the revision,
476476
// in case when it is not yet marked as successfully installed (condition Succeeded is not set to True).
@@ -498,7 +498,7 @@ type ClusterExtensionStatus struct {
498498
// When Progressing is True and the Reason is Retrying, the ClusterExtension has encountered an error that could be resolved on subsequent reconciliation attempts.
499499
// When Progressing is False and the Reason is Blocked, the ClusterExtension has encountered an error that requires manual intervention for recovery.
500500
// <opcon:experimental:description>
501-
// When Progressing is True and Reason is RollingOut, the ClusterExtension has one or more ClusterExtensionRevisions in active roll out.
501+
// When Progressing is True and Reason is RollingOut, the ClusterExtension has one or more ClusterObjectSets in active roll out.
502502
// </opcon:experimental:description>
503503
//
504504
// When the ClusterExtension is sourced from a catalog, it surfaces deprecation conditions based on catalog metadata.
@@ -518,7 +518,7 @@ type ClusterExtensionStatus struct {
518518
// +optional
519519
Install *ClusterExtensionInstallStatus `json:"install,omitempty"`
520520

521-
// activeRevisions holds a list of currently active (non-archived) ClusterExtensionRevisions,
521+
// activeRevisions holds a list of currently active (non-archived) ClusterObjectSets,
522522
// including both installed and rolling out revisions.
523523
// +listType=map
524524
// +listMapKey=name
Lines changed: 51 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -22,25 +22,25 @@ import (
2222
)
2323

2424
const (
25-
ClusterExtensionRevisionKind = "ClusterExtensionRevision"
25+
ClusterObjectSetKind = "ClusterObjectSet"
2626

2727
// Condition Types
28-
ClusterExtensionRevisionTypeAvailable = "Available"
29-
ClusterExtensionRevisionTypeProgressing = "Progressing"
30-
ClusterExtensionRevisionTypeSucceeded = "Succeeded"
28+
ClusterObjectSetTypeAvailable = "Available"
29+
ClusterObjectSetTypeProgressing = "Progressing"
30+
ClusterObjectSetTypeSucceeded = "Succeeded"
3131

3232
// Condition Reasons
33-
ClusterExtensionRevisionReasonArchived = "Archived"
34-
ClusterExtensionRevisionReasonBlocked = "Blocked"
35-
ClusterExtensionRevisionReasonProbeFailure = "ProbeFailure"
36-
ClusterExtensionRevisionReasonProbesSucceeded = "ProbesSucceeded"
37-
ClusterExtensionRevisionReasonReconciling = "Reconciling"
38-
ClusterExtensionRevisionReasonRetrying = "Retrying"
33+
ClusterObjectSetReasonArchived = "Archived"
34+
ClusterObjectSetReasonBlocked = "Blocked"
35+
ClusterObjectSetReasonProbeFailure = "ProbeFailure"
36+
ClusterObjectSetReasonProbesSucceeded = "ProbesSucceeded"
37+
ClusterObjectSetReasonReconciling = "Reconciling"
38+
ClusterObjectSetReasonRetrying = "Retrying"
3939
)
4040

41-
// ClusterExtensionRevisionSpec defines the desired state of ClusterExtensionRevision.
42-
type ClusterExtensionRevisionSpec struct {
43-
// lifecycleState specifies the lifecycle state of the ClusterExtensionRevision.
41+
// ClusterObjectSetSpec defines the desired state of ClusterObjectSet.
42+
type ClusterObjectSetSpec struct {
43+
// lifecycleState specifies the lifecycle state of the ClusterObjectSet.
4444
//
4545
// When set to "Active", the revision is actively managed and reconciled.
4646
// When set to "Archived", the revision is inactive and any resources not managed by a subsequent revision are deleted.
@@ -56,13 +56,13 @@ type ClusterExtensionRevisionSpec struct {
5656
// +required
5757
// +kubebuilder:validation:Enum=Active;Archived
5858
// +kubebuilder:validation:XValidation:rule="oldSelf == 'Active' || oldSelf == 'Archived' && oldSelf == self", message="cannot un-archive"
59-
LifecycleState ClusterExtensionRevisionLifecycleState `json:"lifecycleState,omitempty"`
59+
LifecycleState ClusterObjectSetLifecycleState `json:"lifecycleState,omitempty"`
6060

6161
// revision is a required, immutable sequence number representing a specific revision
6262
// of the parent ClusterExtension.
6363
//
6464
// The revision field must be a positive integer.
65-
// Each ClusterExtensionRevision belonging to the same parent ClusterExtension must have a unique revision number.
65+
// Each ClusterObjectSet belonging to the same parent ClusterExtension must have a unique revision number.
6666
// The revision number must always be the previous revision number plus one, or 1 for the first revision.
6767
//
6868
// +required
@@ -93,7 +93,7 @@ type ClusterExtensionRevisionSpec struct {
9393
// +listType=map
9494
// +listMapKey=name
9595
// +optional
96-
Phases []ClusterExtensionRevisionPhase `json:"phases,omitempty"`
96+
Phases []ClusterObjectSetPhase `json:"phases,omitempty"`
9797

9898
// progressDeadlineMinutes is an optional field that defines the maximum period
9999
// of time in minutes after which an installation should be considered failed and
@@ -338,21 +338,21 @@ type FieldValueProbe struct {
338338
Value string `json:"value,omitempty"`
339339
}
340340

341-
// ClusterExtensionRevisionLifecycleState specifies the lifecycle state of the ClusterExtensionRevision.
342-
type ClusterExtensionRevisionLifecycleState string
341+
// ClusterObjectSetLifecycleState specifies the lifecycle state of the ClusterObjectSet.
342+
type ClusterObjectSetLifecycleState string
343343

344344
const (
345-
// ClusterExtensionRevisionLifecycleStateActive / "Active" is the default lifecycle state.
346-
ClusterExtensionRevisionLifecycleStateActive ClusterExtensionRevisionLifecycleState = "Active"
347-
// ClusterExtensionRevisionLifecycleStateArchived / "Archived" archives the revision for historical or auditing purposes.
345+
// ClusterObjectSetLifecycleStateActive / "Active" is the default lifecycle state.
346+
ClusterObjectSetLifecycleStateActive ClusterObjectSetLifecycleState = "Active"
347+
// ClusterObjectSetLifecycleStateArchived / "Archived" archives the revision for historical or auditing purposes.
348348
// The revision is removed from the owner list of all other objects previously under management and all objects
349349
// that did not transition to a succeeding revision are deleted.
350-
ClusterExtensionRevisionLifecycleStateArchived ClusterExtensionRevisionLifecycleState = "Archived"
350+
ClusterObjectSetLifecycleStateArchived ClusterObjectSetLifecycleState = "Archived"
351351
)
352352

353-
// ClusterExtensionRevisionPhase represents a group of objects that are applied together. The phase is considered
353+
// ClusterObjectSetPhase represents a group of objects that are applied together. The phase is considered
354354
// complete only after all objects pass their status probes.
355-
type ClusterExtensionRevisionPhase struct {
355+
type ClusterObjectSetPhase struct {
356356
// name is a required identifier for this phase.
357357
//
358358
// phase names must follow the DNS label standard as defined in [RFC 1123].
@@ -374,7 +374,7 @@ type ClusterExtensionRevisionPhase struct {
374374
// All objects in this list are applied to the cluster in no particular order. The maximum number of objects per phase is 50.
375375
// +required
376376
// +kubebuilder:validation:MaxItems=50
377-
Objects []ClusterExtensionRevisionObject `json:"objects"`
377+
Objects []ClusterObjectSetObject `json:"objects"`
378378

379379
// collisionProtection specifies the default collision protection strategy for all objects
380380
// in this phase. Individual objects can override this value.
@@ -390,13 +390,13 @@ type ClusterExtensionRevisionPhase struct {
390390
CollisionProtection CollisionProtection `json:"collisionProtection,omitempty"`
391391
}
392392

393-
// ClusterExtensionRevisionObject represents a Kubernetes object to be applied as part
393+
// ClusterObjectSetObject represents a Kubernetes object to be applied as part
394394
// of a phase, along with its collision protection settings.
395395
//
396396
// Exactly one of object or ref must be set.
397397
//
398398
// +kubebuilder:validation:XValidation:rule="has(self.object) != has(self.ref)",message="exactly one of object or ref must be set"
399-
type ClusterExtensionRevisionObject struct {
399+
type ClusterObjectSetObject struct {
400400
// object is an optional embedded Kubernetes object to be applied.
401401
//
402402
// Exactly one of object or ref must be set.
@@ -484,27 +484,27 @@ const (
484484
CollisionProtectionNone CollisionProtection = "None"
485485
)
486486

487-
// ClusterExtensionRevisionStatus defines the observed state of a ClusterExtensionRevision.
488-
type ClusterExtensionRevisionStatus struct {
487+
// ClusterObjectSetStatus defines the observed state of a ClusterObjectSet.
488+
type ClusterObjectSetStatus struct {
489489
// conditions is an optional list of status conditions describing the state of the
490-
// ClusterExtensionRevision.
490+
// ClusterObjectSet.
491491
//
492492
// The Progressing condition represents whether the revision is actively rolling out:
493-
// - When status is True and reason is RollingOut, the ClusterExtensionRevision rollout is actively making progress and is in transition.
494-
// - When status is True and reason is Retrying, the ClusterExtensionRevision has encountered an error that could be resolved on subsequent reconciliation attempts.
495-
// - When status is True and reason is Succeeded, the ClusterExtensionRevision has reached the desired state.
496-
// - When status is False and reason is Blocked, the ClusterExtensionRevision has encountered an error that requires manual intervention for recovery.
497-
// - When status is False and reason is Archived, the ClusterExtensionRevision is archived and not being actively reconciled.
493+
// - When status is True and reason is RollingOut, the ClusterObjectSet rollout is actively making progress and is in transition.
494+
// - When status is True and reason is Retrying, the ClusterObjectSet has encountered an error that could be resolved on subsequent reconciliation attempts.
495+
// - When status is True and reason is Succeeded, the ClusterObjectSet has reached the desired state.
496+
// - When status is False and reason is Blocked, the ClusterObjectSet has encountered an error that requires manual intervention for recovery.
497+
// - When status is False and reason is Archived, the ClusterObjectSet is archived and not being actively reconciled.
498498
//
499499
// The Available condition represents whether the revision has been successfully rolled out and is available:
500-
// - When status is True and reason is ProbesSucceeded, the ClusterExtensionRevision has been successfully rolled out and all objects pass their readiness probes.
500+
// - When status is True and reason is ProbesSucceeded, the ClusterObjectSet has been successfully rolled out and all objects pass their readiness probes.
501501
// - When status is False and reason is ProbeFailure, one or more objects are failing their readiness probes during rollout.
502-
// - When status is Unknown and reason is Reconciling, the ClusterExtensionRevision has encountered an error that prevented it from observing the probes.
503-
// - When status is Unknown and reason is Archived, the ClusterExtensionRevision has been archived and its objects have been torn down.
504-
// - 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.
502+
// - When status is Unknown and reason is Reconciling, the ClusterObjectSet has encountered an error that prevented it from observing the probes.
503+
// - When status is Unknown and reason is Archived, the ClusterObjectSet has been archived and its objects have been torn down.
504+
// - When status is Unknown and reason is Migrated, the ClusterObjectSet was migrated from an existing release and object status probe results have not yet been observed.
505505
//
506506
// The Succeeded condition represents whether the revision has successfully completed its rollout:
507-
// - 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.
507+
// - When status is True and reason is Succeeded, the ClusterObjectSet has successfully completed its rollout. This condition is set once and persists even if the revision later becomes unavailable.
508508
//
509509
// +listType=map
510510
// +listMapKey=type
@@ -521,44 +521,44 @@ type ClusterExtensionRevisionStatus struct {
521521
// +kubebuilder:printcolumn:name="Progressing",type=string,JSONPath=`.status.conditions[?(@.type=='Progressing')].status`
522522
// +kubebuilder:printcolumn:name=Age,type=date,JSONPath=`.metadata.creationTimestamp`
523523

524-
// ClusterExtensionRevision represents an immutable snapshot of Kubernetes objects
524+
// ClusterObjectSet represents an immutable snapshot of Kubernetes objects
525525
// for a specific version of a ClusterExtension. Each revision contains objects
526526
// organized into phases that roll out sequentially. The same object can only be managed by a single revision
527527
// at a time. Ownership of objects is transitioned from one revision to the next as the extension is upgraded
528528
// or reconfigured. Once the latest revision has rolled out successfully, previous active revisions are archived for
529529
// posterity.
530-
type ClusterExtensionRevision struct {
530+
type ClusterObjectSet struct {
531531
metav1.TypeMeta `json:",inline"`
532532

533533
// metadata is the standard object's metadata.
534534
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
535535
// +optional
536536
metav1.ObjectMeta `json:"metadata,omitempty"`
537537

538-
// spec defines the desired state of the ClusterExtensionRevision.
538+
// spec defines the desired state of the ClusterObjectSet.
539539
// +optional
540-
Spec ClusterExtensionRevisionSpec `json:"spec,omitempty"`
540+
Spec ClusterObjectSetSpec `json:"spec,omitempty"`
541541

542-
// status is optional and defines the observed state of the ClusterExtensionRevision.
542+
// status is optional and defines the observed state of the ClusterObjectSet.
543543
// +optional
544-
Status ClusterExtensionRevisionStatus `json:"status,omitempty"`
544+
Status ClusterObjectSetStatus `json:"status,omitempty"`
545545
}
546546

547547
// +kubebuilder:object:root=true
548548

549-
// ClusterExtensionRevisionList contains a list of ClusterExtensionRevision
550-
type ClusterExtensionRevisionList struct {
549+
// ClusterObjectSetList contains a list of ClusterObjectSet
550+
type ClusterObjectSetList struct {
551551
metav1.TypeMeta `json:",inline"`
552552

553553
// +optional
554554
metav1.ListMeta `json:"metadata,omitempty"`
555555

556-
// items is a required list of ClusterExtensionRevision objects.
556+
// items is a required list of ClusterObjectSet objects.
557557
//
558558
// +required
559-
Items []ClusterExtensionRevision `json:"items"`
559+
Items []ClusterObjectSet `json:"items"`
560560
}
561561

562562
func init() {
563-
SchemeBuilder.Register(&ClusterExtensionRevision{}, &ClusterExtensionRevisionList{})
563+
SchemeBuilder.Register(&ClusterObjectSet{}, &ClusterObjectSetList{})
564564
}

0 commit comments

Comments
 (0)