diff --git a/pkg/transformers/labelsandannotations_test.go b/pkg/transformers/labelsandannotations_test.go index f0609d3f9..d4886f9b0 100644 --- a/pkg/transformers/labelsandannotations_test.go +++ b/pkg/transformers/labelsandannotations_test.go @@ -31,6 +31,7 @@ var cmap = schema.GroupVersionKind{Version: "v1", Kind: "ConfigMap"} var deploy = schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "Deployment"} var statefulset = schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "StatefulSet"} var foo = schema.GroupVersionKind{Group: "example.com", Version: "v1", Kind: "Foo"} +var crd = schema.GroupVersionKind{Group: "apiwctensions.k8s.io", Version: "v1beta1", Kind: "CustomResourceDefinition"} func TestLabelsRun(t *testing.T) { m := resmap.ResMap{ diff --git a/pkg/transformers/prefixname.go b/pkg/transformers/prefixname.go index 81e1608c9..7632f6396 100644 --- a/pkg/transformers/prefixname.go +++ b/pkg/transformers/prefixname.go @@ -21,13 +21,16 @@ import ( "fmt" "github.com/kubernetes-sigs/kustomize/pkg/resmap" + + "k8s.io/apimachinery/pkg/runtime/schema" ) // namePrefixTransformer contains the prefix and the path config for each field that // the name prefix will be applied. type namePrefixTransformer struct { - prefix string - pathConfigs []PathConfig + prefix string + pathConfigs []PathConfig + skipPathConfigs []PathConfig } var _ Transformer = &namePrefixTransformer{} @@ -39,6 +42,12 @@ var defaultNamePrefixPathConfigs = []PathConfig{ }, } +var skipNamePrefixPathConfigs = []PathConfig{ + { + GroupVersionKind: &schema.GroupVersionKind{Kind: "CustomResourceDefinition"}, + }, +} + // NewDefaultingNamePrefixTransformer construct a namePrefixTransformer with defaultNamePrefixPathConfigs. func NewDefaultingNamePrefixTransformer(nameprefix string) (Transformer, error) { return NewNamePrefixTransformer(defaultNamePrefixPathConfigs, nameprefix) @@ -52,13 +61,25 @@ func NewNamePrefixTransformer(pc []PathConfig, np string) (Transformer, error) { if pc == nil { return nil, errors.New("pathConfigs is not expected to be nil") } - return &namePrefixTransformer{pathConfigs: pc, prefix: np}, nil + return &namePrefixTransformer{pathConfigs: pc, prefix: np, skipPathConfigs: skipNamePrefixPathConfigs}, nil } // Transform prepends the name prefix. func (o *namePrefixTransformer) Transform(m resmap.ResMap) error { + mf := resmap.ResMap{} + for id := range m { - objMap := m[id].UnstructuredContent() + mf[id] = m[id] + for _, path := range o.skipPathConfigs { + if selectByGVK(id.Gvk(), path.GroupVersionKind) { + delete(mf, id) + break + } + } + } + + for id := range mf { + objMap := mf[id].UnstructuredContent() for _, path := range o.pathConfigs { if !selectByGVK(id.Gvk(), path.GroupVersionKind) { continue diff --git a/pkg/transformers/prefixname_test.go b/pkg/transformers/prefixname_test.go index a9f3fa175..b0aa9d1ea 100644 --- a/pkg/transformers/prefixname_test.go +++ b/pkg/transformers/prefixname_test.go @@ -42,6 +42,14 @@ func TestPrefixNameRun(t *testing.T) { "name": "cm2", }, }), + resource.NewResId(crd, "crd"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "apiextensions.k8s.io/v1beta1", + "kind": "CustomResourceDefinition", + "metadata": map[string]interface{}{ + "name": "crd", + }, + }), } expected := resmap.ResMap{ resource.NewResId(cmap, "cm1"): resource.NewResourceFromMap( @@ -60,6 +68,14 @@ func TestPrefixNameRun(t *testing.T) { "name": "someprefix-cm2", }, }), + resource.NewResId(crd, "crd"): resource.NewResourceFromMap( + map[string]interface{}{ + "apiVersion": "apiextensions.k8s.io/v1beta1", + "kind": "CustomResourceDefinition", + "metadata": map[string]interface{}{ + "name": "crd", + }, + }), } npt, err := NewDefaultingNamePrefixTransformer("someprefix-")