moby/daemon
Cory Snider 0f6eeecac0 daemon: consolidate runtimes config validation
The daemon has made a habit of mutating the DefaultRuntime and Runtimes
values in the Config struct to merge defaults. This would be fine if it
was a part of the regular configuration loading and merging process,
as is done with other config options. The trouble is it does so in
surprising places, such as in functions with 'verify' or 'validate' in
their name. It has been necessary in order to validate that the user has
not defined a custom runtime named "runc" which would shadow the
built-in runtime of the same name. Other daemon code depends on the
runtime named "runc" always being defined in the config, but merging it
with the user config at the same time as the other defaults are merged
would trip the validation. The root of the issue is that the daemon has
used the same config values for both validating the daemon runtime
configuration as supplied by the user and for keeping track of which
runtimes have been set up by the daemon. Now that a completely separate
value is used for the latter purpose, surprising contortions are no
longer required to make the validation work as intended.

Consolidate the validation of the runtimes config and merging of the
built-in runtimes into the daemon.setupRuntimes() function. Set the
result of merging the built-in runtimes config and default default
runtime on the returned runtimes struct, without back-propagating it
onto the config.Config argument.

Signed-off-by: Cory Snider <csnider@mirantis.com>
2023-06-01 14:45:25 -04:00
..
cluster remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
config daemon: consolidate runtimes config validation 2023-06-01 14:45:25 -04:00
containerd Update BuildKit registry config on daemon reload 2023-06-01 14:45:21 -04:00
events daemon/events: use strings.Cut() 2022-12-21 11:09:01 +01:00
graphdriver vendor: github.com/mistifyio/go-zfs/v3 v3.0.1 2023-05-23 12:52:16 +02:00
images remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
initlayer pkg/containerfs: drop ContainerFS type alias 2022-09-23 16:56:53 -04:00
links daemon/links: use strings.Cut() 2022-12-21 11:09:01 +01:00
listeners remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
logger remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
names Add canonical import comment 2018-02-05 16:51:57 -05:00
network remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
stats remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
testdata Remove libtrust dep from api 2017-09-06 12:05:19 -04:00
apparmor_default.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
apparmor_default_unsupported.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
archive.go daemon: refactor isOnlineFSOperationPermitted 2022-10-26 12:06:31 -04:00
archive_tarcopyoptions.go Finish refactor of UID/GID usage to a new struct 2022-03-14 16:28:57 -04:00
archive_tarcopyoptions_unix.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
archive_tarcopyoptions_windows.go Add canonical import comment 2018-02-05 16:51:57 -05:00
archive_unix.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
archive_windows.go pkg/system: move CheckSystemDriveAndRemoveDriveLetter to pkg/archive 2022-11-29 17:07:48 +01:00
attach.go Make it explicit raw|multiplexed stream implementation being used 2022-05-12 11:36:31 +02:00
auth.go daemon: use types/registry.AuthConfig 2022-07-29 23:05:18 +02:00
cdi.go Remove need to set Capabilities for cdi driver 2023-05-16 17:07:58 +02:00
changes.go c8d: add support for docker diff 2023-03-30 10:29:07 +01:00
checkpoint.go Refactor libcontainerd to minimize c8d RPCs 2022-08-24 14:59:08 -04:00
cluster.go Fix libnetwork imports 2021-06-01 21:51:23 +00:00
commit.go daemon: Daemon.CreateImageFromContainer(): remove intermediate vars 2023-04-29 02:59:54 +02:00
configs.go Merge configs/secrets in unix implementation 2018-02-16 11:25:14 -05:00
configs_linux.go Add canonical import comment 2018-02-05 16:51:57 -05:00
configs_unsupported.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
configs_windows.go Add canonical import comment 2018-02-05 16:51:57 -05:00
container.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
container_linux.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
container_operations.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
container_operations_unix.go daemon: read-copy-update the daemon config 2023-06-01 14:45:24 -04:00
container_operations_windows.go daemon: read-copy-update the daemon config 2023-06-01 14:45:24 -04:00
container_unix_test.go daemon: consolidate runtimes config validation 2023-06-01 14:45:25 -04:00
container_windows.go daemon: fix capitalization of some functions 2020-04-14 17:22:19 +02:00
containerfs_linux.go Support recursively read-only (RRO) mounts 2023-05-26 01:58:24 +09:00
content.go update to golang 1.19 2022-09-07 15:27:16 +02:00
create.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
create_test.go bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-02-11 00:06:42 +01:00
create_unix.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
create_windows.go Fix pruning anon volume created from image config 2023-03-14 11:06:26 +01:00
daemon.go daemon: consolidate runtimes config validation 2023-06-01 14:45:25 -04:00
daemon_linux.go daemon: consolidate runtimes config validation 2023-06-01 14:45:25 -04:00
daemon_linux_test.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
daemon_test.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
daemon_unix.go daemon: consolidate runtimes config validation 2023-06-01 14:45:25 -04:00
daemon_unix_test.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
daemon_unsupported.go daemon: read-copy-update the daemon config 2023-06-01 14:45:24 -04:00
daemon_windows.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
daemon_windows_test.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
debugtrap_unix.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
debugtrap_unsupported.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
debugtrap_windows.go pkg/signal: move signal.DumpStacks() to a separate package 2021-07-15 18:09:43 +02:00
delete.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
delete_test.go Refactor libcontainerd to minimize c8d RPCs 2022-08-24 14:59:08 -04:00
dependency.go Bump swarmkit to v2 2022-04-21 17:33:07 -04:00
devices.go Remove need to set Capabilities for cdi driver 2023-05-16 17:07:58 +02:00
disk_usage.go daemon/disk_usage: Use context aware singleflight 2022-11-29 16:46:19 +01:00
errors.go Merge pull request #44003 from vvoland/invalidfilter 2023-02-22 16:24:47 +00:00
events.go daemon: LogDaemonEventWithAttributes: don't call SystemInfo() 2022-06-07 22:01:12 +02:00
events_test.go daemon: rename variables that collide with imported package names 2020-04-14 17:22:23 +02:00
exec.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
exec_linux.go daemon: read-copy-update the daemon config 2023-06-01 14:45:24 -04:00
exec_linux_test.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
exec_windows.go daemon: read-copy-update the daemon config 2023-06-01 14:45:24 -04:00
export.go remove GetLayerByID from ImageService interface 2023-03-10 17:54:55 +01:00
health.go Merge pull request #43997 from thaJeztah/healthcheck_capture_logs 2022-09-02 10:48:22 +02:00
health_test.go daemon: suppress logs in unit tests 2019-10-18 00:57:56 +02:00
id.go daemon: remove migrateTrustKeyID() 2022-11-28 20:28:55 +01:00
image_service.go c8d: implement classic builder 2023-05-11 11:57:01 +01:00
info.go daemon: consolidate runtimes config validation 2023-06-01 14:45:25 -04:00
info_unix.go daemon: consolidate runtimes config validation 2023-06-01 14:45:25 -04:00
info_unix_test.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
info_windows.go daemon: consolidate runtimes config validation 2023-06-01 14:45:25 -04:00
inspect.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
inspect_linux.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
inspect_test.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
inspect_windows.go c8d: Compute container's layer size 2023-03-08 00:58:02 +01:00
keys.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
keys_unsupported.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
kill.go fix some comments 2023-04-25 13:39:28 +08:00
licensing.go Expose license status in Info (#37612) 2018-08-17 17:05:21 -07:00
licensing_test.go bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-02-11 00:06:42 +01:00
links.go Add canonical import comment 2018-02-05 16:51:57 -05:00
list.go images/Children: Return error 2023-04-13 16:20:02 +02:00
list_test.go daemon: inline filters in tests 2023-04-25 15:13:26 +02:00
list_unix.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
list_windows.go pkg/containerfs: alias ContainerFS to string 2022-09-23 16:56:52 -04:00
logdrivers_linux.go Support configuration of log cacher. 2020-02-19 17:02:34 -05:00
logdrivers_windows.go Support configuration of log cacher. 2020-02-19 17:02:34 -05:00
logs.go daemon: read-copy-update the daemon config 2023-06-01 14:45:24 -04:00
logs_test.go Add canonical import comment 2018-02-05 16:51:57 -05:00
metrics.go health: Start probe timeout after exec starts 2022-04-28 17:21:03 -04:00
metrics_unix.go daemon: read-copy-update the daemon config 2023-06-01 14:45:24 -04:00
metrics_unsupported.go daemon: read-copy-update the daemon config 2023-06-01 14:45:24 -04:00
monitor.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
mounts.go Extract volume interaction to a volumes service 2018-05-25 14:21:07 -04:00
names.go container: ViewDB: return typed system errors 2022-12-08 14:33:57 +01:00
network.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
network_windows.go libnetwork: return concrete-typed *Endpoint 2023-01-13 14:19:06 -05:00
nvidia_linux.go goimports: fix imports 2019-09-18 12:56:54 +02:00
oci_linux.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
oci_linux_test.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
oci_opts.go daemon/linux: Set console size on creation 2022-05-19 07:57:27 +02:00
oci_utils.go goimports: fix imports 2019-09-18 12:56:54 +02:00
oci_windows.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
oci_windows_test.go daemon: use strings.Cut() and cleanup error messages 2022-12-21 11:09:03 +01:00
pause.go Refactor libcontainerd to minimize c8d RPCs 2022-08-24 14:59:08 -04:00
prune.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
reload.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
reload_test.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
reload_unix.go daemon: consolidate runtimes config validation 2023-06-01 14:45:25 -04:00
reload_windows.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
rename.go libnetwork: return concrete-typed *Sandbox 2023-01-13 14:19:06 -05:00
resize.go Fix npe in exec resize when exec errored 2023-05-28 00:14:47 +00:00
resize_test.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
restart.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
runtime_unix.go daemon: consolidate runtimes config validation 2023-06-01 14:45:25 -04:00
runtime_unix_test.go daemon: consolidate runtimes config validation 2023-06-01 14:45:25 -04:00
runtime_windows.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
seccomp_linux.go Remove "seccomp" build tag 2022-05-12 14:48:35 -07:00
seccomp_linux_test.go container: split security options to a SecurityOptions struct 2023-04-29 00:03:37 +02:00
seccomp_unsupported.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
secrets.go Add canonical import comment 2018-02-05 16:51:57 -05:00
secrets_linux.go Add canonical import comment 2018-02-05 16:51:57 -05:00
secrets_unsupported.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
secrets_windows.go Add canonical import comment 2018-02-05 16:51:57 -05:00
start.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
start_unix.go daemon: consolidate runtimes config validation 2023-06-01 14:45:25 -04:00
start_windows.go daemon: reload runtimes w/o breaking containers 2023-06-01 14:45:25 -04:00
stats.go Merge pull request #40478 from cpuguy83/dont-prime-the-stats 2020-04-16 20:57:06 +02:00
stats_collector.go pkg/sysinfo: move MemInfo and ReadMemInfo to a separate package 2023-03-15 17:52:45 +01:00
stats_unix.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
stats_windows.go daemon: move code related to stats together 2023-04-08 19:00:01 +02:00
stop.go container: StopSignal(): return syscall.Signal 2022-05-05 00:53:53 +02:00
top_unix.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
top_unix_test.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
top_windows.go Refactor libcontainerd to minimize c8d RPCs 2022-08-24 14:59:08 -04:00
unpause.go Refactor libcontainerd to minimize c8d RPCs 2022-08-24 14:59:08 -04:00
update.go daemon: read-copy-update the daemon config 2023-06-01 14:45:24 -04:00
update_linux.go goimports: fix imports 2019-09-18 12:56:54 +02:00
update_windows.go Windows: Experimental: Allow containerd for runtime 2019-03-12 18:41:55 -07:00
volumes.go daemon: replace ErrVolumeReadonly with errdefs 2022-09-27 22:24:29 +02:00
volumes_linux.go Fix the several typos detected by github.com/client9/misspell 2018-08-09 00:45:00 +09:00
volumes_linux_test.go daemon: rename variables that collide with imported package names 2020-04-14 17:22:23 +02:00
volumes_unit_test.go volume/mounts: remove "containerOS" argument from NewParser (LCOW code) 2021-07-02 13:51:55 +02:00
volumes_unix.go Support recursively read-only (RRO) mounts 2023-05-26 01:58:24 +09:00
volumes_windows.go Add ADD/COPY --chown flag support to Windows 2018-08-13 21:59:11 -07:00
wait.go Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
workdir.go Add ADD/COPY --chown flag support to Windows 2018-08-13 21:59:11 -07:00