Skip to content

Commit c5c87bd

Browse files
authored
Merge pull request #132004 from alvaroaleman/fix-fasf
ManagedFieldsObjectTracker: Reload scheme
2 parents fc0e3bf + 1cd71cb commit c5c87bd

File tree

2 files changed

+32
-7
lines changed

2 files changed

+32
-7
lines changed

staging/src/k8s.io/client-go/testing/fixture.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -631,7 +631,7 @@ type managedFieldObjectTracker struct {
631631
ObjectTracker
632632
scheme ObjectScheme
633633
objectConverter runtime.ObjectConvertor
634-
mapper meta.RESTMapper
634+
mapper func() meta.RESTMapper
635635
typeConverter managedfields.TypeConverter
636636
}
637637

@@ -644,8 +644,10 @@ func NewFieldManagedObjectTracker(scheme *runtime.Scheme, decoder runtime.Decode
644644
ObjectTracker: NewObjectTracker(scheme, decoder),
645645
scheme: scheme,
646646
objectConverter: scheme,
647-
mapper: testrestmapper.TestOnlyStaticRESTMapper(scheme),
648-
typeConverter: typeConverter,
647+
mapper: func() meta.RESTMapper {
648+
return testrestmapper.TestOnlyStaticRESTMapper(scheme)
649+
},
650+
typeConverter: typeConverter,
649651
}
650652
}
651653

@@ -654,7 +656,7 @@ func (t *managedFieldObjectTracker) Create(gvr schema.GroupVersionResource, obj
654656
if err != nil {
655657
return err
656658
}
657-
gvk, err := t.mapper.KindFor(gvr)
659+
gvk, err := t.mapper().KindFor(gvr)
658660
if err != nil {
659661
return err
660662
}
@@ -698,8 +700,9 @@ func (t *managedFieldObjectTracker) Update(gvr schema.GroupVersionResource, obj
698700
if err != nil {
699701
return err
700702
}
701-
gvk, err := t.mapper.KindFor(gvr)
703+
gvk, err := t.mapper().KindFor(gvr)
702704
if err != nil {
705+
println("kindfor")
703706
return err
704707
}
705708
mgr, err := t.fieldManagerFor(gvk)
@@ -728,7 +731,7 @@ func (t *managedFieldObjectTracker) Patch(gvr schema.GroupVersionResource, patch
728731
if err != nil {
729732
return err
730733
}
731-
gvk, err := t.mapper.KindFor(gvr)
734+
gvk, err := t.mapper().KindFor(gvr)
732735
if err != nil {
733736
return err
734737
}
@@ -757,7 +760,7 @@ func (t *managedFieldObjectTracker) Apply(gvr schema.GroupVersionResource, apply
757760
if err != nil {
758761
return err
759762
}
760-
gvk, err := t.mapper.KindFor(gvr)
763+
gvk, err := t.mapper().KindFor(gvr)
761764
if err != nil {
762765
return err
763766
}

staging/src/k8s.io/client-go/testing/fixture_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -661,3 +661,25 @@ var configMapTypedSchema = typed.YAMLObject(`types:
661661
namedType: __untyped_deduced_
662662
elementRelationship: separable
663663
`)
664+
665+
func TestManagedFieldsObjectTrackerReloadsScheme(t *testing.T) {
666+
cmResource := schema.GroupVersionResource{Version: "v1", Resource: "configmaps"}
667+
scheme := runtime.NewScheme()
668+
codecs := serializer.NewCodecFactory(scheme)
669+
670+
// Create tracker without registered ConfigMap type
671+
tracker := NewFieldManagedObjectTracker(scheme, codecs.UniversalDecoder(), configMapTypeConverter(scheme))
672+
673+
cm := &v1.ConfigMap{
674+
ObjectMeta: metav1.ObjectMeta{
675+
Name: "test-cm",
676+
},
677+
Data: map[string]string{"key": "value"},
678+
}
679+
680+
// Register the type in scheme
681+
scheme.AddKnownTypes(cmResource.GroupVersion(), &v1.ConfigMap{})
682+
683+
err := tracker.Create(cmResource, cm, "default", metav1.CreateOptions{FieldManager: "test-manager"})
684+
assert.NoError(t, err, "Create should succeed after registering type")
685+
}

0 commit comments

Comments
 (0)