Skip to content

Commit b3c4183

Browse files
committed
Start DynamicRESTMapperController, wire in DynRESTMapper into server
1 parent 7811b49 commit b3c4183

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed

pkg/server/controllers.go

+33
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ import (
5656

5757
configuniversal "github.com/kcp-dev/kcp/config/universal"
5858
bootstrappolicy "github.com/kcp-dev/kcp/pkg/authorization/bootstrap"
59+
"github.com/kcp-dev/kcp/pkg/dynamicrestmapper"
5960
kcpfeatures "github.com/kcp-dev/kcp/pkg/features"
6061
"github.com/kcp-dev/kcp/pkg/informer"
6162
permissionclaimlabler "github.com/kcp-dev/kcp/pkg/permissionclaim"
@@ -1594,6 +1595,38 @@ func (s *Server) installGarbageCollectorController(ctx context.Context, config *
15941595
})
15951596
}
15961597

1598+
func (s *Server) installDynamicRESTMapper(ctx context.Context, config *rest.Config) error {
1599+
config = rest.CopyConfig(config)
1600+
config = rest.AddUserAgent(config, dynamicrestmapper.ControllerName)
1601+
1602+
crdClusterClient, err := kcpapiextensionsclientset.NewForConfig(config)
1603+
if err != nil {
1604+
return err
1605+
}
1606+
1607+
c, err := dynamicrestmapper.NewController(ctx, s.DynRESTMapper, crdClusterClient,
1608+
s.ApiExtensionsSharedInformerFactory.Apiextensions().V1().CustomResourceDefinitions())
1609+
if err != nil {
1610+
return err
1611+
}
1612+
1613+
if err := s.registerController(&controllerWrapper{
1614+
Name: dynamicrestmapper.ControllerName,
1615+
Wait: func(ctx context.Context, s *Server) error {
1616+
return wait.PollUntilContextCancel(ctx, waitPollInterval, true, func(ctx context.Context) (bool, error) {
1617+
return s.ApiExtensionsSharedInformerFactory.Apiextensions().V1().CustomResourceDefinitions().Informer().HasSynced(), nil
1618+
})
1619+
},
1620+
Runner: func(ctx context.Context) {
1621+
c.Start(ctx, 2)
1622+
},
1623+
}); err != nil {
1624+
return err
1625+
}
1626+
1627+
return nil
1628+
}
1629+
15971630
func (s *Server) WaitForSync(stop <-chan struct{}) error {
15981631
// Wait for shared informer factories to by synced.
15991632
// factory. Otherwise, informer list calls may go into backoff (before the CRDs are ready) and

pkg/server/server.go

+9
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ import (
5252
configshard "github.com/kcp-dev/kcp/config/shard"
5353
systemcrds "github.com/kcp-dev/kcp/config/system-crds"
5454
bootstrappolicy "github.com/kcp-dev/kcp/pkg/authorization/bootstrap"
55+
"github.com/kcp-dev/kcp/pkg/dynamicrestmapper"
5556
"github.com/kcp-dev/kcp/pkg/informer"
5657
metadataclient "github.com/kcp-dev/kcp/pkg/metadata"
5758
"github.com/kcp-dev/kcp/pkg/reconciler/cache/replication"
@@ -71,6 +72,7 @@ type Server struct {
7172
Apis *controlplaneapiserver.Server
7273
MiniAggregator *miniaggregator.MiniAggregatorServer
7374
virtual *virtualrootapiserver.Server
75+
DynRESTMapper *dynamicrestmapper.DynamicRESTMapper
7476

7577
syncedCh chan struct{}
7678
rootPhase1FinishedCh chan struct{}
@@ -178,6 +180,8 @@ func NewServer(c CompletedConfig) (*Server, error) {
178180
}
179181
}
180182

183+
s.DynRESTMapper = dynamicrestmapper.NewDynamicRESTMapper(nil)
184+
181185
return s, nil
182186
}
183187

@@ -191,6 +195,11 @@ func (s *Server) uninstallControllers() {
191195
/* Registering all controllers and informers before starting informers. */
192196
func (s *Server) installControllers(ctx context.Context, controllerConfig *rest.Config, gvrs map[schema.GroupVersionResource]replication.ReplicatedGVR) error {
193197
logger := klog.FromContext(ctx).WithValues("component", "kcp")
198+
199+
if err := s.installDynamicRESTMapper(ctx, controllerConfig); err != nil {
200+
return nil
201+
}
202+
194203
if err := s.installKubeNamespaceController(ctx, controllerConfig); err != nil {
195204
return err
196205
}

0 commit comments

Comments
 (0)