From 78ccea223122995ccbb6b9766970897e0aa67515 Mon Sep 17 00:00:00 2001 From: "Brian C. Lane" Date: Thu, 14 Mar 2019 12:05:29 -0700 Subject: [PATCH] Improve logging for template syntax errors The shlex splitting can fail, resulting in error messages like: ERROR livemedia-creator: No closing quotation without any context in the log files. This logs the line that failed to be split and expanded. (cherry picked from commit f9665940bb28c38bf3d53b7eb229f99ffbad6331) (cherry picked from commit 4c0e632b9344c588a8bb935f634e7945dc76cf44) --- src/pylorax/ltmpl.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/pylorax/ltmpl.py b/src/pylorax/ltmpl.py index ed149a59..ae70a021 100644 --- a/src/pylorax/ltmpl.py +++ b/src/pylorax/ltmpl.py @@ -67,10 +67,16 @@ class LoraxTemplate(object): # remove comments lines = [line for line in lines if not line.startswith("#")] - # split with shlex and perform brace expansion - lines = [split_and_expand(line) for line in lines] - - return lines + # split with shlex and perform brace expansion. This can fail, so we unroll the loop + # for better error reporting. + expanded_lines = [] + try: + for line in lines: + expanded_lines.append(split_and_expand(line)) + except Exception as e: + logger.error('shlex error processing "%s": %s', line, str(e)) + raise + return expanded_lines def split_and_expand(line): return [exp for word in shlex.split(line) for exp in brace_expand(word)]