Merge "Substring replacement fix in ReplacementTranformer"

This commit is contained in:
Zuul 2020-09-01 16:56:22 +00:00 committed by Gerrit Code Review
commit ad21e64a98
2 changed files with 52 additions and 0 deletions
pkg/document/plugin/replacement/v1alpha1

@ -169,8 +169,17 @@ func substitute(m resmap.ResMap, to *types.ReplTarget, replacement interface{})
tmp = append(tmp, part)
}
p = strings.Join(tmp, "[")
// Exclude substring portion from dot replacer
// substring can contain IP or any dot separated string
substringPattern := ""
p, substringPattern = extractSubstringPattern(p)
pathSlice := strings.Split(p, ".")
// append back the extracted substring
if len(substringPattern) > 0 {
pathSlice[len(pathSlice)-1] = pathSlice[len(pathSlice)-1] + "%" +
substringPattern + "%"
}
for i, part := range pathSlice {
pathSlice[i] = strings.ReplaceAll(part, dotReplacer, ".")
}

@ -158,6 +158,49 @@ kind: ReplacementTransformer
metadata:
name: notImportantHere
replacements:
- source:
value: 1.17.0
target:
objref:
kind: Deployment
fieldrefs:
- spec.template.spec.containers[name=nginx-tagged].image%1.7.9%
`,
in: `
group: apps
apiVersion: v1
kind: Deployment
metadata:
name: deploy1
spec:
template:
spec:
containers:
- image: nginx:1.7.9
name: nginx-tagged
`,
expectedOut: `apiVersion: v1
group: apps
kind: Deployment
metadata:
name: deploy1
spec:
template:
spec:
containers:
- image: nginx:1.17.0
name: nginx-tagged
`,
},
{
cfg: `
apiVersion: airshipit.org/v1alpha1
kind: ReplacementTransformer
metadata:
name: notImportantHere
replacements:
- source:
objref:
kind: Pod