Skip to content

Commit 3e0efb5

Browse files
committed
WIP
Signed-off-by: Daniel Franz <dfranz@redhat.com>
1 parent 6f23a79 commit 3e0efb5

13 files changed

Lines changed: 937 additions & 5 deletions

File tree

api/v1/clusterextensionrevision_types.go

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,10 @@ type ClusterExtensionRevisionSpec struct {
106106
// <opcon:experimental>
107107
ProgressDeadlineMinutes int32 `json:"progressDeadlineMinutes,omitempty"`
108108

109+
// +optional
110+
// +kubebuilder:validation:MaxItems=50
111+
ProgressionProbes []ProgressionProbe `json:"progressionProbes,omitempty"`
112+
109113
// collisionProtection specifies the default collision protection strategy for all objects
110114
// in this revision. Individual phases or objects can override this value.
111115
//
@@ -120,6 +124,71 @@ type ClusterExtensionRevisionSpec struct {
120124
CollisionProtection CollisionProtection `json:"collisionProtection,omitempty"`
121125
}
122126

127+
type ProbeType string
128+
129+
const (
130+
ProbeTypeFieldValue ProbeType = "FieldValue"
131+
)
132+
133+
type ProgressionProbe struct {
134+
// +required
135+
Selector ProbeSelector `json:"selector,omitempty"`
136+
137+
// +required
138+
Assertions []ProbeAssertion `json:"assertions,omitempty"`
139+
}
140+
141+
type SelectorType string
142+
143+
const (
144+
SelectorTypeGroupKind SelectorType = "GroupKind"
145+
SelectorTypeLabel SelectorType = "Label"
146+
)
147+
148+
// +union
149+
// +kubebuilder:validation:XValidation:rule="self.type == 'GroupKind' ?has(self.groupKind) : !has(self.groupKind)",message="groupKind is required when type is GroupKind, and forbidden otherwise"
150+
// +kubebuilder:validation:XValidation:rule="self.type == 'Label' ?has(self.label) : !has(self.label)",message="label is required when type is Label, and forbidden otherwise"
151+
type ProbeSelector struct {
152+
// +unionDiscriminator
153+
// +kubebuilder:validation:Enum=GroupKind;Label
154+
// +required
155+
SelectorType SelectorType `json:"type,omitempty"`
156+
157+
// +optional
158+
// +unionMember
159+
GroupKind metav1.GroupKind `json:"groupKind,omitempty"`
160+
161+
// +optional
162+
// +unionMember
163+
Label metav1.LabelSelector `json:"label,omitempty"`
164+
}
165+
166+
// +union
167+
// +kubebuilder:validation:XValidation:rule="self.type == 'FieldValue' ?has(self.fieldValue) : !has(self.fieldValue)",message="fieldValue is required when configType is FieldValue, and forbidden otherwise"
168+
type ProbeAssertion struct {
169+
// +unionDiscriminator
170+
// +kubebuilder:validation:Enum=FieldValue
171+
// +required
172+
ProbeType ProbeType `json:"type,omitempty"`
173+
174+
// +unionMember
175+
// +optional
176+
FieldValue FieldValueProbe `json:"fieldValue,omitempty"`
177+
}
178+
179+
type FieldValueProbe struct {
180+
// +kubebuilder:validation:MaxLength=100
181+
// +required
182+
Message string `json:"message,omitempty"`
183+
184+
// +kubebuilder:validation:MaxLength=50
185+
// +required
186+
FieldPath string `json:"fieldPath,omitempty"`
187+
// +kubebuilder:validation:MaxLength=50
188+
// +required
189+
Value string `json:"value,omitempty"`
190+
}
191+
123192
// ClusterExtensionRevisionLifecycleState specifies the lifecycle state of the ClusterExtensionRevision.
124193
type ClusterExtensionRevisionLifecycleState string
125194

api/v1/zz_generated.deepcopy.go

Lines changed: 76 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

applyconfigurations/api/v1/clusterextensionrevisionspec.go

Lines changed: 15 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

applyconfigurations/api/v1/fieldvalueprobe.go

Lines changed: 56 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

applyconfigurations/api/v1/probeassertion.go

Lines changed: 51 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

applyconfigurations/api/v1/probeselector.go

Lines changed: 62 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)