Improve webhooks logging

Signed-off-by: Andrea Mazzotti <andrea.mazzotti@suse.com>
This commit is contained in:
Andrea Mazzotti 2025-05-23 11:32:39 +02:00
parent 18d45e5b00
commit 065a235939
No known key found for this signature in database
GPG Key ID: BE7A52DB92E66222
4 changed files with 41 additions and 19 deletions

View File

@ -35,7 +35,7 @@ import (
var ( var (
cannotUseWithIgnition = fmt.Sprintf("not supported when spec.format is set to %q", Ignition) cannotUseWithIgnition = fmt.Sprintf("not supported when spec.format is set to %q", Ignition)
rke2configlog = logf.Log.WithName("rke2config-resource") rke2ConfigLogger = logf.Log.WithName("RKE2Config")
) )
// RKE2ConfigCustomDefaulter struct is responsible for setting default values on the custom resource of the // RKE2ConfigCustomDefaulter struct is responsible for setting default values on the custom resource of the
@ -72,6 +72,8 @@ func (r *RKE2ConfigCustomDefaulter) Default(_ context.Context, obj runtime.Objec
return apierrors.NewBadRequest(fmt.Sprintf("expected a RKE2Config but got a %T", obj)) return apierrors.NewBadRequest(fmt.Sprintf("expected a RKE2Config but got a %T", obj))
} }
rke2ConfigLogger.Info("defaulting", "RKE2Config", klog.KObj(rc))
DefaultRKE2ConfigSpec(&rc.Spec) DefaultRKE2ConfigSpec(&rc.Spec)
return nil return nil
@ -95,7 +97,7 @@ func (r *RKE2ConfigCustomValidator) ValidateCreate(_ context.Context, obj runtim
return nil, fmt.Errorf("expected a RKE2Config object but got %T", obj) return nil, fmt.Errorf("expected a RKE2Config object but got %T", obj)
} }
rke2configlog.Info("RKE2Config validate create", "rke2config", klog.KObj(rc)) rke2ConfigLogger.Info("validate create", "RKE2Config", klog.KObj(rc))
var allErrs field.ErrorList var allErrs field.ErrorList
@ -115,7 +117,7 @@ func (r *RKE2ConfigCustomValidator) ValidateUpdate(_ context.Context, _, newObj
return nil, fmt.Errorf("expected a RKE2Config object but got %T", newObj) return nil, fmt.Errorf("expected a RKE2Config object but got %T", newObj)
} }
rke2configlog.Info("RKE2Config validate update", "rke2config", klog.KObj(newrc)) rke2ConfigLogger.Info("validate update", "RKE2Config", klog.KObj(newrc))
var allErrs field.ErrorList var allErrs field.ErrorList
@ -129,7 +131,14 @@ func (r *RKE2ConfigCustomValidator) ValidateUpdate(_ context.Context, _, newObj
} }
// ValidateDelete implements webhook.Validator so a webhook will be registered for the type. // ValidateDelete implements webhook.Validator so a webhook will be registered for the type.
func (r *RKE2ConfigCustomValidator) ValidateDelete(_ context.Context, _ runtime.Object) (admission.Warnings, error) { func (r *RKE2ConfigCustomValidator) ValidateDelete(_ context.Context, obj runtime.Object) (admission.Warnings, error) {
rc, ok := obj.(*RKE2Config)
if !ok {
return nil, fmt.Errorf("expected a RKE2Config object but got %T", obj)
}
rke2ConfigLogger.Info("validate delete", "RKE2Config", klog.KObj(rc))
return nil, nil return nil, nil
} }

View File

@ -22,14 +22,15 @@ import (
apierrors "k8s.io/apimachinery/pkg/api/errors" apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/klog/v2"
ctrl "sigs.k8s.io/controller-runtime" ctrl "sigs.k8s.io/controller-runtime"
logf "sigs.k8s.io/controller-runtime/pkg/log" logf "sigs.k8s.io/controller-runtime/pkg/log"
"sigs.k8s.io/controller-runtime/pkg/webhook" "sigs.k8s.io/controller-runtime/pkg/webhook"
"sigs.k8s.io/controller-runtime/pkg/webhook/admission" "sigs.k8s.io/controller-runtime/pkg/webhook/admission"
) )
// RKE2configtemplatelog is for logging in this package. // rke2ConfigTemplateLogger the RKE2ConfigTemplate webhook logger.
var RKE2configtemplatelog = logf.Log.WithName("RKE2configtemplate-resource") var rke2ConfigTemplateLogger = logf.Log.WithName("RKE2ConfigTemplate")
// RKE2ConfigTemplateCustomDefaulter struct is responsible for setting default values on the custom resource of the // RKE2ConfigTemplateCustomDefaulter struct is responsible for setting default values on the custom resource of the
// Kind RKE2ConfigTemplate when those are created or updated. // Kind RKE2ConfigTemplate when those are created or updated.
@ -65,7 +66,7 @@ func (r *RKE2ConfigTemplateCustomDefaulter) Default(_ context.Context, obj runti
return apierrors.NewBadRequest(fmt.Sprintf("expected a RKE2ConfigTemplate but got a %T", obj)) return apierrors.NewBadRequest(fmt.Sprintf("expected a RKE2ConfigTemplate but got a %T", obj))
} }
RKE2configtemplatelog.Info("default", "name", rct.Name) rke2ConfigTemplateLogger.Info("defaulting", "RKE2ConfigTemplate", klog.KObj(rct))
return nil return nil
} }
@ -81,7 +82,7 @@ func (r *RKE2ConfigTemplateCustomValidator) ValidateCreate(_ context.Context, ob
return nil, fmt.Errorf("expected a RKE2ConfigTemplate object but got %T", obj) return nil, fmt.Errorf("expected a RKE2ConfigTemplate object but got %T", obj)
} }
RKE2configtemplatelog.Info("validate create", "name", rct.Name) rke2ConfigTemplateLogger.Info("validate create", "RKE2ConfigTemplate", klog.KObj(rct))
return nil, nil return nil, nil
} }
@ -93,7 +94,7 @@ func (r *RKE2ConfigTemplateCustomValidator) ValidateUpdate(_ context.Context, ol
return nil, fmt.Errorf("expected a RKE2ConfigTemplate object but got %T", oldObj) return nil, fmt.Errorf("expected a RKE2ConfigTemplate object but got %T", oldObj)
} }
RKE2configtemplatelog.Info("validate update", "name", rct.Name) rke2ConfigTemplateLogger.Info("validate update", "RKE2ConfigTemplate", klog.KObj(rct))
return nil, nil return nil, nil
} }
@ -105,7 +106,7 @@ func (r *RKE2ConfigTemplateCustomValidator) ValidateDelete(_ context.Context, ob
return nil, fmt.Errorf("expected a RKE2ConfigTemplate object but got %T", obj) return nil, fmt.Errorf("expected a RKE2ConfigTemplate object but got %T", obj)
} }
RKE2configtemplatelog.Info("validate delete", "name", rct.Name) rke2ConfigTemplateLogger.Info("validate delete", "RKE2ConfigTemplate", klog.KObj(rct))
return nil, nil return nil, nil
} }

View File

@ -40,8 +40,8 @@ const (
defaultNodeVolumeDetachTimeout = 300 * time.Second defaultNodeVolumeDetachTimeout = 300 * time.Second
) )
// log is for logging in this package. // rke2ControlPlaneLogger is the RKE2ControlPlane webhook logger.
var rke2controlplanelog = logf.Log.WithName("rke2controlplane-resource") var rke2ControlPlaneLogger = logf.Log.WithName("RKE2ControlPlane")
// RKE2ControlPlaneCustomDefaulter struct is responsible for setting default values on the custom resource of the // RKE2ControlPlaneCustomDefaulter struct is responsible for setting default values on the custom resource of the
// Kind RKE2ControlPlane when those are created or updated. // Kind RKE2ControlPlane when those are created or updated.
@ -77,6 +77,8 @@ func (rd *RKE2ControlPlaneCustomDefaulter) Default(_ context.Context, obj runtim
return apierrors.NewBadRequest(fmt.Sprintf("expected a RKE2ControlPlane but got a %T", obj)) return apierrors.NewBadRequest(fmt.Sprintf("expected a RKE2ControlPlane but got a %T", obj))
} }
rke2ControlPlaneLogger.Info("defaulting", "RKE2ControlPlane", klog.KObj(rcp))
bootstrapv1.DefaultRKE2ConfigSpec(&rcp.Spec.RKE2ConfigSpec) bootstrapv1.DefaultRKE2ConfigSpec(&rcp.Spec.RKE2ConfigSpec)
// Defaults missing MachineTemplate.InfrastructureRef to Spec.InfrastructureRef // Defaults missing MachineTemplate.InfrastructureRef to Spec.InfrastructureRef
@ -129,7 +131,7 @@ func (rv *RKE2ControlPlaneCustomValidator) ValidateCreate(_ context.Context, obj
return nil, fmt.Errorf("expected a RKE2ControlPlane object but got %T", obj) return nil, fmt.Errorf("expected a RKE2ControlPlane object but got %T", obj)
} }
rke2controlplanelog.Info("RKE2ControlPlane validate create", "control-plane", klog.KObj(rcp)) rke2ControlPlaneLogger.Info("validate create", "RKE2ControlPlane", klog.KObj(rcp))
var allErrs field.ErrorList var allErrs field.ErrorList
@ -157,6 +159,8 @@ func (rv *RKE2ControlPlaneCustomValidator) ValidateUpdate(_ context.Context, old
return nil, fmt.Errorf("expected a RKE2ControlPlane object but got %T", newObj) return nil, fmt.Errorf("expected a RKE2ControlPlane object but got %T", newObj)
} }
rke2ControlPlaneLogger.Info("validate update", "RKE2ControlPlane", klog.KObj(oldControlplane))
var allErrs field.ErrorList var allErrs field.ErrorList
allErrs = append(allErrs, bootstrapv1.ValidateRKE2ConfigSpec(newControlplane.Name, &newControlplane.Spec.RKE2ConfigSpec)...) allErrs = append(allErrs, bootstrapv1.ValidateRKE2ConfigSpec(newControlplane.Name, &newControlplane.Spec.RKE2ConfigSpec)...)
@ -173,7 +177,7 @@ func (rv *RKE2ControlPlaneCustomValidator) ValidateUpdate(_ context.Context, old
// Ensure new fields NodeDrainTimeout, NodeVolumeDetachTimeout and NodeDeletionTimeout are mutable // Ensure new fields NodeDrainTimeout, NodeVolumeDetachTimeout and NodeDeletionTimeout are mutable
if oldControlplane.Spec.MachineTemplate.NodeDrainTimeout != nil && newControlplane.Spec.MachineTemplate.NodeDrainTimeout != nil && if oldControlplane.Spec.MachineTemplate.NodeDrainTimeout != nil && newControlplane.Spec.MachineTemplate.NodeDrainTimeout != nil &&
oldControlplane.Spec.MachineTemplate.NodeDrainTimeout.Duration != newControlplane.Spec.MachineTemplate.NodeDrainTimeout.Duration { oldControlplane.Spec.MachineTemplate.NodeDrainTimeout.Duration != newControlplane.Spec.MachineTemplate.NodeDrainTimeout.Duration {
rke2controlplanelog.Info( rke2ControlPlaneLogger.Info(
"NodeDrainTimeout field updated", "NodeDrainTimeout field updated",
"old", oldControlplane.Spec.MachineTemplate.NodeDrainTimeout.Duration, "old", oldControlplane.Spec.MachineTemplate.NodeDrainTimeout.Duration,
"new", newControlplane.Spec.MachineTemplate.NodeDrainTimeout.Duration, "new", newControlplane.Spec.MachineTemplate.NodeDrainTimeout.Duration,
@ -182,7 +186,7 @@ func (rv *RKE2ControlPlaneCustomValidator) ValidateUpdate(_ context.Context, old
if oldControlplane.Spec.MachineTemplate.NodeVolumeDetachTimeout != nil && newControlplane.Spec.MachineTemplate.NodeVolumeDetachTimeout != nil && if oldControlplane.Spec.MachineTemplate.NodeVolumeDetachTimeout != nil && newControlplane.Spec.MachineTemplate.NodeVolumeDetachTimeout != nil &&
oldControlplane.Spec.MachineTemplate.NodeVolumeDetachTimeout.Duration != newControlplane.Spec.MachineTemplate.NodeVolumeDetachTimeout.Duration { oldControlplane.Spec.MachineTemplate.NodeVolumeDetachTimeout.Duration != newControlplane.Spec.MachineTemplate.NodeVolumeDetachTimeout.Duration {
rke2controlplanelog.Info( rke2ControlPlaneLogger.Info(
"NodeVolumeDetachTimeout field updated", "NodeVolumeDetachTimeout field updated",
"old", oldControlplane.Spec.MachineTemplate.NodeVolumeDetachTimeout.Duration, "old", oldControlplane.Spec.MachineTemplate.NodeVolumeDetachTimeout.Duration,
"new", newControlplane.Spec.MachineTemplate.NodeVolumeDetachTimeout.Duration, "new", newControlplane.Spec.MachineTemplate.NodeVolumeDetachTimeout.Duration,
@ -191,7 +195,7 @@ func (rv *RKE2ControlPlaneCustomValidator) ValidateUpdate(_ context.Context, old
if oldControlplane.Spec.MachineTemplate.NodeDeletionTimeout != nil && newControlplane.Spec.MachineTemplate.NodeDeletionTimeout != nil && if oldControlplane.Spec.MachineTemplate.NodeDeletionTimeout != nil && newControlplane.Spec.MachineTemplate.NodeDeletionTimeout != nil &&
oldControlplane.Spec.MachineTemplate.NodeDeletionTimeout.Duration != newControlplane.Spec.MachineTemplate.NodeDeletionTimeout.Duration { oldControlplane.Spec.MachineTemplate.NodeDeletionTimeout.Duration != newControlplane.Spec.MachineTemplate.NodeDeletionTimeout.Duration {
rke2controlplanelog.Info( rke2ControlPlaneLogger.Info(
"NodeDeletionTimeout field updated", "NodeDeletionTimeout field updated",
"old", oldControlplane.Spec.MachineTemplate.NodeDeletionTimeout.Duration, "old", oldControlplane.Spec.MachineTemplate.NodeDeletionTimeout.Duration,
"new", newControlplane.Spec.MachineTemplate.NodeDeletionTimeout.Duration, "new", newControlplane.Spec.MachineTemplate.NodeDeletionTimeout.Duration,
@ -212,7 +216,7 @@ func (rv *RKE2ControlPlaneCustomValidator) ValidateDelete(_ context.Context, obj
return nil, fmt.Errorf("expected a RKE2ControlPlane object but got %T", obj) return nil, fmt.Errorf("expected a RKE2ControlPlane object but got %T", obj)
} }
rke2controlplanelog.Info("validate delete", "name", rcp.Name) rke2ControlPlaneLogger.Info("validate delete", "RKE2ControlPlane", klog.KObj(rcp))
return nil, nil return nil, nil
} }

View File

@ -26,12 +26,16 @@ import (
"k8s.io/apimachinery/pkg/util/validation/field" "k8s.io/apimachinery/pkg/util/validation/field"
"k8s.io/klog/v2" "k8s.io/klog/v2"
ctrl "sigs.k8s.io/controller-runtime" ctrl "sigs.k8s.io/controller-runtime"
logf "sigs.k8s.io/controller-runtime/pkg/log"
"sigs.k8s.io/controller-runtime/pkg/webhook" "sigs.k8s.io/controller-runtime/pkg/webhook"
"sigs.k8s.io/controller-runtime/pkg/webhook/admission" "sigs.k8s.io/controller-runtime/pkg/webhook/admission"
bootstrapv1 "github.com/rancher/cluster-api-provider-rke2/bootstrap/api/v1beta1" bootstrapv1 "github.com/rancher/cluster-api-provider-rke2/bootstrap/api/v1beta1"
) )
// rke2ControlPlaneTemplateLogger is the RKE2ControlPlaneTemplate webhook logger.
var rke2ControlPlaneTemplateLogger = logf.Log.WithName("RKE2ControlPlaneTemplate")
// RKE2ControlPlaneTemplateCustomDefaulter struct is responsible for setting default values on the custom resource of the // RKE2ControlPlaneTemplateCustomDefaulter struct is responsible for setting default values on the custom resource of the
// Kind RKE2ControlPlaneTemplate when those are created or updated. // Kind RKE2ControlPlaneTemplate when those are created or updated.
// NOTE: The +kubebuilder:object:generate=false marker prevents controller-gen from generating DeepCopy methods, // NOTE: The +kubebuilder:object:generate=false marker prevents controller-gen from generating DeepCopy methods,
@ -66,6 +70,8 @@ func (r *RKE2ControlPlaneTemplateCustomDefaulter) Default(_ context.Context, obj
return apierrors.NewBadRequest(fmt.Sprintf("expected a RKE2ControlPlaneTemplate but got a %T", obj)) return apierrors.NewBadRequest(fmt.Sprintf("expected a RKE2ControlPlaneTemplate but got a %T", obj))
} }
rke2ControlPlaneTemplateLogger.Info("defaulting", "RKE2ControlPlaneTemplate", klog.KObj(rcpt))
bootstrapv1.DefaultRKE2ConfigSpec(&rcpt.Spec.Template.Spec.RKE2ConfigSpec) bootstrapv1.DefaultRKE2ConfigSpec(&rcpt.Spec.Template.Spec.RKE2ConfigSpec)
return nil return nil
@ -82,7 +88,7 @@ func (r *RKE2ControlPlaneTemplateCustomValidator) ValidateCreate(_ context.Conte
return nil, fmt.Errorf("expected a RKE2ControlPlaneTemplate object but got %T", obj) return nil, fmt.Errorf("expected a RKE2ControlPlaneTemplate object but got %T", obj)
} }
rke2controlplanelog.Info("RKE2ControlPlane validate create", "control-plane", klog.KObj(rcpt)) rke2ControlPlaneTemplateLogger.Info("validate create", "RKE2ControlPlaneTemplate", klog.KObj(rcpt))
var allErrs field.ErrorList var allErrs field.ErrorList
@ -114,6 +120,8 @@ func (r *RKE2ControlPlaneTemplateCustomValidator) ValidateUpdate(_ context.Conte
}) })
} }
rke2ControlPlaneTemplateLogger.Info("validate update", "RKE2ControlPlaneTemplate", klog.KObj(oldControlplane))
var allErrs field.ErrorList var allErrs field.ErrorList
allErrs = append(allErrs, bootstrapv1.ValidateRKE2ConfigSpec(newControlplane.Name, &newControlplane.Spec.Template.Spec.RKE2ConfigSpec)...) allErrs = append(allErrs, bootstrapv1.ValidateRKE2ConfigSpec(newControlplane.Name, &newControlplane.Spec.Template.Spec.RKE2ConfigSpec)...)
@ -144,7 +152,7 @@ func (r *RKE2ControlPlaneTemplateCustomValidator) ValidateDelete(_ context.Conte
return nil, fmt.Errorf("expected a RKE2ControlPlaneTemplate object but got %T", obj) return nil, fmt.Errorf("expected a RKE2ControlPlaneTemplate object but got %T", obj)
} }
rke2controlplanelog.Info("validate delete", "name", rcpt.Name) rke2ControlPlaneTemplateLogger.Info("validate delete", "RKE2ControlPlaneTemplate", klog.KObj(rcpt))
return nil, nil return nil, nil
} }