@@ -31,6 +31,7 @@ import (
3131 clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2"
3232 runtimehooksv1 "sigs.k8s.io/cluster-api/api/runtime/hooks/v1alpha1"
3333 "sigs.k8s.io/cluster-api/controllers/external"
34+ "sigs.k8s.io/cluster-api/internal/controllers/machinedeployment/mdutil"
3435 "sigs.k8s.io/cluster-api/internal/util/compare"
3536 "sigs.k8s.io/cluster-api/internal/util/patch"
3637)
@@ -258,22 +259,29 @@ func matchesMachineSet(req *runtimehooksv1.CanUpdateMachineSetRequest) (bool, []
258259
259260func matchesMachineSetSpec (patched , desired * clusterv1.MachineSet ) (equal bool , diff string , matchErr error ) {
260261 // Note: Wrapping MachineSet specs in a MachineSet for proper formatting of the diff.
261- return compare .Diff (
262- & clusterv1.MachineSet {
263- Spec : clusterv1.MachineSetSpec {
264- Template : clusterv1.MachineTemplateSpec {
265- Spec : patched .Spec .Template .Spec ,
266- },
262+ cleanedUpPatchedMachineSet := & clusterv1.MachineSet {
263+ Spec : clusterv1.MachineSetSpec {
264+ Template : clusterv1.MachineTemplateSpec {
265+ Spec : patched .Spec .Template .Spec ,
267266 },
268267 },
269- & clusterv1. MachineSet {
270- Spec : clusterv1.MachineSetSpec {
271- Template : clusterv1.MachineTemplateSpec {
272- Spec : desired . Spec . Template . Spec ,
273- } ,
268+ }
269+ cleanedUpDesiredMachineSet := & clusterv1.MachineSet {
270+ Spec : clusterv1.MachineSetSpec {
271+ Template : clusterv1. MachineTemplateSpec {
272+ Spec : desired . Spec . Template . Spec ,
274273 },
275274 },
276- )
275+ }
276+
277+ // Cleanup fields that are not the responsibility of the in-place update extension.
278+ // Remove in-place mutable fields.
279+ cleanedUpPatchedMachineSet .Spec .Template = * mdutil .MachineTemplateDeepCopyRolloutFields (& cleanedUpPatchedMachineSet .Spec .Template )
280+ cleanedUpDesiredMachineSet .Spec .Template = * mdutil .MachineTemplateDeepCopyRolloutFields (& cleanedUpDesiredMachineSet .Spec .Template )
281+ // Set refs equal.
282+ cleanedUpPatchedMachineSet .Spec .Template .Spec .Bootstrap .ConfigRef = cleanedUpDesiredMachineSet .Spec .Template .Spec .Bootstrap .ConfigRef
283+ cleanedUpPatchedMachineSet .Spec .Template .Spec .InfrastructureRef = cleanedUpDesiredMachineSet .Spec .Template .Spec .InfrastructureRef
284+ return compare .Diff (cleanedUpPatchedMachineSet , cleanedUpDesiredMachineSet )
277285}
278286
279287func matchesUnstructuredSpec (patched , desired runtime.RawExtension ) (equal bool , diff string , matchErr error ) {
0 commit comments