From f8c98600a9c9d1e71e2ec2a55f39aac5d5cf0405 Mon Sep 17 00:00:00 2001 From: Matt Martz Date: Tue, 18 Sep 2018 09:04:33 -0500 Subject: [PATCH] If including a file resulted in AnsibleFileNotFound, clarify error message. Fixes #45661 (#45667) --- lib/ansible/plugins/strategy/__init__.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/ansible/plugins/strategy/__init__.py b/lib/ansible/plugins/strategy/__init__.py index 6d9f7779510..0d8e3bf2c00 100644 --- a/lib/ansible/plugins/strategy/__init__.py +++ b/lib/ansible/plugins/strategy/__init__.py @@ -32,7 +32,7 @@ from multiprocessing import Lock from jinja2.exceptions import UndefinedError from ansible import constants as C -from ansible.errors import AnsibleError, AnsibleParserError, AnsibleUndefinedVariable +from ansible.errors import AnsibleError, AnsibleFileNotFound, AnsibleParserError, AnsibleUndefinedVariable from ansible.executor import action_write_locks from ansible.executor.process.worker import WorkerProcess from ansible.executor.task_result import TaskResult @@ -846,10 +846,15 @@ class StrategyBase: self._tqm._stats.increment('ok', host.name) except AnsibleError as e: + if isinstance(e, AnsibleFileNotFound): + reason = "Could not find or access '%s' on the Ansible Controller." % to_text(included_file._filename) + else: + reason = to_text(e) + # mark all of the hosts including this file as failed, send callbacks, # and increment the stats for this host for host in included_file._hosts: - tr = TaskResult(host=host, task=included_file._task, return_data=dict(failed=True, reason=to_text(e))) + tr = TaskResult(host=host, task=included_file._task, return_data=dict(failed=True, reason=reason)) iterator.mark_host_failed(host) self._tqm._failed_hosts[host.name] = True self._tqm._stats.increment('failures', host.name)