@@ -17,6 +17,8 @@ limitations under the License.
1717package v1alpha4
1818
1919import (
20+ "reflect"
21+
2022 apierrors "k8s.io/apimachinery/pkg/api/errors"
2123 "k8s.io/apimachinery/pkg/runtime"
2224 "k8s.io/apimachinery/pkg/util/validation/field"
@@ -81,44 +83,88 @@ func (m *AzureMachine) ValidateUpdate(oldRaw runtime.Object) error {
8183 var allErrs field.ErrorList
8284 old := oldRaw .(* AzureMachine )
8385
84- if errs := ValidateImage (m .Spec .Image , field .NewPath ("image" )); len (errs ) > 0 {
85- allErrs = append (allErrs , errs ... )
86+ if ! reflect .DeepEqual (m .Spec .Image , old .Spec .Image ) {
87+ allErrs = append (allErrs ,
88+ field .Invalid (field .NewPath ("spec" , "image" ),
89+ m .Spec .Image , "field is immutable" ),
90+ )
8691 }
8792
88- if errs := ValidateOSDisk (m .Spec .OSDisk , field .NewPath ("osDisk" )); len (errs ) > 0 {
89- allErrs = append (allErrs , errs ... )
93+ if ! reflect .DeepEqual (m .Spec .Identity , old .Spec .Identity ) {
94+ allErrs = append (allErrs ,
95+ field .Invalid (field .NewPath ("spec" , "identity" ),
96+ m .Spec .Identity , "field is immutable" ),
97+ )
9098 }
9199
92- if errs := ValidateSSHKey (m .Spec .SSHPublicKey , field .NewPath ("sshPublicKey" )); len (errs ) > 0 {
93- allErrs = append (allErrs , errs ... )
100+ if ! reflect .DeepEqual (m .Spec .UserAssignedIdentities , old .Spec .UserAssignedIdentities ) {
101+ allErrs = append (allErrs ,
102+ field .Invalid (field .NewPath ("spec" , "userAssignedIdentities" ),
103+ m .Spec .UserAssignedIdentities , "field is immutable" ),
104+ )
94105 }
95106
96- if errs := ValidateSystemAssignedIdentity (m .Spec .Identity , old .Spec .RoleAssignmentName , m .Spec .RoleAssignmentName , field .NewPath ("roleAssignmentName" )); len (errs ) > 0 {
97- allErrs = append (allErrs , errs ... )
107+ if ! reflect .DeepEqual (m .Spec .RoleAssignmentName , old .Spec .RoleAssignmentName ) {
108+ allErrs = append (allErrs ,
109+ field .Invalid (field .NewPath ("spec" , "roleAssignmentName" ),
110+ m .Spec .RoleAssignmentName , "field is immutable" ),
111+ )
98112 }
99113
100- if errs := ValidateUserAssignedIdentity (m .Spec .Identity , m .Spec .UserAssignedIdentities , field .NewPath ("userAssignedIdentities" )); len (errs ) > 0 {
101- allErrs = append (allErrs , errs ... )
114+ if ! reflect .DeepEqual (m .Spec .OSDisk , old .Spec .OSDisk ) {
115+ allErrs = append (allErrs ,
116+ field .Invalid (field .NewPath ("spec" , "osDisk" ),
117+ m .Spec .OSDisk , "field is immutable" ),
118+ )
102119 }
103120
104- if errs := ValidateDataDisks (m .Spec .DataDisks , field .NewPath ("dataDisks" )); len (errs ) > 0 {
105- allErrs = append (allErrs , errs ... )
121+ if ! reflect .DeepEqual (m .Spec .DataDisks , old .Spec .DataDisks ) {
122+ allErrs = append (allErrs ,
123+ field .Invalid (field .NewPath ("spec" , "dataDisks" ),
124+ m .Spec .DataDisks , "field is immutable" ),
125+ )
106126 }
107127
108- if errs := ValidateDataDisksUpdate (old .Spec .DataDisks , m .Spec .DataDisks , field .NewPath ("dataDisks" )); len (errs ) > 0 {
109- allErrs = append (allErrs , errs ... )
128+ if ! reflect .DeepEqual (m .Spec .SSHPublicKey , old .Spec .SSHPublicKey ) {
129+ allErrs = append (allErrs ,
130+ field .Invalid (field .NewPath ("spec" , "sshPublicKey" ),
131+ m .Spec .SSHPublicKey , "field is immutable" ),
132+ )
110133 }
111134
112- if errs := validateManagedDisksUpdate (old .Spec .OSDisk .ManagedDisk , old .Spec .OSDisk .ManagedDisk , field .NewPath ("osDisk" ).Child ("managedDisk" )); len (errs ) > 0 {
113- allErrs = append (allErrs , errs ... )
135+ if ! reflect .DeepEqual (m .Spec .AllocatePublicIP , old .Spec .AllocatePublicIP ) {
136+ allErrs = append (allErrs ,
137+ field .Invalid (field .NewPath ("spec" , "allocatePublicIP" ),
138+ m .Spec .AllocatePublicIP , "field is immutable" ),
139+ )
114140 }
115141
116- if errs := validateManagedDisk (m .Spec .OSDisk .ManagedDisk , field .NewPath ("osDisk" ).Child ("managedDisk" ), true ); len (errs ) > 0 {
117- allErrs = append (allErrs , errs ... )
142+ if ! reflect .DeepEqual (m .Spec .EnableIPForwarding , old .Spec .EnableIPForwarding ) {
143+ allErrs = append (allErrs ,
144+ field .Invalid (field .NewPath ("spec" , "enableIPForwarding" ),
145+ m .Spec .EnableIPForwarding , "field is immutable" ),
146+ )
118147 }
119148
120- if errs := validateDiffDiskSettingsUpdate (old .Spec .OSDisk .DiffDiskSettings , m .Spec .OSDisk .DiffDiskSettings , field .NewPath ("osDisk" ).Child ("diffDiskSettings" )); len (errs ) > 0 {
121- allErrs = append (allErrs , errs ... )
149+ if ! reflect .DeepEqual (m .Spec .AcceleratedNetworking , old .Spec .AcceleratedNetworking ) {
150+ allErrs = append (allErrs ,
151+ field .Invalid (field .NewPath ("spec" , "acceleratedNetworking" ),
152+ m .Spec .AcceleratedNetworking , "field is immutable" ),
153+ )
154+ }
155+
156+ if ! reflect .DeepEqual (m .Spec .SpotVMOptions , old .Spec .SpotVMOptions ) {
157+ allErrs = append (allErrs ,
158+ field .Invalid (field .NewPath ("spec" , "spotVMOptions" ),
159+ m .Spec .SpotVMOptions , "field is immutable" ),
160+ )
161+ }
162+
163+ if ! reflect .DeepEqual (m .Spec .SecurityProfile , old .Spec .SecurityProfile ) {
164+ allErrs = append (allErrs ,
165+ field .Invalid (field .NewPath ("spec" , "securityProfile" ),
166+ m .Spec .SecurityProfile , "field is immutable" ),
167+ )
122168 }
123169
124170 if len (allErrs ) == 0 {
0 commit comments