Skip to content

Commit da99b25

Browse files
authored
Merge pull request #7295 from killianmuldoon/logs/log-full-object-name-for-templates
🌱 Log full object name and creation error for topology template reconcile
2 parents 82f4792 + 6997cf6 commit da99b25

File tree

2 files changed

+18
-10
lines changed

2 files changed

+18
-10
lines changed

internal/controllers/topology/cluster/reconcile_state.go

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ import (
2828
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
2929
"k8s.io/apimachinery/pkg/util/validation/field"
3030
"k8s.io/apiserver/pkg/storage/names"
31+
"k8s.io/klog/v2"
32+
ctrl "sigs.k8s.io/controller-runtime"
3133
"sigs.k8s.io/controller-runtime/pkg/client"
3234

3335
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
@@ -506,10 +508,10 @@ func (r *Reconciler) createMachineDeployment(ctx context.Context, cluster *clust
506508
log.Infof(fmt.Sprintf("Creating %s", tlog.KObj{Obj: md.Object}))
507509
helper, err := r.patchHelperFactory(ctx, nil, md.Object)
508510
if err != nil {
509-
return createErrorWithoutObjectName(err, md.Object)
511+
return createErrorWithoutObjectName(ctx, err, md.Object)
510512
}
511513
if err := helper.Patch(ctx); err != nil {
512-
return createErrorWithoutObjectName(err, md.Object)
514+
return createErrorWithoutObjectName(ctx, err, md.Object)
513515
}
514516
r.recorder.Eventf(cluster, corev1.EventTypeNormal, createEventReason, "Created %q", tlog.KObj{Obj: md.Object})
515517

@@ -654,10 +656,10 @@ func (r *Reconciler) reconcileReferencedObject(ctx context.Context, in reconcile
654656
log.Infof("Creating %s", tlog.KObj{Obj: in.desired})
655657
helper, err := r.patchHelperFactory(ctx, nil, in.desired, structuredmerge.IgnorePaths(in.ignorePaths))
656658
if err != nil {
657-
return errors.Wrap(createErrorWithoutObjectName(err, in.desired), "failed to create patch helper")
659+
return errors.Wrap(createErrorWithoutObjectName(ctx, err, in.desired), "failed to create patch helper")
658660
}
659661
if err := helper.Patch(ctx); err != nil {
660-
return createErrorWithoutObjectName(err, in.desired)
662+
return createErrorWithoutObjectName(ctx, err, in.desired)
661663
}
662664
r.recorder.Eventf(in.cluster, corev1.EventTypeNormal, createEventReason, "Created %q", tlog.KObj{Obj: in.desired})
663665
return nil
@@ -731,10 +733,10 @@ func (r *Reconciler) reconcileReferencedTemplate(ctx context.Context, in reconci
731733
log.Infof("Creating %s", tlog.KObj{Obj: in.desired})
732734
helper, err := r.patchHelperFactory(ctx, nil, in.desired)
733735
if err != nil {
734-
return errors.Wrap(createErrorWithoutObjectName(err, in.desired), "failed to create patch helper")
736+
return errors.Wrap(createErrorWithoutObjectName(ctx, err, in.desired), "failed to create patch helper")
735737
}
736738
if err := helper.Patch(ctx); err != nil {
737-
return createErrorWithoutObjectName(err, in.desired)
739+
return createErrorWithoutObjectName(ctx, err, in.desired)
738740
}
739741
r.recorder.Eventf(in.cluster, corev1.EventTypeNormal, createEventReason, "Created %q", tlog.KObj{Obj: in.desired})
740742
return nil
@@ -783,10 +785,10 @@ func (r *Reconciler) reconcileReferencedTemplate(ctx context.Context, in reconci
783785
log.Infof("Creating %s", tlog.KObj{Obj: in.desired})
784786
helper, err := r.patchHelperFactory(ctx, nil, in.desired)
785787
if err != nil {
786-
return errors.Wrap(createErrorWithoutObjectName(err, in.desired), "failed to create patch helper")
788+
return errors.Wrap(createErrorWithoutObjectName(ctx, err, in.desired), "failed to create patch helper")
787789
}
788790
if err := helper.Patch(ctx); err != nil {
789-
return createErrorWithoutObjectName(err, in.desired)
791+
return createErrorWithoutObjectName(ctx, err, in.desired)
790792
}
791793
r.recorder.Eventf(in.cluster, corev1.EventTypeNormal, createEventReason, "Created %q as a replacement for %q (template rotation)", tlog.KObj{Obj: in.desired}, in.ref.Name)
792794

@@ -801,7 +803,13 @@ func (r *Reconciler) reconcileReferencedTemplate(ctx context.Context, in reconci
801803
// createErrorWithoutObjectName removes the name of the object from the error message. As each new Create call involves an
802804
// object with a unique generated name each error appears to be a different error. As the errors are being surfaced in a condition
803805
// on the Cluster, the name is removed here to prevent each creation error from triggering a new reconciliation.
804-
func createErrorWithoutObjectName(err error, obj client.Object) error {
806+
func createErrorWithoutObjectName(ctx context.Context, err error, obj client.Object) error {
807+
log := ctrl.LoggerFrom(ctx)
808+
if obj != nil {
809+
log = log.WithValues(obj.GetObjectKind().GroupVersionKind().Kind, klog.KObj(obj))
810+
}
811+
log.Error(err, "Failed to create object")
812+
805813
var statusError *apierrors.StatusError
806814
if errors.As(err, &statusError) {
807815
var msg string

internal/controllers/topology/cluster/reconcile_state_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2980,7 +2980,7 @@ func Test_createErrorWithoutObjectName(t *testing.T) {
29802980
for _, tt := range tests {
29812981
t.Run(tt.name, func(t *testing.T) {
29822982
g := NewWithT(t)
2983-
err := createErrorWithoutObjectName(tt.input, tt.obj)
2983+
err := createErrorWithoutObjectName(ctx, tt.input, tt.obj)
29842984
g.Expect(err.Error()).To(Equal(tt.expected.Error()))
29852985
})
29862986
}

0 commit comments

Comments
 (0)