Skip to content

Commit 90f7678

Browse files
jiachengxuDirectXMan12
authored andcommitted
Deprecate validation:XPreserveUnknownFields marker
It's a duplicate of pruning:PreserveUnknownFields, so we should eventually remove it, but it's seeing some use in the wild. Some folks use it at type-level, so port the `pruning:` variant to suppor that as well.
1 parent 15412e2 commit 90f7678

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

pkg/crd/markers/validation.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,20 @@ var FieldOnlyMarkers = []*definitionWithHelp{
7878
must(markers.MakeAnyTypeDefinition("kubebuilder:default", markers.DescribesField, Default{})).
7979
WithHelp(Default{}.Help()),
8080

81-
must(markers.MakeDefinition("kubebuilder:pruning:PreserveUnknownFields", markers.DescribesField, XPreserveUnknownFields{})).
82-
WithHelp(XPreserveUnknownFields{}.Help()),
8381
must(markers.MakeDefinition("kubebuilder:validation:EmbeddedResource", markers.DescribesField, XEmbeddedResource{})).
8482
WithHelp(XEmbeddedResource{}.Help()),
8583
}
8684

85+
// ValidationIshMarkers are field-and-type markers that don't fall under the
86+
// :validation: prefix, and/or don't have a name that directly matches their
87+
// type.
88+
var ValidationIshMarkers = []*definitionWithHelp{
89+
must(markers.MakeDefinition("kubebuilder:pruning:PreserveUnknownFields", markers.DescribesField, XPreserveUnknownFields{})).
90+
WithHelp(XPreserveUnknownFields{}.Help()),
91+
must(markers.MakeDefinition("kubebuilder:pruning:PreserveUnknownFields", markers.DescribesType, XPreserveUnknownFields{})).
92+
WithHelp(XPreserveUnknownFields{}.Help()),
93+
}
94+
8795
func init() {
8896
AllDefinitions = append(AllDefinitions, ValidationMarkers...)
8997

@@ -99,6 +107,7 @@ func init() {
99107
}
100108

101109
AllDefinitions = append(AllDefinitions, FieldOnlyMarkers...)
110+
AllDefinitions = append(AllDefinitions, ValidationIshMarkers...)
102111
}
103112

104113
// +controllertools:marker:generateHelp:category="CRD validation"
@@ -191,6 +200,10 @@ type Default struct {
191200
// if nested properties or additionalProperties are specified in the schema.
192201
// This can either be true or undefined. False
193202
// is forbidden.
203+
//
204+
// NB: The kubebuilder:validation:XPreserveUnknownFields variant is deprecated
205+
// in favor of the kubebuilder:pruning:PreserveUnknownFields variant. They function
206+
// identically.
194207
type XPreserveUnknownFields struct{}
195208

196209
// +controllertools:marker:generateHelp:category="CRD validation"

pkg/crd/markers/zz_generated.markerhelp.go

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

0 commit comments

Comments
 (0)