|
3 | 3 | set -euo pipefail
|
4 | 4 | cd"$(dirname"${BASH_SOURCE[0]}")"
|
5 | 5 |
|
6 |
| -fordin*/;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 | +fordin*/;do |
| 60 | +run"$d"& |
| 61 | +jobs+=($!) |
| 62 | +done |
| 63 | + |
| 64 | +err=0 |
| 65 | +forjobin"${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
|