X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=tools%2Fyaml-validate.py;h=2da873d059c4c6abad37609c4eba5b04dae36b67;hb=301560b35aae7b8861e519c705f131ead53bb7f0;hp=cb5669a75de8fce7921887cfefc55434278c9069;hpb=6d0cec55ce50a54ede405c465f26fe87bb68af4e;p=apex-tripleo-heat-templates.git diff --git a/tools/yaml-validate.py b/tools/yaml-validate.py index cb5669a7..2da873d0 100755 --- a/tools/yaml-validate.py +++ b/tools/yaml-validate.py @@ -16,26 +16,54 @@ import sys import traceback import yaml -base_path = sys.argv[1] -exit_val = 0 -failed_files = [] + +def exit_usage(): + print('Usage %s ' % sys.argv[0]) + sys.exit(1) def validate(filename): + print('Validating %s' % filename) try: - yaml.load(open(filename).read()) + tpl = yaml.load(open(filename).read()) except Exception: print(traceback.format_exc()) return 1 + # yaml is OK, now walk the parameters and output a warning for unused ones + for p in tpl.get('parameters', {}): + str_p = '\'%s\'' % p + in_resources = str_p in str(tpl.get('resources', {})) + in_outputs = str_p in str(tpl.get('outputs', {})) + if not in_resources and not in_outputs: + print('Warning: parameter %s in template %s appears to be unused' + % (p, filename)) + return 0 -for subdir, dirs, files in os.walk(base_path): - for f in files: - if f.endswith('.yaml'): - file_path = os.path.join(subdir, f) - failed = validate(file_path) - if failed: - failed_files.append(file_path) - exit_val |= failed +if len(sys.argv) < 2: + exit_usage() + +path_args = sys.argv[1:] +exit_val = 0 +failed_files = [] + +for base_path in path_args: + if os.path.isdir(base_path): + for subdir, dirs, files in os.walk(base_path): + for f in files: + if f.endswith('.yaml'): + file_path = os.path.join(subdir, f) + failed = validate(file_path) + if failed: + failed_files.append(file_path) + exit_val |= failed + elif os.path.isfile(base_path) and base_path.endswith('.yaml'): + failed = validate(base_path) + if failed: + failed_files.append(base_path) + exit_val |= failed + else: + print('Unexpected argument %s' % base_path) + exit_usage() if failed_files: print('Validation failed on:')