Skip to content

Commit f25f670

Browse files
Merge pull request openshift#92 from dinhxuanvu/opcon-gen
Bug 1927340: Add OperatorCondition status sync and update operator upgradeable check
2 parents 659bac3 + 4327486 commit f25f670

File tree

73 files changed

+3055
-303
lines changed

Some content is hidden

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

73 files changed

+3055
-303
lines changed

manifests/0000_50_olm_00-operatorconditions.crd.yaml

Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,170 @@ spec:
139139
maxLength: 316
140140
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
141141
served: true
142+
storage: false
143+
subresources:
144+
status: {}
145+
- name: v2
146+
schema:
147+
openAPIV3Schema:
148+
description: OperatorCondition is a Custom Resource of type `OperatorCondition` which is used to convey information to OLM about the state of an operator.
149+
type: object
150+
required:
151+
- metadata
152+
properties:
153+
apiVersion:
154+
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
155+
type: string
156+
kind:
157+
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
158+
type: string
159+
metadata:
160+
type: object
161+
spec:
162+
description: OperatorConditionSpec allows an operator to report state to OLM and provides cluster admin with the ability to manually override state reported by the operator.
163+
type: object
164+
properties:
165+
conditions:
166+
type: array
167+
items:
168+
description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
169+
type: object
170+
required:
171+
- lastTransitionTime
172+
- message
173+
- reason
174+
- status
175+
- type
176+
properties:
177+
lastTransitionTime:
178+
description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
179+
type: string
180+
format: date-time
181+
message:
182+
description: message is a human readable message indicating details about the transition. This may be an empty string.
183+
type: string
184+
maxLength: 32768
185+
observedGeneration:
186+
description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.
187+
type: integer
188+
format: int64
189+
minimum: 0
190+
reason:
191+
description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.
192+
type: string
193+
maxLength: 1024
194+
minLength: 1
195+
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
196+
status:
197+
description: status of the condition, one of True, False, Unknown.
198+
type: string
199+
enum:
200+
- "True"
201+
- "False"
202+
- Unknown
203+
type:
204+
description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
205+
type: string
206+
maxLength: 316
207+
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
208+
deployments:
209+
type: array
210+
items:
211+
type: string
212+
overrides:
213+
type: array
214+
items:
215+
description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
216+
type: object
217+
required:
218+
- message
219+
- reason
220+
- status
221+
- type
222+
properties:
223+
lastTransitionTime:
224+
description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
225+
type: string
226+
format: date-time
227+
message:
228+
description: message is a human readable message indicating details about the transition. This may be an empty string.
229+
type: string
230+
maxLength: 32768
231+
observedGeneration:
232+
description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.
233+
type: integer
234+
format: int64
235+
minimum: 0
236+
reason:
237+
description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.
238+
type: string
239+
maxLength: 1024
240+
minLength: 1
241+
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
242+
status:
243+
description: status of the condition, one of True, False, Unknown.
244+
type: string
245+
enum:
246+
- "True"
247+
- "False"
248+
- Unknown
249+
type:
250+
description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
251+
type: string
252+
maxLength: 316
253+
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
254+
serviceAccounts:
255+
type: array
256+
items:
257+
type: string
258+
status:
259+
description: OperatorConditionStatus allows OLM to convey which conditions have been observed.
260+
type: object
261+
properties:
262+
conditions:
263+
type: array
264+
items:
265+
description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
266+
type: object
267+
required:
268+
- lastTransitionTime
269+
- message
270+
- reason
271+
- status
272+
- type
273+
properties:
274+
lastTransitionTime:
275+
description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
276+
type: string
277+
format: date-time
278+
message:
279+
description: message is a human readable message indicating details about the transition. This may be an empty string.
280+
type: string
281+
maxLength: 32768
282+
observedGeneration:
283+
description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.
284+
type: integer
285+
format: int64
286+
minimum: 0
287+
reason:
288+
description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.
289+
type: string
290+
maxLength: 1024
291+
minLength: 1
292+
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
293+
status:
294+
description: status of the condition, one of True, False, Unknown.
295+
type: string
296+
enum:
297+
- "True"
298+
- "False"
299+
- Unknown
300+
type:
301+
description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
302+
type: string
303+
maxLength: 316
304+
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
305+
served: true
142306
storage: true
143307
subresources:
144308
status: {}

0 commit comments

Comments
 (0)