@@ -2,9 +2,13 @@ package controller
22
33import (
44 "context"
5+ "net/url"
6+ "strings"
57
8+ "github.com/kcp-dev/logicalcluster/v3"
69 "github.com/platform-mesh/golang-commons/controller/lifecycle/builder"
710 "k8s.io/apimachinery/pkg/types"
11+ "k8s.io/client-go/rest"
812 ctrl "sigs.k8s.io/controller-runtime"
913 mcbuilder "sigs.k8s.io/multicluster-runtime/pkg/builder"
1014 mccontext "sigs.k8s.io/multicluster-runtime/pkg/context"
@@ -32,12 +36,38 @@ type StoreReconciler struct {
3236}
3337
3438func NewStoreReconciler (log * logger.Logger , fga openfgav1.OpenFGAServiceClient , mcMgr mcmanager.Manager ) * StoreReconciler {
39+
40+ allCfg := rest .CopyConfig (mcMgr .GetLocalManager ().GetConfig ())
41+
42+ parsed , err := url .Parse (allCfg .Host )
43+ if err != nil {
44+ log .Fatal ().Err (err ).Msg ("unable to parse host from config" )
45+ }
46+
47+ parts := strings .Split (parsed .Path , "clusters" )
48+
49+ parsed .Path , err = url .JoinPath (parts [0 ], "clusters" , logicalcluster .Wildcard .String ())
50+ if err != nil {
51+ log .Fatal ().Err (err ).Msg ("unable to join path" )
52+ }
53+
54+ allCfg .Host = parsed .String ()
55+
56+ log .Info ().Str ("host" , allCfg .Host ).Msg ("using host" )
57+
58+ allClient , err := client .New (allCfg , client.Options {
59+ Scheme : mcMgr .GetLocalManager ().GetScheme (),
60+ })
61+ if err != nil {
62+ log .Fatal ().Err (err ).Msg ("unable to create new client" )
63+ }
64+
3565 return & StoreReconciler {
3666 fga : fga ,
3767 log : log ,
3868 lifecycle : builder .NewBuilder ("store" , "StoreReconciler" , []lifecyclesubroutine.Subroutine {
3969 subroutine .NewStoreSubroutine (fga , mcMgr ),
40- subroutine .NewAuthorizationModelSubroutine (fga , mcMgr ),
70+ subroutine .NewAuthorizationModelSubroutine (fga , mcMgr , allClient , log ),
4171 subroutine .NewTupleSubroutine (fga , mcMgr ),
4272 }, log ).WithConditionManagement ().
4373 BuildMultiCluster (mcMgr ),
@@ -59,7 +89,7 @@ func (r *StoreReconciler) SetupWithManager(mgr mcmanager.Manager, cfg *platforme
5989 Watches (
6090 & corev1alpha1.AuthorizationModel {},
6191 handler .EnqueueRequestsFromMapFunc (func (ctx context.Context , obj client.Object ) []reconcile.Request {
62- model ,ok := obj .(* corev1alpha1.AuthorizationModel )
92+ model , ok := obj .(* corev1alpha1.AuthorizationModel )
6393 if ! ok {
6494 return nil
6595 }
0 commit comments