mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-09 12:07:47 +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),
|
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,
|
||||||
|
@ -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 {
|
||||||
|
@ -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{}
|
||||||
|
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user