From fec0bb3c754c65bf9b9baec17563a6590c9f27c2 Mon Sep 17 00:00:00 2001 From: Anil Belur Date: Tue, 9 Jan 2018 19:21:14 +1000 Subject: [PATCH] Improve packer-validate debugging output This patch achieves 3 tasks: 1. Improves the debugging output provided by printing out the details about which vars and templates files are being tested. 2. Fixes an issue where packer was not actually testing every combination of varfile and template file due to cloud-env.json. 3. Includes common-packer vars files if available (should silently ignore if it does not exist). Issue: RELENG-744 Change-Id: Id6e1f2423a378cbe376ccefe2568c22669fb7859 Signed-off-by: Anil Belur Signed-off-by: Thanh Ha --- .../gerrit-ciman-packer-merge-centos-java-builder | 24 ++++++++++++++-------- .../gerrit-ciman-packer-merge-centos-mininet | 24 ++++++++++++++-------- ...rrit-ciman-packer-merge-ubuntu1604-java-builder | 24 ++++++++++++++-------- .../gerrit-ciman-packer-merge-ubuntu1604-mininet | 24 ++++++++++++++-------- .jjb-test/expected-xml/gerrit-ciman-packer-verify | 24 ++++++++++++++-------- .../github-ciman-packer-merge-centos-java-builder | 24 ++++++++++++++-------- .../github-ciman-packer-merge-centos-mininet | 24 ++++++++++++++-------- ...thub-ciman-packer-merge-ubuntu1604-java-builder | 24 ++++++++++++++-------- .../github-ciman-packer-merge-ubuntu1604-mininet | 24 ++++++++++++++-------- .jjb-test/expected-xml/github-ciman-packer-verify | 24 ++++++++++++++-------- shell/packer-validate.sh | 24 ++++++++++++++-------- 11 files changed, 176 insertions(+), 88 deletions(-) diff --git a/.jjb-test/expected-xml/gerrit-ciman-packer-merge-centos-java-builder b/.jjb-test/expected-xml/gerrit-ciman-packer-merge-centos-java-builder index 2dac4ca8..e066ffa1 100644 --- a/.jjb-test/expected-xml/gerrit-ciman-packer-merge-centos-java-builder +++ b/.jjb-test/expected-xml/gerrit-ciman-packer-merge-centos-java-builder @@ -268,17 +268,25 @@ mkdir -p "$PACKER_LOGS_DIR" export PATH="${WORKSPACE}/bin:$PATH" cd packer -varfiles=(../packer/vars/*.json) -templates=(../packer/templates/*.json) +varfiles=(vars/*.json common-packer/vars/*.json) +templates=(templates/*.json) for varfile in "${varfiles[@]}"; do + # cloud-env.json is a file containing credentials which is pulled in via + # CLOUDENV variable so skip it here. + if [[ "$varfile" == *"cloud-env.json"* ]]; then + continue + fi + + echo "-----> Testing varfile: $varfile" for template in "${templates[@]}"; do - export PACKER_LOG="yes" && \ - export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" && \ - packer.io validate -var-file="$CLOUDENV" \ - -var-file="$varfile" "$template" - if [ $? -ne 0 ]; then - break + export PACKER_LOG="yes" + export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" + if output=$(packer.io validate -var-file="$CLOUDENV" -var-file="$varfile" "$template"); then + echo "$template: $output" + else + echo "$template: $output" + exit 1 fi done done diff --git a/.jjb-test/expected-xml/gerrit-ciman-packer-merge-centos-mininet b/.jjb-test/expected-xml/gerrit-ciman-packer-merge-centos-mininet index 40b09eff..e4400dcf 100644 --- a/.jjb-test/expected-xml/gerrit-ciman-packer-merge-centos-mininet +++ b/.jjb-test/expected-xml/gerrit-ciman-packer-merge-centos-mininet @@ -268,17 +268,25 @@ mkdir -p "$PACKER_LOGS_DIR" export PATH="${WORKSPACE}/bin:$PATH" cd packer -varfiles=(../packer/vars/*.json) -templates=(../packer/templates/*.json) +varfiles=(vars/*.json common-packer/vars/*.json) +templates=(templates/*.json) for varfile in "${varfiles[@]}"; do + # cloud-env.json is a file containing credentials which is pulled in via + # CLOUDENV variable so skip it here. + if [[ "$varfile" == *"cloud-env.json"* ]]; then + continue + fi + + echo "-----> Testing varfile: $varfile" for template in "${templates[@]}"; do - export PACKER_LOG="yes" && \ - export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" && \ - packer.io validate -var-file="$CLOUDENV" \ - -var-file="$varfile" "$template" - if [ $? -ne 0 ]; then - break + export PACKER_LOG="yes" + export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" + if output=$(packer.io validate -var-file="$CLOUDENV" -var-file="$varfile" "$template"); then + echo "$template: $output" + else + echo "$template: $output" + exit 1 fi done done diff --git a/.jjb-test/expected-xml/gerrit-ciman-packer-merge-ubuntu1604-java-builder b/.jjb-test/expected-xml/gerrit-ciman-packer-merge-ubuntu1604-java-builder index d1af8b1d..8501cc4b 100644 --- a/.jjb-test/expected-xml/gerrit-ciman-packer-merge-ubuntu1604-java-builder +++ b/.jjb-test/expected-xml/gerrit-ciman-packer-merge-ubuntu1604-java-builder @@ -268,17 +268,25 @@ mkdir -p "$PACKER_LOGS_DIR" export PATH="${WORKSPACE}/bin:$PATH" cd packer -varfiles=(../packer/vars/*.json) -templates=(../packer/templates/*.json) +varfiles=(vars/*.json common-packer/vars/*.json) +templates=(templates/*.json) for varfile in "${varfiles[@]}"; do + # cloud-env.json is a file containing credentials which is pulled in via + # CLOUDENV variable so skip it here. + if [[ "$varfile" == *"cloud-env.json"* ]]; then + continue + fi + + echo "-----> Testing varfile: $varfile" for template in "${templates[@]}"; do - export PACKER_LOG="yes" && \ - export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" && \ - packer.io validate -var-file="$CLOUDENV" \ - -var-file="$varfile" "$template" - if [ $? -ne 0 ]; then - break + export PACKER_LOG="yes" + export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" + if output=$(packer.io validate -var-file="$CLOUDENV" -var-file="$varfile" "$template"); then + echo "$template: $output" + else + echo "$template: $output" + exit 1 fi done done diff --git a/.jjb-test/expected-xml/gerrit-ciman-packer-merge-ubuntu1604-mininet b/.jjb-test/expected-xml/gerrit-ciman-packer-merge-ubuntu1604-mininet index 902f52aa..7d48502d 100644 --- a/.jjb-test/expected-xml/gerrit-ciman-packer-merge-ubuntu1604-mininet +++ b/.jjb-test/expected-xml/gerrit-ciman-packer-merge-ubuntu1604-mininet @@ -268,17 +268,25 @@ mkdir -p "$PACKER_LOGS_DIR" export PATH="${WORKSPACE}/bin:$PATH" cd packer -varfiles=(../packer/vars/*.json) -templates=(../packer/templates/*.json) +varfiles=(vars/*.json common-packer/vars/*.json) +templates=(templates/*.json) for varfile in "${varfiles[@]}"; do + # cloud-env.json is a file containing credentials which is pulled in via + # CLOUDENV variable so skip it here. + if [[ "$varfile" == *"cloud-env.json"* ]]; then + continue + fi + + echo "-----> Testing varfile: $varfile" for template in "${templates[@]}"; do - export PACKER_LOG="yes" && \ - export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" && \ - packer.io validate -var-file="$CLOUDENV" \ - -var-file="$varfile" "$template" - if [ $? -ne 0 ]; then - break + export PACKER_LOG="yes" + export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" + if output=$(packer.io validate -var-file="$CLOUDENV" -var-file="$varfile" "$template"); then + echo "$template: $output" + else + echo "$template: $output" + exit 1 fi done done diff --git a/.jjb-test/expected-xml/gerrit-ciman-packer-verify b/.jjb-test/expected-xml/gerrit-ciman-packer-verify index deaa51a5..8c58c9b9 100644 --- a/.jjb-test/expected-xml/gerrit-ciman-packer-verify +++ b/.jjb-test/expected-xml/gerrit-ciman-packer-verify @@ -270,17 +270,25 @@ mkdir -p "$PACKER_LOGS_DIR" export PATH="${WORKSPACE}/bin:$PATH" cd packer -varfiles=(../packer/vars/*.json) -templates=(../packer/templates/*.json) +varfiles=(vars/*.json common-packer/vars/*.json) +templates=(templates/*.json) for varfile in "${varfiles[@]}"; do + # cloud-env.json is a file containing credentials which is pulled in via + # CLOUDENV variable so skip it here. + if [[ "$varfile" == *"cloud-env.json"* ]]; then + continue + fi + + echo "-----> Testing varfile: $varfile" for template in "${templates[@]}"; do - export PACKER_LOG="yes" && \ - export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" && \ - packer.io validate -var-file="$CLOUDENV" \ - -var-file="$varfile" "$template" - if [ $? -ne 0 ]; then - break + export PACKER_LOG="yes" + export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" + if output=$(packer.io validate -var-file="$CLOUDENV" -var-file="$varfile" "$template"); then + echo "$template: $output" + else + echo "$template: $output" + exit 1 fi done done diff --git a/.jjb-test/expected-xml/github-ciman-packer-merge-centos-java-builder b/.jjb-test/expected-xml/github-ciman-packer-merge-centos-java-builder index 91ba0672..bd5f21b2 100644 --- a/.jjb-test/expected-xml/github-ciman-packer-merge-centos-java-builder +++ b/.jjb-test/expected-xml/github-ciman-packer-merge-centos-java-builder @@ -226,17 +226,25 @@ mkdir -p "$PACKER_LOGS_DIR" export PATH="${WORKSPACE}/bin:$PATH" cd packer -varfiles=(../packer/vars/*.json) -templates=(../packer/templates/*.json) +varfiles=(vars/*.json common-packer/vars/*.json) +templates=(templates/*.json) for varfile in "${varfiles[@]}"; do + # cloud-env.json is a file containing credentials which is pulled in via + # CLOUDENV variable so skip it here. + if [[ "$varfile" == *"cloud-env.json"* ]]; then + continue + fi + + echo "-----> Testing varfile: $varfile" for template in "${templates[@]}"; do - export PACKER_LOG="yes" && \ - export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" && \ - packer.io validate -var-file="$CLOUDENV" \ - -var-file="$varfile" "$template" - if [ $? -ne 0 ]; then - break + export PACKER_LOG="yes" + export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" + if output=$(packer.io validate -var-file="$CLOUDENV" -var-file="$varfile" "$template"); then + echo "$template: $output" + else + echo "$template: $output" + exit 1 fi done done diff --git a/.jjb-test/expected-xml/github-ciman-packer-merge-centos-mininet b/.jjb-test/expected-xml/github-ciman-packer-merge-centos-mininet index 18fe98f3..5450484d 100644 --- a/.jjb-test/expected-xml/github-ciman-packer-merge-centos-mininet +++ b/.jjb-test/expected-xml/github-ciman-packer-merge-centos-mininet @@ -226,17 +226,25 @@ mkdir -p "$PACKER_LOGS_DIR" export PATH="${WORKSPACE}/bin:$PATH" cd packer -varfiles=(../packer/vars/*.json) -templates=(../packer/templates/*.json) +varfiles=(vars/*.json common-packer/vars/*.json) +templates=(templates/*.json) for varfile in "${varfiles[@]}"; do + # cloud-env.json is a file containing credentials which is pulled in via + # CLOUDENV variable so skip it here. + if [[ "$varfile" == *"cloud-env.json"* ]]; then + continue + fi + + echo "-----> Testing varfile: $varfile" for template in "${templates[@]}"; do - export PACKER_LOG="yes" && \ - export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" && \ - packer.io validate -var-file="$CLOUDENV" \ - -var-file="$varfile" "$template" - if [ $? -ne 0 ]; then - break + export PACKER_LOG="yes" + export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" + if output=$(packer.io validate -var-file="$CLOUDENV" -var-file="$varfile" "$template"); then + echo "$template: $output" + else + echo "$template: $output" + exit 1 fi done done diff --git a/.jjb-test/expected-xml/github-ciman-packer-merge-ubuntu1604-java-builder b/.jjb-test/expected-xml/github-ciman-packer-merge-ubuntu1604-java-builder index 146d3423..75ee78b5 100644 --- a/.jjb-test/expected-xml/github-ciman-packer-merge-ubuntu1604-java-builder +++ b/.jjb-test/expected-xml/github-ciman-packer-merge-ubuntu1604-java-builder @@ -226,17 +226,25 @@ mkdir -p "$PACKER_LOGS_DIR" export PATH="${WORKSPACE}/bin:$PATH" cd packer -varfiles=(../packer/vars/*.json) -templates=(../packer/templates/*.json) +varfiles=(vars/*.json common-packer/vars/*.json) +templates=(templates/*.json) for varfile in "${varfiles[@]}"; do + # cloud-env.json is a file containing credentials which is pulled in via + # CLOUDENV variable so skip it here. + if [[ "$varfile" == *"cloud-env.json"* ]]; then + continue + fi + + echo "-----> Testing varfile: $varfile" for template in "${templates[@]}"; do - export PACKER_LOG="yes" && \ - export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" && \ - packer.io validate -var-file="$CLOUDENV" \ - -var-file="$varfile" "$template" - if [ $? -ne 0 ]; then - break + export PACKER_LOG="yes" + export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" + if output=$(packer.io validate -var-file="$CLOUDENV" -var-file="$varfile" "$template"); then + echo "$template: $output" + else + echo "$template: $output" + exit 1 fi done done diff --git a/.jjb-test/expected-xml/github-ciman-packer-merge-ubuntu1604-mininet b/.jjb-test/expected-xml/github-ciman-packer-merge-ubuntu1604-mininet index 8870c48d..5aec8542 100644 --- a/.jjb-test/expected-xml/github-ciman-packer-merge-ubuntu1604-mininet +++ b/.jjb-test/expected-xml/github-ciman-packer-merge-ubuntu1604-mininet @@ -226,17 +226,25 @@ mkdir -p "$PACKER_LOGS_DIR" export PATH="${WORKSPACE}/bin:$PATH" cd packer -varfiles=(../packer/vars/*.json) -templates=(../packer/templates/*.json) +varfiles=(vars/*.json common-packer/vars/*.json) +templates=(templates/*.json) for varfile in "${varfiles[@]}"; do + # cloud-env.json is a file containing credentials which is pulled in via + # CLOUDENV variable so skip it here. + if [[ "$varfile" == *"cloud-env.json"* ]]; then + continue + fi + + echo "-----> Testing varfile: $varfile" for template in "${templates[@]}"; do - export PACKER_LOG="yes" && \ - export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" && \ - packer.io validate -var-file="$CLOUDENV" \ - -var-file="$varfile" "$template" - if [ $? -ne 0 ]; then - break + export PACKER_LOG="yes" + export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" + if output=$(packer.io validate -var-file="$CLOUDENV" -var-file="$varfile" "$template"); then + echo "$template: $output" + else + echo "$template: $output" + exit 1 fi done done diff --git a/.jjb-test/expected-xml/github-ciman-packer-verify b/.jjb-test/expected-xml/github-ciman-packer-verify index 532b24bc..4c4436ea 100644 --- a/.jjb-test/expected-xml/github-ciman-packer-verify +++ b/.jjb-test/expected-xml/github-ciman-packer-verify @@ -214,17 +214,25 @@ mkdir -p "$PACKER_LOGS_DIR" export PATH="${WORKSPACE}/bin:$PATH" cd packer -varfiles=(../packer/vars/*.json) -templates=(../packer/templates/*.json) +varfiles=(vars/*.json common-packer/vars/*.json) +templates=(templates/*.json) for varfile in "${varfiles[@]}"; do + # cloud-env.json is a file containing credentials which is pulled in via + # CLOUDENV variable so skip it here. + if [[ "$varfile" == *"cloud-env.json"* ]]; then + continue + fi + + echo "-----> Testing varfile: $varfile" for template in "${templates[@]}"; do - export PACKER_LOG="yes" && \ - export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" && \ - packer.io validate -var-file="$CLOUDENV" \ - -var-file="$varfile" "$template" - if [ $? -ne 0 ]; then - break + export PACKER_LOG="yes" + export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" + if output=$(packer.io validate -var-file="$CLOUDENV" -var-file="$varfile" "$template"); then + echo "$template: $output" + else + echo "$template: $output" + exit 1 fi done done diff --git a/shell/packer-validate.sh b/shell/packer-validate.sh index e9f1a8f0..dff5397e 100644 --- a/shell/packer-validate.sh +++ b/shell/packer-validate.sh @@ -21,17 +21,25 @@ mkdir -p "$PACKER_LOGS_DIR" export PATH="${WORKSPACE}/bin:$PATH" cd packer -varfiles=(../packer/vars/*.json) -templates=(../packer/templates/*.json) +varfiles=(vars/*.json common-packer/vars/*.json) +templates=(templates/*.json) for varfile in "${varfiles[@]}"; do + # cloud-env.json is a file containing credentials which is pulled in via + # CLOUDENV variable so skip it here. + if [[ "$varfile" == *"cloud-env.json"* ]]; then + continue + fi + + echo "-----> Testing varfile: $varfile" for template in "${templates[@]}"; do - export PACKER_LOG="yes" && \ - export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" && \ - packer.io validate -var-file="$CLOUDENV" \ - -var-file="$varfile" "$template" - if [ $? -ne 0 ]; then - break + export PACKER_LOG="yes" + export PACKER_LOG_PATH="$PACKER_LOGS_DIR/packer-validate-${varfile##*/}-${template##*/}.log" + if output=$(packer.io validate -var-file="$CLOUDENV" -var-file="$varfile" "$template"); then + echo "$template: $output" + else + echo "$template: $output" + exit 1 fi done done -- 2.16.6