From d0236f6ada8bde31a2e7b89ace0cf0d389012686 Mon Sep 17 00:00:00 2001 From: James Cammarata Date: Thu, 12 Sep 2013 20:44:10 -0500 Subject: [PATCH] Check for link in path in utils.path_dwim_relative() This allows an included path to be relative to a directory, if the basedir of the original path is a symlink. In that case, the path is normalized and the file is searched for in the normalized path. Fixes #3312 --- lib/ansible/utils/__init__.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/ansible/utils/__init__.py b/lib/ansible/utils/__init__.py index b4b8b24ed34..6eb248d1ab6 100644 --- a/lib/ansible/utils/__init__.py +++ b/lib/ansible/utils/__init__.py @@ -254,7 +254,11 @@ def path_dwim_relative(original, dirname, source, playbook_base, check=True): # (used by roles code) basedir = os.path.dirname(original) - template2 = os.path.join(basedir, '..', dirname, source) + if os.path.islink(basedir): + basedir = unfrackpath(basedir) + template2 = os.path.join(basedir, dirname, source) + else: + template2 = os.path.join(basedir, '..', dirname, source) source2 = path_dwim(basedir, template2) if os.path.exists(source2): return source2