mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-07-17 17:52:12 +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"
|
"strings"
|
||||||
|
|
||||||
"sigs.k8s.io/kustomize/api/filters/filtersutil"
|
"sigs.k8s.io/kustomize/api/filters/filtersutil"
|
||||||
"sigs.k8s.io/kustomize/api/internal/utils"
|
|
||||||
"sigs.k8s.io/kustomize/api/types"
|
"sigs.k8s.io/kustomize/api/types"
|
||||||
"sigs.k8s.io/kustomize/kyaml/errors"
|
"sigs.k8s.io/kustomize/kyaml/errors"
|
||||||
"sigs.k8s.io/kustomize/kyaml/resid"
|
"sigs.k8s.io/kustomize/kyaml/resid"
|
||||||
|
"sigs.k8s.io/kustomize/kyaml/utils"
|
||||||
"sigs.k8s.io/kustomize/kyaml/yaml"
|
"sigs.k8s.io/kustomize/kyaml/yaml"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import (
|
|||||||
"sigs.k8s.io/kustomize/api/resource"
|
"sigs.k8s.io/kustomize/api/resource"
|
||||||
"sigs.k8s.io/kustomize/api/types"
|
"sigs.k8s.io/kustomize/api/types"
|
||||||
"sigs.k8s.io/kustomize/kyaml/resid"
|
"sigs.k8s.io/kustomize/kyaml/resid"
|
||||||
|
kyaml_utils "sigs.k8s.io/kustomize/kyaml/utils"
|
||||||
"sigs.k8s.io/kustomize/kyaml/yaml"
|
"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 {
|
func applyToNode(node *yaml.RNode, value *yaml.RNode, target *types.TargetSelector) error {
|
||||||
for _, fp := range target.FieldPaths {
|
for _, fp := range target.FieldPaths {
|
||||||
fieldPath := utils.SmarterPathSplitter(fp, ".")
|
fieldPath := kyaml_utils.SmarterPathSplitter(fp, ".")
|
||||||
var t *yaml.RNode
|
var t *yaml.RNode
|
||||||
var err error
|
var err error
|
||||||
if target.Options != nil && target.Options.Create {
|
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 == "" {
|
if r.Source.FieldPath == "" {
|
||||||
r.Source.FieldPath = types.DefaultReplacementFieldPath
|
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...))
|
rn, err := source.Pipe(yaml.Lookup(fieldPath...))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
. "sigs.k8s.io/kustomize/api/internal/utils"
|
. "sigs.k8s.io/kustomize/kyaml/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestPathSplitter(t *testing.T) {
|
func TestPathSplitter(t *testing.T) {
|
||||||
@@ -15,6 +15,7 @@ import (
|
|||||||
"sigs.k8s.io/kustomize/kyaml/errors"
|
"sigs.k8s.io/kustomize/kyaml/errors"
|
||||||
"sigs.k8s.io/kustomize/kyaml/internal/forked/github.com/go-yaml/yaml"
|
"sigs.k8s.io/kustomize/kyaml/internal/forked/github.com/go-yaml/yaml"
|
||||||
"sigs.k8s.io/kustomize/kyaml/sliceutil"
|
"sigs.k8s.io/kustomize/kyaml/sliceutil"
|
||||||
|
"sigs.k8s.io/kustomize/kyaml/utils"
|
||||||
"sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/labels"
|
"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.
|
// assuming we keep the var feature in kustomize.
|
||||||
// The other end of this is: refvar.go:updateNodeValue.
|
// The other end of this is: refvar.go:updateNodeValue.
|
||||||
func (rn *RNode) GetFieldValue(path string) (interface{}, error) {
|
func (rn *RNode) GetFieldValue(path string) (interface{}, error) {
|
||||||
fields := convertSliceIndex(strings.Split(path, "."))
|
fields := convertSliceIndex(utils.SmarterPathSplitter(path, "."))
|
||||||
rn, err := rn.Pipe(Lookup(fields...))
|
rn, err := rn.Pipe(Lookup(fields...))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
@@ -2310,8 +2310,6 @@ func TestGetAnnotations(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestGetFieldValueWithDot(t *testing.T) {
|
func TestGetFieldValueWithDot(t *testing.T) {
|
||||||
t.Skip()
|
|
||||||
|
|
||||||
const input = `
|
const input = `
|
||||||
kind: Pod
|
kind: Pod
|
||||||
metadata:
|
metadata:
|
||||||
@@ -2330,8 +2328,6 @@ metadata:
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, "hello-world-app", app)
|
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`)
|
fooAppName, err := labelRNode.GetFieldValue(`foo\.appname`)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, "hello-world-foo", fooAppName) // no field named 'foo.appname'
|
require.Equal(t, "hello-world-foo", fooAppName) // no field named 'foo.appname'
|
||||||
|
|||||||
Reference in New Issue
Block a user