|
3 | 3 | set -euo pipefail
|
4 | 4 | cd "$(dirname "${BASH_SOURCE[0]}")"
|
5 | 5 |
|
6 |
| -for d in */; do |
7 |
| - pushd "$d" |
| 6 | +generate() { |
| 7 | + local name="$1" |
| 8 | + |
| 9 | + echo "=== BEGIN: $name" |
| 10 | + terraform init -upgrade && |
| 11 | + terraform plan -out terraform.tfplan && |
| 12 | + terraform show -json ./terraform.tfplan | jq >"$name".tfplan.json && |
| 13 | + terraform graph -type=plan >"$name".tfplan.dot && |
| 14 | + rm terraform.tfplan && |
| 15 | + terraform apply -auto-approve && |
| 16 | + terraform show -json ./terraform.tfstate | jq >"$name".tfstate.json && |
| 17 | + rm terraform.tfstate && |
| 18 | + terraform graph -type=plan >"$name".tfstate.dot |
| 19 | + ret=$? |
| 20 | + echo "=== END: $name" |
| 21 | + if [[ $ret -ne 0 ]]; then |
| 22 | + return $ret |
| 23 | + fi |
| 24 | +} |
| 25 | + |
| 26 | +run() { |
| 27 | + d="$1" |
| 28 | + cd "$d" |
8 | 29 | name=$(basename "$(pwd)")
|
9 | 30 |
|
10 | 31 | # This needs care to update correctly.
|
11 | 32 | if [[ $name == "kubernetes-metadata" ]]; then
|
12 |
| - popd |
13 |
| - continue |
| 33 | + echo "== Skipping: $name" |
| 34 | + return 0 |
14 | 35 | fi
|
15 | 36 |
|
16 | 37 | # This directory is used for a different purpose (quick workaround).
|
17 | 38 | if [[ $name == "cleanup-stale-plugins" ]]; then
|
18 |
| - popd |
19 |
| - continue |
| 39 | + echo "== Skipping: $name" |
| 40 | + return 0 |
20 | 41 | fi
|
21 | 42 |
|
22 | 43 | if [[ $name == "timings-aggregation" ]]; then
|
23 |
| - popd |
24 |
| - continue |
| 44 | + echo "== Skipping: $name" |
| 45 | + return 0 |
| 46 | + fi |
| 47 | + |
| 48 | + echo "== Generating test data for: $name" |
| 49 | + if ! out="$(generate "$name" 2>&1)"; then |
| 50 | + echo "$out" |
| 51 | + echo "== Error generating test data for: $name" |
| 52 | + return 1 |
25 | 53 | fi
|
| 54 | + echo "== Done generating test data for: $name" |
| 55 | + exit 0 |
| 56 | +} |
26 | 57 |
|
27 |
| - terraform init -upgrade |
28 |
| - terraform plan -out terraform.tfplan |
29 |
| - terraform show -json ./terraform.tfplan | jq >"$name".tfplan.json |
30 |
| - terraform graph -type=plan >"$name".tfplan.dot |
31 |
| - rm terraform.tfplan |
32 |
| - terraform apply -auto-approve |
33 |
| - terraform show -json ./terraform.tfstate | jq >"$name".tfstate.json |
34 |
| - rm terraform.tfstate |
35 |
| - terraform graph -type=plan >"$name".tfstate.dot |
36 |
| - popd |
| 58 | +declare -a jobs=() |
| 59 | +for d in */; do |
| 60 | + run "$d" & |
| 61 | + jobs+=($!) |
| 62 | +done |
| 63 | + |
| 64 | +err=0 |
| 65 | +for job in "${jobs[@]}"; do |
| 66 | + if ! wait "$job"; then |
| 67 | + err=$((err + 1)) |
| 68 | + fi |
37 | 69 | done
|
| 70 | +if [[ $err -ne 0 ]]; then |
| 71 | + echo "ERROR: Failed to generate test data for $err modules" |
| 72 | + exit 1 |
| 73 | +fi |
38 | 74 |
|
39 | 75 | terraform version -json | jq -r '.terraform_version' >version.txt
|
0 commit comments