From e5cd675b38d49b22f1ecc929943d016fb7159856 Mon Sep 17 00:00:00 2001 From: James Cammarata Date: Tue, 16 May 2017 09:20:40 -0500 Subject: [PATCH] Use delegated vars for the delegated host name In _process_pending_results (strategy/__init__.py), we were using the delegate_to field directly from the original task, which was not being templated correctly. As an alternate to #23599, this patch instead pulls the host name out of the delegated vars passed back in the task result dictionary to avoid having to re-template things. Fixes #23599 Fixes #20508 --- lib/ansible/plugins/strategy/__init__.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/ansible/plugins/strategy/__init__.py b/lib/ansible/plugins/strategy/__init__.py index 09fa6dbe86..3da92dde7f 100644 --- a/lib/ansible/plugins/strategy/__init__.py +++ b/lib/ansible/plugins/strategy/__init__.py @@ -241,11 +241,13 @@ class StrategyBase: return host_list def get_delegated_hosts(self, result, task): - - host_name = task.delegate_to - actual_host = self._inventory.get_host(host_name) - if actual_host is None: - actual_host = Host(name=host_name) + host_name = result.get('_ansible_delegated_vars', {}).get('ansible_host', None) + if host_name is not None: + actual_host = self._inventory.get_host(host_name) + if actual_host is None: + actual_host = Host(name=host_name) + else: + actual_host = Host(name=task.delegate_to) return [actual_host]