Skip to content

Commit 094ac30

Browse files
committed
update
1 parent 05e34a3 commit 094ac30

File tree

11 files changed

+1266
-49
lines changed

11 files changed

+1266
-49
lines changed

controlplane/kubeadm/internal/controllers/controller_test.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2069,7 +2069,9 @@ func TestKubeadmControlPlaneReconciler_syncMachines(t *testing.T) {
20692069
SecretCachingClient: secretCachingClient,
20702070
ssaCache: ssa.NewCache("test-controller"),
20712071
}
2072-
g.Expect(reconciler.syncMachines(ctx, controlPlane)).To(Succeed())
2072+
stopReconcile, err := reconciler.syncMachines(ctx, controlPlane)
2073+
g.Expect(err).ToNot(HaveOccurred())
2074+
g.Expect(stopReconcile).To(BeFalse())
20732075

20742076
updatedInPlaceMutatingMachine := inPlaceMutatingMachine.DeepCopy()
20752077
g.Eventually(func(g Gomega) {
@@ -2145,7 +2147,9 @@ func TestKubeadmControlPlaneReconciler_syncMachines(t *testing.T) {
21452147
kcp.Spec.MachineTemplate.Spec.Deletion.NodeDeletionTimeoutSeconds = duration10s
21462148
kcp.Spec.MachineTemplate.Spec.Deletion.NodeVolumeDetachTimeoutSeconds = duration10s
21472149
controlPlane.KCP = kcp
2148-
g.Expect(reconciler.syncMachines(ctx, controlPlane)).To(Succeed())
2150+
stopReconcile, err = reconciler.syncMachines(ctx, controlPlane)
2151+
g.Expect(err).ToNot(HaveOccurred())
2152+
g.Expect(stopReconcile).To(BeFalse())
21492153

21502154
// Verify in-place mutable fields are updated on the Machine.
21512155
updatedInPlaceMutatingMachine = inPlaceMutatingMachine.DeepCopy()

controlplane/kubeadm/internal/controllers/helpers_test.go

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package controllers
1818

1919
import (
2020
"context"
21+
"encoding/json"
2122
"strings"
2223
"testing"
2324

@@ -28,6 +29,7 @@ import (
2829
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
2930
"k8s.io/apimachinery/pkg/runtime"
3031
"k8s.io/apimachinery/pkg/runtime/schema"
32+
"k8s.io/apimachinery/pkg/types"
3133
"k8s.io/client-go/tools/record"
3234
"k8s.io/utils/ptr"
3335
ctrl "sigs.k8s.io/controller-runtime"
@@ -457,7 +459,9 @@ func TestCloneConfigsAndGenerateMachineAndSyncMachines(t *testing.T) {
457459

458460
controlPlane, err := internal.NewControlPlane(ctx, r.managementCluster, r.Client, cluster, kcp, collections.FromMachines(&m))
459461
g.Expect(err).ToNot(HaveOccurred())
460-
g.Expect(r.syncMachines(ctx, controlPlane)).To(Succeed())
462+
stopReconcile, err := r.syncMachines(ctx, controlPlane)
463+
g.Expect(err).ToNot(HaveOccurred())
464+
g.Expect(stopReconcile).To(BeFalse())
461465

462466
// Verify managedFields again.
463467
infraObj, err = external.GetObjectFromContractVersionedRef(ctx, env.GetAPIReader(), m.Spec.InfrastructureRef, m.Namespace)
@@ -529,6 +533,52 @@ func TestCloneConfigsAndGenerateMachineAndSyncMachines(t *testing.T) {
529533
}
530534
}}`,
531535
}})))
536+
537+
// Purge managedFields from objects.
538+
jsonPatch := []map[string]interface{}{
539+
{
540+
"op": "replace",
541+
"path": "/metadata/managedFields",
542+
"value": []metav1.ManagedFieldsEntry{{}},
543+
},
544+
}
545+
patch, err := json.Marshal(jsonPatch)
546+
g.Expect(err).ToNot(HaveOccurred())
547+
for _, object := range []client.Object{&m, infraObj, kubeadmConfig} {
548+
g.Expect(env.Client.Patch(ctx, object, client.RawPatch(types.JSONPatchType, patch))).To(Succeed())
549+
g.Expect(object.GetManagedFields()).To(HaveLen(0))
550+
}
551+
552+
// syncMachines to run mitigation code.
553+
controlPlane.Machines[m.Name] = &m
554+
controlPlane.InfraResources[infraObj.GetName()] = infraObj
555+
controlPlane.KubeadmConfigs[kubeadmConfig.Name] = kubeadmConfig
556+
stopReconcile, err = r.syncMachines(ctx, controlPlane)
557+
g.Expect(err).ToNot(HaveOccurred())
558+
g.Expect(stopReconcile).To(BeTrue())
559+
560+
// verify mitigation worked
561+
g.Expect(env.GetAPIReader().Get(ctx, client.ObjectKeyFromObject(&m), &m)).To(Succeed())
562+
g.Expect(cleanupTime(m.GetManagedFields())).To(ConsistOf(toManagedFields([]managedFieldEntry{{
563+
APIVersion: clusterv1.GroupVersion.String(),
564+
Manager: kcpManagerName, // matches manager of next Apply.
565+
Operation: metav1.ManagedFieldsOperationApply,
566+
FieldsV1: `{"f:metadata":{"f:name":{}}}`,
567+
}})))
568+
g.Expect(env.GetAPIReader().Get(ctx, client.ObjectKeyFromObject(infraObj), infraObj)).To(Succeed())
569+
g.Expect(cleanupTime(infraObj.GetManagedFields())).To(ConsistOf(toManagedFields([]managedFieldEntry{{
570+
APIVersion: infraObj.GetAPIVersion(),
571+
Manager: kcpMetadataManagerName, // matches manager of next Apply.
572+
Operation: metav1.ManagedFieldsOperationApply,
573+
FieldsV1: `{"f:metadata":{"f:name":{}}}`,
574+
}})))
575+
g.Expect(env.GetAPIReader().Get(ctx, client.ObjectKeyFromObject(kubeadmConfig), kubeadmConfig)).To(Succeed())
576+
g.Expect(cleanupTime(kubeadmConfig.GetManagedFields())).To(ConsistOf(toManagedFields([]managedFieldEntry{{
577+
APIVersion: bootstrapv1.GroupVersion.String(),
578+
Manager: kcpMetadataManagerName, // matches manager of next Apply.
579+
Operation: metav1.ManagedFieldsOperationApply,
580+
FieldsV1: `{"f:metadata":{"f:name":{}}}`,
581+
}})))
532582
}
533583

534584
func TestCloneConfigsAndGenerateMachineFailInfraMachineCreation(t *testing.T) {

go.mod

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,10 @@ require (
5252
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4
5353
sigs.k8s.io/controller-runtime v0.23.1
5454
sigs.k8s.io/randfill v1.0.0
55+
sigs.k8s.io/structured-merge-diff/v6 v6.3.2-0.20260122202528-d9cc6641c482
5556
sigs.k8s.io/yaml v1.6.0
5657
)
5758

58-
require sigs.k8s.io/structured-merge-diff/v6 v6.3.2-0.20260122202528-d9cc6641c482
59-
6059
require (
6160
cel.dev/expr v0.24.0 // indirect
6261
dario.cat/mergo v1.0.1 // indirect

internal/controllers/machinedeployment/machinedeployment_controller.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -282,15 +282,15 @@ func (r *Reconciler) reconcile(ctx context.Context, s *scope) error {
282282
return err
283283
}
284284

285-
var anyChanged bool
285+
var anyManagedFieldIssueMitigated bool
286286
for _, ms := range s.machineSets {
287-
changed, err := ssa.MitigateManagedFieldsIssue(ctx, r.Client, ms, machineDeploymentManagerName)
287+
managedFieldIssueMitigated, err := ssa.MitigateManagedFieldsIssue(ctx, r.Client, ms, machineDeploymentManagerName)
288288
if err != nil {
289289
return err
290290
}
291-
anyChanged = anyChanged || changed
291+
anyManagedFieldIssueMitigated = anyManagedFieldIssueMitigated || managedFieldIssueMitigated
292292
}
293-
if anyChanged {
293+
if anyManagedFieldIssueMitigated {
294294
return nil // No requeue needed, changes will trigger another reconcile.
295295
}
296296

internal/controllers/machinedeployment/machinedeployment_controller_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,14 @@ package machinedeployment
1818

1919
import (
2020
"context"
21+
"encoding/json"
2122
"testing"
2223

2324
. "github.com/onsi/gomega"
2425
corev1 "k8s.io/api/core/v1"
2526
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2627
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
28+
"k8s.io/apimachinery/pkg/types"
2729
"k8s.io/client-go/tools/record"
2830
"k8s.io/client-go/util/retry"
2931
utilfeature "k8s.io/component-base/featuregate/testing"
@@ -222,6 +224,26 @@ func TestMachineDeploymentReconciler(t *testing.T) {
222224
return len(machineSets.Items)
223225
}, timeout).Should(BeEquivalentTo(1))
224226

227+
//
228+
// Verify managedField mitigation (purge managedFields and verify they are re-added)
229+
//
230+
jsonPatch := []map[string]interface{}{
231+
{
232+
"op": "replace",
233+
"path": "/metadata/managedFields",
234+
"value": []metav1.ManagedFieldsEntry{{}},
235+
},
236+
}
237+
patch, err := json.Marshal(jsonPatch)
238+
g.Expect(err).ToNot(HaveOccurred())
239+
ms := machineSets.Items[0].DeepCopy()
240+
g.Expect(env.Client.Patch(ctx, ms, client.RawPatch(types.JSONPatchType, patch))).To(Succeed())
241+
g.Expect(ms.GetManagedFields()).To(HaveLen(0))
242+
g.Eventually(func(g Gomega) {
243+
g.Expect(env.Client.Get(ctx, client.ObjectKeyFromObject(ms), ms)).To(Succeed())
244+
g.Expect(ms.GetManagedFields()).ToNot(BeEmpty())
245+
}, timeout).Should(Succeed())
246+
225247
t.Log("Verifying that the deployment's deletion.order was propagated to the machineset")
226248
g.Expect(machineSets.Items[0].Spec.Deletion.Order).To(Equal(clusterv1.OldestMachineSetDeletionOrder))
227249

internal/controllers/machineset/machineset_controller_test.go

Lines changed: 61 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package machineset
1818

1919
import (
2020
"context"
21+
"encoding/json"
2122
"fmt"
2223
"sort"
2324
"strings"
@@ -34,6 +35,7 @@ import (
3435
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
3536
"k8s.io/apimachinery/pkg/runtime"
3637
"k8s.io/apimachinery/pkg/runtime/schema"
38+
"k8s.io/apimachinery/pkg/types"
3739
"k8s.io/apimachinery/pkg/util/intstr"
3840
"k8s.io/apimachinery/pkg/util/sets"
3941
"k8s.io/client-go/tools/record"
@@ -1483,8 +1485,9 @@ func TestMachineSetReconciler_syncMachines(t *testing.T) {
14831485
machines: machines,
14841486
getAndAdoptMachinesForMachineSetSucceeded: true,
14851487
}
1486-
_, err = reconciler.syncMachines(ctx, s)
1488+
_, stopReconcile, err := reconciler.syncMachines(ctx, s)
14871489
g.Expect(err).ToNot(HaveOccurred())
1490+
g.Expect(stopReconcile).To(BeFalse())
14881491

14891492
updatedInPlaceMutatingMachine := inPlaceMutatingMachine.DeepCopy()
14901493
g.Eventually(func(g Gomega) {
@@ -1592,8 +1595,9 @@ func TestMachineSetReconciler_syncMachines(t *testing.T) {
15921595
machines: []*clusterv1.Machine{updatedInPlaceMutatingMachine, deletingMachine},
15931596
getAndAdoptMachinesForMachineSetSucceeded: true,
15941597
}
1595-
_, err = reconciler.syncMachines(ctx, s)
1598+
_, stopReconcile, err = reconciler.syncMachines(ctx, s)
15961599
g.Expect(err).ToNot(HaveOccurred())
1600+
g.Expect(stopReconcile).To(BeFalse())
15971601

15981602
// Verify in-place mutable fields are updated on the Machine.
15991603
updatedInPlaceMutatingMachine = inPlaceMutatingMachine.DeepCopy()
@@ -1671,6 +1675,59 @@ func TestMachineSetReconciler_syncMachines(t *testing.T) {
16711675
deletingMachine.Spec.ReadinessGates = ms.Spec.Template.Spec.ReadinessGates
16721676
deletingMachine.Spec.Taints = machineTaints
16731677
g.Expect(updatedDeletingMachine.Spec).Should(BeComparableTo(deletingMachine.Spec))
1678+
1679+
//
1680+
// Verify managedField mitigation
1681+
//
1682+
1683+
// Purge managedFields from objects.
1684+
jsonPatch := []map[string]interface{}{
1685+
{
1686+
"op": "replace",
1687+
"path": "/metadata/managedFields",
1688+
"value": []metav1.ManagedFieldsEntry{{}},
1689+
},
1690+
}
1691+
patch, err := json.Marshal(jsonPatch)
1692+
g.Expect(err).ToNot(HaveOccurred())
1693+
for _, object := range []client.Object{updatedInPlaceMutatingMachine, updatedInfraMachine, updatedBootstrapConfig} {
1694+
g.Expect(env.Client.Patch(ctx, object, client.RawPatch(types.JSONPatchType, patch))).To(Succeed())
1695+
g.Expect(object.GetManagedFields()).To(HaveLen(0))
1696+
}
1697+
1698+
// syncMachines to run mitigation code.
1699+
m := *updatedInPlaceMutatingMachine
1700+
s = &scope{
1701+
machineSet: ms,
1702+
machines: []*clusterv1.Machine{&m},
1703+
getAndAdoptMachinesForMachineSetSucceeded: true,
1704+
}
1705+
_, stopReconcile, err = reconciler.syncMachines(ctx, s)
1706+
g.Expect(err).ToNot(HaveOccurred())
1707+
g.Expect(stopReconcile).To(BeTrue())
1708+
1709+
// verify mitigation worked
1710+
g.Expect(env.GetAPIReader().Get(ctx, client.ObjectKeyFromObject(&m), &m)).To(Succeed())
1711+
g.Expect(cleanupTime(m.GetManagedFields())).To(ConsistOf(toManagedFields([]managedFieldEntry{{
1712+
APIVersion: clusterv1.GroupVersion.String(),
1713+
Manager: machineSetManagerName, // matches manager of next Apply.
1714+
Operation: metav1.ManagedFieldsOperationApply,
1715+
FieldsV1: `{"f:metadata":{"f:name":{}}}`,
1716+
}})))
1717+
g.Expect(env.GetAPIReader().Get(ctx, client.ObjectKeyFromObject(updatedInfraMachine), updatedInfraMachine)).To(Succeed())
1718+
g.Expect(cleanupTime(updatedInfraMachine.GetManagedFields())).To(ConsistOf(toManagedFields([]managedFieldEntry{{
1719+
APIVersion: updatedInfraMachine.GetAPIVersion(),
1720+
Manager: machineSetMetadataManagerName, // matches manager of next Apply.
1721+
Operation: metav1.ManagedFieldsOperationApply,
1722+
FieldsV1: `{"f:metadata":{"f:name":{}}}`,
1723+
}})))
1724+
g.Expect(env.GetAPIReader().Get(ctx, client.ObjectKeyFromObject(updatedBootstrapConfig), updatedBootstrapConfig)).To(Succeed())
1725+
g.Expect(cleanupTime(updatedBootstrapConfig.GetManagedFields())).To(ConsistOf(toManagedFields([]managedFieldEntry{{
1726+
APIVersion: updatedBootstrapConfig.GetAPIVersion(),
1727+
Manager: machineSetMetadataManagerName, // matches manager of next Apply.
1728+
Operation: metav1.ManagedFieldsOperationApply,
1729+
FieldsV1: `{"f:metadata":{"f:name":{}}}`,
1730+
}})))
16741731
}
16751732

16761733
func TestMachineSetReconciler_reconcileUnhealthyMachines(t *testing.T) {
@@ -3980,8 +4037,9 @@ func TestReconciler_reconcileDelete(t *testing.T) {
39804037
}
39814038

39824039
// populate s.machines
3983-
_, err := r.getAndAdoptMachinesForMachineSet(ctx, s)
4040+
_, stopReconcile, err := r.getAndAdoptMachinesForMachineSet(ctx, s)
39844041
g.Expect(err).ToNot(HaveOccurred())
4042+
g.Expect(stopReconcile).To(BeFalse())
39854043
_, err = r.reconcileDelete(ctx, s)
39864044
if tt.expectError {
39874045
g.Expect(err).To(HaveOccurred())

internal/controllers/topology/cluster/cluster_controller.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -384,11 +384,11 @@ func (r *Reconciler) reconcile(ctx context.Context, s *scope.Scope) (ctrl.Result
384384
return ctrl.Result{}, errors.Wrap(err, "error creating dynamic watch")
385385
}
386386

387-
changed, err := r.mitigateManagedFieldsIssue(ctx, s)
387+
anyManagedFieldIssueMitigated, err := r.mitigateManagedFieldsIssue(ctx, s)
388388
if err != nil {
389389
return ctrl.Result{}, err
390390
}
391-
if changed {
391+
if anyManagedFieldIssueMitigated {
392392
return ctrl.Result{}, nil // No requeue needed, changes will trigger another reconcile.
393393
}
394394

internal/controllers/topology/cluster/managedfieldsmitigation.go

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -29,76 +29,76 @@ func (r *Reconciler) mitigateManagedFieldsIssue(ctx context.Context, s *scope.Sc
2929
return false, nil
3030
}
3131

32-
anyChanged, err := ssa.MitigateManagedFieldsIssue(ctx, r.Client, s.Current.Cluster, structuredmerge.TopologyManagerName)
32+
anyManagedFieldIssueMitigated, err := ssa.MitigateManagedFieldsIssue(ctx, r.Client, s.Current.Cluster, structuredmerge.TopologyManagerName)
3333
if err != nil {
3434
return false, err
3535
}
3636

37-
changed, err := ssa.MitigateManagedFieldsIssue(ctx, r.Client, s.Current.InfrastructureCluster, structuredmerge.TopologyManagerName)
37+
managedFieldIssueMitigated, err := ssa.MitigateManagedFieldsIssue(ctx, r.Client, s.Current.InfrastructureCluster, structuredmerge.TopologyManagerName)
3838
if err != nil {
3939
return false, err
4040
}
41-
anyChanged = anyChanged || changed
41+
anyManagedFieldIssueMitigated = anyManagedFieldIssueMitigated || managedFieldIssueMitigated
4242

4343
if s.Current.ControlPlane != nil {
44-
changed, err := ssa.MitigateManagedFieldsIssue(ctx, r.Client, s.Current.ControlPlane.Object, structuredmerge.TopologyManagerName)
44+
managedFieldIssueMitigated, err := ssa.MitigateManagedFieldsIssue(ctx, r.Client, s.Current.ControlPlane.Object, structuredmerge.TopologyManagerName)
4545
if err != nil {
4646
return false, err
4747
}
48-
anyChanged = anyChanged || changed
48+
anyManagedFieldIssueMitigated = anyManagedFieldIssueMitigated || managedFieldIssueMitigated
4949

50-
changed, err = ssa.MitigateManagedFieldsIssue(ctx, r.Client, s.Current.ControlPlane.InfrastructureMachineTemplate, structuredmerge.TopologyManagerName)
50+
managedFieldIssueMitigated, err = ssa.MitigateManagedFieldsIssue(ctx, r.Client, s.Current.ControlPlane.InfrastructureMachineTemplate, structuredmerge.TopologyManagerName)
5151
if err != nil {
5252
return false, err
5353
}
54-
anyChanged = anyChanged || changed
54+
anyManagedFieldIssueMitigated = anyManagedFieldIssueMitigated || managedFieldIssueMitigated
5555
}
5656

5757
for _, md := range s.Current.MachineDeployments{
58-
changed, err := ssa.MitigateManagedFieldsIssue(ctx, r.Client, md.MachineHealthCheck, structuredmerge.TopologyManagerName)
58+
managedFieldIssueMitigated, err := ssa.MitigateManagedFieldsIssue(ctx, r.Client, md.MachineHealthCheck, structuredmerge.TopologyManagerName)
5959
if err != nil {
6060
return false, err
6161
}
62-
anyChanged = anyChanged || changed
62+
anyManagedFieldIssueMitigated = anyManagedFieldIssueMitigated || managedFieldIssueMitigated
6363

64-
changed, err = ssa.MitigateManagedFieldsIssue(ctx, r.Client, md.Object, structuredmerge.TopologyManagerName)
64+
managedFieldIssueMitigated, err = ssa.MitigateManagedFieldsIssue(ctx, r.Client, md.Object, structuredmerge.TopologyManagerName)
6565
if err != nil {
6666
return false, err
6767
}
68-
anyChanged = anyChanged || changed
68+
anyManagedFieldIssueMitigated = anyManagedFieldIssueMitigated || managedFieldIssueMitigated
6969

70-
changed, err = ssa.MitigateManagedFieldsIssue(ctx, r.Client, md.InfrastructureMachineTemplate, structuredmerge.TopologyManagerName)
70+
managedFieldIssueMitigated, err = ssa.MitigateManagedFieldsIssue(ctx, r.Client, md.InfrastructureMachineTemplate, structuredmerge.TopologyManagerName)
7171
if err != nil {
7272
return false, err
7373
}
74-
anyChanged = anyChanged || changed
74+
anyManagedFieldIssueMitigated = anyManagedFieldIssueMitigated || managedFieldIssueMitigated
7575

76-
changed, err = ssa.MitigateManagedFieldsIssue(ctx, r.Client, md.BootstrapTemplate, structuredmerge.TopologyManagerName)
76+
managedFieldIssueMitigated, err = ssa.MitigateManagedFieldsIssue(ctx, r.Client, md.BootstrapTemplate, structuredmerge.TopologyManagerName)
7777
if err != nil {
7878
return false, err
7979
}
80-
anyChanged = anyChanged || changed
80+
anyManagedFieldIssueMitigated = anyManagedFieldIssueMitigated || managedFieldIssueMitigated
8181
}
8282

8383
for _, mp := range s.Current.MachinePools{
84-
changed, err := ssa.MitigateManagedFieldsIssue(ctx, r.Client, mp.Object, structuredmerge.TopologyManagerName)
84+
managedFieldIssueMitigated, err := ssa.MitigateManagedFieldsIssue(ctx, r.Client, mp.Object, structuredmerge.TopologyManagerName)
8585
if err != nil {
8686
return false, err
8787
}
88-
anyChanged = anyChanged || changed
88+
anyManagedFieldIssueMitigated = anyManagedFieldIssueMitigated || managedFieldIssueMitigated
8989

90-
changed, err = ssa.MitigateManagedFieldsIssue(ctx, r.Client, mp.InfrastructureMachinePoolObject, structuredmerge.TopologyManagerName)
90+
managedFieldIssueMitigated, err = ssa.MitigateManagedFieldsIssue(ctx, r.Client, mp.InfrastructureMachinePoolObject, structuredmerge.TopologyManagerName)
9191
if err != nil {
9292
return false, err
9393
}
94-
anyChanged = anyChanged || changed
94+
anyManagedFieldIssueMitigated = anyManagedFieldIssueMitigated || managedFieldIssueMitigated
9595

96-
changed, err = ssa.MitigateManagedFieldsIssue(ctx, r.Client, mp.BootstrapObject, structuredmerge.TopologyManagerName)
96+
managedFieldIssueMitigated, err = ssa.MitigateManagedFieldsIssue(ctx, r.Client, mp.BootstrapObject, structuredmerge.TopologyManagerName)
9797
if err != nil {
9898
return false, err
9999
}
100-
anyChanged = anyChanged || changed
100+
anyManagedFieldIssueMitigated = anyManagedFieldIssueMitigated || managedFieldIssueMitigated
101101
}
102102

103-
return anyChanged, nil
103+
return anyManagedFieldIssueMitigated, nil
104104
}

0 commit comments

Comments
 (0)