From dfeab6eca8c1e7490bf4ab5bd56324024e21a6d7 Mon Sep 17 00:00:00 2001 From: Alexander Zielenski Date: Mon, 23 Oct 2023 12:14:56 -0700 Subject: [PATCH] fetch a shared correlated object off the validation options if it exists c --- .../pkg/apiserver/validation/ratcheting.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/ratcheting.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/ratcheting.go index a079931dd59..3cc653e7466 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/ratcheting.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/ratcheting.go @@ -60,8 +60,20 @@ func (r *RatchetingSchemaValidator) Validate(new interface{}, options ...Validat } func (r *RatchetingSchemaValidator) ValidateUpdate(new, old interface{}, options ...ValidationOption) *validate.Result { + opts := NewValidationOptions(options...) + + if !opts.Ratcheting { + sv := validate.NewSchemaValidator(r.schema, r.root, r.path, r.knownFormats, r.options...) + return sv.Validate(new) + } + + correlation := opts.CorrelatedObject + if correlation == nil { + correlation = common.NewCorrelatedObject(new, old, &celopenapi.Schema{Schema: r.schema}) + } + return newRatchetingValueValidator( - common.NewCorrelatedObject(new, old, &celopenapi.Schema{Schema: r.schemaArgs.schema}), + correlation, r.schemaArgs, ).Validate(new) }