🐛 prefer CRDs when discovery API types, as CRDs contain more betterer information #39
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
When refactoring the CRD discovery to use OpenAPI schemas, I decided Kraft meiner Wassersuppe (viel Spaß beim Googlen) that we do not need the CRD-based discovery anymore, because why have 2 mechanisms that both result in a CRD?
Well, CRDs contain more useful data than the OpenAPI schema. This begins with the custom path expression on subresources (like the scale subresource) and ends at additional printer columns. Also, loads of other validation rules would get lost when relying only on the OpenAPI schema:
To fix this, I aligned the code more with kcp, which already has a "prefer CRD, fallback to OpenAPI" mentality. Our code here is still a bit but noticeably different from kcp because we do not export the storage version necessarily, but whatever version is defined in the PublishedResource. That means when we find a CRD, we also drop all other versions from it, including conversion rules, which kcp would not do.
Related issue(s)
Fixes #38
Release Notes