Allow additional fields when a schema cycle is detected #304
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.
Previously, when a schema cycle was detected during CRD generation, the generator would return an empty object schema. This is mostly fine because:
The only downfall of this approach is that nothing will get saved to etcd for the cycled schema. Meaning that, all fields would be ignored by Kubernetes and nothing would get saved.
Let's say a schema exists like:
Then, after generating the corresponding CRD with the existing code, the Manager field will always be empty in etcd.
After this change, the cycle will still be detected in the same way, but the resulting schema will allow additional fields. Kubernetes will skip the validation of fields and the object will get successfully saved to Kubernetes. For the example above, this means that it would be possible to save fields to etcd for the Manager field. These fields would not be validated by Kubernetes, but the JSON decoding would handle it properly and updates to the object will ensure it has the desired fields.