Add union validation tags

This commit is contained in:
helayoty
2025-11-27 01:48:52 +00:00
committed by Heba Elayoty
parent b75e665a7d
commit 251832a33c
3 changed files with 26 additions and 0 deletions

View File

@@ -122,9 +122,23 @@ func Validate_PodGroup(ctx context.Context, op operation.Operation, fldPath *fie
return errs
}
var unionMembershipFor_k8s_io_api_scheduling_v1alpha1_PodGroupPolicy_ = validate.NewUnionMembership(validate.NewUnionMember("basic"), validate.NewUnionMember("gang"))
// Validate_PodGroupPolicy validates an instance of PodGroupPolicy according
// to declarative validation rules in the API schema.
func Validate_PodGroupPolicy(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *schedulingv1alpha1.PodGroupPolicy) (errs field.ErrorList) {
errs = append(errs, validate.Union(ctx, op, fldPath, obj, oldObj, unionMembershipFor_k8s_io_api_scheduling_v1alpha1_PodGroupPolicy_, func(obj *schedulingv1alpha1.PodGroupPolicy) bool {
if obj == nil {
return false
}
return obj.Basic != nil
}, func(obj *schedulingv1alpha1.PodGroupPolicy) bool {
if obj == nil {
return false
}
return obj.Gang != nil
})...)
// field schedulingv1alpha1.PodGroupPolicy.Basic
errs = append(errs,
func(fldPath *field.Path, obj, oldObj *schedulingv1alpha1.BasicSchedulingPolicy, oldValueCorrelated bool) (errs field.ErrorList) {

View File

@@ -70,6 +70,7 @@ message PodGroupPolicy {
// +optional
// +k8s:optional
// +oneOf=PolicySelection
// +k8s:unionMember(memberName: "PolicySelectionBasic")
optional BasicSchedulingPolicy basic = 2;
// Gang specifies that the pods in this group should be scheduled using
@@ -78,6 +79,7 @@ message PodGroupPolicy {
// +optional
// +k8s:optional
// +oneOf=PolicySelection
// +k8s:unionMember(memberName: "PolicySelectionGang")
optional GangSchedulingPolicy gang = 3;
}

View File

@@ -177,6 +177,14 @@ type PodGroup struct {
Policy PodGroupPolicy `json:"policy" protobuf:"bytes,3,opt,name=policy"`
}
// +k8s:unionDiscriminator
type PolicySelection string
const (
PolicySelectionBasic PolicySelection = "basic"
PolicySelectionGang PolicySelection = "gang"
)
// PodGroupPolicy defines the scheduling configuration for a PodGroup.
type PodGroupPolicy struct {
// Basic specifies that the pods in this group should be scheduled using
@@ -185,6 +193,7 @@ type PodGroupPolicy struct {
// +optional
// +k8s:optional
// +oneOf=PolicySelection
// +k8s:unionMember(memberName: "PolicySelectionBasic")
Basic *BasicSchedulingPolicy `json:"basic,omitempty" protobuf:"bytes,2,opt,name=basic"`
// Gang specifies that the pods in this group should be scheduled using
@@ -193,6 +202,7 @@ type PodGroupPolicy struct {
// +optional
// +k8s:optional
// +oneOf=PolicySelection
// +k8s:unionMember(memberName: "PolicySelectionGang")
Gang *GangSchedulingPolicy `json:"gang,omitempty" protobuf:"bytes,3,opt,name=gang"`
}