Skip to content

Commit e781e2d

Browse files
author
Per Goncalves da Silva
committed
Update resources for print column
Signed-off-by: Per Goncalves da Silva <[email protected]>
1 parent 997ff47 commit e781e2d

File tree

4 files changed

+130
-109
lines changed

4 files changed

+130
-109
lines changed

api/v1/clusterextensionrevision_types.go

Lines changed: 106 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -17,131 +17,131 @@ limitations under the License.
1717
package v1
1818

1919
import (
20-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
21-
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
22-
"k8s.io/apimachinery/pkg/types"
20+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
21+
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
22+
"k8s.io/apimachinery/pkg/types"
2323
)
2424

2525
const (
26-
ClusterExtensionRevisionKind = "ClusterExtensionRevision"
27-
28-
// Condition Types
29-
ClusterExtensionRevisionTypeAvailable = "Available"
30-
ClusterExtensionRevisionTypeSucceeded = "Succeeded"
31-
32-
// Condition Reasons
33-
ClusterExtensionRevisionReasonAvailable = "Available"
34-
ClusterExtensionRevisionReasonReconcileFailure = "ReconcileFailure"
35-
ClusterExtensionRevisionReasonRevisionValidationFailure = "RevisionValidationFailure"
36-
ClusterExtensionRevisionReasonPhaseValidationError = "PhaseValidationError"
37-
ClusterExtensionRevisionReasonObjectCollisions = "ObjectCollisions"
38-
ClusterExtensionRevisionReasonRolloutSuccess = "RolloutSuccess"
39-
ClusterExtensionRevisionReasonProbeFailure = "ProbeFailure"
40-
ClusterExtensionRevisionReasonIncomplete = "Incomplete"
41-
ClusterExtensionRevisionReasonProgressing = "Progressing"
42-
ClusterExtensionRevisionReasonArchived = "Archived"
26+
ClusterExtensionRevisionKind = "ClusterExtensionRevision"
27+
28+
// Condition Types
29+
ClusterExtensionRevisionTypeAvailable = "Available"
30+
ClusterExtensionRevisionTypeSucceeded = "Succeeded"
31+
32+
// Condition Reasons
33+
ClusterExtensionRevisionReasonAvailable = "Available"
34+
ClusterExtensionRevisionReasonReconcileFailure = "ReconcileFailure"
35+
ClusterExtensionRevisionReasonRevisionValidationFailure = "RevisionValidationFailure"
36+
ClusterExtensionRevisionReasonPhaseValidationError = "PhaseValidationError"
37+
ClusterExtensionRevisionReasonObjectCollisions = "ObjectCollisions"
38+
ClusterExtensionRevisionReasonRolloutSuccess = "RolloutSuccess"
39+
ClusterExtensionRevisionReasonProbeFailure = "ProbeFailure"
40+
ClusterExtensionRevisionReasonIncomplete = "Incomplete"
41+
ClusterExtensionRevisionReasonProgressing = "Progressing"
42+
ClusterExtensionRevisionReasonArchived = "Archived"
4343
)
4444

4545
// ClusterExtensionRevisionSpec defines the desired state of ClusterExtensionRevision.
4646
type ClusterExtensionRevisionSpec struct {
47-
// Specifies the lifecycle state of the ClusterExtensionRevision.
48-
//
49-
// +kubebuilder:default="Active"
50-
// +kubebuilder:validation:Enum=Active;Paused;Archived
51-
// +kubebuilder:validation:XValidation:rule="oldSelf == 'Active' || oldSelf == 'Paused' || oldSelf == 'Archived' && oldSelf == self", message="can not un-archive"
52-
LifecycleState ClusterExtensionRevisionLifecycleState `json:"lifecycleState,omitempty"`
53-
// Revision is a sequence number representing a specific revision of the ClusterExtension instance.
54-
// Must be positive. Each ClusterExtensionRevision of the same parent ClusterExtension needs to have
55-
// a unique value assigned. It is immutable after creation. The new revision number must always be previous revision +1.
56-
//
57-
// +kubebuilder:validation:Required
58-
// +kubebuilder:validation:Minimum:=1
59-
// +kubebuilder:validation:XValidation:rule="self == oldSelf", message="revision is immutable"
60-
Revision int64 `json:"revision"`
61-
// Phases are groups of objects that will be applied at the same time.
62-
// All objects in the phase will have to pass their probes in order to progress to the next phase.
63-
//
64-
// +kubebuilder:validation:XValidation:rule="self == oldSelf || oldSelf.size() == 0", message="phases is immutable"
65-
// +listType=map
66-
// +listMapKey=name
67-
// +optional
68-
Phases []ClusterExtensionRevisionPhase `json:"phases,omitempty"`
69-
// Previous references previous revisions that objects can be adopted from.
70-
//
71-
// +kubebuilder:validation:XValidation:rule="self == oldSelf", message="previous is immutable"
72-
Previous []ClusterExtensionRevisionPrevious `json:"previous,omitempty"`
47+
// Specifies the lifecycle state of the ClusterExtensionRevision.
48+
//
49+
// +kubebuilder:default="Active"
50+
// +kubebuilder:validation:Enum=Active;Paused;Archived
51+
// +kubebuilder:validation:XValidation:rule="oldSelf == 'Active' || oldSelf == 'Paused' || oldSelf == 'Archived' && oldSelf == self", message="can not un-archive"
52+
LifecycleState ClusterExtensionRevisionLifecycleState `json:"lifecycleState,omitempty"`
53+
// Revision is a sequence number representing a specific revision of the ClusterExtension instance.
54+
// Must be positive. Each ClusterExtensionRevision of the same parent ClusterExtension needs to have
55+
// a unique value assigned. It is immutable after creation. The new revision number must always be previous revision +1.
56+
//
57+
// +kubebuilder:validation:Required
58+
// +kubebuilder:validation:Minimum:=1
59+
// +kubebuilder:validation:XValidation:rule="self == oldSelf", message="revision is immutable"
60+
Revision int64 `json:"revision"`
61+
// Phases are groups of objects that will be applied at the same time.
62+
// All objects in the phase will have to pass their probes in order to progress to the next phase.
63+
//
64+
// +kubebuilder:validation:XValidation:rule="self == oldSelf || oldSelf.size() == 0", message="phases is immutable"
65+
// +listType=map
66+
// +listMapKey=name
67+
// +optional
68+
Phases []ClusterExtensionRevisionPhase `json:"phases,omitempty"`
69+
// Previous references previous revisions that objects can be adopted from.
70+
//
71+
// +kubebuilder:validation:XValidation:rule="self == oldSelf", message="previous is immutable"
72+
Previous []ClusterExtensionRevisionPrevious `json:"previous,omitempty"`
7373
}
7474

7575
// ClusterExtensionRevisionLifecycleState specifies the lifecycle state of the ClusterExtensionRevision.
7676
type ClusterExtensionRevisionLifecycleState string
7777

7878
const (
79-
// ClusterExtensionRevisionLifecycleStateActive / "Active" is the default lifecycle state.
80-
ClusterExtensionRevisionLifecycleStateActive ClusterExtensionRevisionLifecycleState = "Active"
81-
// ClusterExtensionRevisionLifecycleStatePaused / "Paused" disables reconciliation of the ClusterExtensionRevision.
82-
// Only Status updates will still propagated, but object changes will not be reconciled.
83-
ClusterExtensionRevisionLifecycleStatePaused ClusterExtensionRevisionLifecycleState = "Paused"
84-
// ClusterExtensionRevisionLifecycleStateArchived / "Archived" disables reconciliation while also "scaling to zero",
85-
// which deletes all objects that are not excluded via the pausedFor property and
86-
// removes itself from the owner list of all other objects previously under management.
87-
ClusterExtensionRevisionLifecycleStateArchived ClusterExtensionRevisionLifecycleState = "Archived"
79+
// ClusterExtensionRevisionLifecycleStateActive / "Active" is the default lifecycle state.
80+
ClusterExtensionRevisionLifecycleStateActive ClusterExtensionRevisionLifecycleState = "Active"
81+
// ClusterExtensionRevisionLifecycleStatePaused / "Paused" disables reconciliation of the ClusterExtensionRevision.
82+
// Only Status updates will still propagated, but object changes will not be reconciled.
83+
ClusterExtensionRevisionLifecycleStatePaused ClusterExtensionRevisionLifecycleState = "Paused"
84+
// ClusterExtensionRevisionLifecycleStateArchived / "Archived" disables reconciliation while also "scaling to zero",
85+
// which deletes all objects that are not excluded via the pausedFor property and
86+
// removes itself from the owner list of all other objects previously under management.
87+
ClusterExtensionRevisionLifecycleStateArchived ClusterExtensionRevisionLifecycleState = "Archived"
8888
)
8989

9090
// ClusterExtensionRevisionPhase are groups of objects that will be applied at the same time.
9191
// All objects in the a phase will have to pass their probes in order to progress to the next phase.
9292
type ClusterExtensionRevisionPhase struct {
93-
// Name identifies this phase.
94-
//
95-
// +kubebuilder:validation:MaxLength=63
96-
// +kubebuilder:validation:Pattern=`^[a-z]([-a-z0-9]*[a-z0-9])?$`
97-
Name string `json:"name"`
98-
// Objects are a list of all the objects within this phase.
99-
Objects []ClusterExtensionRevisionObject `json:"objects"`
93+
// Name identifies this phase.
94+
//
95+
// +kubebuilder:validation:MaxLength=63
96+
// +kubebuilder:validation:Pattern=`^[a-z]([-a-z0-9]*[a-z0-9])?$`
97+
Name string `json:"name"`
98+
// Objects are a list of all the objects within this phase.
99+
Objects []ClusterExtensionRevisionObject `json:"objects"`
100100
}
101101

102102
// ClusterExtensionRevisionObject contains an object and settings for it.
103103
type ClusterExtensionRevisionObject struct {
104-
// +kubebuilder:validation:EmbeddedResource
105-
// +kubebuilder:pruning:PreserveUnknownFields
106-
Object unstructured.Unstructured `json:"object"`
107-
// CollisionProtection controls whether OLM can adopt and modify objects
108-
// already existing on the cluster or even owned by another controller.
109-
//
110-
// +kubebuilder:default="Prevent"
111-
// +optional
112-
CollisionProtection CollisionProtection `json:"collisionProtection,omitempty"`
104+
// +kubebuilder:validation:EmbeddedResource
105+
// +kubebuilder:pruning:PreserveUnknownFields
106+
Object unstructured.Unstructured `json:"object"`
107+
// CollisionProtection controls whether OLM can adopt and modify objects
108+
// already existing on the cluster or even owned by another controller.
109+
//
110+
// +kubebuilder:default="Prevent"
111+
// +optional
112+
CollisionProtection CollisionProtection `json:"collisionProtection,omitempty"`
113113
}
114114

115115
// CollisionProtection specifies if and how ownership collisions are prevented.
116116
type CollisionProtection string
117117

118118
const (
119-
// CollisionProtectionPrevent prevents owner collisions entirely
120-
// by only allowing to work with objects itself has created.
121-
CollisionProtectionPrevent CollisionProtection = "Prevent"
122-
// CollisionProtectionIfNoController allows to patch and override
123-
// objects already present if they are not owned by another controller.
124-
CollisionProtectionIfNoController CollisionProtection = "IfNoController"
125-
// CollisionProtectionNone allows to patch and override objects
126-
// already present and owned by other controllers.
127-
// Be careful! This setting may cause multiple controllers to fight over a resource,
128-
// causing load on the API server and etcd.
129-
CollisionProtectionNone CollisionProtection = "None"
119+
// CollisionProtectionPrevent prevents owner collisions entirely
120+
// by only allowing to work with objects itself has created.
121+
CollisionProtectionPrevent CollisionProtection = "Prevent"
122+
// CollisionProtectionIfNoController allows to patch and override
123+
// objects already present if they are not owned by another controller.
124+
CollisionProtectionIfNoController CollisionProtection = "IfNoController"
125+
// CollisionProtectionNone allows to patch and override objects
126+
// already present and owned by other controllers.
127+
// Be careful! This setting may cause multiple controllers to fight over a resource,
128+
// causing load on the API server and etcd.
129+
CollisionProtectionNone CollisionProtection = "None"
130130
)
131131

132132
type ClusterExtensionRevisionPrevious struct {
133-
// +kubebuilder:validation:Required
134-
Name string `json:"name"`
135-
// +kubebuilder:validation:Required
136-
UID types.UID `json:"uid"`
133+
// +kubebuilder:validation:Required
134+
Name string `json:"name"`
135+
// +kubebuilder:validation:Required
136+
UID types.UID `json:"uid"`
137137
}
138138

139139
// ClusterExtensionRevisionStatus defines the observed state of a ClusterExtensionRevision.
140140
type ClusterExtensionRevisionStatus struct {
141-
// +listType=map
142-
// +listMapKey=type
143-
// +optional
144-
Conditions []metav1.Condition `json:"conditions,omitempty"`
141+
// +listType=map
142+
// +listMapKey=type
143+
// +optional
144+
Conditions []metav1.Condition `json:"conditions,omitempty"`
145145
}
146146

147147
// +kubebuilder:object:root=true
@@ -152,33 +152,33 @@ type ClusterExtensionRevisionStatus struct {
152152
// +kubebuilder:printcolumn:name="Available",type=string,JSONPath=`.status.conditions[?(@.type=='Available')].status`
153153
// +kubebuilder:printcolumn:name=Age,type=date,JSONPath=`.metadata.creationTimestamp`
154154
type ClusterExtensionRevision struct {
155-
metav1.TypeMeta `json:",inline"`
156-
metav1.ObjectMeta `json:"metadata,omitempty"`
155+
metav1.TypeMeta `json:",inline"`
156+
metav1.ObjectMeta `json:"metadata,omitempty"`
157157

158-
// spec is an optional field that defines the desired state of the ClusterExtension.
159-
// +optional
160-
Spec ClusterExtensionRevisionSpec `json:"spec,omitempty"`
158+
// spec is an optional field that defines the desired state of the ClusterExtension.
159+
// +optional
160+
Spec ClusterExtensionRevisionSpec `json:"spec,omitempty"`
161161

162-
// status is an optional field that defines the observed state of the ClusterExtension.
163-
// +optional
164-
Status ClusterExtensionRevisionStatus `json:"status,omitempty"`
162+
// status is an optional field that defines the observed state of the ClusterExtension.
163+
// +optional
164+
Status ClusterExtensionRevisionStatus `json:"status,omitempty"`
165165
}
166166

167167
// +kubebuilder:object:root=true
168168

169169
// ClusterExtensionRevisionList contains a list of ClusterExtensionRevision
170170
type ClusterExtensionRevisionList struct {
171-
metav1.TypeMeta `json:",inline"`
171+
metav1.TypeMeta `json:",inline"`
172172

173-
// +optional
174-
metav1.ListMeta `json:"metadata,omitempty"`
173+
// +optional
174+
metav1.ListMeta `json:"metadata,omitempty"`
175175

176-
// items is a required list of ClusterExtensionRevision objects.
177-
//
178-
// +kubebuilder:validation:Required
179-
Items []ClusterExtensionRevision `json:"items"`
176+
// items is a required list of ClusterExtensionRevision objects.
177+
//
178+
// +kubebuilder:validation:Required
179+
Items []ClusterExtensionRevision `json:"items"`
180180
}
181181

182182
func init() {
183-
SchemeBuilder.Register(&ClusterExtensionRevision{}, &ClusterExtensionRevisionList{})
183+
SchemeBuilder.Register(&ClusterExtensionRevision{}, &ClusterExtensionRevisionList{})
184184
}

helm/olmv1/base/operator-controller/crd/experimental/olm.operatorframework.io_clusterextensionrevisions.yaml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,14 @@ spec:
1515
singular: clusterextensionrevision
1616
scope: Cluster
1717
versions:
18-
- name: v1
18+
- additionalPrinterColumns:
19+
- jsonPath: .status.conditions[?(@.type=='Available')].status
20+
name: Available
21+
type: string
22+
- jsonPath: .metadata.creationTimestamp
23+
name: Age
24+
type: date
25+
name: v1
1926
schema:
2027
openAPIV3Schema:
2128
description: ClusterExtensionRevision is the Schema for the clusterextensionrevisions

manifests/experimental-e2e.yaml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -606,7 +606,14 @@ spec:
606606
singular: clusterextensionrevision
607607
scope: Cluster
608608
versions:
609-
- name: v1
609+
- additionalPrinterColumns:
610+
- jsonPath: .status.conditions[?(@.type=='Available')].status
611+
name: Available
612+
type: string
613+
- jsonPath: .metadata.creationTimestamp
614+
name: Age
615+
type: date
616+
name: v1
610617
schema:
611618
openAPIV3Schema:
612619
description: ClusterExtensionRevision is the Schema for the clusterextensionrevisions

manifests/experimental.yaml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -571,7 +571,14 @@ spec:
571571
singular: clusterextensionrevision
572572
scope: Cluster
573573
versions:
574-
- name: v1
574+
- additionalPrinterColumns:
575+
- jsonPath: .status.conditions[?(@.type=='Available')].status
576+
name: Available
577+
type: string
578+
- jsonPath: .metadata.creationTimestamp
579+
name: Age
580+
type: date
581+
name: v1
575582
schema:
576583
openAPIV3Schema:
577584
description: ClusterExtensionRevision is the Schema for the clusterextensionrevisions

0 commit comments

Comments
 (0)