transceiver-db/scripts/apply-pending-migrations.sh
Rene Fichtmueller c0a23ff204 feat(data): migration 090 + apply script — Edgecore AS-series SONiC switches
7 models: AS7312-54X, AS7312-54XS, AS7326-56X, AS7716-32X, AS7816-64X,
AS9716-32D, AS7512-32X. All from SONiC HCL Accton/Edgecore vendor.
Sources: edge-core.com official WP CDN + stordis.com + epsglobal.com.
Also adds scripts/apply-pending-migrations.sh for Erik DB catchup.
2026-04-21 23:02:25 +02:00

50 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
# Apply pending migrations 084-089 to Erik production DB
# Run this script when Erik SSH is back online.
#
# Usage: ./scripts/apply-pending-migrations.sh
set -e
ERIK="root@82.165.222.127"
DOCKER_CMD="docker exec -i tip-postgres psql -U tip -d transceiver_db"
SQL_DIR="$(dirname "$0")/../sql"
PENDING=(
"084-cisco-a9k-bulk-images.sql"
"085-mixed-straggler-images.sql"
"086-asterfusion-arista-ruckus-misc-images.sql"
"087-cisco-a9k-license-variant-reuse.sql"
"088-ubiquiti-phoenix-images.sql"
"089-arista-cisco-juniper-images.sql"
)
echo "Checking Erik SSH..."
if ! ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no "$ERIK" "echo OK" 2>/dev/null; then
echo "ERROR: Cannot reach Erik at $ERIK"
exit 1
fi
echo "Erik is reachable. Applying pending migrations..."
echo ""
for sql_file in "${PENDING[@]}"; do
path="${SQL_DIR}/${sql_file}"
echo "==> Applying ${sql_file}..."
result=$(cat "$path" | ssh "$ERIK" "$DOCKER_CMD" 2>&1)
echo "$result" | grep -E "UPDATE|ERROR|error" || true
echo " Done."
done
echo ""
echo "All pending migrations applied."
echo ""
echo "=== Remaining uncovered models (query) ==="
ssh "$ERIK" "$DOCKER_CMD" << 'EOSQL'
SELECT vendors.name AS vendor, switches.model
FROM switches
LEFT JOIN vendors ON switches.vendor_id = vendors.id
WHERE switches.image_url IS NULL
ORDER BY vendors.name, switches.model;
EOSQL