-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Open
Labels
kind/featureCategorizes issue or PR as related to a new feature.Categorizes issue or PR as related to a new feature.lifecycle/frozenIndicates that an issue or PR should not be auto-closed due to staleness.Indicates that an issue or PR should not be auto-closed due to staleness.
Description
CustomValidator and CustomDefaulter interfaces could use generics support to potentially shorten the handler funcs like this:
func (w *KubernetesPoolWebhook) ValidateUpdate(ctx context.Context, oldObj, newObj runtime.Object) (admission.Warnings, error) {
oldO, ok := oldObj.(apiv1alpha1.KubernetesPool)
if err != nil {
return nil, errors.NewBadRequest(fmt.Sprintf("unexpected type %T", oldObj))
}
newO, ok := newObj.(apiv1alpha1.KubernetesPool)
if err != nil {
return nil, errors.NewBadRequest(fmt.Sprintf("unexpected type %T", newObj))
}
return nil, validateUpdate(oldO, newO)
}
to
func (w *KubernetesPoolWebhook) ValidateUpdate(ctx context.Context, oldObj, newObj apiv1alpha1.KubernetesPool) (admission.Warnings, error) {
return nil, validateUpdate(oldO, newO)
}
Also statements like:
return ctrl.NewWebhookManagedBy(mgr).
For(&apiv1alpha1.KubernetesPool{}).
WithDefaulter(w).
WithValidator(w).
Complete()
can probably be inferred with more type safety (right now there's nothing ensures a & b are handlers of the same type in WithDefaulter(a).WithDefaulter(b)
?). e.g.
return ctrl.NewWebhookManagedBy[apiv1alpha1.KubernetesPool](mgr).
WithDefaulter(w).
WithValidator(w).
Complete()
/kind proposal
/kind feature
Metadata
Metadata
Assignees
Labels
kind/featureCategorizes issue or PR as related to a new feature.Categorizes issue or PR as related to a new feature.lifecycle/frozenIndicates that an issue or PR should not be auto-closed due to staleness.Indicates that an issue or PR should not be auto-closed due to staleness.