diff --git a/pkg/podgrouper/podgrouper/hub/hub.go b/pkg/podgrouper/podgrouper/hub/hub.go index 2e72295a9..1514ae2c5 100644 --- a/pkg/podgrouper/podgrouper/hub/hub.go +++ b/pkg/podgrouper/podgrouper/hub/hub.go @@ -82,7 +82,11 @@ func (ph *DefaultPluginsHub) GetDefaultPlugin() grouper.Grouper { } func (ph *DefaultPluginsHub) HasMatchingPlugin(gvk metav1.GroupVersionKind) bool { - // search using wildcard version - this hub will return a plugin even if the version is not exact match + if _, found := ph.customPlugins[gvk]; found { + return true + } + + // search using wildcard version gvk.Version = "*" if _, found := ph.customPlugins[gvk]; found { return true diff --git a/pkg/podgrouper/podgrouper/hub/hub_test.go b/pkg/podgrouper/podgrouper/hub/hub_test.go index f35a42026..ae6603ceb 100644 --- a/pkg/podgrouper/podgrouper/hub/hub_test.go +++ b/pkg/podgrouper/podgrouper/hub/hub_test.go @@ -49,6 +49,16 @@ var _ = Describe("SupportedTypes", func() { Expect(plugin.Name()).To(BeEquivalentTo("TensorFlow Grouper")) }) + It("should return plugin for exact GVK match - HasMatchingPlugin function", func() { + gvk := metav1.GroupVersionKind{ + Group: "kubeflow.org", + Version: "v1", + Kind: "TFJob", + } + hasPlugin := hub.HasMatchingPlugin(gvk) + Expect(hasPlugin).To(BeTrue()) + }) + It("should return default plugin for non-existent GVK", func() { gvk := metav1.GroupVersionKind{ Group: "non-existent-group", @@ -59,6 +69,16 @@ var _ = Describe("SupportedTypes", func() { Expect(plugin).NotTo(BeNil()) Expect(plugin.Name()).To(BeEquivalentTo("Default Grouper")) }) + + It("non-existent GVK - HasMatchingPlugin returns false", func() { + gvk := metav1.GroupVersionKind{ + Group: "non-existent-group", + Version: "v1", + Kind: "NonExistentKind", + } + hasPlugin := hub.HasMatchingPlugin(gvk) + Expect(hasPlugin).To(BeFalse()) + }) }) Context("Wildcard Version Tests", func() {