From 449b37e1c9999a9a89232a8eed512592b80e5bf6 Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Tue, 7 Oct 2025 18:49:20 +0200 Subject: [PATCH] Fix docker_container_exec's detach=true. (#1145) --- changelogs/fragments/1145-fix.yml | 2 ++ plugins/module_utils/_api/api/client.py | 5 +++++ .../docker_container_exec/tasks/main.yml | 20 ++++++++++++++++++- 3 files changed, 26 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 fd648113..d1673ca5 100644 --- a/plugins/module_utils/_api/api/client.py +++ b/plugins/module_utils/_api/api/client.py @@ -617,6 +617,11 @@ class APIClient(_Session, DaemonApiMixin): 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: