INNER CODE UNIT · Go
removeUselessRequired
pingcap/tidb-operator · cmd/crd-modifier/main.go:198
func removeUselessRequired(crd *apiextensionsv1.CustomResourceDefinition, keys ...string) {
for i := range crd.Spec.Versions {
v := &crd.Spec.Versions[i]
handleVersion(v, keys...)
}
}
func handleVersion(version *apiextensionsv1.CustomResourceDefinitionVersion, keys ...string) {
handleSelectedJSONSchemaProps(version.Schema.OpenAPIV3Schema, keys...)
}
func handleSelectedJSONSchemaProps(props *apiextensionsv1.JSONSchemaProps, keys ...string) {
if len(keys) == 0 {
// When the target path is reached, call handleJSONSchemaProps to remove the required fields.
// `nil` is passed for retainKeys, which means no keys should be retained (i.e., all are removed).
handleJSONSchemaProps(props, nil)
return
}