@@ -20,7 +20,9 @@ import (
20
20
"fmt"
21
21
"strings"
22
22
23
+ "github.com/go-logr/logr"
23
24
"k8s.io/apimachinery/pkg/runtime"
25
+ "k8s.io/apimachinery/pkg/runtime/schema"
24
26
"k8s.io/client-go/rest"
25
27
"sigs.k8s.io/controller-runtime/pkg/client/apiutil"
26
28
"sigs.k8s.io/controller-runtime/pkg/controller"
@@ -45,6 +47,7 @@ type Builder struct {
45
47
config * rest.Config
46
48
ctrl controller.Controller
47
49
ctrlOptions controller.Options
50
+ log logr.Logger
48
51
name string
49
52
}
50
53
@@ -155,6 +158,12 @@ func (blder *Builder) Named(name string) *Builder {
155
158
return blder
156
159
}
157
160
161
+ // WithLogger overrides the controller options's logger used.
162
+ func (blder * Builder ) WithLogger (log logr.Logger ) * Builder {
163
+ blder .log = log
164
+ return blder
165
+ }
166
+
158
167
// Complete builds the Application ControllerManagedBy.
159
168
func (blder * Builder ) Complete (r reconcile.Reconciler ) error {
160
169
_ , err := blder .Build (r )
@@ -228,26 +237,33 @@ func (blder *Builder) loadRestConfig() {
228
237
}
229
238
}
230
239
231
- func (blder * Builder ) getControllerName () ( string , error ) {
240
+ func (blder * Builder ) getControllerName (gvk schema. GroupVersionKind ) string {
232
241
if blder .name != "" {
233
- return blder .name , nil
242
+ return blder .name
234
243
}
235
- gvk , err := getGvk (blder .forInput .object , blder .mgr .GetScheme ())
236
- if err != nil {
237
- return "" , err
238
- }
239
- return strings .ToLower (gvk .Kind ), nil
244
+ return strings .ToLower (gvk .Kind )
240
245
}
241
246
242
247
func (blder * Builder ) doController (r reconcile.Reconciler ) error {
243
- name , err := blder .getControllerName ()
244
- if err != nil {
245
- return err
246
- }
247
248
ctrlOptions := blder .ctrlOptions
248
249
if ctrlOptions .Reconciler == nil {
249
250
ctrlOptions .Reconciler = r
250
251
}
251
- blder .ctrl , err = newController (name , blder .mgr , ctrlOptions )
252
+
253
+ // Retrieve the GVK from the object we're reconciling
254
+ // to prepopulate logger information, and to optionally generate a default name.
255
+ gvk , err := getGvk (blder .forInput .object , blder .mgr .GetScheme ())
256
+ if err != nil {
257
+ return err
258
+ }
259
+
260
+ // Setup the logger.
261
+ if ctrlOptions .Log == nil {
262
+ ctrlOptions .Log = blder .mgr .GetLogger ()
263
+ }
264
+ ctrlOptions .Log = ctrlOptions .Log .WithValues ("reconcilerGroup" , gvk .Group , "reconcilerKind" , gvk .Kind )
265
+
266
+ // Build the controller and return.
267
+ blder .ctrl , err = newController (blder .getControllerName (gvk ), blder .mgr , ctrlOptions )
252
268
return err
253
269
}
0 commit comments