github.com/argoproj/argo-events@v1.9.1/hack/crds.go (about) 1 package main 2 3 import ( 4 "os" 5 6 "sigs.k8s.io/yaml" 7 ) 8 9 type obj = map[string]interface{} 10 11 func cleanCRD(filename string) { 12 data, err := os.ReadFile(filename) 13 if err != nil { 14 panic(err) 15 } 16 crd := make(map[string]interface{}) 17 err = yaml.Unmarshal(data, &crd) 18 if err != nil { 19 panic(err) 20 } 21 delete(crd, "status") 22 metadata := crd["metadata"].(obj) 23 if metadata["name"] == "eventbuses.argoproj.io" { 24 metadata["name"] = "eventbus.argoproj.io" 25 } 26 delete(metadata, "annotations") 27 delete(metadata, "creationTimestamp") 28 spec := crd["spec"].(obj) 29 delete(spec, "validation") 30 names := spec["names"].(obj) 31 if names["plural"] == "eventbuses" { 32 names["plural"] = "eventbus" 33 } 34 versions := spec["versions"].([]interface{}) 35 version := versions[0].(obj) 36 properties := version["schema"].(obj)["openAPIV3Schema"].(obj)["properties"].(obj) 37 for k := range properties { 38 if k == "spec" || k == "status" { 39 properties[k] = obj{"type": "object", "x-kubernetes-preserve-unknown-fields": true} 40 } 41 } 42 data, err = yaml.Marshal(crd) 43 if err != nil { 44 panic(err) 45 } 46 err = os.WriteFile(filename, data, 0666) 47 if err != nil { 48 panic(err) 49 } 50 }