@@ -197,32 +197,19 @@ func (m *AzureManagedMachinePool) ValidateUpdate(oldRaw runtime.Object, client c
197197 }
198198 }
199199
200- if old .Spec .EnableUltraSSD != nil {
201- // Prevent EnabledUltraSSD modification if it was already set to some value
202- if m .Spec .EnableUltraSSD == nil {
203- // unsetting the field is not allowed
204- allErrs = append (allErrs ,
205- field .Invalid (
206- field .NewPath ("Spec" , "EnableUltraSSD" ),
207- m .Spec .EnableUltraSSD ,
208- "field is immutable, unsetting is not allowed" ))
209- } else if * m .Spec .EnableUltraSSD != * old .Spec .EnableUltraSSD {
210- // changing the field is not allowed
211- allErrs = append (allErrs ,
212- field .Invalid (
213- field .NewPath ("Spec" , "EnableUltraSSD" ),
214- m .Spec .EnableUltraSSD ,
215- "field is immutable" ))
216- }
217- } else {
218- if m .Spec .EnableUltraSSD != nil {
219- allErrs = append (allErrs ,
220- field .Invalid (
221- field .NewPath ("Spec" , "EnableUltraSSD" ),
222- m .Spec .EnableUltraSSD ,
223- "field is immutable, unsetting is not allowed" ))
224- }
200+ if err := validateBoolPtrImmutable (
201+ field .NewPath ("Spec" , "EnableUltraSSD" ),
202+ old .Spec .EnableUltraSSD ,
203+ m .Spec .EnableUltraSSD ); err != nil {
204+ allErrs = append (allErrs , err )
205+ }
206+ if err := validateBoolPtrImmutable (
207+ field .NewPath ("Spec" , "EnableNodePublicIP" ),
208+ old .Spec .EnableNodePublicIP ,
209+ m .Spec .EnableNodePublicIP ); err != nil {
210+ allErrs = append (allErrs , err )
225211 }
212+
226213 if len (allErrs ) != 0 {
227214 return apierrors .NewInvalid (GroupVersion .WithKind ("AzureManagedMachinePool" ).GroupKind (), m .Name , allErrs )
228215 }
@@ -336,3 +323,21 @@ func ensureStringSlicesAreEqual(a []string, b []string) bool {
336323 }
337324 return true
338325}
326+
327+ func validateBoolPtrImmutable (path * field.Path , oldVal , newVal * bool ) * field.Error {
328+ if oldVal != nil {
329+ // Prevent modification if it was already set to some value
330+ if newVal == nil {
331+ // unsetting the field is not allowed
332+ return field .Invalid (path , newVal , "field is immutable, unsetting is not allowed" )
333+ }
334+ if * newVal != * oldVal {
335+ // changing the field is not allowed
336+ return field .Invalid (path , newVal , "field is immutable" )
337+ }
338+ } else if newVal != nil {
339+ return field .Invalid (path , newVal , "field is immutable, setting is not allowed" )
340+ }
341+
342+ return nil
343+ }
0 commit comments