mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-08 11:38:15 +00:00
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:
parent
b52e57c589
commit
15c5713015
@ -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,
|
||||
|
@ -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 {
|
||||
|
@ -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{}
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user