diff --git a/api/builtins/NamespaceTransformer.go b/api/builtins/NamespaceTransformer.go index 6b6ee67de..e8ac8c25c 100644 --- a/api/builtins/NamespaceTransformer.go +++ b/api/builtins/NamespaceTransformer.go @@ -46,19 +46,7 @@ func (p *NamespaceTransformerPlugin) Transform(m resmap.ResMap) error { id := r.OrgId() - if !p.YAMLSupport { - // use the old style transform - applicableFs := p.applicableFieldSpecs(id) - - for _, fs := range applicableFs { - err := transform.MutateField( - r.Map(), fs.PathSlice(), fs.CreateIfNotPresent, - p.changeNamespace(r)) - if err != nil { - return err - } - } - } else { + if p.YAMLSupport { // use the new style transform err := filtersutil.ApplyToJSON(namespace.Filter{ Namespace: p.Namespace, @@ -67,18 +55,28 @@ func (p *NamespaceTransformerPlugin) Transform(m resmap.ResMap) error { if err != nil { return err } + } else { + // use the old style transform + applicableFs := p.applicableFieldSpecs(id) + for _, fs := range applicableFs { + err := transform.MutateField( + r.Map(), fs.PathSlice(), fs.CreateIfNotPresent, + p.changeNamespace(r)) + if err != nil { + return err + } + } } matches := m.GetMatchingResourcesByCurrentId(r.CurId().Equals) if len(matches) != 1 { - return fmt.Errorf("namespace transformation produces ID conflict: %+v", matches) + return fmt.Errorf( + "namespace transformation produces ID conflict: %+v", matches) } } return nil } -const metaNamespace = "metadata/namespace" - // Special casing metadata.namespace since // all objects have it, even "ClusterKind" objects // that don't exist in a namespace (the Namespace @@ -86,7 +84,9 @@ const metaNamespace = "metadata/namespace" func (p *NamespaceTransformerPlugin) applicableFieldSpecs(id resid.ResId) []types.FieldSpec { var res []types.FieldSpec for _, fs := range p.FieldSpecs { - if id.IsSelected(&fs.Gvk) && (fs.Path != metaNamespace || (fs.Path == metaNamespace && id.IsNamespaceableKind())) { + if id.IsSelected(&fs.Gvk) && + (fs.Path != types.MetadataNamespacePath || + (fs.Path == types.MetadataNamespacePath && id.IsNamespaceableKind())) { res = append(res, fs) } } diff --git a/api/filters/namespace/namespace.go b/api/filters/namespace/namespace.go index 677490c5f..e9c928ab5 100644 --- a/api/filters/namespace/namespace.go +++ b/api/filters/namespace/namespace.go @@ -78,7 +78,7 @@ func (ns Filter) metaNamespaceHack(obj *yaml.RNode, meta yaml.ResourceMeta) erro } f := fsslice.Filter{ FsSlice: []types.FieldSpec{ - {Path: metaNamespaceField, CreateIfNotPresent: true}, + {Path: types.MetadataNamespacePath, CreateIfNotPresent: true}, }, SetValue: fsslice.SetScalar(ns.Namespace), CreateKind: yaml.ScalarNode, // Namespace is a ScalarNode @@ -143,7 +143,7 @@ func (ns Filter) removeFieldSpecsForHacks(fs types.FsSlice) types.FsSlice { var val types.FsSlice for i := range fs { // implemented by metaNamespaceHack - if fs[i].Path == metaNamespaceField { + if fs[i].Path == types.MetadataNamespacePath { continue } // implemented by roleBindingHack @@ -160,7 +160,6 @@ func (ns Filter) removeFieldSpecsForHacks(fs types.FsSlice) types.FsSlice { } const ( - metaNamespaceField = "metadata/namespace" subjectsField = "subjects" roleBindingKind = "RoleBinding" clusterRoleBindingKind = "ClusterRoleBinding" diff --git a/api/types/kustomization.go b/api/types/kustomization.go index 9c2c03d94..4be803f53 100644 --- a/api/types/kustomization.go +++ b/api/types/kustomization.go @@ -4,8 +4,9 @@ package types const ( - KustomizationVersion = "kustomize.config.k8s.io/v1beta1" - KustomizationKind = "Kustomization" + KustomizationVersion = "kustomize.config.k8s.io/v1beta1" + KustomizationKind = "Kustomization" + MetadataNamespacePath = "metadata/namespace" ) // Kustomization holds the information needed to generate customized k8s api resources. diff --git a/plugin/builtin/namespacetransformer/NamespaceTransformer.go b/plugin/builtin/namespacetransformer/NamespaceTransformer.go index 9487e3350..5eb333def 100644 --- a/plugin/builtin/namespacetransformer/NamespaceTransformer.go +++ b/plugin/builtin/namespacetransformer/NamespaceTransformer.go @@ -50,19 +50,7 @@ func (p *plugin) Transform(m resmap.ResMap) error { id := r.OrgId() - if !p.YAMLSupport { - // use the old style transform - applicableFs := p.applicableFieldSpecs(id) - - for _, fs := range applicableFs { - err := transform.MutateField( - r.Map(), fs.PathSlice(), fs.CreateIfNotPresent, - p.changeNamespace(r)) - if err != nil { - return err - } - } - } else { + if p.YAMLSupport { // use the new style transform err := filtersutil.ApplyToJSON(namespace.Filter{ Namespace: p.Namespace, @@ -71,18 +59,28 @@ func (p *plugin) Transform(m resmap.ResMap) error { if err != nil { return err } + } else { + // use the old style transform + applicableFs := p.applicableFieldSpecs(id) + for _, fs := range applicableFs { + err := transform.MutateField( + r.Map(), fs.PathSlice(), fs.CreateIfNotPresent, + p.changeNamespace(r)) + if err != nil { + return err + } + } } matches := m.GetMatchingResourcesByCurrentId(r.CurId().Equals) if len(matches) != 1 { - return fmt.Errorf("namespace transformation produces ID conflict: %+v", matches) + return fmt.Errorf( + "namespace transformation produces ID conflict: %+v", matches) } } return nil } -const metaNamespace = "metadata/namespace" - // Special casing metadata.namespace since // all objects have it, even "ClusterKind" objects // that don't exist in a namespace (the Namespace @@ -90,7 +88,9 @@ const metaNamespace = "metadata/namespace" func (p *plugin) applicableFieldSpecs(id resid.ResId) []types.FieldSpec { var res []types.FieldSpec for _, fs := range p.FieldSpecs { - if id.IsSelected(&fs.Gvk) && (fs.Path != metaNamespace || (fs.Path == metaNamespace && id.IsNamespaceableKind())) { + if id.IsSelected(&fs.Gvk) && + (fs.Path != types.MetadataNamespacePath || + (fs.Path == types.MetadataNamespacePath && id.IsNamespaceableKind())) { res = append(res, fs) } }