From 0a3ee8395574beed38488248aa56ee93ec998681 Mon Sep 17 00:00:00 2001 From: Karl-Hermann Wieners <karl-hermann.wieners@mpimet.mpg.de> Date: Fri, 8 Mar 2013 10:01:29 +0000 Subject: [PATCH] Updated new script generation * Added error handling for interpolation of configuration values * Changed command line error to use logging interface * Reduced verbosity of template defaulting --- mkexp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/mkexp b/mkexp index 57b1af1..1bca4a3 100755 --- a/mkexp +++ b/mkexp @@ -10,7 +10,7 @@ import stat import StringIO import sys -from configobj import ConfigObj +from configobj import ConfigObj, InterpolationError from jinja2 import Environment, FileSystemLoader # @@ -22,6 +22,7 @@ que_lib_dir = 'standard_queue_settings' default_name = 'DEFAULT' logging.basicConfig(format='%(levelname)s: %(message)s') +logging.addLevelName(logging.INFO, 'Note') logging.addLevelName(logging.WARNING, 'Hey') logging.addLevelName(logging.ERROR, 'Oops') logging.addLevelName(logging.CRITICAL, 'Sorry') @@ -58,7 +59,7 @@ def get_template_name(experiment_kind, job_id): '''Determine script template, taking system default if type is unsupported.''' run_template_name = os.path.join(exp_lib_dir, experiment_kind+'.'+job_id+'.tmpl') if not os.path.exists(run_template_name): - logging.warning("no %s template for '%s', using default", job_id, experiment_kind) + logging.info("no %s template for '%s', using default", job_id, experiment_kind) run_template_name = os.path.join(exp_lib_dir, default_name+'.'+job_id+'.tmpl') return run_template_name @@ -139,11 +140,14 @@ def split_jobs(config): # Check command line if len(sys.argv) < 2: - sys.stderr.write('Oops: invalid number of parameters!\n' + - 'Usage: '+sys.argv[0]+' experiment_config_name\n') + logging.error('invalid number of parameters\n' + + 'Usage: '+sys.argv[0]+' experiment_config_name') sys.exit(1) experiment_config_name = sys.argv[1] +if not os.path.exists(experiment_config_name): + logging.error("config file '{0}' does not exist".format(experiment_config_name)) + sys.exit(1) # Read and store configuration info from input and experiments' library # Store environment as default for control settings, then add config from files @@ -196,7 +200,11 @@ config_lines.seek(0) config = ConfigObj(config_lines, interpolation='template') def eval_key(section, key): - section[key] = section[key] + try: + section[key] = section[key] + except InterpolationError as error: + logging.error("{0} while reading key '{1}'".format(error.message[:-1], key)) + sys.exit(2) config.walk(eval_key) -- GitLab