From 15c5713015ed2f82e281f1b40beaf9ceffb4d982 Mon Sep 17 00:00:00 2001 From: Antoine Pelisse Date: Tue, 9 May 2023 10:35:55 -0700 Subject: [PATCH] managedfields: Remove gvk from SkipNonApplied Let's remove the dependency on the GVK in SkipNonApplied internal manager, since we can deduce the type from the given object. --- .../util/managedfields/internal/fieldmanager.go | 2 +- .../util/managedfields/internal/skipnonapplied.go | 14 ++++++-------- .../managedfields/internal/skipnonapplied_test.go | 12 ++---------- .../internal/testing/testfieldmanager.go | 2 +- 4 files changed, 10 insertions(+), 20 deletions(-) diff --git a/staging/src/k8s.io/apimachinery/pkg/util/managedfields/internal/fieldmanager.go b/staging/src/k8s.io/apimachinery/pkg/util/managedfields/internal/fieldmanager.go index 5e21cfa00b1..eca04a71163 100644 --- a/staging/src/k8s.io/apimachinery/pkg/util/managedfields/internal/fieldmanager.go +++ b/staging/src/k8s.io/apimachinery/pkg/util/managedfields/internal/fieldmanager.go @@ -66,7 +66,7 @@ func NewDefaultFieldManager(f Manager, typeConverter TypeConverter, objectConver NewStripMetaManager(f), ), kind.GroupVersion(), subresource, ), DefaultMaxUpdateManagers, - ), objectCreater, kind, DefaultTrackOnCreateProbability, + ), objectCreater, DefaultTrackOnCreateProbability, ), typeConverter, objectConverter, kind.GroupVersion(), ), ), kind, diff --git a/staging/src/k8s.io/apimachinery/pkg/util/managedfields/internal/skipnonapplied.go b/staging/src/k8s.io/apimachinery/pkg/util/managedfields/internal/skipnonapplied.go index 6b281ec1e57..f24c040edd0 100644 --- a/staging/src/k8s.io/apimachinery/pkg/util/managedfields/internal/skipnonapplied.go +++ b/staging/src/k8s.io/apimachinery/pkg/util/managedfields/internal/skipnonapplied.go @@ -22,13 +22,11 @@ import ( "k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/schema" ) type skipNonAppliedManager struct { fieldManager Manager objectCreater runtime.ObjectCreater - gvk schema.GroupVersionKind beforeApplyManagerName string probability float32 } @@ -36,17 +34,16 @@ type skipNonAppliedManager struct { var _ Manager = &skipNonAppliedManager{} // NewSkipNonAppliedManager creates a new wrapped FieldManager that only starts tracking managers after the first apply. -func NewSkipNonAppliedManager(fieldManager Manager, objectCreater runtime.ObjectCreater, gvk schema.GroupVersionKind) Manager { - return NewProbabilisticSkipNonAppliedManager(fieldManager, objectCreater, gvk, 0.0) +func NewSkipNonAppliedManager(fieldManager Manager, objectCreater runtime.ObjectCreater) Manager { + return NewProbabilisticSkipNonAppliedManager(fieldManager, objectCreater, 0.0) } // NewProbabilisticSkipNonAppliedManager creates a new wrapped FieldManager that starts tracking managers after the first apply, // or starts tracking on create with p probability. -func NewProbabilisticSkipNonAppliedManager(fieldManager Manager, objectCreater runtime.ObjectCreater, gvk schema.GroupVersionKind, p float32) Manager { +func NewProbabilisticSkipNonAppliedManager(fieldManager Manager, objectCreater runtime.ObjectCreater, p float32) Manager { return &skipNonAppliedManager{ fieldManager: fieldManager, objectCreater: objectCreater, - gvk: gvk, beforeApplyManagerName: "before-first-apply", probability: p, } @@ -78,9 +75,10 @@ func (f *skipNonAppliedManager) Update(liveObj, newObj runtime.Object, managed M // Apply implements Manager. func (f *skipNonAppliedManager) Apply(liveObj, appliedObj runtime.Object, managed Managed, fieldManager string, force bool) (runtime.Object, Managed, error) { if len(managed.Fields()) == 0 { - emptyObj, err := f.objectCreater.New(f.gvk) + gvk := appliedObj.GetObjectKind().GroupVersionKind() + emptyObj, err := f.objectCreater.New(gvk) if err != nil { - return nil, nil, fmt.Errorf("failed to create empty object of type %v: %v", f.gvk, err) + return nil, nil, fmt.Errorf("failed to create empty object of type %v: %v", gvk, err) } liveObj, managed, err = f.fieldManager.Update(emptyObj, liveObj, managed, f.beforeApplyManagerName) if err != nil { diff --git a/staging/src/k8s.io/apimachinery/pkg/util/managedfields/internal/skipnonapplied_test.go b/staging/src/k8s.io/apimachinery/pkg/util/managedfields/internal/skipnonapplied_test.go index d38e695ded8..2863a76326e 100644 --- a/staging/src/k8s.io/apimachinery/pkg/util/managedfields/internal/skipnonapplied_test.go +++ b/staging/src/k8s.io/apimachinery/pkg/util/managedfields/internal/skipnonapplied_test.go @@ -31,11 +31,7 @@ import ( func TestNoUpdateBeforeFirstApply(t *testing.T) { f := internaltesting.NewTestFieldManagerImpl(fakeTypeConverter, schema.FromAPIVersionAndKind("v1", "Pod"), "", func(m internal.Manager) internal.Manager { - return internal.NewSkipNonAppliedManager( - m, - &internaltesting.FakeObjectCreater{}, - schema.FromAPIVersionAndKind("v1", "Pod"), - ) + return internal.NewSkipNonAppliedManager(m, &internaltesting.FakeObjectCreater{}) }) appliedObj := &unstructured.Unstructured{Object: map[string]interface{}{}} @@ -71,11 +67,7 @@ func TestNoUpdateBeforeFirstApply(t *testing.T) { func TestUpdateBeforeFirstApply(t *testing.T) { f := internaltesting.NewTestFieldManagerImpl(fakeTypeConverter, schema.FromAPIVersionAndKind("v1", "Pod"), "", func(m internal.Manager) internal.Manager { - return internal.NewSkipNonAppliedManager( - m, - &internaltesting.FakeObjectCreater{}, - schema.FromAPIVersionAndKind("v1", "Pod"), - ) + return internal.NewSkipNonAppliedManager(m, &internaltesting.FakeObjectCreater{}) }) updatedObj := &unstructured.Unstructured{} diff --git a/staging/src/k8s.io/apimachinery/pkg/util/managedfields/internal/testing/testfieldmanager.go b/staging/src/k8s.io/apimachinery/pkg/util/managedfields/internal/testing/testfieldmanager.go index 83747242c0a..1799896b577 100644 --- a/staging/src/k8s.io/apimachinery/pkg/util/managedfields/internal/testing/testfieldmanager.go +++ b/staging/src/k8s.io/apimachinery/pkg/util/managedfields/internal/testing/testfieldmanager.go @@ -145,7 +145,7 @@ func NewTestFieldManagerImpl(typeConverter managedfields.TypeConverter, gvk sche internal.NewManagedFieldsUpdater( internal.NewStripMetaManager(f), ), gvk.GroupVersion(), subresource, - ), &FakeObjectCreater{}, gvk, internal.DefaultTrackOnCreateProbability, + ), &FakeObjectCreater{}, internal.DefaultTrackOnCreateProbability, ), typeConverter, &FakeObjectConvertor{}, gvk.GroupVersion(), ), ), gvk,