@@ -28,6 +28,8 @@ import (
28
28
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
29
29
"k8s.io/apimachinery/pkg/util/validation/field"
30
30
"k8s.io/apiserver/pkg/storage/names"
31
+ "k8s.io/klog/v2"
32
+ ctrl "sigs.k8s.io/controller-runtime"
31
33
"sigs.k8s.io/controller-runtime/pkg/client"
32
34
33
35
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
@@ -506,10 +508,10 @@ func (r *Reconciler) createMachineDeployment(ctx context.Context, cluster *clust
506
508
log .Infof (fmt .Sprintf ("Creating %s" , tlog.KObj {Obj : md .Object }))
507
509
helper , err := r .patchHelperFactory (ctx , nil , md .Object )
508
510
if err != nil {
509
- return createErrorWithoutObjectName (err , md .Object )
511
+ return createErrorWithoutObjectName (ctx , err , md .Object )
510
512
}
511
513
if err := helper .Patch (ctx ); err != nil {
512
- return createErrorWithoutObjectName (err , md .Object )
514
+ return createErrorWithoutObjectName (ctx , err , md .Object )
513
515
}
514
516
r .recorder .Eventf (cluster , corev1 .EventTypeNormal , createEventReason , "Created %q" , tlog.KObj {Obj : md .Object })
515
517
@@ -654,10 +656,10 @@ func (r *Reconciler) reconcileReferencedObject(ctx context.Context, in reconcile
654
656
log .Infof ("Creating %s" , tlog.KObj {Obj : in .desired })
655
657
helper , err := r .patchHelperFactory (ctx , nil , in .desired , structuredmerge .IgnorePaths (in .ignorePaths ))
656
658
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" )
658
660
}
659
661
if err := helper .Patch (ctx ); err != nil {
660
- return createErrorWithoutObjectName (err , in .desired )
662
+ return createErrorWithoutObjectName (ctx , err , in .desired )
661
663
}
662
664
r .recorder .Eventf (in .cluster , corev1 .EventTypeNormal , createEventReason , "Created %q" , tlog.KObj {Obj : in .desired })
663
665
return nil
@@ -731,10 +733,10 @@ func (r *Reconciler) reconcileReferencedTemplate(ctx context.Context, in reconci
731
733
log .Infof ("Creating %s" , tlog.KObj {Obj : in .desired })
732
734
helper , err := r .patchHelperFactory (ctx , nil , in .desired )
733
735
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" )
735
737
}
736
738
if err := helper .Patch (ctx ); err != nil {
737
- return createErrorWithoutObjectName (err , in .desired )
739
+ return createErrorWithoutObjectName (ctx , err , in .desired )
738
740
}
739
741
r .recorder .Eventf (in .cluster , corev1 .EventTypeNormal , createEventReason , "Created %q" , tlog.KObj {Obj : in .desired })
740
742
return nil
@@ -783,10 +785,10 @@ func (r *Reconciler) reconcileReferencedTemplate(ctx context.Context, in reconci
783
785
log .Infof ("Creating %s" , tlog.KObj {Obj : in .desired })
784
786
helper , err := r .patchHelperFactory (ctx , nil , in .desired )
785
787
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" )
787
789
}
788
790
if err := helper .Patch (ctx ); err != nil {
789
- return createErrorWithoutObjectName (err , in .desired )
791
+ return createErrorWithoutObjectName (ctx , err , in .desired )
790
792
}
791
793
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 )
792
794
@@ -801,7 +803,13 @@ func (r *Reconciler) reconcileReferencedTemplate(ctx context.Context, in reconci
801
803
// createErrorWithoutObjectName removes the name of the object from the error message. As each new Create call involves an
802
804
// object with a unique generated name each error appears to be a different error. As the errors are being surfaced in a condition
803
805
// 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
+
805
813
var statusError * apierrors.StatusError
806
814
if errors .As (err , & statusError ) {
807
815
var msg string
0 commit comments