mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-10 08:20:59 +00:00
Added code for fields with dots(.) in their names work as needed (#4591)
* Added code for fields with dots(.) in their names work as needed Co-authored-by: sarjamil <sjamil@salesforce.com> * Fixed imports Co-authored-by: sarjamil <sjamil@salesforce.com> * Removed comments Co-authored-by: sarjamil <sjamil@salesforce.com> * Fix filter method Co-authored-by: sarjamil <sjamil@salesforce.com> * Fixed failing tests Co-authored-by: sarjamil <sjamil@salesforce.com> * Remove comments Add co-author to PR. Co-authored-by: sarjamil <sjamil@salesforce.com> * Add co-author to PR. Co-authored-by: sarjamil sjamil@salesforce.com Co-authored-by: sarjamil <sjamil@salesforce.com>
This commit is contained in:
@@ -8,10 +8,10 @@ import (
|
||||
"strings"
|
||||
|
||||
"sigs.k8s.io/kustomize/api/filters/filtersutil"
|
||||
"sigs.k8s.io/kustomize/api/internal/utils"
|
||||
"sigs.k8s.io/kustomize/api/types"
|
||||
"sigs.k8s.io/kustomize/kyaml/errors"
|
||||
"sigs.k8s.io/kustomize/kyaml/resid"
|
||||
"sigs.k8s.io/kustomize/kyaml/utils"
|
||||
"sigs.k8s.io/kustomize/kyaml/yaml"
|
||||
)
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ import (
|
||||
"sigs.k8s.io/kustomize/api/resource"
|
||||
"sigs.k8s.io/kustomize/api/types"
|
||||
"sigs.k8s.io/kustomize/kyaml/resid"
|
||||
kyaml_utils "sigs.k8s.io/kustomize/kyaml/utils"
|
||||
"sigs.k8s.io/kustomize/kyaml/yaml"
|
||||
)
|
||||
|
||||
@@ -114,7 +115,7 @@ func rejectId(rejects []*types.Selector, id *resid.ResId) bool {
|
||||
|
||||
func applyToNode(node *yaml.RNode, value *yaml.RNode, target *types.TargetSelector) error {
|
||||
for _, fp := range target.FieldPaths {
|
||||
fieldPath := utils.SmarterPathSplitter(fp, ".")
|
||||
fieldPath := kyaml_utils.SmarterPathSplitter(fp, ".")
|
||||
var t *yaml.RNode
|
||||
var err error
|
||||
if target.Options != nil && target.Options.Create {
|
||||
@@ -199,7 +200,7 @@ func getReplacement(nodes []*yaml.RNode, r *types.Replacement) (*yaml.RNode, err
|
||||
if r.Source.FieldPath == "" {
|
||||
r.Source.FieldPath = types.DefaultReplacementFieldPath
|
||||
}
|
||||
fieldPath := utils.SmarterPathSplitter(r.Source.FieldPath, ".")
|
||||
fieldPath := kyaml_utils.SmarterPathSplitter(r.Source.FieldPath, ".")
|
||||
|
||||
rn, err := source.Pipe(yaml.Lookup(fieldPath...))
|
||||
if err != nil {
|
||||
|
||||
@@ -7,7 +7,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
. "sigs.k8s.io/kustomize/api/internal/utils"
|
||||
. "sigs.k8s.io/kustomize/kyaml/utils"
|
||||
)
|
||||
|
||||
func TestPathSplitter(t *testing.T) {
|
||||
@@ -15,6 +15,7 @@ import (
|
||||
"sigs.k8s.io/kustomize/kyaml/errors"
|
||||
"sigs.k8s.io/kustomize/kyaml/internal/forked/github.com/go-yaml/yaml"
|
||||
"sigs.k8s.io/kustomize/kyaml/sliceutil"
|
||||
"sigs.k8s.io/kustomize/kyaml/utils"
|
||||
"sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/labels"
|
||||
)
|
||||
|
||||
@@ -1207,7 +1208,7 @@ func (rn *RNode) GetString(path string) (string, error) {
|
||||
// assuming we keep the var feature in kustomize.
|
||||
// The other end of this is: refvar.go:updateNodeValue.
|
||||
func (rn *RNode) GetFieldValue(path string) (interface{}, error) {
|
||||
fields := convertSliceIndex(strings.Split(path, "."))
|
||||
fields := convertSliceIndex(utils.SmarterPathSplitter(path, "."))
|
||||
rn, err := rn.Pipe(Lookup(fields...))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -2310,8 +2310,6 @@ func TestGetAnnotations(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestGetFieldValueWithDot(t *testing.T) {
|
||||
t.Skip()
|
||||
|
||||
const input = `
|
||||
kind: Pod
|
||||
metadata:
|
||||
@@ -2330,8 +2328,6 @@ metadata:
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "hello-world-app", app)
|
||||
|
||||
// TODO: doesn't currently work; we expect to be able to escape the dot in future
|
||||
// https://github.com/kubernetes-sigs/kustomize/issues/4487
|
||||
fooAppName, err := labelRNode.GetFieldValue(`foo\.appname`)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "hello-world-foo", fooAppName) // no field named 'foo.appname'
|
||||
|
||||
Reference in New Issue
Block a user