Skip to content

Commit dd877e4

Browse files
crd: prohibit preserveUnknownFields=true
1 parent 2c0f108 commit dd877e4

File tree

2 files changed

+11
-13
lines changed

2 files changed

+11
-13
lines changed

pkg/crd/gen.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -107,14 +107,12 @@ func transformRemoveCRDStatus(obj map[string]interface{}) error {
107107
return nil
108108
}
109109

110-
// transformPreserveUnknownFields adds spec.preserveUnknownFields=value.
111-
func transformPreserveUnknownFields(value bool) func(map[string]interface{}) error {
112-
return func(obj map[string]interface{}) error {
113-
if spec, ok := obj["spec"].(map[interface{}]interface{}); ok {
114-
spec["preserveUnknownFields"] = value
115-
}
116-
return nil
110+
// transformPreserveUnknownFields adds spec.preserveUnknownFields=false.
111+
func transformPreserveUnknownFields(obj map[string]interface{}) error {
112+
if spec, ok := obj["spec"].(map[interface{}]interface{}); ok {
113+
spec["preserveUnknownFields"] = false
117114
}
115+
return nil
118116
}
119117

120118
func (g Generator) Generate(ctx *genall.GenerationContext) error {
@@ -168,7 +166,10 @@ func (g Generator) Generate(ctx *genall.GenerationContext) error {
168166
genall.WithTransform(genall.TransformRemoveCreationTimestamp),
169167
}
170168
if g.PreserveUnknownFields != nil {
171-
yamlOpts = append(yamlOpts, genall.WithTransform(transformPreserveUnknownFields(*g.PreserveUnknownFields)))
169+
if *g.PreserveUnknownFields {
170+
return fmt.Errorf("preserveUnknownFields must be false")
171+
}
172+
yamlOpts = append(yamlOpts, genall.WithTransform(transformPreserveUnknownFields))
172173
}
173174

174175
for _, groupKind := range kubeKinds {

pkg/crd/gen_integration_test.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -133,17 +133,14 @@ var _ = Describe("CRD Generation proper defaulting", func() {
133133
Expect(out.buf.String()).To(ContainSubstring("preserveUnknownFields: false"))
134134
})
135135

136-
It("should add preserveUnknownFields=true when specified", func() {
136+
It("should not add preserveUnknownFields=true when specified", func() {
137137
By("calling Generate")
138138
yes := true
139139
gen := &crd.Generator{
140140
CRDVersions: []string{"v1"},
141141
PreserveUnknownFields: &yes,
142142
}
143-
Expect(gen.Generate(ctx)).NotTo(HaveOccurred())
144-
145-
By("searching preserveUnknownFields")
146-
Expect(out.buf.String()).To(ContainSubstring("preserveUnknownFields: true"))
143+
Expect(gen.Generate(ctx)).To(MatchError("preserveUnknownFields must be false"))
147144
})
148145

149146
It("should not add preserveUnknownFields when not specified", func() {

0 commit comments

Comments
 (0)