Skip to content

Commit 00e4139

Browse files
authored
Merge pull request #362 from DirectXMan12/bug/preserve-unknown-fields-default
🐛 preserveUnknownFields: true on v1beta1, option
2 parents 257814f + 6eb7baf commit 00e4139

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

pkg/crd/gen.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,15 @@ type Generator struct {
4444
// Only works with the v1beta1 CRD version.
4545
TrivialVersions bool `marker:",optional"`
4646

47+
// PreserveUnknownFields indicates whether or not we should turn off pruning.
48+
//
49+
// Left unspecified, it'll default to true when only a v1beta1 CRD is
50+
// generated (to preserve compatibility with older versions of this tool),
51+
// or false otherwise.
52+
//
53+
// It's required to be false for v1 CRDs.
54+
PreserveUnknownFields *bool `marker:",optional"`
55+
4756
// MaxDescLen specifies the maximum description length for fields in CRD's OpenAPI schema.
4857
//
4958
// 0 indicates drop the description for all fields completely.
@@ -117,6 +126,20 @@ func (g Generator) Generate(ctx *genall.GenerationContext) error {
117126
}
118127
}
119128

129+
// *If* we're only generating v1beta1 CRDs, default to `preserveUnknownFields: (unset)`
130+
// for compatibility purposes. In any other case, default to false, since that's
131+
// the sensible default and is required for v1.
132+
v1beta1Only := len(crdVersions) == 1 && crdVersions[0] == "v1beta1"
133+
switch {
134+
case (g.PreserveUnknownFields == nil || *g.PreserveUnknownFields) && v1beta1Only:
135+
crd := versionedCRDs[0].(*apiextlegacy.CustomResourceDefinition)
136+
crd.Spec.PreserveUnknownFields = nil
137+
case g.PreserveUnknownFields == nil, g.PreserveUnknownFields != nil && !*g.PreserveUnknownFields:
138+
// it'll be false here (coming from v1) -- leave it as such
139+
default:
140+
return fmt.Errorf("you may only set PreserveUnknownFields to true with v1beta1 CRDs")
141+
}
142+
120143
for i, crd := range versionedCRDs {
121144
var fileName string
122145
if i == 0 {

0 commit comments

Comments
 (0)