Skip to content

Commit 6ae831c

Browse files
authored
Merge pull request #12 from ncdc/kcp-discovery
Make MapperProvider multi-cluster by default
2 parents 961c78a + 052a15d commit 6ae831c

File tree

1 file changed

+21
-3
lines changed

1 file changed

+21
-3
lines changed

pkg/kcp/wrappers.go

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,21 @@ package kcp
1818

1919
import (
2020
"net/http"
21+
"strings"
2122

23+
"k8s.io/apimachinery/pkg/api/meta"
2224
"k8s.io/client-go/rest"
2325
k8scache "k8s.io/client-go/tools/cache"
2426

25-
kcpcache "github.com/kcp-dev/apimachinery/pkg/cache"
26-
kcpclient "github.com/kcp-dev/apimachinery/pkg/client"
27-
2827
ctrl "sigs.k8s.io/controller-runtime"
2928
"sigs.k8s.io/controller-runtime/pkg/cache"
3029
"sigs.k8s.io/controller-runtime/pkg/client"
30+
"sigs.k8s.io/controller-runtime/pkg/client/apiutil"
3131
"sigs.k8s.io/controller-runtime/pkg/cluster"
3232
"sigs.k8s.io/controller-runtime/pkg/manager"
33+
34+
kcpcache "github.com/kcp-dev/apimachinery/pkg/cache"
35+
kcpclient "github.com/kcp-dev/apimachinery/pkg/client"
3336
)
3437

3538
// NewClusterAwareManager returns a kcp-aware manager with appropriate defaults for cache and
@@ -38,10 +41,15 @@ func NewClusterAwareManager(cfg *rest.Config, options ctrl.Options) (manager.Man
3841
if options.NewCache == nil {
3942
options.NewCache = NewClusterAwareCache
4043
}
44+
4145
if options.NewClient == nil {
4246
options.NewClient = NewClusterAwareClient
4347
}
4448

49+
if options.MapperProvider == nil {
50+
options.MapperProvider = NewClusterAwareMapperProvider
51+
}
52+
4553
return ctrl.NewManager(cfg, options)
4654
}
4755

@@ -89,3 +97,13 @@ func ClusterAwareHTTPClient(config *rest.Config) (*http.Client, error) {
8997
httpClient.Transport = kcpclient.NewClusterRoundTripper(httpClient.Transport)
9098
return httpClient, nil
9199
}
100+
101+
// NewClusterAwareMapperProvider is a MapperProvider that returns a logical cluster aware meta.RESTMapper.
102+
func NewClusterAwareMapperProvider(c *rest.Config) (meta.RESTMapper, error) {
103+
mapperCfg := rest.CopyConfig(c)
104+
if !strings.HasSuffix(mapperCfg.Host, "/clusters/*") {
105+
mapperCfg.Host += "/clusters/*"
106+
}
107+
108+
return apiutil.NewDynamicRESTMapper(mapperCfg)
109+
}

0 commit comments

Comments
 (0)