@@ -25,10 +25,12 @@ import (
2525 apivalidation "k8s.io/apimachinery/pkg/api/validation"
2626 utilvalidation "k8s.io/apimachinery/pkg/util/validation"
2727
28+ "k8s.io/apimachinery/pkg/runtime"
2829 "k8s.io/apimachinery/pkg/util/intstr"
2930 "k8s.io/apimachinery/pkg/util/validation/field"
3031 "k8s.io/utils/ptr"
3132 ctrl "sigs.k8s.io/controller-runtime"
33+ "sigs.k8s.io/controller-runtime/pkg/webhook"
3234 "sigs.k8s.io/controller-runtime/pkg/webhook/admission"
3335
3436 v1 "sigs.k8s.io/lws/api/leaderworkerset/v1"
@@ -38,18 +40,20 @@ type LeaderWorkerSetWebhook struct{}
3840
3941// SetupLeaderWorkerSetWebhook will setup the manager to manage the webhooks
4042func SetupLeaderWorkerSetWebhook (mgr ctrl.Manager ) error {
41- return ctrl .NewWebhookManagedBy (mgr , & v1.LeaderWorkerSet {}).
43+ return ctrl .NewWebhookManagedBy (mgr ).
44+ For (& v1.LeaderWorkerSet {}).
4245 WithDefaulter (& LeaderWorkerSetWebhook {}).
4346 WithValidator (& LeaderWorkerSetWebhook {}).
4447 Complete ()
4548}
4649
4750//+kubebuilder:webhook:path=/mutate-leaderworkerset-x-k8s-io-v1-leaderworkerset,mutating=true,failurePolicy=fail,sideEffects=None,groups=leaderworkerset.x-k8s.io,resources=leaderworkersets,verbs=create;update,versions=v1,name=mleaderworkerset.kb.io,admissionReviewVersions=v1
4851
49- var _ admission. Defaulter [ * v1. LeaderWorkerSet ] = & LeaderWorkerSetWebhook {}
52+ var _ webhook. CustomDefaulter = & LeaderWorkerSetWebhook {}
5053
51- // Default implements admission.Defaulter[*v1.LeaderWorkerSet] so a webhook will be registered for the type
52- func (r * LeaderWorkerSetWebhook ) Default (ctx context.Context , lws * v1.LeaderWorkerSet ) error {
54+ // Default implements webhook.Defaulter so a webhook will be registered for the type
55+ func (r * LeaderWorkerSetWebhook ) Default (ctx context.Context , obj runtime.Object ) error {
56+ lws := obj .(* v1.LeaderWorkerSet )
5357 if lws .Spec .LeaderWorkerTemplate .RestartPolicy == "" {
5458 lws .Spec .LeaderWorkerTemplate .RestartPolicy = v1 .RecreateGroupOnPodRestart
5559 }
@@ -86,19 +90,21 @@ func (r *LeaderWorkerSetWebhook) Default(ctx context.Context, lws *v1.LeaderWork
8690
8791//+kubebuilder:webhook:path=/validate-leaderworkerset-x-k8s-io-v1-leaderworkerset,mutating=false,failurePolicy=fail,sideEffects=None,groups=leaderworkerset.x-k8s.io,resources=leaderworkersets,verbs=create;update,versions=v1,name=vleaderworkerset.kb.io,admissionReviewVersions=v1
8892
89- var _ admission. Validator [ * v1. LeaderWorkerSet ] = & LeaderWorkerSetWebhook {}
93+ var _ webhook. CustomValidator = & LeaderWorkerSetWebhook {}
9094
91- // ValidateCreate implements admission .Validator[*v1.LeaderWorkerSet] so a webhook will be registered for the type
92- func (r * LeaderWorkerSetWebhook ) ValidateCreate (ctx context.Context , lws * v1. LeaderWorkerSet ) (admission.Warnings , error ) {
93- allErrs := r .generalValidate (lws )
95+ // ValidateCreate implements webhook .Validator so a webhook will be registered for the type
96+ func (r * LeaderWorkerSetWebhook ) ValidateCreate (ctx context.Context , obj runtime. Object ) (admission.Warnings , error ) {
97+ allErrs := r .generalValidate (obj )
9498 return nil , allErrs .ToAggregate ()
9599}
96100
97- // ValidateUpdate implements admission .Validator[*v1.LeaderWorkerSet] so a webhook will be registered for the type
98- func (r * LeaderWorkerSetWebhook ) ValidateUpdate (ctx context.Context , oldLws , newLws * v1. LeaderWorkerSet ) (admission.Warnings , error ) {
99- allErrs := r .generalValidate (newLws )
101+ // ValidateUpdate implements webhook .Validator so a webhook will be registered for the type
102+ func (r * LeaderWorkerSetWebhook ) ValidateUpdate (ctx context.Context , oldObj , newObj runtime. Object ) (admission.Warnings , error ) {
103+ allErrs := r .generalValidate (newObj )
100104 specPath := field .NewPath ("spec" )
101105
106+ oldLws := oldObj .(* v1.LeaderWorkerSet )
107+ newLws := newObj .(* v1.LeaderWorkerSet )
102108 if newLws .Spec .LeaderWorkerTemplate .SubGroupPolicy != nil && oldLws .Spec .LeaderWorkerTemplate .SubGroupPolicy != nil {
103109 allErrs = append (allErrs , apivalidation .ValidateImmutableField (* newLws .Spec .LeaderWorkerTemplate .SubGroupPolicy .SubGroupSize , * oldLws .Spec .LeaderWorkerTemplate .SubGroupPolicy .SubGroupSize , field .NewPath ("spec" , "leaderWorkerTemplate" , "SubGroupPolicy" , "subGroupSize" ))... )
104110 }
@@ -115,12 +121,13 @@ func (r *LeaderWorkerSetWebhook) ValidateUpdate(ctx context.Context, oldLws, new
115121 return nil , allErrs .ToAggregate ()
116122}
117123
118- // ValidateDelete implements admission .Validator[*v1.LeaderWorkerSet] so a webhook will be registered for the type
119- func (r * LeaderWorkerSetWebhook ) ValidateDelete (ctx context.Context , lws * v1. LeaderWorkerSet ) (admission.Warnings , error ) {
124+ // ValidateDelete implements webhook .Validator so a webhook will be registered for the type
125+ func (r * LeaderWorkerSetWebhook ) ValidateDelete (ctx context.Context , obj runtime. Object ) (admission.Warnings , error ) {
120126 return nil , nil
121127}
122128
123- func (r * LeaderWorkerSetWebhook ) generalValidate (lws * v1.LeaderWorkerSet ) field.ErrorList {
129+ func (r * LeaderWorkerSetWebhook ) generalValidate (obj runtime.Object ) field.ErrorList {
130+ lws := obj .(* v1.LeaderWorkerSet )
124131 specPath := field .NewPath ("spec" )
125132 metadataPath := field .NewPath ("metadata" )
126133
0 commit comments