This commit creates a new version of the alpha configuration functions framework. Goals include:
- Make it easy to build multi-version APIs with the framework (not previously facilitated at all).
- Simplify the framework's APIs where redundant configuration options exist (leaving the most powerful, replacing others with helpers to maintain usability they provided).
- Make the Framework's APIs more consistent (e.g. between the various template types, usage of kio.Filter, field names)
- Decouple responsibilities (e.g. command creation, resource list processing, generation of templating functions).
- Make the framework even more powerfully pluggable (e.g. any kio.Filter can be a selector, and the selector the framework provides is itself a filter built from reusable abstractions).
- Improve documentation.
- Make container patches merge fields (notably list fields like `env`) correctly.
Some functions may read local files using relative paths. Update the test
framework to `cd` into the directory containing the config.yaml before
running the function.
The previous implementation combined --mount and -v notation
of argument [1] adding :ro to make the read-only mount point.
E.g. the command [2] called docker with the following
params: [3]. As a result instead of the read-only
folder /tmp/source, the read-write folder /tmp/source/:ro/'
is created.
This PR:
1. substitutes ':ro' with correct ',readonly'.
2. changes 'src=' and 'dst=' with 'source=' and 'target=' as
it is stated in the documentation [1]
3. introduces the ability to EXPLICITLY create a mountpoint
with read-write access. To do so it's necessary to add
',rw=true' to the --mount argument
4. corrects UTs adds some additional coverage for added
functionality
[1]
https://docs.docker.com/storage/bind-mounts/#use-a-read-only-bind-mount
[2]
kustomize fn run ./d --mount type=bind,src=$(pwd)/test/,dst=/tmp/source/
[3]
--mount type=bind,src=/home/ubuntu/kpt-functions-catalog/functions/ts/test/,dst=/tmp/source/:ro