Skip to content

Commit 2e530c1

Browse files
authored
Merge pull request #1405 from ncdc/use-our-restmapper
🐛 manager: use our RESTMapper
2 parents 6e40ca2 + c6f4c59 commit 2e530c1

File tree

3 files changed

+16
-9
lines changed

3 files changed

+16
-9
lines changed

cmd/clusterctl/clientcmd/configutil.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,13 @@ func NewControllerRuntimeClient(kubeconfigPath string, overrides clientcmd.Confi
5656
return nil, err
5757
}
5858

59+
mapper, err := restmapper.NewCached(config)
60+
if err != nil {
61+
return nil, err
62+
}
63+
5964
return client.New(config, client.Options{
60-
Mapper: restmapper.NewCached(config),
65+
Mapper: mapper,
6166
})
6267
}
6368

main.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"k8s.io/klog/klogr"
2828
clusterv1 "sigs.k8s.io/cluster-api/api/v1alpha2"
2929
"sigs.k8s.io/cluster-api/controllers"
30+
"sigs.k8s.io/cluster-api/util/restmapper"
3031
ctrl "sigs.k8s.io/controller-runtime"
3132
"sigs.k8s.io/controller-runtime/pkg/controller"
3233
// +kubebuilder:scaffold:imports
@@ -99,6 +100,7 @@ func main() {
99100
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
100101
Scheme: scheme,
101102
MetricsBindAddress: metricsAddr,
103+
MapperProvider: restmapper.NewCached,
102104
LeaderElection: enableLeaderElection,
103105
Namespace: watchNamespace,
104106
SyncPeriod: &syncPeriod,

util/restmapper/cached.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,28 +27,28 @@ import (
2727
"sigs.k8s.io/controller-runtime/pkg/log"
2828
)
2929

30-
func NewCached(config *rest.Config) meta.RESTMapper {
30+
func NewCached(config *rest.Config) (meta.RESTMapper, error) {
3131
c := &cached{
3232
limiter: rate.NewLimiter(rate.Limit(1), 2),
3333
factory: func() (meta.RESTMapper, error) {
3434
return apiutil.NewDiscoveryRESTMapper(config)
3535
},
3636
}
37-
c.flush()
38-
return c
37+
return c, c.flush()
3938
}
4039

4140
type cached struct {
42-
sync.Mutex
43-
4441
limiter *rate.Limiter
4542
factory func() (meta.RESTMapper, error)
46-
mapper meta.RESTMapper
43+
44+
// lock guards mapper
45+
lock sync.Mutex
46+
mapper meta.RESTMapper
4747
}
4848

4949
func (c *cached) flush() error {
50-
c.Lock()
51-
defer c.Unlock()
50+
c.lock.Lock()
51+
defer c.lock.Unlock()
5252

5353
var err error
5454
if c.mapper == nil || c.limiter.Allow() {

0 commit comments

Comments
 (0)