From db28b048d3c774ec4d31554a75dc061a81ce2deb Mon Sep 17 00:00:00 2001 From: Joe Lanford Date: Thu, 23 Mar 2023 14:08:08 -0400 Subject: [PATCH] Preserve unstructured object GVKs in cache.Options.ByObject Signed-off-by: Joe Lanford --- pkg/cache/cache.go | 1 + pkg/cache/cache_unit_test.go | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/pkg/cache/cache.go b/pkg/cache/cache.go index 3388b2915b..c4398777e1 100644 --- a/pkg/cache/cache.go +++ b/pkg/cache/cache.go @@ -481,6 +481,7 @@ func convertToByObject(in map[schema.GroupVersionKind]internal.InformersOptsByGV if !ok { return nil, fmt.Errorf("object %T for GVK %q does not implement client.Object", obj, gvk) } + cObj.GetObjectKind().SetGroupVersionKind(gvk) out[cObj] = ByObject{ Field: opts.Selector.Field, Label: opts.Selector.Label, diff --git a/pkg/cache/cache_unit_test.go b/pkg/cache/cache_unit_test.go index 8e2e56e718..1be46e7f79 100644 --- a/pkg/cache/cache_unit_test.go +++ b/pkg/cache/cache_unit_test.go @@ -126,6 +126,23 @@ var _ = Describe("cache.inheritFrom", func() { Expect(checkError(specified.inheritFrom(inherited)).Namespaces).To(Equal(specified.Namespaces)) }) }) + Context("ByObject", func() { + It("maintains GVKs of unstructured ByObject keys", func() { + gvk := gv.WithKind("Unstructured") + obj := &unstructured.Unstructured{} + obj.SetGroupVersionKind(gvk) + specified.Scheme = coreScheme + specified.Scheme.AddKnownTypeWithName(gvk, obj) + specified.ByObject = map[client.Object]ByObject{ + obj: {}, + } + byObject := checkError(specified.inheritFrom(inherited)).ByObject + Expect(byObject).To(HaveLen(1)) + for obj := range byObject { + Expect(obj.GetObjectKind().GroupVersionKind()).To(Equal(gvk)) + } + }) + }) Context("SelectorsByObject", func() { It("is unchanged when specified and inherited are unset", func() { Expect(checkError(specified.inheritFrom(inherited)).ByObject).To(HaveLen(0))