From 7d2e5febccf58672309b3580b7a594d857cd0246 Mon Sep 17 00:00:00 2001 From: Tomy GUICHARD Date: Mon, 8 Aug 2022 18:41:24 +0200 Subject: [PATCH] Fix panic in conversion webhook --- pkg/webhook/conversion/conversion.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pkg/webhook/conversion/conversion.go b/pkg/webhook/conversion/conversion.go index a5b7a282ce..05eb84806e 100644 --- a/pkg/webhook/conversion/conversion.go +++ b/pkg/webhook/conversion/conversion.go @@ -31,6 +31,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/conversion" logf "sigs.k8s.io/controller-runtime/pkg/log" ) @@ -69,16 +70,21 @@ func (wh *Webhook) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } + var uid types.UID + if convertReview.Request != nil { + uid = convertReview.Request.UID + } + // TODO(droot): may be move the conversion logic to a separate module to // decouple it from the http layer ? resp, err := wh.handleConvertRequest(convertReview.Request) if err != nil { - log.Error(err, "failed to convert", "request", convertReview.Request.UID) + log.Error(err, "failed to convert", "request", uid) convertReview.Response = errored(err) } else { convertReview.Response = resp } - convertReview.Response.UID = convertReview.Request.UID + convertReview.Response.UID = uid convertReview.Request = nil err = json.NewEncoder(w).Encode(convertReview)