diff options
author | Alexandru Avadanii <Alexandru.Avadanii@enea.com> | 2017-09-22 00:44:56 +0200 |
---|---|---|
committer | Alexandru Avadanii <Alexandru.Avadanii@enea.com> | 2017-09-26 17:10:34 +0000 |
commit | 791cb3f2d864c1f8b9473f9ba4348c4435aa813b (patch) | |
tree | d127d5fba9fefc4d869ab5afa864f53a1f08ce7c | |
parent | a55ef9371da96dbdd267a516d6447bd9522641d0 (diff) |
PDF: Run YAML Linter on pod descriptors / output
We have 2 rounds of YAML files:
- PDF (input file(s) for the installer adapter templates);
- parsed PDF (output file(s) after installer adapter template parse);
Run yamllint on all these files, and summarize the output in a tuple
form: (valid YAML output, successful parse, installer templates cnt).
This helps catching various issues:
- formatting issues in installer adapter templates;
- missing values in PDFs (e.g. lf-pod4 IPMI credentials);
etc.
For now, yamllint failures for output files are non-fatal.
Sample output:
| PDF Verify Matrix | YAML Lint | ... | fuel | joid |
| pharos/config/pod1.yaml | OK | ... | 1/1/1 | 1/1/1 |
| intel/pod18.yaml | OK | ... | 1/1/1 | 1/1/1 |
| arm/pod5.yaml | OK | ... | 1/1/1 | 0/1/1 |
| lf/pod4.yaml | OK | ... | 0/1/1 | 0/1/1 |
Change-Id: Id598da89fab0e7e41641649833471194e8d248a9
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
-rwxr-xr-x | check-jinja2.sh | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/check-jinja2.sh b/check-jinja2.sh index 7d74197..9bc57c7 100755 --- a/check-jinja2.sh +++ b/check-jinja2.sh @@ -5,37 +5,45 @@ set +o errexit git submodule update --init --remote 2>/dev/null GEN_CFG='./pharos/config/utils/generate_config.py' INSTALLER_ADAPTERS='./pharos/config/installers/*' +TMPF='/tmp/out.yml' # should be outside Jenkins WS to prevent data leakage RC=0 # Build a table header, using ';' as column sep -SUMMARY='PDF/Installer;' +SUMMARY='PDF Verify Matrix;YAML Lint;' for adapter in ${INSTALLER_ADAPTERS}; do SUMMARY+="$(basename "${adapter}");" done # Iterate all PDFs, check with each installer adapter, log results while IFS= read -r lab_config; do - SUMMARY+="\n${lab_config#labs/};" + valid_yaml='OK' + echo -e "\n\nyamllint -s ${lab_config}" + if ! yamllint -s "${lab_config}"; then valid_yaml='FAIL'; fi + SUMMARY+="\n${lab_config#labs/};${valid_yaml};" for adapter in ${INSTALLER_ADAPTERS}; do pdf_inst=0 pdf_inst_pass=0 + pdf_yaml_pass=0 while IFS= read -r jinja_template; do echo -e "\n${GEN_CFG} -y ${lab_config} -j ${jinja_template}" if "${GEN_CFG}" -y "${lab_config}" \ - -j "${jinja_template}" > /dev/null; then + -j "${jinja_template}" > "${TMPF}"; then echo 'Result: PASS' ((pdf_inst_pass+=1)) + echo -e "\nyamllint -s ${jinja_template%.j2}" + if yamllint -s "${TMPF}"; then ((pdf_yaml_pass+=1)); fi else echo 'Result: FAIL' RC=1 fi ((pdf_inst+=1)) done < <(find "${adapter}" -name '*.j2') - SUMMARY+="${pdf_inst_pass}/${pdf_inst};" + SUMMARY+="${pdf_yaml_pass}/${pdf_inst_pass}/${pdf_inst};" done done < <(find 'pharos/config' 'labs' -name 'pod*.yaml') -echo -e '\n' +rm -f "${TMPF}" +echo -e '\n\nNOTE: tuple fmt: (valid YAML output/sucessful parse/templates).\n' echo -e "${SUMMARY}" | sed -e 's/^/;/g' -e 's/;/;| /g' | column -t -s ';' cat <<EOF |