X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=tools%2Fyaml-validate.py;h=d75aeb4f6be8e11b92f251834fd3e06fa25d7a1f;hb=95949a297574ee7e823fbeb4d8e7420432dcabe1;hp=fe690d8c82e2b911999e8a39cf899adf67f7b24c;hpb=6677663e1141c1baabb0769191a7f951abe0c66d;p=apex-tripleo-heat-templates.git diff --git a/tools/yaml-validate.py b/tools/yaml-validate.py index fe690d8c..d75aeb4f 100755 --- a/tools/yaml-validate.py +++ b/tools/yaml-validate.py @@ -21,14 +21,57 @@ def exit_usage(): print('Usage %s ' % sys.argv[0]) sys.exit(1) + +def validate_service(filename, tpl): + if 'outputs' in tpl and 'role_data' in tpl['outputs']: + if 'value' not in tpl['outputs']['role_data']: + print('ERROR: invalid role_data for filename: %s' + % filename) + return 1 + role_data = tpl['outputs']['role_data']['value'] + if 'service_name' not in role_data: + print('ERROR: service_name is required in role_data for %s.' + % filename) + return 1 + # service_name must match the filename, but with an underscore + if (role_data['service_name'] != + os.path.basename(filename).split('.')[0].replace("-", "_")): + print('ERROR: service_name should match file name for service: %s.' + % filename) + return 1 + if 'parameters' in tpl: + required_params = ['EndpointMap', 'ServiceNetMap', 'DefaultPasswords'] + for param in required_params: + if param not in tpl['parameters']: + print('ERROR: parameter %s is required for %s.' + % (param, filename)) + return 1 + return 0 + + def validate(filename): print('Validating %s' % filename) + retval = 0 try: - yaml.load(open(filename).read()) + tpl = yaml.load(open(filename).read()) + + if (filename.startswith('./puppet/services/') and + filename != './puppet/services/services.yaml'): + retval = validate_service(filename, tpl) + except Exception: print(traceback.format_exc()) return 1 - return 0 + # 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 retval if len(sys.argv) < 2: exit_usage()