Skip to content

Commit 4346278

Browse files
danail-branekovdavewalter
authored andcommitted
Setup logger in context in the patching reconciler
Thus reconcilers that use the patching reconciler (i.e. all Korifi reconcilers) can take a logger from the context (`logr.FromContextOrDiscard`) that has been set up with object namespace, name and an unique logID
1 parent b39ff78 commit 4346278

23 files changed

+71
-50
lines changed

controllers/controllers/networking/cfdomain_controller.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,7 @@ func (r *CFDomainReconciler) SetupWithManager(mgr ctrl.Manager) *builder.Builder
5959
//+kubebuilder:rbac:groups=korifi.cloudfoundry.org,resources=cfdomains/finalizers,verbs=update
6060

6161
func (r *CFDomainReconciler) ReconcileResource(ctx context.Context, cfDomain *korifiv1alpha1.CFDomain) (ctrl.Result, error) {
62-
log := shared.ObjectLogger(r.log, cfDomain)
63-
ctx = logr.NewContext(ctx, log)
62+
log := logr.FromContextOrDiscard(ctx)
6463

6564
if !cfDomain.GetDeletionTimestamp().IsZero() {
6665
return r.finalizeCFDomain(ctx, cfDomain)

controllers/controllers/networking/cfroute_controller.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import (
2323

2424
korifiv1alpha1 "code.cloudfoundry.org/korifi/controllers/api/v1alpha1"
2525
"code.cloudfoundry.org/korifi/controllers/config"
26-
"code.cloudfoundry.org/korifi/controllers/controllers/shared"
2726
"code.cloudfoundry.org/korifi/tools/k8s"
2827

2928
"github.com/go-logr/logr"
@@ -75,8 +74,7 @@ func (r *CFRouteReconciler) SetupWithManager(mgr ctrl.Manager) *builder.Builder
7574
//+kubebuilder:rbac:groups="",resources=services,verbs=get;list;watch;create;update;patch;delete
7675

7776
func (r *CFRouteReconciler) ReconcileResource(ctx context.Context, cfRoute *korifiv1alpha1.CFRoute) (ctrl.Result, error) {
78-
log := shared.ObjectLogger(r.log, cfRoute)
79-
ctx = logr.NewContext(ctx, log)
77+
log := logr.FromContextOrDiscard(ctx)
8078

8179
var err error
8280

controllers/controllers/services/cfservicebinding_controller.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import (
2323
"time"
2424

2525
korifiv1alpha1 "code.cloudfoundry.org/korifi/controllers/api/v1alpha1"
26-
"code.cloudfoundry.org/korifi/controllers/controllers/shared"
2726
"code.cloudfoundry.org/korifi/tools/k8s"
2827

2928
"github.com/go-logr/logr"
@@ -73,8 +72,7 @@ func (r *CFServiceBindingReconciler) SetupWithManager(mgr ctrl.Manager) *builder
7372
//+kubebuilder:rbac:groups=servicebinding.io,resources=servicebindings,verbs=get;list;create;update;patch;watch
7473

7574
func (r *CFServiceBindingReconciler) ReconcileResource(ctx context.Context, cfServiceBinding *korifiv1alpha1.CFServiceBinding) (ctrl.Result, error) {
76-
log := shared.ObjectLogger(r.log, cfServiceBinding)
77-
ctx = logr.NewContext(ctx, log)
75+
log := logr.FromContextOrDiscard(ctx)
7876

7977
cfServiceBinding.Status.ObservedGeneration = cfServiceBinding.Generation
8078
log.V(1).Info("set observed generation", "generation", cfServiceBinding.Status.ObservedGeneration)

controllers/controllers/services/cfserviceinstance_controller.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121
"time"
2222

2323
korifiv1alpha1 "code.cloudfoundry.org/korifi/controllers/api/v1alpha1"
24-
"code.cloudfoundry.org/korifi/controllers/controllers/shared"
2524
"code.cloudfoundry.org/korifi/tools/k8s"
2625

2726
"github.com/go-logr/logr"
@@ -62,8 +61,7 @@ func (r *CFServiceInstanceReconciler) SetupWithManager(mgr ctrl.Manager) *builde
6261
//+kubebuilder:rbac:groups=korifi.cloudfoundry.org,resources=cfserviceinstances/finalizers,verbs=update
6362

6463
func (r *CFServiceInstanceReconciler) ReconcileResource(ctx context.Context, cfServiceInstance *korifiv1alpha1.CFServiceInstance) (ctrl.Result, error) {
65-
log := shared.ObjectLogger(r.log, cfServiceInstance)
66-
ctx = logr.NewContext(ctx, log)
64+
log := logr.FromContextOrDiscard(ctx)
6765

6866
cfServiceInstance.Status.ObservedGeneration = cfServiceInstance.Generation
6967
log.V(1).Info("set observed generation", "generation", cfServiceInstance.Status.ObservedGeneration)

controllers/controllers/shared/index.go

-5
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
korifiv1alpha1 "code.cloudfoundry.org/korifi/controllers/api/v1alpha1"
88

99
"github.com/go-logr/logr"
10-
"github.com/google/uuid"
1110
"k8s.io/apimachinery/pkg/api/meta"
1211
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1312
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -140,7 +139,3 @@ func RemovePackageManagerKeys(src map[string]string, log logr.Logger) map[string
140139

141140
return dest
142141
}
143-
144-
func ObjectLogger(log logr.Logger, obj client.Object) logr.Logger {
145-
return log.WithValues("namespace", obj.GetNamespace(), "name", obj.GetName(), "logID", uuid.NewString())
146-
}

controllers/controllers/workloads/build/cf_build_controller.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,7 @@ func (r *CFBuildReconciler) SetupWithManager(mgr ctrl.Manager) *builder.Builder
5656
}
5757

5858
func (r *CFBuildReconciler) ReconcileResource(ctx context.Context, cfBuild *korifiv1alpha1.CFBuild) (ctrl.Result, error) {
59-
log := shared.ObjectLogger(r.log, cfBuild)
60-
ctx = logr.NewContext(ctx, log)
59+
log := logr.FromContextOrDiscard(ctx)
6160

6261
cfBuild.Status.ObservedGeneration = cfBuild.Generation
6362
log.V(1).Info("set observed generation", "generation", cfBuild.Status.ObservedGeneration)

controllers/controllers/workloads/cfapp_controller.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,7 @@ func serviceBindingToApp(ctx context.Context, o client.Object) []reconcile.Reque
101101
//+kubebuilder:rbac:groups="",resources=secrets,verbs=get;list;watch;patch
102102

103103
func (r *CFAppReconciler) ReconcileResource(ctx context.Context, cfApp *korifiv1alpha1.CFApp) (ctrl.Result, error) {
104-
log := shared.ObjectLogger(r.log, cfApp)
105-
ctx = logr.NewContext(ctx, log)
104+
log := logr.FromContextOrDiscard(ctx)
106105

107106
cfApp.Status.ObservedGeneration = cfApp.Generation
108107
log.V(1).Info("set observed generation", "generation", cfApp.Status.ObservedGeneration)

controllers/controllers/workloads/cforg_controller.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,7 @@ func (r *CFOrgReconciler) enqueueCFOrgRequests(ctx context.Context, object clien
122122
//+kubebuilder:rbac:groups="policy",resources=podsecuritypolicies,verbs=use
123123

124124
func (r *CFOrgReconciler) ReconcileResource(ctx context.Context, cfOrg *korifiv1alpha1.CFOrg) (ctrl.Result, error) {
125-
log := shared.ObjectLogger(r.log, cfOrg)
126-
ctx = logr.NewContext(ctx, log)
125+
log := logr.FromContextOrDiscard(ctx)
127126

128127
cfOrg.Status.ObservedGeneration = cfOrg.Generation
129128
log.V(1).Info("set observed generation", "generation", cfOrg.Status.ObservedGeneration)

controllers/controllers/workloads/cfpackage_controller.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,7 @@ func (r *CFPackageReconciler) SetupWithManager(mgr ctrl.Manager) *builder.Builde
8989
//+kubebuilder:rbac:groups=korifi.cloudfoundry.org,resources=cfpackages/finalizers,verbs=get;update;patch
9090

9191
func (r *CFPackageReconciler) ReconcileResource(ctx context.Context, cfPackage *korifiv1alpha1.CFPackage) (ctrl.Result, error) {
92-
log := shared.ObjectLogger(r.log, cfPackage)
93-
ctx = logr.NewContext(ctx, log)
92+
log := logr.FromContextOrDiscard(ctx)
9493

9594
cfPackage.Status.ObservedGeneration = cfPackage.Generation
9695
log.V(1).Info("set observed generation", "generation", cfPackage.Status.ObservedGeneration)

controllers/controllers/workloads/cfprocess_controller.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,7 @@ func (r *CFProcessReconciler) enqueueCFProcessRequests(ctx context.Context, o cl
103103
//+kubebuilder:rbac:groups="",resources=secrets,verbs=get;list;watch;patch
104104

105105
func (r *CFProcessReconciler) ReconcileResource(ctx context.Context, cfProcess *korifiv1alpha1.CFProcess) (ctrl.Result, error) {
106-
log := shared.ObjectLogger(r.log, cfProcess)
107-
ctx = logr.NewContext(ctx, log)
106+
log := logr.FromContextOrDiscard(ctx)
108107

109108
cfProcess.Status.ObservedGeneration = cfProcess.Generation
110109
log.V(1).Info("set observed generation", "generation", cfProcess.Status.ObservedGeneration)

controllers/controllers/workloads/cfspace_controller.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,7 @@ func (r *CFSpaceReconciler) enqueueCFSpaceRequestsForServiceAccount(ctx context.
137137
//+kubebuilder:rbac:groups="",resources=serviceaccounts,verbs=get;list;watch;create;patch;delete
138138

139139
func (r *CFSpaceReconciler) ReconcileResource(ctx context.Context, cfSpace *korifiv1alpha1.CFSpace) (ctrl.Result, error) {
140-
log := shared.ObjectLogger(r.log, cfSpace)
141-
ctx = logr.NewContext(ctx, log)
140+
log := logr.FromContextOrDiscard(ctx)
142141

143142
cfSpace.Status.ObservedGeneration = cfSpace.Generation
144143
log.V(1).Info("set observed generation", "generation", cfSpace.Status.ObservedGeneration)

controllers/controllers/workloads/cftask_controller.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,7 @@ func (r *CFTaskReconciler) SetupWithManager(mgr ctrl.Manager) *builder.Builder {
8888
//+kubebuilder:rbac:groups="",resources=events,verbs=create;patch
8989

9090
func (r *CFTaskReconciler) ReconcileResource(ctx context.Context, cfTask *korifiv1alpha1.CFTask) (ctrl.Result, error) {
91-
log := shared.ObjectLogger(r.log, cfTask)
92-
ctx = logr.NewContext(ctx, log)
91+
log := logr.FromContextOrDiscard(ctx)
9392

9493
cfTask.Status.ObservedGeneration = cfTask.Generation
9594
log.V(1).Info("set observed generation", "generation", cfTask.Status.ObservedGeneration)

job-task-runner/controllers/taskworkload_controller.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,12 @@ func (r *TaskWorkloadReconciler) SetupWithManager(mgr ctrl.Manager) *builder.Bui
8989
//+kubebuilder:rbac:groups="",resources=pods,verbs=get;list;watch
9090

9191
func (r *TaskWorkloadReconciler) ReconcileResource(ctx context.Context, taskWorkload *korifiv1alpha1.TaskWorkload) (ctrl.Result, error) {
92-
logger := r.logger.WithValues("namespace", taskWorkload.Namespace, "name", taskWorkload.Name)
92+
log := logr.FromContextOrDiscard(ctx)
9393

9494
taskWorkload.Status.ObservedGeneration = taskWorkload.Generation
95-
logger.V(1).Info("set observed generation", "generation", taskWorkload.Status.ObservedGeneration)
95+
log.V(1).Info("set observed generation", "generation", taskWorkload.Status.ObservedGeneration)
9696

97-
job, err := r.getOrCreateJob(ctx, logger, taskWorkload)
97+
job, err := r.getOrCreateJob(ctx, log, taskWorkload)
9898
if err != nil {
9999
return ctrl.Result{}, err
100100
}
@@ -104,7 +104,7 @@ func (r *TaskWorkloadReconciler) ReconcileResource(ctx context.Context, taskWork
104104
}
105105

106106
if err = r.updateTaskWorkloadStatus(ctx, taskWorkload, job); err != nil {
107-
logger.Info("failed to update task workload status", "reason", err)
107+
log.Info("failed to update task workload status", "reason", err)
108108
return ctrl.Result{}, err
109109
}
110110

kpack-image-builder/controllers/builderinfo_controller.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ func (r *BuilderInfoReconciler) filterBuilderInfos(object client.Object) bool {
107107
//+kubebuilder:rbac:groups=kpack.io,resources=clusterbuilders/status,verbs=get
108108

109109
func (r *BuilderInfoReconciler) ReconcileResource(ctx context.Context, info *korifiv1alpha1.BuilderInfo) (ctrl.Result, error) {
110-
log := r.log.WithValues("namespace", info.Namespace, "name", info.Name)
110+
log := logr.FromContextOrDiscard(ctx)
111111

112112
info.Status.ObservedGeneration = info.Generation
113113
log.V(1).Info("set observed generation", "generation", info.Status.ObservedGeneration)

kpack-image-builder/controllers/buildworkload_controller.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ func filterBuildWorkloads(object client.Object) bool {
171171
//+kubebuilder:rbac:groups="",resources=serviceaccounts/status;secrets/status,verbs=get
172172

173173
func (r *BuildWorkloadReconciler) ReconcileResource(ctx context.Context, buildWorkload *korifiv1alpha1.BuildWorkload) (ctrl.Result, error) {
174-
log := r.log.WithValues("namespace", buildWorkload.Namespace, "name", buildWorkload.Name)
174+
log := logr.FromContextOrDiscard(ctx)
175175

176176
buildWorkload.Status.ObservedGeneration = buildWorkload.Generation
177177
log.V(1).Info("set observed generation", "generation", buildWorkload.Status.ObservedGeneration)

kpack-image-builder/controllers/kpack_build_controller.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,7 @@ func (c KpackBuildController) SetupWithManager(mgr manager.Manager) *ctrl.Builde
6767
//+kubebuilder:rbac:groups=kpack.io,resources=builds/finalizers,verbs=get;patch
6868

6969
func (c KpackBuildController) ReconcileResource(ctx context.Context, kpackBuild *kpackv1alpha2.Build) (ctrl.Result, error) {
70-
log := c.log.WithValues("namespace", kpackBuild.Namespace, "name", kpackBuild.Name, "deletionTimestamp", kpackBuild.DeletionTimestamp)
71-
log.Info("in finalizer")
70+
log := logr.FromContextOrDiscard(ctx)
7271

7372
if !kpackBuild.GetDeletionTimestamp().IsZero() {
7473
if !controllerutil.ContainsFinalizer(kpackBuild, KpackBuildFinalizer) {

statefulset-runner/controllers/appworkload_controller.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ func filterAppWorkloads(object client.Object) bool {
149149
//+kubebuilder:rbac:groups=policy,resources=poddisruptionbudgets,verbs=create;patch;deletecollection
150150

151151
func (r *AppWorkloadReconciler) ReconcileResource(ctx context.Context, appWorkload *korifiv1alpha1.AppWorkload) (ctrl.Result, error) {
152-
log := r.log.WithValues("namespace", appWorkload.Namespace, "name", appWorkload.Name)
152+
log := logr.FromContextOrDiscard(ctx)
153153

154154
if appWorkload.Spec.RunnerName != AppWorkloadReconcilerName {
155155
return ctrl.Result{}, nil

statefulset-runner/controllers/appworkload_controller_test.go

+8-3
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121
"k8s.io/client-go/kubernetes/scheme"
2222
ctrl "sigs.k8s.io/controller-runtime"
2323
"sigs.k8s.io/controller-runtime/pkg/client"
24-
"sigs.k8s.io/controller-runtime/pkg/log/zap"
2524
)
2625

2726
const (
@@ -89,7 +88,7 @@ var _ = Describe("AppWorkload Reconcile", func() {
8988
}
9089
}
9190

92-
fakeClient.CreateStub = func(ctx context.Context, obj client.Object, option ...client.CreateOption) error {
91+
fakeClient.CreateStub = func(_ context.Context, obj client.Object, _ ...client.CreateOption) error {
9392
switch obj.(type) {
9493
case *v1.StatefulSet:
9594
return createStatefulSetError
@@ -98,7 +97,13 @@ var _ = Describe("AppWorkload Reconcile", func() {
9897
}
9998
}
10099

101-
reconciler = controllers.NewAppWorkloadReconciler(fakeClient, scheme.Scheme, fakeWorkloadToStSet, fakePDB, zap.New(zap.WriteTo(GinkgoWriter), zap.UseDevMode(true)))
100+
reconciler = controllers.NewAppWorkloadReconciler(
101+
fakeClient,
102+
scheme.Scheme,
103+
fakeWorkloadToStSet,
104+
fakePDB,
105+
ctrl.Log.WithName("controllers").WithName("TestAppWorkload"),
106+
)
102107
})
103108

104109
JustBeforeEach(func() {

statefulset-runner/controllers/runnerinfo_controller.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ func filterRunnerInfos(object client.Object) bool {
6969
//+kubebuilder:rbac:groups=korifi.cloudfoundry.org,resources=runnerinfos/status,verbs=get;patch
7070

7171
func (r *RunnerInfoReconciler) ReconcileResource(ctx context.Context, runnerInfo *korifiv1alpha1.RunnerInfo) (ctrl.Result, error) {
72-
log := r.log.WithValues("namespace", runnerInfo.Namespace, "name", runnerInfo.Name)
72+
log := logr.FromContextOrDiscard(ctx)
7373

7474
runnerInfo.Status.ObservedGeneration = runnerInfo.Generation
7575
log.V(1).Info("set observed generation", "generation", runnerInfo.Status.ObservedGeneration)

statefulset-runner/controllers/runnerinfo_controller_test.go

+6-5
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import (
1414
"k8s.io/client-go/kubernetes/scheme"
1515
ctrl "sigs.k8s.io/controller-runtime"
1616
"sigs.k8s.io/controller-runtime/pkg/client"
17-
"sigs.k8s.io/controller-runtime/pkg/log/zap"
1817
)
1918

2019
const (
@@ -26,7 +25,6 @@ var _ = Describe("RunnerInfo Reconcile", func() {
2625
reconciler *k8s.PatchingReconciler[korifiv1alpha1.RunnerInfo, *korifiv1alpha1.RunnerInfo]
2726
reconcileResult ctrl.Result
2827
reconcileErr error
29-
ctx context.Context
3028
req ctrl.Request
3129
getRunnerInfoError error
3230
runnerInfo *korifiv1alpha1.RunnerInfo
@@ -58,9 +56,12 @@ var _ = Describe("RunnerInfo Reconcile", func() {
5856
}
5957
}
6058

61-
reconciler = controllers.NewRunnerInfoReconciler(fakeClient, scheme.Scheme, zap.New(zap.WriteTo(GinkgoWriter), zap.UseDevMode(true)))
62-
63-
reconcileResult, reconcileErr = reconciler.Reconcile(ctx, req)
59+
reconciler = controllers.NewRunnerInfoReconciler(
60+
fakeClient,
61+
scheme.Scheme,
62+
ctrl.Log.WithName("controllers").WithName("TestRunnerInfo"),
63+
)
64+
reconcileResult, reconcileErr = reconciler.Reconcile(context.Background(), req)
6465
})
6566

6667
When("the RunnerInfo is being reconciled", func() {

statefulset-runner/controllers/suite_test.go

+7
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ package controllers_test
33
import (
44
"testing"
55

6+
"go.uber.org/zap/zapcore"
67
"k8s.io/apimachinery/pkg/util/intstr"
8+
"sigs.k8s.io/controller-runtime/pkg/log/zap"
79

810
korifiv1alpha1 "code.cloudfoundry.org/korifi/controllers/api/v1alpha1"
911
"code.cloudfoundry.org/korifi/statefulset-runner/fake"
@@ -13,6 +15,7 @@ import (
1315
corev1 "k8s.io/api/core/v1"
1416
"k8s.io/apimachinery/pkg/api/resource"
1517
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
18+
logf "sigs.k8s.io/controller-runtime/pkg/log"
1619
)
1720

1821
func TestAppWorkloadsController(t *testing.T) {
@@ -25,6 +28,10 @@ var (
2528
fakeStatusWriter *fake.StatusWriter
2629
)
2730

31+
var _ = BeforeSuite(func() {
32+
logf.SetLogger(zap.New(zap.WriteTo(GinkgoWriter), zap.UseDevMode(true), zap.Level(zapcore.DebugLevel)))
33+
})
34+
2835
var _ = BeforeEach(func() {
2936
fakeClient = new(fake.Client)
3037
fakeStatusWriter = &fake.StatusWriter{}

tools/k8s/reconcile.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"fmt"
66

77
"github.com/go-logr/logr"
8+
"github.com/google/uuid"
89
apierrors "k8s.io/apimachinery/pkg/api/errors"
910
ctrl "sigs.k8s.io/controller-runtime"
1011
"sigs.k8s.io/controller-runtime/pkg/builder"
@@ -24,14 +25,15 @@ type PatchingReconciler[T any, PT ObjectWithDeepCopy[T]] struct {
2425

2526
func NewPatchingReconciler[T any, PT ObjectWithDeepCopy[T]](log logr.Logger, k8sClient client.Client, objectReconciler ObjectReconciler[T, PT]) *PatchingReconciler[T, PT] {
2627
return &PatchingReconciler[T, PT]{
27-
log: log.WithName("patching-reconciler"),
28+
log: log,
2829
k8sClient: k8sClient,
2930
objectReconciler: objectReconciler,
3031
}
3132
}
3233

3334
func (r *PatchingReconciler[T, PT]) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
34-
log := r.log.WithValues("namespace", req.Namespace, "name", req.Name)
35+
log := r.log.WithValues("namespace", req.Namespace, "name", req.Name, "logID", uuid.NewString())
36+
ctx = logr.NewContext(ctx, log)
3537

3638
obj := PT(new(T))
3739
err := r.k8sClient.Get(ctx, req.NamespacedName, obj)

tools/k8s/reconcile_test.go

+26
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ import (
44
"context"
55
"errors"
66

7+
"github.com/go-logr/logr"
78
"github.com/google/uuid"
89
. "github.com/onsi/ginkgo/v2"
910
. "github.com/onsi/gomega"
11+
"github.com/onsi/gomega/gbytes"
1012
corev1 "k8s.io/api/core/v1"
1113
apierrors "k8s.io/apimachinery/pkg/api/errors"
1214
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -15,6 +17,8 @@ import (
1517
ctrl "sigs.k8s.io/controller-runtime"
1618
"sigs.k8s.io/controller-runtime/pkg/builder"
1719
"sigs.k8s.io/controller-runtime/pkg/client"
20+
logf "sigs.k8s.io/controller-runtime/pkg/log"
21+
"sigs.k8s.io/controller-runtime/pkg/log/zap"
1822

1923
"code.cloudfoundry.org/korifi/controllers/fake"
2024
"code.cloudfoundry.org/korifi/tools/k8s"
@@ -27,6 +31,9 @@ type fakeObjectReconciler struct {
2731
}
2832

2933
func (f *fakeObjectReconciler) ReconcileResource(ctx context.Context, obj *corev1.Pod) (ctrl.Result, error) {
34+
log := logr.FromContextOrDiscard(ctx)
35+
log.V(1).Info("fake reconciler reconciling")
36+
3037
f.reconcileResourceCallCount++
3138
f.reconcileResourceObj = obj
3239

@@ -189,4 +196,23 @@ var _ = Describe("Reconcile", func() {
189196
Expect(fakeStatusWriter.PatchCallCount()).To(Equal(1))
190197
})
191198
})
199+
200+
Describe("logging", func() {
201+
var logOutput *gbytes.Buffer
202+
203+
BeforeEach(func() {
204+
logOutput = gbytes.NewBuffer()
205+
GinkgoWriter.TeeTo(logOutput)
206+
logf.SetLogger(zap.New(zap.WriteTo(GinkgoWriter), zap.UseDevMode(true)))
207+
})
208+
209+
It("captures logs from object reconciler", func() {
210+
Eventually(logOutput).Should(SatisfyAll(
211+
gbytes.Say("fake reconciler reconciling"),
212+
gbytes.Say(`"namespace":`),
213+
gbytes.Say(`"name":`),
214+
gbytes.Say(`"logID":`),
215+
))
216+
})
217+
})
192218
})

0 commit comments

Comments
 (0)