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  }