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.
This commit is contained in:
Antoine Pelisse 2023-05-09 10:35:55 -07:00
parent b52e57c589
commit 15c5713015
4 changed files with 10 additions and 20 deletions

View File

@ -66,7 +66,7 @@ func NewDefaultFieldManager(f Manager, typeConverter TypeConverter, objectConver
NewStripMetaManager(f), NewStripMetaManager(f),
), kind.GroupVersion(), subresource, ), kind.GroupVersion(), subresource,
), DefaultMaxUpdateManagers, ), DefaultMaxUpdateManagers,
), objectCreater, kind, DefaultTrackOnCreateProbability, ), objectCreater, DefaultTrackOnCreateProbability,
), typeConverter, objectConverter, kind.GroupVersion(), ), typeConverter, objectConverter, kind.GroupVersion(),
), ),
), kind, ), kind,

View File

@ -22,13 +22,11 @@ import (
"k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
) )
type skipNonAppliedManager struct { type skipNonAppliedManager struct {
fieldManager Manager fieldManager Manager
objectCreater runtime.ObjectCreater objectCreater runtime.ObjectCreater
gvk schema.GroupVersionKind
beforeApplyManagerName string beforeApplyManagerName string
probability float32 probability float32
} }
@ -36,17 +34,16 @@ type skipNonAppliedManager struct {
var _ Manager = &skipNonAppliedManager{} var _ Manager = &skipNonAppliedManager{}
// NewSkipNonAppliedManager creates a new wrapped FieldManager that only starts tracking managers after the first apply. // 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 { func NewSkipNonAppliedManager(fieldManager Manager, objectCreater runtime.ObjectCreater) Manager {
return NewProbabilisticSkipNonAppliedManager(fieldManager, objectCreater, gvk, 0.0) return NewProbabilisticSkipNonAppliedManager(fieldManager, objectCreater, 0.0)
} }
// NewProbabilisticSkipNonAppliedManager creates a new wrapped FieldManager that starts tracking managers after the first apply, // NewProbabilisticSkipNonAppliedManager creates a new wrapped FieldManager that starts tracking managers after the first apply,
// or starts tracking on create with p probability. // 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{ return &skipNonAppliedManager{
fieldManager: fieldManager, fieldManager: fieldManager,
objectCreater: objectCreater, objectCreater: objectCreater,
gvk: gvk,
beforeApplyManagerName: "before-first-apply", beforeApplyManagerName: "before-first-apply",
probability: p, probability: p,
} }
@ -78,9 +75,10 @@ func (f *skipNonAppliedManager) Update(liveObj, newObj runtime.Object, managed M
// Apply implements Manager. // Apply implements Manager.
func (f *skipNonAppliedManager) Apply(liveObj, appliedObj runtime.Object, managed Managed, fieldManager string, force bool) (runtime.Object, Managed, error) { func (f *skipNonAppliedManager) Apply(liveObj, appliedObj runtime.Object, managed Managed, fieldManager string, force bool) (runtime.Object, Managed, error) {
if len(managed.Fields()) == 0 { 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 { 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) liveObj, managed, err = f.fieldManager.Update(emptyObj, liveObj, managed, f.beforeApplyManagerName)
if err != nil { if err != nil {

View File

@ -31,11 +31,7 @@ import (
func TestNoUpdateBeforeFirstApply(t *testing.T) { func TestNoUpdateBeforeFirstApply(t *testing.T) {
f := internaltesting.NewTestFieldManagerImpl(fakeTypeConverter, schema.FromAPIVersionAndKind("v1", "Pod"), "", func(m internal.Manager) internal.Manager { f := internaltesting.NewTestFieldManagerImpl(fakeTypeConverter, schema.FromAPIVersionAndKind("v1", "Pod"), "", func(m internal.Manager) internal.Manager {
return internal.NewSkipNonAppliedManager( return internal.NewSkipNonAppliedManager(m, &internaltesting.FakeObjectCreater{})
m,
&internaltesting.FakeObjectCreater{},
schema.FromAPIVersionAndKind("v1", "Pod"),
)
}) })
appliedObj := &unstructured.Unstructured{Object: map[string]interface{}{}} appliedObj := &unstructured.Unstructured{Object: map[string]interface{}{}}
@ -71,11 +67,7 @@ func TestNoUpdateBeforeFirstApply(t *testing.T) {
func TestUpdateBeforeFirstApply(t *testing.T) { func TestUpdateBeforeFirstApply(t *testing.T) {
f := internaltesting.NewTestFieldManagerImpl(fakeTypeConverter, schema.FromAPIVersionAndKind("v1", "Pod"), "", func(m internal.Manager) internal.Manager { f := internaltesting.NewTestFieldManagerImpl(fakeTypeConverter, schema.FromAPIVersionAndKind("v1", "Pod"), "", func(m internal.Manager) internal.Manager {
return internal.NewSkipNonAppliedManager( return internal.NewSkipNonAppliedManager(m, &internaltesting.FakeObjectCreater{})
m,
&internaltesting.FakeObjectCreater{},
schema.FromAPIVersionAndKind("v1", "Pod"),
)
}) })
updatedObj := &unstructured.Unstructured{} updatedObj := &unstructured.Unstructured{}

View File

@ -145,7 +145,7 @@ func NewTestFieldManagerImpl(typeConverter managedfields.TypeConverter, gvk sche
internal.NewManagedFieldsUpdater( internal.NewManagedFieldsUpdater(
internal.NewStripMetaManager(f), internal.NewStripMetaManager(f),
), gvk.GroupVersion(), subresource, ), gvk.GroupVersion(), subresource,
), &FakeObjectCreater{}, gvk, internal.DefaultTrackOnCreateProbability, ), &FakeObjectCreater{}, internal.DefaultTrackOnCreateProbability,
), typeConverter, &FakeObjectConvertor{}, gvk.GroupVersion(), ), typeConverter, &FakeObjectConvertor{}, gvk.GroupVersion(),
), ),
), gvk, ), gvk,