#!/usr/bin/env bash # Orchestrate all verification steps # Runs all verification scripts and generates source-of-truth JSON set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' CYAN='\033[0;36m' NC='\033[0m' log_info() { echo -e "${BLUE}[INFO]${NC} $1"; } log_success() { echo -e "${GREEN}[✓]${NC} $1"; } log_warn() { echo -e "${YELLOW}[⚠]${NC} $1"; } log_error() { echo -e "${RED}[✗]${NC} $1"; } cd "$PROJECT_ROOT" echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "🔍 Full Ingress Architecture Verification" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" # Check dependencies log_info "Checking dependencies..." if ! bash "$SCRIPT_DIR/check-dependencies.sh" >/dev/null 2>&1; then log_warn "Some dependencies are missing. Run: bash $SCRIPT_DIR/check-dependencies.sh" log_warn "Continuing anyway, but some checks may fail..." echo "" fi START_TIME=$(date +%s) TOTAL_STEPS=6 log_info "Progress: 0/$TOTAL_STEPS steps" # Step 0: Config validation (required files, optional env) log_info "" log_info "Step 0/$TOTAL_STEPS: Config validation" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" if bash "$PROJECT_ROOT/scripts/validation/validate-config-files.sh"; then log_success "Config validation complete" else log_warn "Config validation reported issues (check output above)" fi log_info "Progress: 1/$TOTAL_STEPS steps" # Step 1: Cloudflare DNS Verification log_info "" log_info "Step 1/$TOTAL_STEPS: Cloudflare DNS Verification" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" if bash "$SCRIPT_DIR/export-cloudflare-dns-records.sh"; then log_success "DNS verification complete" else log_error "DNS verification failed" exit 1 fi log_info "Progress: 2/$TOTAL_STEPS steps" # Step 2: UDM Pro Port Forwarding Verification log_info "" log_info "Step 2/$TOTAL_STEPS: UDM Pro Port Forwarding Verification" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" if bash "$SCRIPT_DIR/verify-udm-pro-port-forwarding.sh"; then log_success "UDM Pro verification complete" else log_warn "UDM Pro verification completed with warnings (manual steps required)" fi log_info "Progress: 3/$TOTAL_STEPS steps" # Step 3: NPMplus Configuration Verification log_info "" log_info "Step 3/$TOTAL_STEPS: NPMplus Configuration Verification" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" if bash "$SCRIPT_DIR/export-npmplus-config.sh"; then log_success "NPMplus verification complete" else log_error "NPMplus verification failed" exit 1 fi log_info "Progress: 4/$TOTAL_STEPS steps" # Step 4: Backend VMs Verification log_info "" log_info "Step 4/$TOTAL_STEPS: Backend VMs Verification" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" if bash "$SCRIPT_DIR/verify-backend-vms.sh"; then log_success "Backend VMs verification complete" else log_error "Backend VMs verification failed" exit 1 fi log_info "Progress: 5/$TOTAL_STEPS steps" # Step 5: End-to-End Routing Verification log_info "" log_info "Step 5/$TOTAL_STEPS: End-to-End Routing Verification" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" if bash "$SCRIPT_DIR/verify-end-to-end-routing.sh" --profile=public; then log_success "E2E verification complete" else log_warn "E2E verification completed with warnings" fi log_info "Progress: 6/$TOTAL_STEPS steps" # Step 6: Generate Source-of-Truth JSON log_info "" log_info "Step 6/$TOTAL_STEPS: Generating Source-of-Truth JSON" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" if CONTINUE_PARTIAL=1 bash "$SCRIPT_DIR/generate-source-of-truth.sh"; then log_success "Source-of-truth JSON generated" else log_error "Source-of-truth generation failed" exit 1 fi # Summary END_TIME=$(date +%s) DURATION=$((END_TIME - START_TIME)) log_info "" log_info "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" log_success "Full verification complete!" log_info "Duration: ${DURATION}s" log_info "" log_info "Verification outputs:" log_info " $PROJECT_ROOT/docs/04-configuration/verification-evidence/" log_info "" log_info "Source-of-truth JSON:" log_info " $PROJECT_ROOT/docs/04-configuration/INGRESS_SOURCE_OF_TRUTH.json" log_info "" log_info "Next steps:" log_info " 1. Review verification reports in evidence directories" log_info " 2. Complete manual verification steps (UDM Pro port forwarding)" log_info " 3. Investigate any failed tests" log_info " 4. Update source-of-truth JSON if needed" log_info "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"