moby/integration-cli
Albin Kerouanton 78479b1915
libnet: Make sure network names are unique
Fixes #18864, #20648, #33561, #40901.

[This GH comment][1] makes clear network name uniqueness has never been
enforced due to the eventually consistent nature of Classic Swarm
datastores:

> there is no guaranteed way to check for duplicates across a cluster of
> docker hosts.

And this is further confirmed by other comments made by @mrjana in that
same issue, eg. [this one][2]:

> we want to adopt a schema which can pave the way in the future for a
> completely decentralized cluster of docker hosts (if scalability is
> needed).

This decentralized model is what Classic Swarm was trying to be. It's
been superseded since then by Docker Swarm, which has a centralized
control plane.

To circumvent this drawback, the `NetworkCreate` endpoint accepts a
`CheckDuplicate` flag. However it's not perfectly reliable as it won't
catch concurrent requests.

Due to this design decision, API clients like Compose have to implement
workarounds to make sure names are really unique (eg.
docker/compose#9585). And the daemon itself has seen a string of issues
due to that decision, including some that aren't fixed to this day (for
instance moby/moby#40901):

> The problem is, that if you specify a network for a container using
> the ID, it will add that network to the container but it will then
> change it to reference the network by using the name.

To summarize, this "feature" is broken, has no practical use and is a
source of pain for Docker users and API consumers. So let's just remove
it for _all_ API versions.

[1]: https://github.com/moby/moby/issues/18864#issuecomment-167201414
[2]: https://github.com/moby/moby/issues/18864#issuecomment-167202589

Signed-off-by: Albin Kerouanton <albinker@gmail.com>
2023-09-12 10:40:13 +02:00
..
checker bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-02-11 00:06:42 +01:00
cli Add t.Helper() to the cli test helper functions 2023-07-13 13:37:26 +02:00
daemon Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
environment Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
fixtures integration-cli: fix test rogue certs 2022-05-19 10:54:31 +02:00
requirement integration-cli: make testRequires() a Helper 2019-10-09 21:44:22 +02:00
testdata Clean some integration-cli/fixtures package/files 2018-04-16 10:48:58 +02:00
benchmark_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
check_test.go c8d: disable schema1 registry integration tests 2023-09-11 15:30:44 +02:00
daemon_swarm_hack_test.go rm-gocheck: run goimports to compile successfully 2019-09-09 21:06:12 +00:00
docker_api_attach_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_api_build_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_api_build_windows_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_api_containers_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_api_containers_unix_test.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
docker_api_containers_windows_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_api_exec_resize_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_api_exec_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_api_images_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_api_inspect_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_api_logs_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_api_network_test.go libnet: Make sure network names are unique 2023-09-12 10:40:13 +02:00
docker_api_stats_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_api_swarm_node_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_api_swarm_service_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_api_swarm_test.go libnet: Make sure network names are unique 2023-09-12 10:40:13 +02:00
docker_api_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_attach_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_attach_unix_test.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
docker_cli_build_test.go integration-cli: Use different label in TestBuildMultiStageGlobalArg 2023-09-08 09:47:56 +02:00
docker_cli_build_unix_test.go integration-cli: format code with gofumpt 2023-06-29 00:08:27 +02:00
docker_cli_by_digest_test.go integration-cli: fix empty-lines (revive) 2022-09-28 01:58:49 +02:00
docker_cli_commit_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_cp_from_container_test.go integration-cli: format code with gofumpt 2023-06-29 00:08:27 +02:00
docker_cli_cp_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_cp_to_container_test.go integration-cli: remove isCpCannotCopyReadOnly utility 2022-09-27 22:15:19 +02:00
docker_cli_cp_to_container_unix_test.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
docker_cli_cp_utils_test.go integration-cli: format code with gofumpt 2023-06-29 00:08:27 +02:00
docker_cli_create_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_daemon_plugins_test.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
docker_cli_daemon_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_events_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_events_unix_test.go test/integration: Remove checks for "not arm" in tests 2023-08-31 09:36:48 +02:00
docker_cli_exec_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_exec_unix_test.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
docker_cli_external_volume_driver_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_health_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_history_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_images_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_import_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_info_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_info_unix_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_inspect_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_links_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_login_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_logout_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_logs_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_netmode_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_network_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_network_unix_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_plugins_logdriver_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_plugins_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_port_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_proxy_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_prune_test.go integration-cli: split DockerSuite into subsequent build suites 2022-06-17 10:59:04 +02:00
docker_cli_prune_unix_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_ps_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_pull_local_test.go test/integration: Remove checks for "not arm" in tests 2023-08-31 09:36:48 +02:00
docker_cli_pull_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_push_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_registry_user_agent_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_restart_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_rmi_test.go integration-cli: Skip TestRmiParentImageFail when using c8d snapshotters 2023-09-08 12:08:35 +02:00
docker_cli_run_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_run_unix_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_save_load_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_save_load_unix_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_search_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_service_create_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_service_health_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_service_logs_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_service_scale_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_sni_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_start_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_stats_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_swarm_test.go libnet: Make sure network names are unique 2023-09-12 10:40:13 +02:00
docker_cli_swarm_unix_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_top_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_update_test.go integration-cli: split DockerSuite into subsequent build suites 2022-06-17 10:59:04 +02:00
docker_cli_update_unix_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_cli_userns_test.go c8d: Handle userns properly 2023-09-11 16:39:29 +02:00
docker_cli_v2_only_test.go refactor: move from io/ioutil to io and os package 2021-08-27 14:56:57 +08:00
docker_cli_volume_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_deprecated_api_v124_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_deprecated_api_v124_unix_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_hub_pull_suite_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
docker_utils_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
events_utils_test.go Switch all logging to use containerd log pkg 2023-06-24 00:23:44 +00:00
fixtures_linux_daemon_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
requirements_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
requirements_unix_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
requirements_windows_test.go Wire up tests to support otel tracing 2023-09-07 18:38:22 +00:00
test_vars_test.go testutil/environment: remove Execution.OSType field 2023-06-26 11:18:09 +02:00
test_vars_unix_test.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
test_vars_windows_test.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
utils_test.go testutil/environment: remove Execution.OSType field 2023-06-26 11:18:09 +02:00
utils_unix_test.go remove pre-go1.17 build-tags 2023-05-19 20:38:51 +02:00
utils_windows_test.go pkg/system: move GetLongPathName to integration-cli 2022-11-29 17:02:53 +01:00