From 0c7dcb65cff52d92e488ff75008d9256be37734b Mon Sep 17 00:00:00 2001 From: s-hamann <10639154+s-hamann@users.noreply.github.com> Date: Fri, 3 Oct 2025 12:28:41 +0000 Subject: [PATCH] fetch - return file in result when changed is true (#85729) Set the (source) file attribute in the return value if the file changed (e.g. on initial fetch). The attribute is already set in all other cases. --- changelogs/fragments/fix-fetch-return-file.yml | 2 ++ lib/ansible/plugins/action/fetch.py | 2 +- .../targets/fetch/roles/fetch_tests/tasks/normal.yml | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 changelogs/fragments/fix-fetch-return-file.yml diff --git a/changelogs/fragments/fix-fetch-return-file.yml b/changelogs/fragments/fix-fetch-return-file.yml new file mode 100644 index 00000000000..003895d22c4 --- /dev/null +++ b/changelogs/fragments/fix-fetch-return-file.yml @@ -0,0 +1,2 @@ +bugfixes: + - fetch - also return ``file`` in the result when changed is ``True`` (https://github.com/ansible/ansible/pull/85729). diff --git a/lib/ansible/plugins/action/fetch.py b/lib/ansible/plugins/action/fetch.py index 4978f029994..1b1b1ee4053 100644 --- a/lib/ansible/plugins/action/fetch.py +++ b/lib/ansible/plugins/action/fetch.py @@ -192,7 +192,7 @@ class ActionModule(ActionBase): msg="checksum mismatch", file=source, dest=dest, remote_md5sum=None, checksum=new_checksum, remote_checksum=remote_checksum)) else: - result.update({'changed': True, 'md5sum': new_md5, 'dest': dest, + result.update({'changed': True, 'md5sum': new_md5, 'file': source, 'dest': dest, 'remote_md5sum': None, 'checksum': new_checksum, 'remote_checksum': remote_checksum}) else: diff --git a/test/integration/targets/fetch/roles/fetch_tests/tasks/normal.yml b/test/integration/targets/fetch/roles/fetch_tests/tasks/normal.yml index 6f3ab62080d..cc951cbc5f4 100644 --- a/test/integration/targets/fetch/roles/fetch_tests/tasks/normal.yml +++ b/test/integration/targets/fetch/roles/fetch_tests/tasks/normal.yml @@ -30,8 +30,10 @@ that: - fetched is changed - fetched.checksum == "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3" + - fetched.file == remote_tmp_dir ~ "/orig" - fetched_again is not changed - fetched_again.checksum == "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3" + - fetched_again.file == remote_tmp_dir ~ "/orig" - fetched.remote_checksum == "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3" - lookup("file", output_dir + "/fetched/" + inventory_hostname + remote_tmp_dir + "/orig") == "test" - fetch_check_mode is skipped