@@ -17,131 +17,131 @@ limitations under the License.
1717package v1
1818
1919import (
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
2525const (
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.
4646type 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.
7676type ClusterExtensionRevisionLifecycleState string
7777
7878const (
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.
9292type 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.
103103type 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.
116116type CollisionProtection string
117117
118118const (
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
132132type 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.
140140type 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`
154154type 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
170170type 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
182182func init () {
183- SchemeBuilder .Register (& ClusterExtensionRevision {}, & ClusterExtensionRevisionList {})
183+ SchemeBuilder .Register (& ClusterExtensionRevision {}, & ClusterExtensionRevisionList {})
184184}
0 commit comments