aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>2017-09-22 00:44:56 +0200
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>2017-09-26 17:10:34 +0000
commit791cb3f2d864c1f8b9473f9ba4348c4435aa813b (patch)
treed127d5fba9fefc4d869ab5afa864f53a1f08ce7c
parenta55ef9371da96dbdd267a516d6447bd9522641d0 (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-xcheck-jinja2.sh18
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