* Ahead-of-time wildcard path expansion solution
* Wrapped PathGetter solution
This approach doesn't work when multiple existing sequence elements
should match, i.e. because the sequence contains maps and we're
searching on a key they all contain (target all containers with a certain
image would be one use case for this). PathGetter just takes the first
match in that case, which is not what we want.
* Add creation support to PathMatcher
* Regression test for existing bug when creation is enabled and sequence query should match multiple elements
* PathMatcher Create tests and support for sequence appending
* revert hyphen append support
PathGetter treats it as meaning 'last' not 'append' and does not have test coverage for its handling of this when create is set. Semantics are dubious given that multiple Replacement fieldPaths may be specified, which would cause successive appends.
* This also provides a solution to issue 1493
* Review feedback
* replacements: demonstrate broken behavior when using 'create: true' with an already existing field
* replacements: fix issue with 'create: true' option when there is an existing field
* Suggestion for PR 4667
* code review
* lint error
Co-authored-by: Katrina Verey <katrina.verey@shopify.com>
Erasing the scalar type tag leads to unfortunate circumstances, in that
the resulting yaml code is valid yaml, but will not meet the object
spec.
For example, using the replacement transformer to take a port number as
a string from a ConfigMap and set a Pod port would previously end up
with:
- containerPort: "8080"
when the spec requires that this is not a string:
- containerPort: 8080
Added unit tests for conversion to and from integers and booleans, plus
creation from string and creation from integer.
The creation behavior needs some refinement in a future PR.
Signed-off-by: Jim Ramsay <i.am@jimramsay.com>