From 5ed96a34d7ae5fad7887980a3b1b86f350058cad Mon Sep 17 00:00:00 2001 From: koba1t Date: Thu, 10 Feb 2022 05:13:29 +0900 Subject: [PATCH] rename IsMatchEveryIndex to IsWildcard --- api/filters/replacement/replacement.go | 1 - api/filters/replacement/replacement_test.go | 72 +++++++++++++++++++++ kyaml/yaml/fns.go | 12 ++-- kyaml/yaml/match.go | 2 +- 4 files changed, 79 insertions(+), 8 deletions(-) diff --git a/api/filters/replacement/replacement.go b/api/filters/replacement/replacement.go index edc40e912..0cf269419 100644 --- a/api/filters/replacement/replacement.go +++ b/api/filters/replacement/replacement.go @@ -119,7 +119,6 @@ func applyToNode(node *yaml.RNode, value *yaml.RNode, target *types.TargetSelect if target.Options != nil && target.Options.Create { t, err = node.Pipe(yaml.LookupCreate(value.YNode().Kind, fieldPath...)) } else { - // t, err = node.Pipe(yaml.Lookup(fieldPath...)) t, err = node.Pipe(&yaml.PathMatcher{Path: fieldPath}) } if err != nil { diff --git a/api/filters/replacement/replacement_test.go b/api/filters/replacement/replacement_test.go index 00efd72a9..e5077b93f 100644 --- a/api/filters/replacement/replacement_test.go +++ b/api/filters/replacement/replacement_test.go @@ -1431,6 +1431,78 @@ spec: name: second version: latest property: second`, + }, + "one replacements target has multiple value": { + input: `apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: sample-deploy + name: sample-deploy +spec: + replicas: 1 + selector: + matchLabels: + app: sample-deploy + template: + metadata: + labels: + app: sample-deploy + spec: + containers: + - image: nginx + name: main + env: + - name: deployment-name + value: XXXXX + - name: foo + value: bar + - image: nginx + name: sidecar + env: + - name: deployment-name + value: YYYYY +`, + replacements: `replacements: +- source: + kind: Deployment + name: sample-deploy + fieldPath: metadata.name + targets: + - select: + kind: Deployment + fieldPaths: + - spec.template.spec.containers.[image=nginx].env.[name=deployment-name].value +`, + expected: `apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: sample-deploy + name: sample-deploy +spec: + replicas: 1 + selector: + matchLabels: + app: sample-deploy + template: + metadata: + labels: + app: sample-deploy + spec: + containers: + - image: nginx + name: main + env: + - name: deployment-name + value: sample-deploy + - name: foo + value: bar + - image: nginx + name: sidecar + env: + - name: deployment-name + value: sample-deploy`, }, "index contains '*' character": { input: `apiVersion: apps/v1 diff --git a/kyaml/yaml/fns.go b/kyaml/yaml/fns.go index 999ef53e0..22a9c14d9 100644 --- a/kyaml/yaml/fns.go +++ b/kyaml/yaml/fns.go @@ -789,6 +789,12 @@ func IsIdxNumber(p string) bool { return err == nil && idx >= 0 } +// IsWildcard returns true if p is matching every elements. +// e.g. "*" +func IsWildcard(p string) bool { + return p == "*" +} + // SplitIndexNameValue splits a lookup part Val index into the field name // and field value to match. // e.g. splits [name=nginx] into (name, nginx) @@ -803,12 +809,6 @@ func SplitIndexNameValue(p string) (string, string, error) { return parts[0], parts[1], nil } -// IsMatchEveryIndex returns true if p is matching every elements. -// e.g. "*" -func IsMatchEveryIndex(p string) bool { - return p == "*" -} - // IncrementFieldIndex increments i to point to the next field name element in // a slice of Contents. func IncrementFieldIndex(i int) int { diff --git a/kyaml/yaml/match.go b/kyaml/yaml/match.go index 713dd2543..a7cdf83d8 100644 --- a/kyaml/yaml/match.go +++ b/kyaml/yaml/match.go @@ -90,7 +90,7 @@ func (p *PathMatcher) filter(rn *RNode) (*RNode, error) { return p.doSeq(rn) } - if IsMatchEveryIndex(p.Path[0]) { + if IsWildcard(p.Path[0]) { // match every elements (*) return p.doMatchEvery(rn) }