Skip to content

Commit dd5c828

Browse files
authored
Merge pull request #2 from skeeey/grpc-server
add cluster label to kube informers
2 parents 003e8f1 + 3862030 commit dd5c828

File tree

2 files changed

+36
-10
lines changed

2 files changed

+36
-10
lines changed

pkg/server/grpc/server.go

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,31 +5,37 @@ import (
55
"crypto/tls"
66
"crypto/x509"
77
"fmt"
8-
"google.golang.org/grpc/credentials"
9-
"k8s.io/klog/v2"
108
"math"
119
"net"
12-
eventce "open-cluster-management.io/sdk-go/pkg/cloudevents/clients/event"
13-
leasece "open-cluster-management.io/sdk-go/pkg/cloudevents/clients/lease"
1410
"os"
1511
"time"
1612

13+
"google.golang.org/grpc/credentials"
14+
1715
"github.com/openshift/library-go/pkg/controller/controllercmd"
1816
"github.com/spf13/cobra"
1917
"github.com/spf13/pflag"
2018
"google.golang.org/grpc"
2119
"google.golang.org/grpc/keepalive"
20+
21+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2222
kubeinformers "k8s.io/client-go/informers"
2323
"k8s.io/client-go/kubernetes"
24-
2524
certutil "k8s.io/client-go/util/cert"
25+
"k8s.io/klog/v2"
26+
"k8s.io/utils/clock"
27+
2628
addonv1alpha1client "open-cluster-management.io/api/client/addon/clientset/versioned"
2729
addoninformers "open-cluster-management.io/api/client/addon/informers/externalversions"
2830
clusterv1client "open-cluster-management.io/api/client/cluster/clientset/versioned"
2931
clusterv1informers "open-cluster-management.io/api/client/cluster/informers/externalversions"
32+
clusterv1 "open-cluster-management.io/api/cluster/v1"
33+
3034
addonce "open-cluster-management.io/sdk-go/pkg/cloudevents/clients/addon"
3135
"open-cluster-management.io/sdk-go/pkg/cloudevents/clients/cluster"
3236
"open-cluster-management.io/sdk-go/pkg/cloudevents/clients/csr"
37+
eventce "open-cluster-management.io/sdk-go/pkg/cloudevents/clients/event"
38+
leasece "open-cluster-management.io/sdk-go/pkg/cloudevents/clients/lease"
3339
grpcserver "open-cluster-management.io/sdk-go/pkg/cloudevents/server/grpc"
3440

3541
commonoptions "open-cluster-management.io/ocm/pkg/common/options"
@@ -42,7 +48,7 @@ func NewGRPCServer() *cobra.Command {
4248
opts := commonoptions.NewOptions()
4349
grpcServerOpts := NewGRPCServerOptions()
4450
cmdConfig := opts.
45-
NewControllerCommandConfig("grpc-server", version.Get(), grpcServerOpts.Run)
51+
NewControllerCommandConfig("grpc-server", version.Get(), grpcServerOpts.Run, clock.RealClock{})
4652
cmd := cmdConfig.NewCommandWithContext(context.TODO())
4753
cmd.Use = "grpc-server"
4854
cmd.Short = "Start the gRPC Server"
@@ -188,7 +194,19 @@ func (o *GRPCServerOptions) Run(ctx context.Context, controllerContext *controll
188194
}
189195
addonInformers := addoninformers.NewSharedInformerFactory(addonClient, 10*time.Minute)
190196
clusterInformers := clusterv1informers.NewSharedInformerFactory(clusterClient, 30*time.Minute)
191-
kubeInformers := kubeinformers.NewSharedInformerFactory(kubeClient, 30*time.Minute)
197+
kubeInformers := kubeinformers.NewSharedInformerFactoryWithOptions(kubeClient, 30*time.Minute,
198+
kubeinformers.WithTweakListOptions(func(listOptions *metav1.ListOptions) {
199+
selector := &metav1.LabelSelector{
200+
MatchExpressions: []metav1.LabelSelectorRequirement{
201+
{
202+
Key: clusterv1.ClusterNameLabelKey,
203+
Operator: metav1.LabelSelectorOpExists,
204+
},
205+
},
206+
}
207+
listOptions.LabelSelector = metav1.FormatLabelSelector(selector)
208+
}))
209+
192210
grpcEventServer.RegisterService(
193211
cluster.ManagedClusterEventDataType,
194212
services.NewClusterService(clusterClient, clusterInformers.Cluster().V1().ManagedClusters()))
@@ -207,6 +225,7 @@ func (o *GRPCServerOptions) Run(ctx context.Context, controllerContext *controll
207225
leasece.LeaseEventDataType,
208226
services.NewLeaseService(kubeClient, kubeInformers.Coordination().V1().Leases()),
209227
)
228+
210229
go clusterInformers.Start(ctx.Done())
211230
go kubeInformers.Start(ctx.Done())
212231
go addonInformers.Start(ctx.Done())

pkg/server/services/lease.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,18 @@ package services
33
import (
44
"context"
55
"fmt"
6+
67
cloudevents "github.com/cloudevents/sdk-go/v2"
8+
79
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
810
"k8s.io/apimachinery/pkg/labels"
911
leasev1 "k8s.io/client-go/informers/coordination/v1"
1012
"k8s.io/client-go/kubernetes"
1113
leaselister "k8s.io/client-go/listers/coordination/v1"
1214
"k8s.io/client-go/tools/cache"
1315
"k8s.io/klog/v2"
14-
csrce "open-cluster-management.io/sdk-go/pkg/cloudevents/clients/csr"
16+
17+
clusterv1 "open-cluster-management.io/api/cluster/v1"
1518
leasece "open-cluster-management.io/sdk-go/pkg/cloudevents/clients/lease"
1619
"open-cluster-management.io/sdk-go/pkg/cloudevents/generic/types"
1720
"open-cluster-management.io/sdk-go/pkg/cloudevents/server"
@@ -40,7 +43,11 @@ func (l LeaseService) List(listOpts types.ListOptions) ([]*cloudevents.Event, er
4043
if len(listOpts.ClusterName) == 0 {
4144
return nil, fmt.Errorf("cluster name is empty")
4245
}
43-
leases, err := l.lister.Leases(listOpts.ClusterName).List(labels.Everything())
46+
47+
selector := labels.SelectorFromSet(labels.Set{
48+
clusterv1.ClusterNameLabelKey: listOpts.ClusterName,
49+
})
50+
leases, err := l.lister.Leases(listOpts.ClusterName).List(selector)
4451
if err != nil {
4552
return nil, err
4653
}
@@ -86,7 +93,7 @@ func (l LeaseService) RegisterHandler(handler server.EventHandler) {
8693
},
8794
UpdateFunc: func(oldObj, newObj interface{}) {
8895
key, _ := cache.MetaNamespaceKeyFunc(newObj)
89-
if err := handler.OnUpdate(context.Background(), csrce.CSREventDataType, key); err != nil {
96+
if err := handler.OnUpdate(context.Background(), leasece.LeaseEventDataType, key); err != nil {
9097
klog.Error(err)
9198
}
9299
},

0 commit comments

Comments
 (0)