aboutsummaryrefslogtreecommitdiffstats
path: root/tools/yaml-validate.py
diff options
context:
space:
mode:
authorDan Prince <dprince@redhat.com>2016-07-19 16:08:22 -0400
committerDan Prince <dprince@redhat.com>2016-07-22 07:29:39 -0400
commit6b30ff11d4e2eafda7a3ab693055c687d4a8da5d (patch)
tree95fe86548b0ff98e566c76b095e416bfefdf02f4 /tools/yaml-validate.py
parent60b83ae436cbe61514405602cd9eeb5da5ed56e1 (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/yaml-validate.py')
-rwxr-xr-xtools/yaml-validate.py32
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()