Skip adding nameprefix for CRD

This commit is contained in:
Jingfang Liu
2018-06-08 09:36:05 -07:00
parent 6b5569d5ed
commit 5f75564ff5
3 changed files with 42 additions and 4 deletions

View File

@@ -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{

View File

@@ -21,6 +21,8 @@ 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
@@ -28,6 +30,7 @@ import (
type namePrefixTransformer struct {
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

View File

@@ -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-")