@@ -38,6 +38,7 @@ type Factory struct {
3838 ingressClass string
3939 logger * zap.SugaredLogger
4040 setOwnerRefs bool
41+ clusterManager * ClusterManager
4142}
4243
4344func NewFactory (kubeConfig * restclient.Config , kubeClient kubernetes.Interface ,
@@ -47,7 +48,8 @@ func NewFactory(kubeConfig *restclient.Config, kubeClient kubernetes.Interface,
4748 ingressClass string ,
4849 logger * zap.SugaredLogger ,
4950 meshClient clientset.Interface ,
50- setOwnerRefs bool ) * Factory {
51+ setOwnerRefs bool ,
52+ clusterManager * ClusterManager ) * Factory {
5153 return & Factory {
5254 kubeConfig : kubeConfig ,
5355 meshClient : meshClient ,
@@ -58,6 +60,7 @@ func NewFactory(kubeConfig *restclient.Config, kubeClient kubernetes.Interface,
5860 ingressClass : ingressClass ,
5961 logger : logger ,
6062 setOwnerRefs : setOwnerRefs ,
63+ clusterManager : clusterManager ,
6164 }
6265}
6366
@@ -109,11 +112,12 @@ func (factory *Factory) MeshRouter(provider string, labelSelector string) Interf
109112 }
110113 case provider == flaggerv1 .IstioProvider :
111114 return & IstioRouter {
112- logger : factory .logger ,
113- flaggerClient : factory .flaggerClient ,
114- kubeClient : factory .kubeClient ,
115- istioClient : factory .meshClient ,
116- setOwnerRefs : factory .setOwnerRefs ,
115+ logger : factory .logger ,
116+ flaggerClient : factory .flaggerClient ,
117+ kubeClient : factory .kubeClient ,
118+ istioClients : factory .getMeshClients (),
119+ setOwnerRefs : factory .setOwnerRefs ,
120+ clusterManager : factory .clusterManager ,
117121 }
118122 case strings .HasPrefix (provider , flaggerv1 .SMIProvider + ":v1alpha1" ):
119123 mesh := strings .TrimPrefix (provider , flaggerv1 .SMIProvider + ":v1alpha1:" )
@@ -225,11 +229,24 @@ func (factory *Factory) MeshRouter(provider string, labelSelector string) Interf
225229 return & NopRouter {}
226230 default :
227231 return & IstioRouter {
228- logger : factory .logger ,
229- flaggerClient : factory .flaggerClient ,
230- kubeClient : factory .kubeClient ,
231- istioClient : factory .meshClient ,
232- setOwnerRefs : factory .setOwnerRefs ,
232+ logger : factory .logger ,
233+ flaggerClient : factory .flaggerClient ,
234+ kubeClient : factory .kubeClient ,
235+ istioClients : factory .getMeshClients (),
236+ setOwnerRefs : factory .setOwnerRefs ,
237+ clusterManager : factory .clusterManager ,
233238 }
234239 }
235240}
241+
242+ func (factory * Factory ) getMeshClients () []clientset.Interface {
243+ if factory .clusterManager != nil {
244+ return factory .clusterManager .GetClients ()
245+ }
246+ return []clientset.Interface {factory .meshClient }
247+ }
248+
249+ // IsMultiClusterEnabled returns true if multi-cluster support is enabled
250+ func (factory * Factory ) IsMultiClusterEnabled () bool {
251+ return factory .clusterManager != nil
252+ }
0 commit comments