From 95e3af3e0f6a054988591913a46c95b6aff94cb5 Mon Sep 17 00:00:00 2001 From: Matt Clay Date: Tue, 19 Nov 2024 10:49:24 -0800 Subject: [PATCH] ansible-test - Improve container network detection (#84323) When detection of the current container network fails, a warning is now issued and execution continues. This simplifies usage in cases where the current container cannot be inspected, such as when running in GitHub Codespaces. --- .../fragments/ansible-test-network-detection.yml | 3 +++ test/lib/ansible_test/_internal/containers.py | 11 +++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 changelogs/fragments/ansible-test-network-detection.yml diff --git a/changelogs/fragments/ansible-test-network-detection.yml b/changelogs/fragments/ansible-test-network-detection.yml new file mode 100644 index 00000000000..a7277e16a35 --- /dev/null +++ b/changelogs/fragments/ansible-test-network-detection.yml @@ -0,0 +1,3 @@ +minor_changes: + - ansible-test - When detection of the current container network fails, a warning is now issued and execution continues. + This simplifies usage in cases where the current container cannot be inspected, such as when running in GitHub Codespaces. diff --git a/test/lib/ansible_test/_internal/containers.py b/test/lib/ansible_test/_internal/containers.py index 92a40a48064..79c8cd6b398 100644 --- a/test/lib/ansible_test/_internal/containers.py +++ b/test/lib/ansible_test/_internal/containers.py @@ -292,10 +292,13 @@ def get_docker_preferred_network_name(args: EnvironmentConfig) -> t.Optional[str current_container_id = get_docker_container_id() if current_container_id: - # Make sure any additional containers we launch use the same network as the current container we're running in. - # This is needed when ansible-test is running in a container that is not connected to Docker's default network. - container = docker_inspect(args, current_container_id, always=True) - network = container.get_network_name() + try: + # Make sure any additional containers we launch use the same network as the current container we're running in. + # This is needed when ansible-test is running in a container that is not connected to Docker's default network. + container = docker_inspect(args, current_container_id, always=True) + network = container.get_network_name() + except ContainerNotFoundError: + display.warning('Unable to detect the network for the current container. Use the `--docker-network` option if containers are unreachable.') # The default docker behavior puts containers on the same network. # The default podman behavior puts containers on isolated networks which don't allow communication between containers or network disconnect.