@@ -28,11 +28,10 @@ import (
2828 "k8s.io/apimachinery/pkg/util/validation/field"
2929 "k8s.io/klog/v2"
3030 "k8s.io/utils/ptr"
31+ "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/eks"
3132 ctrl "sigs.k8s.io/controller-runtime"
3233 "sigs.k8s.io/controller-runtime/pkg/webhook"
3334 "sigs.k8s.io/controller-runtime/pkg/webhook/admission"
34-
35- "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/eks"
3635)
3736
3837const (
@@ -60,7 +59,7 @@ type awsManagedMachinePoolWebhook struct{}
6059var _ webhook.CustomDefaulter = & awsManagedMachinePoolWebhook {}
6160var _ webhook.CustomValidator = & awsManagedMachinePoolWebhook {}
6261
63- func (r * AWSManagedMachinePool ) validateScaling ( ) field.ErrorList {
62+ func validateScaling (r * AWSManagedMachinePool ) field.ErrorList {
6463 var allErrs field.ErrorList
6564 if r .Spec .Scaling != nil { //nolint:nestif
6665 minField := field .NewPath ("spec" , "scaling" , "minSize" )
@@ -85,7 +84,7 @@ func (r *AWSManagedMachinePool) validateScaling() field.ErrorList {
8584 return allErrs
8685}
8786
88- func (r * AWSManagedMachinePool ) validateNodegroupUpdateConfig ( ) field.ErrorList {
87+ func validateNodegroupUpdateConfig (r * AWSManagedMachinePool ) field.ErrorList {
8988 var allErrs field.ErrorList
9089
9190 if r .Spec .UpdateConfig != nil {
@@ -106,7 +105,7 @@ func (r *AWSManagedMachinePool) validateNodegroupUpdateConfig() field.ErrorList
106105 return allErrs
107106}
108107
109- func (r * AWSManagedMachinePool ) validateRemoteAccess ( ) field.ErrorList {
108+ func validateRemoteAccess (r * AWSManagedMachinePool ) field.ErrorList {
110109 var allErrs field.ErrorList
111110 if r .Spec .RemoteAccess == nil {
112111 return allErrs
@@ -124,7 +123,7 @@ func (r *AWSManagedMachinePool) validateRemoteAccess() field.ErrorList {
124123 return allErrs
125124}
126125
127- func (r * AWSManagedMachinePool ) validateLaunchTemplate ( ) field.ErrorList {
126+ func validateLaunchTemplate (r * AWSManagedMachinePool ) field.ErrorList {
128127 var allErrs field.ErrorList
129128 if r .Spec .AWSLaunchTemplate == nil {
130129 return allErrs
@@ -162,16 +161,16 @@ func (*awsManagedMachinePoolWebhook) ValidateCreate(_ context.Context, obj runti
162161 if r .Spec .EKSNodegroupName == "" {
163162 allErrs = append (allErrs , field .Required (field .NewPath ("spec.eksNodegroupName" ), "eksNodegroupName is required" ))
164163 }
165- if errs := r . validateScaling (); errs != nil || len (errs ) == 0 {
164+ if errs := validateScaling (r ); errs != nil || len (errs ) == 0 {
166165 allErrs = append (allErrs , errs ... )
167166 }
168- if errs := r . validateRemoteAccess (); len (errs ) > 0 {
167+ if errs := validateRemoteAccess (r ); len (errs ) > 0 {
169168 allErrs = append (allErrs , errs ... )
170169 }
171- if errs := r . validateNodegroupUpdateConfig (); len (errs ) > 0 {
170+ if errs := validateNodegroupUpdateConfig (r ); len (errs ) > 0 {
172171 allErrs = append (allErrs , errs ... )
173172 }
174- if errs := r . validateLaunchTemplate (); len (errs ) > 0 {
173+ if errs := validateLaunchTemplate (r ); len (errs ) > 0 {
175174 allErrs = append (allErrs , errs ... )
176175 }
177176 if errs := r .validateLifecycleHooks (); len (errs ) > 0 {
@@ -207,16 +206,16 @@ func (*awsManagedMachinePoolWebhook) ValidateUpdate(_ context.Context, oldObj, n
207206 }
208207
209208 var allErrs field.ErrorList
210- allErrs = append (allErrs , r . validateImmutable (oldPool )... )
209+ allErrs = append (allErrs , validateAMPImmutable (oldPool , r )... )
211210 allErrs = append (allErrs , r .Spec .AdditionalTags .Validate ()... )
212211
213- if errs := r . validateScaling (); errs != nil || len (errs ) == 0 {
212+ if errs := validateScaling (r ); errs != nil || len (errs ) == 0 {
214213 allErrs = append (allErrs , errs ... )
215214 }
216- if errs := r . validateNodegroupUpdateConfig (); len (errs ) > 0 {
215+ if errs := validateNodegroupUpdateConfig (r ); len (errs ) > 0 {
217216 allErrs = append (allErrs , errs ... )
218217 }
219- if errs := r . validateLaunchTemplate (); len (errs ) > 0 {
218+ if errs := validateLaunchTemplate (r ); len (errs ) > 0 {
220219 allErrs = append (allErrs , errs ... )
221220 }
222221 if errs := r .validateLifecycleHooks (); len (errs ) > 0 {
@@ -239,7 +238,7 @@ func (*awsManagedMachinePoolWebhook) ValidateDelete(_ context.Context, _ runtime
239238 return nil , nil
240239}
241240
242- func ( r * AWSManagedMachinePool ) validateImmutable ( old * AWSManagedMachinePool ) field.ErrorList {
241+ func validateAMPImmutable ( old * AWSManagedMachinePool , current * AWSManagedMachinePool ) field.ErrorList {
243242 var allErrs field.ErrorList
244243
245244 appendErrorIfMutated := func (old , update interface {}, name string ) {
@@ -260,25 +259,25 @@ func (r *AWSManagedMachinePool) validateImmutable(old *AWSManagedMachinePool) fi
260259 }
261260
262261 if old .Spec .EKSNodegroupName != "" {
263- appendErrorIfMutated (old .Spec .EKSNodegroupName , r .Spec .EKSNodegroupName , "eksNodegroupName" )
264- }
265- appendErrorIfMutated (old .Spec .SubnetIDs , r .Spec .SubnetIDs , "subnetIDs" )
266- appendErrorIfSetAndMutated (old .Spec .RoleName , r .Spec .RoleName , "roleName" )
267- appendErrorIfMutated (old .Spec .DiskSize , r .Spec .DiskSize , "diskSize" )
268- appendErrorIfMutated (old .Spec .AMIType , r .Spec .AMIType , "amiType" )
269- appendErrorIfMutated (old .Spec .RemoteAccess , r .Spec .RemoteAccess , "remoteAccess" )
270- appendErrorIfSetAndMutated (old .Spec .CapacityType , r .Spec .CapacityType , "capacityType" )
271- appendErrorIfMutated (old .Spec .AvailabilityZones , r .Spec .AvailabilityZones , "availabilityZones" )
272- appendErrorIfMutated (old .Spec .AvailabilityZoneSubnetType , r .Spec .AvailabilityZoneSubnetType , "availabilityZoneSubnetType" )
273- if (old .Spec .AWSLaunchTemplate != nil && r .Spec .AWSLaunchTemplate == nil ) ||
274- (old .Spec .AWSLaunchTemplate == nil && r .Spec .AWSLaunchTemplate != nil ) {
262+ appendErrorIfMutated (old .Spec .EKSNodegroupName , current .Spec .EKSNodegroupName , "eksNodegroupName" )
263+ }
264+ appendErrorIfMutated (old .Spec .SubnetIDs , current .Spec .SubnetIDs , "subnetIDs" )
265+ appendErrorIfSetAndMutated (old .Spec .RoleName , current .Spec .RoleName , "roleName" )
266+ appendErrorIfMutated (old .Spec .DiskSize , current .Spec .DiskSize , "diskSize" )
267+ appendErrorIfMutated (old .Spec .AMIType , current .Spec .AMIType , "amiType" )
268+ appendErrorIfMutated (old .Spec .RemoteAccess , current .Spec .RemoteAccess , "remoteAccess" )
269+ appendErrorIfSetAndMutated (old .Spec .CapacityType , current .Spec .CapacityType , "capacityType" )
270+ appendErrorIfMutated (old .Spec .AvailabilityZones , current .Spec .AvailabilityZones , "availabilityZones" )
271+ appendErrorIfMutated (old .Spec .AvailabilityZoneSubnetType , current .Spec .AvailabilityZoneSubnetType , "availabilityZoneSubnetType" )
272+ if (old .Spec .AWSLaunchTemplate != nil && current .Spec .AWSLaunchTemplate == nil ) ||
273+ (old .Spec .AWSLaunchTemplate == nil && current .Spec .AWSLaunchTemplate != nil ) {
275274 allErrs = append (
276275 allErrs ,
277276 field .Invalid (field .NewPath ("spec" , "AWSLaunchTemplate" ), old .Spec .AWSLaunchTemplate , "field is immutable" ),
278277 )
279278 }
280- if old .Spec .AWSLaunchTemplate != nil && r .Spec .AWSLaunchTemplate != nil {
281- appendErrorIfMutated (old .Spec .AWSLaunchTemplate .Name , r .Spec .AWSLaunchTemplate .Name , "awsLaunchTemplate.name" )
279+ if old .Spec .AWSLaunchTemplate != nil && current .Spec .AWSLaunchTemplate != nil {
280+ appendErrorIfMutated (old .Spec .AWSLaunchTemplate .Name , current .Spec .AWSLaunchTemplate .Name , "awsLaunchTemplate.name" )
282281 }
283282
284283 return allErrs
@@ -306,9 +305,13 @@ func (*awsManagedMachinePoolWebhook) Default(_ context.Context, obj runtime.Obje
306305 }
307306
308307 if r .Spec .UpdateConfig == nil {
309- r .Spec .UpdateConfig = & UpdateConfig {
310- MaxUnavailable : ptr.To [int ](1 ),
311- }
308+ r .Spec .UpdateConfig = defaultManagedMachinePoolUpdateConfig ()
312309 }
313310 return nil
314311}
312+
313+ func defaultManagedMachinePoolUpdateConfig () * UpdateConfig {
314+ return & UpdateConfig {
315+ MaxUnavailable : ptr.To [int ](1 ),
316+ }
317+ }
0 commit comments