@@ -21,12 +21,12 @@ import (
21
21
"sync"
22
22
23
23
"github.com/kubernetes-sigs/controller-runtime/pkg/client"
24
- "github.com/kubernetes-sigs/controller-runtime/pkg/client/config"
25
24
"github.com/kubernetes-sigs/controller-runtime/pkg/controller/reconcile"
26
25
"github.com/kubernetes-sigs/controller-runtime/pkg/internal/apiutil"
27
26
"github.com/kubernetes-sigs/controller-runtime/pkg/internal/informer"
28
27
"github.com/kubernetes-sigs/controller-runtime/pkg/runtime/inject"
29
28
"k8s.io/api/apps/v1"
29
+ "k8s.io/apimachinery/pkg/api/meta"
30
30
"k8s.io/apimachinery/pkg/runtime"
31
31
"k8s.io/client-go/kubernetes/scheme"
32
32
"k8s.io/client-go/rest"
@@ -92,8 +92,12 @@ func (cm *controllerManager) NewController(ca Args, r reconcile.Reconcile) (Cont
92
92
cm .mu .Lock ()
93
93
defer cm .mu .Unlock ()
94
94
95
+ if r == nil {
96
+ return nil , fmt .Errorf ("must specify Reconcile" )
97
+ }
98
+
95
99
if len (ca .Name ) == 0 {
96
- return nil , fmt .Errorf ("must specify name for Controller" )
100
+ return nil , fmt .Errorf ("must specify Name for Controller" )
97
101
}
98
102
99
103
if ca .MaxConcurrentReconciles <= 0 {
@@ -196,6 +200,9 @@ type ManagerArgs struct {
196
200
// Scheme is the scheme used to resolve runtime.Objects to GroupVersionKinds / Resources
197
201
// Defaults to the kubernetes/client-go scheme.Scheme
198
202
Scheme * runtime.Scheme
203
+
204
+ // Mapper is the rest mapper used to map go types to Kubernetes APIs
205
+ MapperProvider func (c * rest.Config ) (meta.RESTMapper , error )
199
206
}
200
207
201
208
// NewManager returns a new fully initialized Manager.
@@ -204,11 +211,7 @@ func NewManager(args ManagerArgs) (Manager, error) {
204
211
205
212
// Initialize a rest.config if none was specified
206
213
if cm .config == nil {
207
- var err error
208
- cm .config , err = config .GetConfig ()
209
- if err != nil {
210
- return nil , err
211
- }
214
+ return nil , fmt .Errorf ("must specify Config" )
212
215
}
213
216
214
217
// Use the Kubernetes client-go scheme if none is specified
@@ -228,7 +231,10 @@ func NewManager(args ManagerArgs) (Manager, error) {
228
231
objCache := client .NewObjectCache (spi .KnownInformersByType (), cm .scheme )
229
232
spi .Callbacks = append (spi .Callbacks , objCache )
230
233
231
- mapper , err := apiutil .NewDiscoveryRESTMapper (cm .config )
234
+ if args .MapperProvider == nil {
235
+ args .MapperProvider = apiutil .NewDiscoveryRESTMapper
236
+ }
237
+ mapper , err := args .MapperProvider (cm .config )
232
238
if err != nil {
233
239
log .Error (err , "Failed to get API Group-Resources" )
234
240
return nil , err
0 commit comments