@@ -11,6 +11,7 @@ import (
1111 apisv1alpha1 "github.com/kcp-dev/kcp/sdk/apis/apis/v1alpha1"
1212 kcpcorev1alpha1 "github.com/kcp-dev/kcp/sdk/apis/core/v1alpha1"
1313 "github.com/kcp-dev/logicalcluster/v3"
14+ "github.com/kcp-dev/multicluster-provider/apiexport"
1415 accountsv1alpha1 "github.com/platform-mesh/account-operator/api/v1alpha1"
1516 "google.golang.org/grpc"
1617 "google.golang.org/grpc/credentials/insecure"
@@ -23,8 +24,9 @@ import (
2324 ctrl "sigs.k8s.io/controller-runtime"
2425 "sigs.k8s.io/controller-runtime/pkg/client"
2526 "sigs.k8s.io/controller-runtime/pkg/healthz"
26- "sigs.k8s.io/controller-runtime/pkg/kcp"
27+
2728 metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
29+ mcmanager "sigs.k8s.io/multicluster-runtime/pkg/manager"
2830
2931 openfgav1 "github.com/openfga/api/proto/openfga/v1"
3032 platformeshcontext "github.com/platform-mesh/golang-commons/context"
@@ -35,15 +37,16 @@ import (
3537 kcptenancyv1alphav1 "github.com/kcp-dev/kcp/sdk/apis/tenancy/v1alpha1"
3638 corev1alpha1 "github.com/platform-mesh/security-operator/api/v1alpha1"
3739 "github.com/platform-mesh/security-operator/internal/controller"
38- "github.com/platform-mesh/security-operator/internal/subroutine"
3940 // +kubebuilder:scaffold:imports
4041)
4142
4243var (
4344 scheme = runtime .NewScheme ()
4445)
4546
46- func logicalClusterClientFromKey (mgr ctrl.Manager , log * logger.Logger ) subroutine.NewLogicalClusterClientFunc {
47+ type NewLogicalClusterClientFunc func (clusterKey logicalcluster.Name ) (client.Client , error )
48+
49+ func logicalClusterClientFromKey (mgr ctrl.Manager , log * logger.Logger ) NewLogicalClusterClientFunc {
4750 return func (clusterKey logicalcluster.Name ) (client.Client , error ) {
4851 cfg := rest .CopyConfig (mgr .GetConfig ())
4952
@@ -55,6 +58,8 @@ func logicalClusterClientFromKey(mgr ctrl.Manager, log *logger.Logger) subroutin
5558
5659 parsed .Path = fmt .Sprintf ("/clusters/%s" , clusterKey )
5760
61+ log .Info ().Msg (fmt .Sprintf ("HOST from logical cluster client from key -- %s" , parsed .String ()))
62+
5863 cfg .Host = parsed .String ()
5964
6065 return client .New (cfg , client.Options {
@@ -110,9 +115,22 @@ var operatorCmd = &cobra.Command{
110115 mgrOpts .LeaderElectionConfig = inClusterCfg
111116 }
112117
113- mgr , err := kcp .NewClusterAwareManager (cfg , mgrOpts )
118+ if mgrOpts .Scheme == nil {
119+ log .Error ().Err (fmt .Errorf ("scheme should not be nil" )).Msg ("scheme should not be nil" )
120+ return fmt .Errorf ("scheme should not be nil" )
121+ }
122+
123+ provider , err := apiexport .New (cfg , apiexport.Options {
124+ Scheme : mgrOpts .Scheme ,
125+ })
126+ if err != nil {
127+ setupLog .Error (err , "unable to construct cluster provider" )
128+ return err
129+ }
130+
131+ mgr , err := mcmanager .New (cfg , provider , mgrOpts )
114132 if err != nil {
115- log .Error (). Err ( err ). Msg ( "unable to start manager" )
133+ setupLog .Error (err , "Failed to create manager" )
116134 return err
117135 }
118136
@@ -124,14 +142,14 @@ var operatorCmd = &cobra.Command{
124142
125143 fga := openfgav1 .NewOpenFGAServiceClient (conn )
126144
127- if err = controller .NewStoreReconciler (log , mgr . GetClient (), fga , logicalClusterClientFromKey ( mgr , log ) ).
128- SetupWithManager (mgr , defaultCfg , log ); err != nil {
145+ if err = controller .NewStoreReconciler (log , fga , mgr ).
146+ SetupWithManager (mgr , defaultCfg ); err != nil {
129147 log .Error ().Err (err ).Str ("controller" , "store" ).Msg ("unable to create controller" )
130148 return err
131149 }
132150 if err = controller .
133- NewAuthorizationModelReconciler (log , mgr . GetClient (), fga , logicalClusterClientFromKey ( mgr , log ) ).
134- SetupWithManager (mgr , defaultCfg , log ); err != nil {
151+ NewAuthorizationModelReconciler (log , fga , mgr ).
152+ SetupWithManager (mgr , defaultCfg ); err != nil {
135153 log .Error ().Err (err ).Str ("controller" , "authorizationmodel" ).Msg ("unable to create controller" )
136154 return err
137155 }
@@ -146,6 +164,12 @@ var operatorCmd = &cobra.Command{
146164 return err
147165 }
148166
167+ go func () {
168+ if err := provider .Run (ctx , mgr ); err != nil {
169+ log .Fatal ().Err (err ).Msg ("unable to run provider" )
170+ }
171+ }()
172+
149173 setupLog .Info ("starting manager" )
150174 if err := mgr .Start (ctrl .SetupSignalHandler ()); err != nil {
151175 log .Error ().Err (err ).Msg ("problem running manager" )
0 commit comments