Skip to content

Commit d508417

Browse files
authored
Merge pull request #4554 from yanfeng1992/fix-member-apienable
search add check member cluster api enable
2 parents 23c51ec + b6ff5b8 commit d508417

File tree

3 files changed

+41
-2
lines changed

3 files changed

+41
-2
lines changed

pkg/search/controller.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ import (
4646
"github.com/karmada-io/karmada/pkg/util/fedinformer"
4747
"github.com/karmada-io/karmada/pkg/util/fedinformer/genericmanager"
4848
"github.com/karmada-io/karmada/pkg/util/gclient"
49+
"github.com/karmada-io/karmada/pkg/util/helper"
4950
"github.com/karmada-io/karmada/pkg/util/restmapper"
5051
)
5152

@@ -401,10 +402,18 @@ func (c *Controller) doCacheCluster(cluster string) error {
401402

402403
sci := c.InformerManager.GetSingleClusterManager(cluster)
403404
for gvr := range cr.resources {
405+
gvk, err := c.restMapper.KindFor(gvr)
406+
if err != nil {
407+
klog.Errorf("Failed to get gvk: %v", err)
408+
continue
409+
}
410+
if !helper.IsAPIEnabled(cls.Status.APIEnablements, gvk.GroupVersion().String(), gvk.Kind) {
411+
klog.Warningf("Resource %s is not enabled for cluster %s", gvr.String(), cluster)
412+
continue
413+
}
404414
klog.Infof("Add informer for %s, %v", cluster, gvr)
405415
sci.ForResource(gvr, handler)
406416
}
407-
408417
klog.Infof("Start informer for %s", cluster)
409418
sci.Start()
410419
_ = sci.WaitForCacheSync()
@@ -486,7 +495,8 @@ func (c *Controller) updateCluster(oldObj, curObj interface{}) {
486495
c.queue.Add(curCluster.GetName())
487496
}
488497

489-
if !reflect.DeepEqual(curCluster.Spec, oldCluster.Spec) || !reflect.DeepEqual(curCluster.Labels, oldCluster.Labels) {
498+
if !reflect.DeepEqual(curCluster.Spec, oldCluster.Spec) || !reflect.DeepEqual(curCluster.Labels, oldCluster.Labels) ||
499+
!reflect.DeepEqual(curCluster.Status.APIEnablements, oldCluster.Status.APIEnablements) {
490500
c.queue.Add(curCluster.GetName())
491501
}
492502
}

pkg/search/proxy/controller.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ import (
4747
pluginruntime "github.com/karmada-io/karmada/pkg/search/proxy/framework/runtime"
4848
"github.com/karmada-io/karmada/pkg/search/proxy/store"
4949
"github.com/karmada-io/karmada/pkg/util"
50+
"github.com/karmada-io/karmada/pkg/util/helper"
5051
"github.com/karmada-io/karmada/pkg/util/lifted"
5152
"github.com/karmada-io/karmada/pkg/util/restmapper"
5253
)
@@ -223,6 +224,15 @@ func (ctl *Controller) reconcile(util.QueueKey) error {
223224
}
224225

225226
for resource, multiNS := range matchedResources {
227+
gvk, err := ctl.restMapper.KindFor(resource)
228+
if err != nil {
229+
klog.Errorf("Failed to get gvk: %v", err)
230+
continue
231+
}
232+
if !helper.IsAPIEnabled(cluster.Status.APIEnablements, gvk.GroupVersion().String(), gvk.Kind) {
233+
klog.Warningf("Resource %s is not enabled for cluster %s", resource.String(), cluster)
234+
continue
235+
}
226236
resourcesByClusters[cluster.Name][resource] = multiNS
227237
}
228238
}

pkg/search/proxy/controller_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,9 +510,28 @@ func TestController_Connect_Error(t *testing.T) {
510510

511511
func newCluster(name string) *clusterv1alpha1.Cluster {
512512
c := &clusterv1alpha1.Cluster{}
513+
clusterEnablements := []clusterv1alpha1.APIEnablement{
514+
{
515+
GroupVersion: "v1",
516+
Resources: []clusterv1alpha1.APIResource{
517+
{
518+
Kind: "Pod",
519+
},
520+
},
521+
},
522+
{
523+
GroupVersion: "v1",
524+
Resources: []clusterv1alpha1.APIResource{
525+
{
526+
Kind: "Node",
527+
},
528+
},
529+
},
530+
}
513531
c.Name = name
514532
conditions := make([]metav1.Condition, 0, 1)
515533
conditions = append(conditions, util.NewCondition(clusterv1alpha1.ClusterConditionReady, "", "", metav1.ConditionTrue))
516534
c.Status.Conditions = conditions
535+
c.Status.APIEnablements = clusterEnablements
517536
return c
518537
}

0 commit comments

Comments
 (0)