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:
annelausf
2022-05-02 14:30:33 -07:00
committed by GitHub
parent 233b6adf7e
commit 188e35fbfd
6 changed files with 7 additions and 9 deletions

View File

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

View File

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