spiegel_podman/pkg/specgen
Matthew Heon 2de22ebf0d Ensure volumes-from mounts override image volumes
We do not allow volumes and mounts to be placed at the same
location in the container, with create-time checks to ensure this
does not happen. User-added conflicts cannot be resolved (if the
user adds two separate mounts to, say, /myapp, we can't resolve
that contradiction and error), but for many other volume sources,
we can solve the contradiction ourselves via a priority
hierarchy. Image volumes come first, and are overridden by the
`--volumes-from` flag, which are overridden by user-added mounts,
etc, etc. The problem here is that we were not properly handling
volumes-from overriding image volumes. An inherited volume from
--volumes-from would supercede an image volume, but an inherited
mount would not. Solution is fortunately simple - just clear out
the map entry for the other type when adding volumes-from
volumes.

Makes me wish for Rust sum types - conflict resolution would be a
lot simpler if we could use a sum type for volumes and bind
mounts and thus have a single map instead of two maps, one for
each type.

Fixes #19529

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2023-08-07 15:04:33 -04:00
..
generate Ensure volumes-from mounts override image volumes 2023-08-07 15:04:33 -04:00
config_unsupported.go pkg: switch to golang native error wrapping 2022-07-08 08:54:47 +02:00
container_validate.go add "healthy" sdnotify policy 2023-07-25 11:17:44 +02:00
namespaces.go libpod: remove CNI word were no longer applicable 2022-12-16 14:20:14 +01:00
namespaces_test.go libpod: Add pasta networking mode 2022-11-08 00:16:35 +01:00
pod_validate.go libpod: Add pasta networking mode 2022-11-08 00:16:35 +01:00
podspecgen.go Add --restart flag to pod create 2023-05-02 10:29:58 -04:00
resources_freebsd.go specgen/generate: Factor out setting resource limits from CompleteSpec 2022-09-08 08:24:18 +01:00
resources_linux.go specgen/generate: Factor out setting resource limits from CompleteSpec 2022-09-08 08:24:18 +01:00
specgen.go fix: initContainer restart policy overridden by pod 2023-05-05 15:40:56 +08:00
specgen_test.go libpod: support idmap for --rootfs 2023-02-02 22:35:00 +01:00
utils.go implement podman update 2022-09-01 13:02:01 -04:00
utils_linux.go implement podman update 2022-09-01 13:02:01 -04:00
volumes.go add support for subpath in play kube for named volumes 2022-12-12 09:54:00 -05:00
winpath.go pkg: switch to golang native error wrapping 2022-07-08 08:54:47 +02:00
winpath_linux.go Implements Windows volume/mount support 2022-04-25 13:52:27 -05:00
winpath_unsupported.go Implements Windows volume/mount support 2022-04-25 13:52:27 -05:00
winpath_windows.go Implements Windows volume/mount support 2022-04-25 13:52:27 -05:00