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.
This commit is contained in:
parent
b4d1f4ee90
commit
c0a23ff204
@ -3,6 +3,7 @@
|
|||||||
Format: `{"d":"YYYY-MM-DD","t":"TYPE","m":"Description"}`
|
Format: `{"d":"YYYY-MM-DD","t":"TYPE","m":"Description"}`
|
||||||
Types: FEAT · FIX · UI · DATA · AI · INFRA
|
Types: FEAT · FIX · UI · DATA · AI · INFRA
|
||||||
|
|
||||||
|
{"d":"2026-04-21","t":"DATA","m":"Migration 090: Edgecore AS-series SONiC switches — 7 models: AS7312-54X (stordis.com WebP, XS chassis successor), AS7312-54XS (stordis.com 64KB WebP), AS7326-56X (edge-core.com DCS203-F 83KB PNG), AS7716-32X (stordis.com 50KB WebP), AS7816-64X (edge-core.com DCS500-A 99KB PNG), AS9716-32D (edge-core.com DCS510-A 78KB PNG), AS7512-32X (epsglobal.com 26KB JPEG). All from SONiC HCL Accton/Edgecore vendor. Estimated coverage: 609 → 616 (speculative, pending DB query)."}
|
||||||
{"d":"2026-04-21","t":"DATA","m":"Migration 089: Arista/Cisco/Juniper batch — 8 models: 7800R4-36D2-LC (Arista, arista.com official LC image 15KB PNG), 8101-32FH (Cisco 8000, router-switch.com 57KB JPEG), 8111-32EH (Cisco 8000, stack-systems.com Magento CDN 9.6KB JPEG), C9300X-24Y (networktigers.com 64KB JPEG), C9500-48Y4C (networktigers.com 50KB JPEG), N9K-C93108TC-FX3P (networktigers.com full-res 78KB JPEG), PTX10001-36MR (juniper.net image library Azure CDN 112KB JPEG), PTX10004 (juniper.net image library lbox variant 138KB JPEG). Coverage: 601 → 609 (89.6% → 90.8%)."}
|
{"d":"2026-04-21","t":"DATA","m":"Migration 089: Arista/Cisco/Juniper batch — 8 models: 7800R4-36D2-LC (Arista, arista.com official LC image 15KB PNG), 8101-32FH (Cisco 8000, router-switch.com 57KB JPEG), 8111-32EH (Cisco 8000, stack-systems.com Magento CDN 9.6KB JPEG), C9300X-24Y (networktigers.com 64KB JPEG), C9500-48Y4C (networktigers.com 50KB JPEG), N9K-C93108TC-FX3P (networktigers.com full-res 78KB JPEG), PTX10001-36MR (juniper.net image library Azure CDN 112KB JPEG), PTX10004 (juniper.net image library lbox variant 138KB JPEG). Coverage: 601 → 609 (89.6% → 90.8%)."}
|
||||||
{"d":"2026-04-21","t":"DATA","m":"Migration 088: Ubiquiti/Phoenix Contact — 3 models: USW-Enterprise-48-PoE (cdn.ecomm.ui.com 331KB PNG), USW-Aggregation (cdn.ecomm.ui.com 285KB PNG), FL SWITCH 7528-2S (rspsupply.com distributor CDN 94KB JPEG, Phoenix Contact product ID 2891026). Coverage: 598 → 601 (89.1% → 89.6%)."}
|
{"d":"2026-04-21","t":"DATA","m":"Migration 088: Ubiquiti/Phoenix Contact — 3 models: USW-Enterprise-48-PoE (cdn.ecomm.ui.com 331KB PNG), USW-Aggregation (cdn.ecomm.ui.com 285KB PNG), FL SWITCH 7528-2S (rspsupply.com distributor CDN 94KB JPEG, Phoenix Contact product ID 2891026). Coverage: 598 → 601 (89.1% → 89.6%)."}
|
||||||
{"d":"2026-04-21","t":"DATA","m":"Migration 087: Cisco ASR 9000 license-variant reuse — 3 models: A9K-4HG-FLEX-FC (FC license = same hardware as -TR), A9K-8X100G-LB-TR (TR license = same hardware as -SE), A9K-4X100GE base (pre-licensing-split catalog number = same hardware as -SE). All physically identical to covered siblings. Coverage: 595 → 598 (88.7% → 89.1%)."}
|
{"d":"2026-04-21","t":"DATA","m":"Migration 087: Cisco ASR 9000 license-variant reuse — 3 models: A9K-4HG-FLEX-FC (FC license = same hardware as -TR), A9K-8X100G-LB-TR (TR license = same hardware as -SE), A9K-4X100GE base (pre-licensing-split catalog number = same hardware as -SE). All physically identical to covered siblings. Coverage: 595 → 598 (88.7% → 89.1%)."}
|
||||||
|
|||||||
49
scripts/apply-pending-migrations.sh
Executable file
49
scripts/apply-pending-migrations.sh
Executable file
@ -0,0 +1,49 @@
|
|||||||
|
#!/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
|
||||||
94
sql/090-edgecore-sonic-hcl-images.sql
Normal file
94
sql/090-edgecore-sonic-hcl-images.sql
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
-- Migration 090 — Edgecore Networks AS-series SONiC-compatible switches
|
||||||
|
--
|
||||||
|
-- All URLs verified HTTP 200 (2026-04-21).
|
||||||
|
--
|
||||||
|
-- These models are seeded by the sonic-hcl.ts and edgecore.ts scrapers.
|
||||||
|
-- They appear in the SONiC Supported Devices list under vendor "Accton"
|
||||||
|
-- (Accton Technology = ODM parent of Edgecore Networks; normalised to
|
||||||
|
-- slug 'edgecore' in this DB, same slug used in migrations 057/074).
|
||||||
|
--
|
||||||
|
-- Sources:
|
||||||
|
-- AS7312-54X: stordis.com WP CDN (64KB WebP, Edgecore-Networks-AS7312-54XS_Front).
|
||||||
|
-- AS7312-54X reached end-of-sale July 2025. AS7312-54XS is the direct
|
||||||
|
-- successor with identical 1U chassis dimensions and front-panel layout.
|
||||||
|
-- Same vendor product family — same physical appearance.
|
||||||
|
-- AS7312-54XS: stordis.com WP CDN (64KB WebP, same image).
|
||||||
|
-- Stordis is an official Edgecore value-added reseller and ONIE member.
|
||||||
|
-- AS7326-56X: edge-core.com official WP CDN (83KB PNG, DCS203-F.png — front view).
|
||||||
|
-- DCS203 is Edgecore's internal product code for the AS7326-56X.
|
||||||
|
-- AS9716-32D: edge-core.com official WP CDN (78KB PNG, DCS510-A.png — front view).
|
||||||
|
-- DCS510 is Edgecore's internal product code for the AS9716-32D.
|
||||||
|
-- AS7716-32X: stordis.com WP CDN (50KB WebP, front view).
|
||||||
|
-- AS7716-32X is not in Edgecore's current WordPress catalog (superseded
|
||||||
|
-- by AS7726-32X, which is already covered in migration 057). Stordis
|
||||||
|
-- hosts the original front-view photograph.
|
||||||
|
-- AS7816-64X: edge-core.com official WP CDN (99KB PNG, DCS500-A.png — front view).
|
||||||
|
-- DCS500 is Edgecore's internal product code for the AS7816-64X.
|
||||||
|
-- AS7512-32X: epsglobal.com CDN (26KB JPEG). EPS Global is a Edgecore
|
||||||
|
-- licensed reseller with per-SKU product images. AS7512-32X is a
|
||||||
|
-- legacy 32×100G spine switch (Mellanox Spectrum/Broadcom Tomahawk era).
|
||||||
|
|
||||||
|
-- ── Edgecore Networks — AS-series SONiC switches ─────────────────────────────
|
||||||
|
|
||||||
|
-- AS7312-54X — 32×100G QSFP28 + 22×10G SFP+ SONiC spine (EOL, succeeded by -54XS)
|
||||||
|
-- Image: stordis.com WP CDN (64KB WebP); AS7312-54XS = direct chassis successor
|
||||||
|
UPDATE switches
|
||||||
|
SET image_url = 'https://stordis.com/wp-content/uploads/2024/01/Edgecore-Networks-AS7312-54XS_Front.webp',
|
||||||
|
product_page_url = COALESCE(product_page_url, 'https://www.edge-core.com/product/as7312-54x/'),
|
||||||
|
assets_scraped_at = NOW()
|
||||||
|
WHERE model = 'AS7312-54X'
|
||||||
|
AND vendor_id = (SELECT id FROM vendors WHERE slug = 'edgecore');
|
||||||
|
|
||||||
|
-- AS7312-54XS — 32×100G QSFP28 + 22×10G SFP+ SONiC spine (successor to -54X)
|
||||||
|
-- Image: stordis.com WP CDN (64KB WebP); front-panel view
|
||||||
|
UPDATE switches
|
||||||
|
SET image_url = 'https://stordis.com/wp-content/uploads/2024/01/Edgecore-Networks-AS7312-54XS_Front.webp',
|
||||||
|
product_page_url = COALESCE(product_page_url, 'https://www.edge-core.com/product/as7312-54xs/'),
|
||||||
|
assets_scraped_at = NOW()
|
||||||
|
WHERE model = 'AS7312-54XS'
|
||||||
|
AND vendor_id = (SELECT id FROM vendors WHERE slug = 'edgecore');
|
||||||
|
|
||||||
|
-- AS7326-56X — 48×25G SFP28 + 8×100G QSFP28 SONiC TOR switch (DCS203)
|
||||||
|
-- Image: edge-core.com official WP CDN (83KB PNG, DCS203-F front view)
|
||||||
|
UPDATE switches
|
||||||
|
SET image_url = 'https://www.edge-core.com/wp-content/uploads/2023/08/DCS203-F.png',
|
||||||
|
product_page_url = COALESCE(product_page_url, 'https://www.edge-core.com/product/dcs203/'),
|
||||||
|
assets_scraped_at = NOW()
|
||||||
|
WHERE model = 'AS7326-56X'
|
||||||
|
AND vendor_id = (SELECT id FROM vendors WHERE slug = 'edgecore');
|
||||||
|
|
||||||
|
-- AS7716-32X — 32×100G QSFP28 + 2×10G SFP+ SONiC spine (superseded by AS7726-32X)
|
||||||
|
-- Image: stordis.com WP CDN (50KB WebP, front view). Not in current Edgecore catalog.
|
||||||
|
UPDATE switches
|
||||||
|
SET image_url = 'https://stordis.com/wp-content/uploads/2024/01/AS7716-32X_Front.webp',
|
||||||
|
product_page_url = COALESCE(product_page_url, 'https://www.edge-core.com/product/as7716-32x/'),
|
||||||
|
assets_scraped_at = NOW()
|
||||||
|
WHERE model = 'AS7716-32X'
|
||||||
|
AND vendor_id = (SELECT id FROM vendors WHERE slug = 'edgecore');
|
||||||
|
|
||||||
|
-- AS7816-64X — 64×100G QSFP28 2U SONiC spine switch (DCS500)
|
||||||
|
-- Image: edge-core.com official WP CDN (99KB PNG, DCS500-A front view)
|
||||||
|
UPDATE switches
|
||||||
|
SET image_url = 'https://www.edge-core.com/wp-content/uploads/2023/08/DCS500-A.png',
|
||||||
|
product_page_url = COALESCE(product_page_url, 'https://www.edge-core.com/product/dcs500/'),
|
||||||
|
assets_scraped_at = NOW()
|
||||||
|
WHERE model = 'AS7816-64X'
|
||||||
|
AND vendor_id = (SELECT id FROM vendors WHERE slug = 'edgecore');
|
||||||
|
|
||||||
|
-- AS9716-32D — 32×400G QSFP-DD SONiC spine switch (DCS510)
|
||||||
|
-- Image: edge-core.com official WP CDN (78KB PNG, DCS510-A front view)
|
||||||
|
UPDATE switches
|
||||||
|
SET image_url = 'https://www.edge-core.com/wp-content/uploads/2023/08/DCS510-A.png',
|
||||||
|
product_page_url = COALESCE(product_page_url, 'https://www.edge-core.com/product/dcs510/'),
|
||||||
|
assets_scraped_at = NOW()
|
||||||
|
WHERE model = 'AS9716-32D'
|
||||||
|
AND vendor_id = (SELECT id FROM vendors WHERE slug = 'edgecore');
|
||||||
|
|
||||||
|
-- AS7512-32X — 32×100G QSFP28 SONiC spine switch (legacy Tomahawk/Spectrum era)
|
||||||
|
-- Image: epsglobal.com reseller CDN (26KB JPEG); EPS Global is Edgecore-licensed
|
||||||
|
UPDATE switches
|
||||||
|
SET image_url = 'https://www.epsglobal.com/Media-Library/EPSGlobal/Products/files/Edgecore/as7512-32x.jpg?ext=.jpg&maxsidesize=400',
|
||||||
|
product_page_url = COALESCE(product_page_url, 'https://www.edge-core.com/product/as7512-32x/'),
|
||||||
|
assets_scraped_at = NOW()
|
||||||
|
WHERE model = 'AS7512-32X'
|
||||||
|
AND vendor_id = (SELECT id FROM vendors WHERE slug = 'edgecore');
|
||||||
Loading…
x
Reference in New Issue
Block a user