Skip to content

Commit 4430194

Browse files
authored
Merge pull request kubernetes#77750 from sttts/sttts-structural-schema-false-XPreserveUnknownFields
apiextensions: forbid false x-kubernetes-preserve-unknown-fields
2 parents 1cb9c20 + 69c50a7 commit 4430194

File tree

14 files changed

+283
-204
lines changed

14 files changed

+283
-204
lines changed

api/openapi-spec/swagger.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/deepcopy.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,5 +258,15 @@ func (in *JSONSchemaProps) DeepCopy() *JSONSchemaProps {
258258
}
259259
}
260260

261+
if in.XPreserveUnknownFields != nil {
262+
in, out := &in.XPreserveUnknownFields, &out.XPreserveUnknownFields
263+
if *in == nil {
264+
*out = nil
265+
} else {
266+
*out = new(bool)
267+
**out = **in
268+
}
269+
}
270+
261271
return out
262272
}

staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types_jsonschema.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ type JSONSchemaProps struct {
6161
// in the validation schema. This affects fields recursively,
6262
// but switches back to normal pruning behaviour if nested
6363
// properties or additionalProperties are specified in the schema.
64-
XPreserveUnknownFields bool
64+
// This can either be true or undefined. False is forbidden.
65+
XPreserveUnknownFields *bool
6566

6667
// x-kubernetes-embedded-resource defines that the value is an
6768
// embedded Kubernetes runtime.Object, with TypeMeta and

staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/deepcopy.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,5 +234,15 @@ func (in *JSONSchemaProps) DeepCopy() *JSONSchemaProps {
234234
}
235235
}
236236

237+
if in.XPreserveUnknownFields != nil {
238+
in, out := &in.XPreserveUnknownFields, &out.XPreserveUnknownFields
239+
if *in == nil {
240+
*out = nil
241+
} else {
242+
*out = new(bool)
243+
**out = **in
244+
}
245+
}
246+
237247
return out
238248
}

staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.pb.go

Lines changed: 197 additions & 192 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types_jsonschema.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ type JSONSchemaProps struct {
6161
// in the validation schema. This affects fields recursively,
6262
// but switches back to normal pruning behaviour if nested
6363
// properties or additionalProperties are specified in the schema.
64-
XPreserveUnknownFields bool `json:"x-kubernetes-preserve-unknown-fields,omitempty" protobuf:"bytes,38,opt,name=xKubernetesPreserveUnknownFields"`
64+
// This can either be true or undefined. False is forbidden.
65+
XPreserveUnknownFields *bool `json:"x-kubernetes-preserve-unknown-fields,omitempty" protobuf:"bytes,38,opt,name=xKubernetesPreserveUnknownFields"`
6566

6667
// x-kubernetes-embedded-resource defines that the value is an
6768
// embedded Kubernetes runtime.Object, with TypeMeta and

staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ go_test(
3434
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions:go_default_library",
3535
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
3636
"//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
37+
"//vendor/k8s.io/utils/pointer:go_default_library",
3738
],
3839
)
3940

staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/validation.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -673,6 +673,10 @@ func ValidateCustomResourceDefinitionOpenAPISchema(schema *apiextensions.JSONSch
673673
}
674674
}
675675

676+
if schema.XPreserveUnknownFields != nil && *schema.XPreserveUnknownFields == false {
677+
allErrs = append(allErrs, field.Invalid(fldPath.Child("x-kubernetes-preserve-unknown-fields"), *schema.XPreserveUnknownFields, "must be true or undefined"))
678+
}
679+
676680
return allErrs
677681
}
678682

0 commit comments

Comments
 (0)