@@ -72,7 +72,7 @@ type Options struct {
72
72
// Defaults to the kubernetes/client-go scheme.Scheme
73
73
Scheme * runtime.Scheme
74
74
75
- // Mapper is the rest mapper used to map go types to Kubernetes APIs
75
+ // MapperProvider provides the rest mapper used to map go types to Kubernetes APIs
76
76
MapperProvider func (c * rest.Config ) (meta.RESTMapper , error )
77
77
78
78
// Dependency injection for testing
@@ -98,52 +98,57 @@ func (r RunnableFunc) Start(s <-chan struct{}) error {
98
98
99
99
// New returns a new Manager for creating Controllers.
100
100
func New (config * rest.Config , options Options ) (Manager , error ) {
101
- cm := & controllerManager {config : config , scheme : options .Scheme , errChan : make (chan error )}
102
-
103
101
// Initialize a rest.config if none was specified
104
- if cm . config == nil {
102
+ if config == nil {
105
103
return nil , fmt .Errorf ("must specify Config" )
106
104
}
107
105
108
- // Use the Kubernetes client-go scheme if none is specified
109
- if cm .scheme == nil {
110
- cm .scheme = scheme .Scheme
111
- }
112
-
113
106
// Set default values for options fields
114
107
options = setOptionsDefaults (options )
115
108
116
- mapper , err := options .MapperProvider (cm .config )
109
+ // Create the mapper provider
110
+ mapper , err := options .MapperProvider (config )
117
111
if err != nil {
118
112
log .Error (err , "Failed to get API Group-Resources" )
119
113
return nil , err
120
114
}
121
115
122
116
// Create the Client for Write operations.
123
- writeObj , err := options .newClient (cm . config , client.Options {Scheme : cm . scheme , Mapper : mapper })
117
+ writeObj , err := options .newClient (config , client.Options {Scheme : options . Scheme , Mapper : mapper })
124
118
if err != nil {
125
119
return nil , err
126
120
}
127
121
128
- cm .cache , err = options .newCache (cm .config , cache.Options {Scheme : cm .scheme , Mapper : mapper })
122
+ // Create the cache for the cached read client and registering informers
123
+ cache , err := options .newCache (config , cache.Options {Scheme : options .Scheme , Mapper : mapper })
129
124
if err != nil {
130
125
return nil , err
131
- }
132
-
133
- cm .fieldIndexes = cm .cache
134
- cm .client = client.DelegatingClient {Reader : cm .cache , Writer : writeObj }
135
126
127
+ }
136
128
// Create the recorder provider to inject event recorders for the components.
137
- cm . recorderProvider , err = options .newRecorderProvider (cm . config , cm . scheme )
129
+ recorderProvider , err : = options .newRecorderProvider (config , options . Scheme )
138
130
if err != nil {
139
131
return nil , err
140
132
}
141
133
142
- return cm , nil
134
+ return & controllerManager {
135
+ config : config ,
136
+ scheme : options .Scheme ,
137
+ errChan : make (chan error ),
138
+ cache : cache ,
139
+ fieldIndexes : cache ,
140
+ client : client.DelegatingClient {Reader : cache , Writer : writeObj },
141
+ recorderProvider : recorderProvider ,
142
+ }, nil
143
143
}
144
144
145
145
// setOptionsDefaults set default values for Options fields
146
146
func setOptionsDefaults (options Options ) Options {
147
+ // Use the Kubernetes client-go scheme if none is specified
148
+ if options .Scheme == nil {
149
+ options .Scheme = scheme .Scheme
150
+ }
151
+
147
152
if options .MapperProvider == nil {
148
153
options .MapperProvider = apiutil .NewDiscoveryRESTMapper
149
154
}
@@ -154,7 +159,6 @@ func setOptionsDefaults(options Options) Options {
154
159
}
155
160
156
161
// Allow newCache to be mocked
157
- // TODO(directxman12): Figure out how to allow users to request a client without requesting a watch
158
162
if options .newCache == nil {
159
163
options .newCache = cache .New
160
164
}
0 commit comments