#!/usr/bin/env bash # scripts/run_l2_lifecycle_test.sh — run a single L2 module lifecycle apply/modify. # # Usage: run_l2_lifecycle_test.sh # # Wraps run_platform.sh for L2 composition modules in the modules-lifecycle # pipeline. Sets ACDL_REMOTE_STATE_KEY to point to the CI VPC state so the # microservice composition's terraform_remote_state data source reads from # the short-lived CI VPC (not the long-lived platform VPC). # # NOTE: unlike the L1 scripts (run_lifecycle_test.sh), the L2 path does NOT # take a ci-vpc-outputs.json argument. L2 compositions reference the platform # VPC via terraform_remote_state (a data source), not by injecting VPC # outputs into the contract. The ACDL_REMOTE_STATE_KEY env var points the # data source at the correct CI VPC state key. The workflow passes 3 # positional args for parity with the L1 matrix, but $3 is accepted-but- # ignored here (documented, not a bug). # # Lifecycle mode (REQ-134): ACDL_LIFECYCLE_MODE default "plan" runs # `run_platform.sh --plan-only` (fast, no AWS mutation). Set to "full" for # the real `--apply` against live AWS. set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$ROOT" MODULE="$1" EXAMPLE="$2" # simple or complex # Lifecycle mode: "plan" (default, fast) or "full" (real apply against AWS). LIFECYCLE_MODE="${ACDL_LIFECYCLE_MODE:-plan}" CONTRACT="modules/l2/${MODULE}/examples/${EXAMPLE}.yml" # Point terraform_remote_state to the CI VPC state (not the platform VPC) export ACDL_REMOTE_STATE_KEY="spike/ci-vpc/terraform.tfstate" # Run the platform lifecycle command (plan-only by default; full = apply). if [ "$LIFECYCLE_MODE" = "full" ]; then bash scripts/run_platform.sh --apply "$CONTRACT" else bash scripts/run_platform.sh --plan-only "$CONTRACT" fi