Fix ParseSchemaV3 to handle allOf-wrapped $ref#584
Conversation
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: bryantbiggs The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
Please fix the commit message. assuming it has to do with symbols being used. |
When a schema has no type but a single-element allOf containing a ref, resolve it as a reference instead of falling through to Arbitrary. Build the Ref from the outer schema so sibling fields like description, default, and extensions are preserved.
4dc8abd to
bafd5e9
Compare
|
The Kubernetes project currently lacks enough contributors to adequately respond to all PRs. This bot triages PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
Summary
ParseSchemaV3indocument_v3.goto handle theallOf-wrapped$refpatternallOfcontaining a$ref, resolve it as a reference instead of falling through toArbitraryContext
In OpenAPI 3.0, sibling properties alongside
$refmust be ignored per the spec. The compliant way to combine$refwithdescription/defaultis to wrap the$refin a single-elementallOf:kube-openapi's own builder (
builder3/util.WrapRefs) produces this format, and Kubernetes >= 1.35 serves v3 specs using it. However,ParseSchemaV3had zero handling forallOf— these schemas fell through to the default case and were returned asArbitrary, losing the reference.This matches the pattern already used in
pkg/schemaconv/openapi.go:130-133.Fixes #477
Unblocks #583
Test plan
TestV3AllOfRef— verifies both direct$refandallOf-wrapped$refresolve asproto.Referencego vetclean