From 488dd28339f2efa73c7ec67e2cdd0374016012c3 Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Tue, 7 Oct 2025 19:16:04 +0200 Subject: [PATCH] Fix docker_container_exec's detach=true. (#1145) (#1148) (cherry picked from commit 449b37e1c9999a9a89232a8eed512592b80e5bf6) --- changelogs/fragments/1145-fix.yml | 2 ++ plugins/module_utils/_api/api/client.py | 1 + .../docker_container_exec/tasks/main.yml | 20 ++++++++++++++++++- 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 changelogs/fragments/1145-fix.yml diff --git a/changelogs/fragments/1145-fix.yml b/changelogs/fragments/1145-fix.yml new file mode 100644 index 00000000..458dfcca --- /dev/null +++ b/changelogs/fragments/1145-fix.yml @@ -0,0 +1,2 @@ +bugfixes: + - "docker_container_exec - make ``detach=true`` work. So far this resulted in no execution being done (https://github.com/ansible-collections/community.docker/pull/1145)." diff --git a/plugins/module_utils/_api/api/client.py b/plugins/module_utils/_api/api/client.py index ea5baa2c..e3c75cd5 100644 --- a/plugins/module_utils/_api/api/client.py +++ b/plugins/module_utils/_api/api/client.py @@ -580,6 +580,7 @@ class APIClient( def post_json_to_text(self, pathfmt, *args, **kwargs): data = kwargs.pop('data', None) + return self._result(self._post_json(self._url(pathfmt, *args, versioned_api=True), data, **kwargs)) def post_json_to_stream_socket(self, pathfmt, *args, **kwargs): data = kwargs.pop('data', None) diff --git a/tests/integration/targets/docker_container_exec/tasks/main.yml b/tests/integration/targets/docker_container_exec/tasks/main.yml index f8f1ef4b..0b1d441d 100644 --- a/tests/integration/targets/docker_container_exec/tasks/main.yml +++ b/tests/integration/targets/docker_container_exec/tasks/main.yml @@ -180,7 +180,7 @@ argv: - /bin/sh - '-c' - - sleep 1m + - echo "Detach worked." > /result.txt detach: true register: result @@ -215,6 +215,24 @@ - result.stderr == 'bar baz' - result.stderr_lines == ['bar baz'] + - name: Check result of detach test + docker_container_exec: + container: "{{ cname }}" + argv: + - /bin/sh + - '-c' + - cat /result.txt + strip_empty_ends: false + register: result + + - assert: + that: + - result.rc == 0 + - result.stdout == 'Detach worked.\n' + - result.stdout_lines == ['Detach worked.'] + - result.stderr == '' + - result.stderr_lines == [] + always: - name: Cleanup docker_container: