From 7a980fa842d524c7c2a6c6041db9928554842347 Mon Sep 17 00:00:00 2001 From: weilaaa Date: Fri, 6 Aug 2021 10:25:45 +0800 Subject: [PATCH] skip disabled gvr when new informers Signed-off-by: weilaaa --- pkg/util/detector/detector.go | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/pkg/util/detector/detector.go b/pkg/util/detector/detector.go index 393271445..9279d581b 100644 --- a/pkg/util/detector/detector.go +++ b/pkg/util/detector/detector.go @@ -148,7 +148,7 @@ func (d *ResourceDetector) discoverResources(period time.Duration) { wait.Until(func() { newResources := GetDeletableResources(d.DiscoveryClientSet) for r := range newResources { - if d.InformerManager.IsHandlerExist(r, d.EventHandler) { + if d.InformerManager.IsHandlerExist(r, d.EventHandler) || d.gvrDisabled(r) { continue } klog.Infof("Setup informer for %s", r.String()) @@ -158,6 +158,34 @@ func (d *ResourceDetector) discoverResources(period time.Duration) { }, period, d.stopCh) } +// gvrDisabled returns whether GroupVersionResource is disabled. +func (d *ResourceDetector) gvrDisabled(gvr schema.GroupVersionResource) bool { + if d.SkippedResourceConfig == nil { + return false + } + + if d.SkippedResourceConfig.GroupVersionDisabled(gvr.GroupVersion()) { + return true + } + if d.SkippedResourceConfig.GroupDisabled(gvr.Group) { + return true + } + + gvks, err := d.RESTMapper.KindsFor(gvr) + if err != nil { + klog.Errorf("gvr(%s) transform failed: %v", gvr.String(), err) + return false + } + + for _, gvk := range gvks { + if d.SkippedResourceConfig.GroupVersionKindDisabled(gvk) { + return true + } + } + + return false +} + // NeedLeaderElection implements LeaderElectionRunnable interface. // So that the detector could run in the leader election mode. func (d *ResourceDetector) NeedLeaderElection() bool {