Skip to content

Commit

Permalink
crd: prohibit preserveUnknownFields=true
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexanderYastrebov committed Apr 15, 2024
1 parent 2c0f108 commit dd877e4
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 13 deletions.
17 changes: 9 additions & 8 deletions pkg/crd/gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -107,14 +107,12 @@ func transformRemoveCRDStatus(obj map[string]interface{}) error {
return nil
}

// transformPreserveUnknownFields adds spec.preserveUnknownFields=value.
func transformPreserveUnknownFields(value bool) func(map[string]interface{}) error {
return func(obj map[string]interface{}) error {
if spec, ok := obj["spec"].(map[interface{}]interface{}); ok {
spec["preserveUnknownFields"] = value
}
return nil
// transformPreserveUnknownFields adds spec.preserveUnknownFields=false.
func transformPreserveUnknownFields(obj map[string]interface{}) error {
if spec, ok := obj["spec"].(map[interface{}]interface{}); ok {
spec["preserveUnknownFields"] = false
}
return nil
}

func (g Generator) Generate(ctx *genall.GenerationContext) error {
Expand Down Expand Up @@ -168,7 +166,10 @@ func (g Generator) Generate(ctx *genall.GenerationContext) error {
genall.WithTransform(genall.TransformRemoveCreationTimestamp),
}
if g.PreserveUnknownFields != nil {
yamlOpts = append(yamlOpts, genall.WithTransform(transformPreserveUnknownFields(*g.PreserveUnknownFields)))
if *g.PreserveUnknownFields {
return fmt.Errorf("preserveUnknownFields must be false")
}
yamlOpts = append(yamlOpts, genall.WithTransform(transformPreserveUnknownFields))
}

for _, groupKind := range kubeKinds {
Expand Down
7 changes: 2 additions & 5 deletions pkg/crd/gen_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,17 +133,14 @@ var _ = Describe("CRD Generation proper defaulting", func() {
Expect(out.buf.String()).To(ContainSubstring("preserveUnknownFields: false"))
})

It("should add preserveUnknownFields=true when specified", func() {
It("should not add preserveUnknownFields=true when specified", func() {
By("calling Generate")
yes := true
gen := &crd.Generator{
CRDVersions: []string{"v1"},
PreserveUnknownFields: &yes,
}
Expect(gen.Generate(ctx)).NotTo(HaveOccurred())

By("searching preserveUnknownFields")
Expect(out.buf.String()).To(ContainSubstring("preserveUnknownFields: true"))
Expect(gen.Generate(ctx)).To(MatchError("preserveUnknownFields must be false"))
})

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

0 comments on commit dd877e4

Please sign in to comment.