diff options
author | Dan Prince <dprince@redhat.com> | 2016-07-19 16:08:22 -0400 |
---|---|---|
committer | Dan Prince <dprince@redhat.com> | 2016-07-22 07:29:39 -0400 |
commit | 6b30ff11d4e2eafda7a3ab693055c687d4a8da5d (patch) | |
tree | 95fe86548b0ff98e566c76b095e416bfefdf02f4 /tools | |
parent | 60b83ae436cbe61514405602cd9eeb5da5ed56e1 (diff) |
Add 'service_name' to composable services
This patch adds a new service_name section to each composable
service. We now have an explicit unit test check to ensure that
service_name exists in tools/yaml-validate.py.
This patch also wires service_names into hieradata on each
of the roles so that tools can access the deployed services locally
during deployment and upgrades.
Change-Id: I60861c5aa760534db3e314bba16a13b90ea72f0c
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/yaml-validate.py | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/tools/yaml-validate.py b/tools/yaml-validate.py index 2da873d0..34219eff 100755 --- a/tools/yaml-validate.py +++ b/tools/yaml-validate.py @@ -21,23 +21,49 @@ def exit_usage(): print('Usage %s <yaml file or directory>' % 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 + if (role_data['service_name'] != + os.path.basename(filename).split('.')[0]): + print('ERROR: service_name should match file name for service: %s.' + % filename) + return 1 + return 0 + + def validate(filename): print('Validating %s' % filename) + retval = 0 try: 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 # 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', {})) + 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 + return retval if len(sys.argv) < 2: exit_usage() |