@@ -6,13 +6,12 @@ import (
66
77 "github.com/openshift/library-go/pkg/controller/controllercmd"
88 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
9- "k8s.io/client-go/tools/clientcmd"
109
1110 clusterclientset "open-cluster-management.io/api/client/cluster/clientset/versioned"
1211 clusterinformers "open-cluster-management.io/api/client/cluster/informers/externalversions"
1312 workclientset "open-cluster-management.io/api/client/work/clientset/versioned"
1413 workinformers "open-cluster-management.io/api/client/work/informers/externalversions"
15- workv1informer "open-cluster-management.io/api/client/work/informers/externalversions/work/v1"
14+ workv1informers "open-cluster-management.io/api/client/work/informers/externalversions/work/v1"
1615 workapplier "open-cluster-management.io/sdk-go/pkg/apis/work/v1/applier"
1716 "open-cluster-management.io/sdk-go/pkg/cloudevents/clients/options"
1817 "open-cluster-management.io/sdk-go/pkg/cloudevents/clients/work"
@@ -47,7 +46,7 @@ func (c *WorkHubManagerConfig) RunWorkHubManager(ctx context.Context, controller
4746 clusterInformerFactory := clusterinformers .NewSharedInformerFactory (hubClusterClient , 30 * time .Minute )
4847
4948 // build a hub work client for ManifestWorkReplicaSets
50- replicaSetsClient , err := workclientset .NewForConfig (controllerContext .KubeConfig )
49+ workClient , err := workclientset .NewForConfig (controllerContext .KubeConfig )
5150 if err != nil {
5251 return err
5352 }
@@ -68,28 +67,38 @@ func (c *WorkHubManagerConfig) RunWorkHubManager(ctx context.Context, controller
6867 },
6968 )
7069
71- var workClient workclientset. Interface
72- var watcherStore * store. SourceInformerWatcherStore
70+ workInformers := workinformers . NewSharedInformerFactoryWithOptions ( workClient , 30 * time . Minute , workInformOption )
71+ replicaSetInformers := workinformers . NewSharedInformerFactory ( workClient , 30 * time . Minute )
7372
74- if c .workOptions .WorkDriver == "kube" {
75- config := controllerContext .KubeConfig
76- if c .workOptions .WorkDriverConfig != "" {
77- config , err = clientcmd .BuildConfigFromFlags ("" , c .workOptions .WorkDriverConfig )
78- if err != nil {
79- return err
80- }
81- }
73+ return c .RunControllerManagerWithInformers (
74+ ctx ,
75+ controllerContext ,
76+ workClient ,
77+ replicaSetInformers ,
78+ workInformers ,
79+ clusterInformerFactory ,
80+ )
81+ }
8282
83- workClient , err = workclientset .NewForConfig (config )
84- if err != nil {
85- return err
86- }
83+ func (c * WorkHubManagerConfig ) RunControllerManagerWithInformers (
84+ ctx context.Context ,
85+ controllerContext * controllercmd.ControllerContext ,
86+ workClient workclientset.Interface ,
87+ replicaSetInformers workinformers.SharedInformerFactory ,
88+ workInformers workinformers.SharedInformerFactory ,
89+ clusterInformers clusterinformers.SharedInformerFactory ,
90+ ) error {
91+ var manifestWorkClient workclientset.Interface
92+ var manifestWorkInformer workv1informers.ManifestWorkInformer
93+
94+ if c .workOptions .WorkDriver == "kube" {
95+ manifestWorkClient = workClient
96+ manifestWorkInformer = workInformers .Work ().V1 ().ManifestWorks ()
8797 } else {
8898 // For cloudevents drivers, we build ManifestWork client that implements the
8999 // ManifestWorkInterface and ManifestWork informer based on different driver configuration.
90100 // Refer to Event Based Manifestwork proposal in enhancements repo to get more details.
91-
92- watcherStore = store .NewSourceInformerWatcherStore (ctx )
101+ watcherStore := store .NewSourceInformerWatcherStore (ctx )
93102
94103 _ , config , err := generic .NewConfigLoader (c .workOptions .WorkDriver , c .workOptions .WorkDriverConfig ).
95104 LoadConfig ()
@@ -106,52 +115,28 @@ func (c *WorkHubManagerConfig) RunWorkHubManager(ctx context.Context, controller
106115 return err
107116 }
108117
109- workClient = clientHolder .WorkInterface ()
110- }
118+ manifestWorkClient = clientHolder .WorkInterface ()
111119
112- factory := workinformers .NewSharedInformerFactoryWithOptions (workClient , 30 * time .Minute , workInformOption )
113- informer := factory .Work ().V1 ().ManifestWorks ()
114-
115- // For cloudevents work client, we use the informer store as the client store
116- if watcherStore != nil {
117- watcherStore .SetInformer (informer .Informer ())
120+ ceInformers := workinformers .NewSharedInformerFactoryWithOptions (workClient , 30 * time .Minute )
121+ manifestWorkInformer = ceInformers .Work ().V1 ().ManifestWorks ()
122+ watcherStore .SetInformer (manifestWorkInformer .Informer ())
118123 }
119124
120- return RunControllerManagerWithInformers (
121- ctx ,
122- controllerContext ,
123- replicaSetsClient ,
124- workClient ,
125- informer ,
126- clusterInformerFactory ,
127- )
128- }
129-
130- func RunControllerManagerWithInformers (
131- ctx context.Context ,
132- controllerContext * controllercmd.ControllerContext ,
133- replicaSetClient workclientset.Interface ,
134- workClient workclientset.Interface ,
135- workInformer workv1informer.ManifestWorkInformer ,
136- clusterInformers clusterinformers.SharedInformerFactory ,
137- ) error {
138- replicaSetInformerFactory := workinformers .NewSharedInformerFactory (replicaSetClient , 30 * time .Minute )
139-
140125 manifestWorkReplicaSetController := manifestworkreplicasetcontroller .NewManifestWorkReplicaSetController (
141126 controllerContext .EventRecorder ,
142- replicaSetClient ,
143- workapplier .NewWorkApplierWithTypedClient (workClient , workInformer .Lister ()),
144- replicaSetInformerFactory .Work ().V1alpha1 ().ManifestWorkReplicaSets (),
145- workInformer ,
127+ workClient ,
128+ workapplier .NewWorkApplierWithTypedClient (manifestWorkClient , manifestWorkInformer .Lister ()),
129+ replicaSetInformers .Work ().V1alpha1 ().ManifestWorkReplicaSets (),
130+ manifestWorkInformer ,
146131 clusterInformers .Cluster ().V1beta1 ().Placements (),
147132 clusterInformers .Cluster ().V1beta1 ().PlacementDecisions (),
148133 )
149134
150135 go clusterInformers .Start (ctx .Done ())
151- go replicaSetInformerFactory .Start (ctx .Done ())
136+ go replicaSetInformers .Start (ctx .Done ())
152137 go manifestWorkReplicaSetController .Run (ctx , 5 )
153138
154- go workInformer .Informer ().Run (ctx .Done ())
139+ go manifestWorkInformer .Informer ().Run (ctx .Done ())
155140
156141 <- ctx .Done ()
157142 return nil
0 commit comments