diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index ae50a65..fb0a6be 100644 --- a/CHANGELOG_PENDING.md +++ b/CHANGELOG_PENDING.md @@ -3,6 +3,9 @@ Format: `{"d":"YYYY-MM-DD","t":"TYPE","m":"Description"}` Types: FEAT · FIX · UI · DATA · AI · INFRA +{"d":"2026-04-21","t":"DATA","m":"Migration 077: Barracuda Networks (CloudGen Firewall F900), Peplink (SD Switch 24-Port), Westermo (Lynx 5612-F4G-T8G) — 3 images. Sources: cdn.blueally.com partner CDN + westermo.eworldme.com Shopify CDN. Coverage: 440 → 443 (65.6% → 66.0%)."} +{"d":"2026-04-21","t":"DATA","m":"Migration 076: QCT/QuantaMesh (T7032-IX1, T7064-IX4, T9032-IX9), QNAP (QSW-M5216-1T), Sophos (CS210-48FP) — 5 images. Sources: qct.io CDN, hyperscalers.com (T7064-IX4 EOL), cdn.blueally.com qnapworks, Sophos ContentStack CDN. Coverage: 435 → 440 (64.8% → 65.6%)."} +{"d":"2026-04-21","t":"DATA","m":"Migration 075: Cisco Nexus 9300 SE1 series (N9324C-SE1U, N9336C-SE1, N9348Y2C6D-SE1U, N9364E-SG2-O, N9364E-SG2-Q, N9396T12C-SE1, N9396Y12C-SE1) — 7 images. Sources: cisco.com/content/dam/cisco-cdc poster-image CDN + cisco.com/c/dam/assets support CDN. Coverage: 428 → 435 (63.8% → 64.8%)."} {"d":"2026-04-21","t":"DATA","m":"Migration 074: Extreme Networks (SLX 9740-40C, X695-48Y-8C, 5520-48T), Ruijie (RG-S6920-4C, RG-S5760C-24SFP/8GT8XS-X), Ruckus (ICX 7150-48PF, ICX 7550-48ZP), ZTE (ZXR10 5960-56PM-H, ZXR10 9908), Edgecore (AS7712-32X) — 10 images. Coverage: 418 → 428 (62.3% → 63.8%)."} {"d":"2026-04-21","t":"DATA","m":"Migration 073: Cisco ASR 9000 + NCS 540 series images — 18 standalone chassis entries (ASR-9001/9901/9902/9903 + A9KV-V2 variants + N540/N540X variants). Sources: networktigers.com Shopify CDN + tempestns.com WP CDN. Coverage: 400 → 418 (59.6% → 62.3%)."} {"d":"2026-04-21","t":"INFRA","m":"12-hour DB backup to home server (Mac Studio): /opt/tip/backup-db.sh script + cron 0 0,12 * * * on Erik. First backup: 32MB gzipped pg_dump, rsync over WireGuard VPN, keeps last 10 remote + 5 local."} diff --git a/sql/075-cisco-nexus9300-se1-images.sql b/sql/075-cisco-nexus9300-se1-images.sql new file mode 100644 index 0000000..f8e7830 --- /dev/null +++ b/sql/075-cisco-nexus9300-se1-images.sql @@ -0,0 +1,82 @@ +-- Migration 075 — Cisco Nexus 9300 SE1 Cloud-Scale Switches +-- +-- All 6 URLs verified HTTP 200 (2026-04-21). +-- +-- Sources: +-- N9324C-SE1U + N9348Y2C6D-SE1U: +-- cisco.com/content/dam/cisco-cdc/site/images/poster-image/ +-- Official Cisco CDC poster-image CDN (these are case-sensitive — 9348y2C6d). +-- N9336C-SE1 + N9364E-SG2-Q + N9396T12C-SE1 + N9396Y12C-SE1: +-- cisco.com/c/dam/assets/support/product-images/model/ +-- Official Cisco Support CDN (model-specific product images, lowercase slugs). +-- +-- N9364E-SG2-O: +-- SG2-O (QSFP-DD uplinks) and SG2-Q (QSFP28 uplinks) share the same +-- 64-slot chassis physical form factor. SG2-O image returns 404 on all +-- known Cisco DAM paths; SG2-Q image (124KB, confirmed 200 OK) used. +-- +-- Product page for all models: Nexus 9000 Series (SE1 subpage). +-- +-- Skipped (line cards / no standalone chassis photo): +-- N9300v: virtual switch, no physical chassis image. +-- All NC55-*, NC57-*, C9600-LC-*, A9K-*, A99-*, ASR-9000V-* etc. +-- remain skipped (line cards or module-only SKUs). + +-- ── Cisco Nexus 9300 SE1 Series ────────────────────────────────────────────── + +-- N9324C-SE1U — 24×400G QSFP-DD cloud-scale campus spine switch +UPDATE switches +SET image_url = 'https://www.cisco.com/content/dam/cisco-cdc/site/images/poster-image/model-9324c-se1u.jpg', + product_page_url = COALESCE(product_page_url, 'https://www.cisco.com/c/en/us/products/switches/nexus-9000-series-switches/index.html'), + assets_scraped_at = NOW() +WHERE model = 'N9324C-SE1U' + AND vendor_id = (SELECT id FROM vendors WHERE slug = 'cisco'); + +-- N9336C-SE1 — 36×400G QSFP-DD cloud-scale ToR/spine switch +UPDATE switches +SET image_url = 'https://www.cisco.com/c/dam/assets/support/product-images/model/switches-nexus-9336c-se1-switch-model.jpg', + product_page_url = COALESCE(product_page_url, 'https://www.cisco.com/c/en/us/products/switches/nexus-9000-series-switches/index.html'), + assets_scraped_at = NOW() +WHERE model = 'N9336C-SE1' + AND vendor_id = (SELECT id FROM vendors WHERE slug = 'cisco'); + +-- N9348Y2C6D-SE1U — 48×25G SFP28 + 2×100G + 6×400G cloud-scale switch +UPDATE switches +SET image_url = 'https://www.cisco.com/content/dam/cisco-cdc/site/images/poster-image/model-9348y2C6d-se1u.jpg', + product_page_url = COALESCE(product_page_url, 'https://www.cisco.com/c/en/us/products/switches/nexus-9000-series-switches/index.html'), + assets_scraped_at = NOW() +WHERE model = 'N9348Y2C6D-SE1U' + AND vendor_id = (SELECT id FROM vendors WHERE slug = 'cisco'); + +-- N9364E-SG2-O — 64-slot 400G QSFP-DD AI/hyperscale spine switch +-- Image: SG2-Q photo used (same chassis, SG2-O-specific image unavailable on Cisco DAM) +UPDATE switches +SET image_url = 'https://www.cisco.com/c/dam/assets/support/product-images/model/switches-nexus-9364e-sg2-q-switch-model.jpg', + product_page_url = COALESCE(product_page_url, 'https://www.cisco.com/c/en/us/products/switches/nexus-9000-series-switches/index.html'), + assets_scraped_at = NOW() +WHERE model = 'N9364E-SG2-O' + AND vendor_id = (SELECT id FROM vendors WHERE slug = 'cisco'); + +-- N9364E-SG2-Q — 64-slot 400G QSFP28 AI/hyperscale spine switch +UPDATE switches +SET image_url = 'https://www.cisco.com/c/dam/assets/support/product-images/model/switches-nexus-9364e-sg2-q-switch-model.jpg', + product_page_url = COALESCE(product_page_url, 'https://www.cisco.com/c/en/us/products/switches/nexus-9000-series-switches/index.html'), + assets_scraped_at = NOW() +WHERE model = 'N9364E-SG2-Q' + AND vendor_id = (SELECT id FROM vendors WHERE slug = 'cisco'); + +-- N9396T12C-SE1 — 96×10G BASE-T + 12×100G cloud-scale access switch +UPDATE switches +SET image_url = 'https://www.cisco.com/c/dam/assets/support/product-images/model/switches-nexus-9396t12c-se1-switch-model.jpg', + product_page_url = COALESCE(product_page_url, 'https://www.cisco.com/c/en/us/products/switches/nexus-9000-series-switches/index.html'), + assets_scraped_at = NOW() +WHERE model = 'N9396T12C-SE1' + AND vendor_id = (SELECT id FROM vendors WHERE slug = 'cisco'); + +-- N9396Y12C-SE1 — 96×25G SFP28 + 12×100G cloud-scale access switch +UPDATE switches +SET image_url = 'https://www.cisco.com/c/dam/assets/support/product-images/model/switches-nexus-9396y12c-se1-switch-model.jpg', + product_page_url = COALESCE(product_page_url, 'https://www.cisco.com/c/en/us/products/switches/nexus-9000-series-switches/index.html'), + assets_scraped_at = NOW() +WHERE model = 'N9396Y12C-SE1' + AND vendor_id = (SELECT id FROM vendors WHERE slug = 'cisco'); diff --git a/sql/076-qct-qnap-sophos-images.sql b/sql/076-qct-qnap-sophos-images.sql new file mode 100644 index 0000000..5d070b7 --- /dev/null +++ b/sql/076-qct-qnap-sophos-images.sql @@ -0,0 +1,67 @@ +-- Migration 076 — QCT (Quanta Cloud Technology), QNAP, Sophos +-- +-- All URLs verified HTTP 200 (2026-04-21). +-- +-- QCT (Quanta Cloud Technology): +-- T7032-IX1: qct.io official product gallery CDN (PNG, 740×460, 77KB). +-- T7064-IX4: hyperscalers.com product image (900×900 PNG, 369KB). +-- QCT removed T7064-IX4 page from their current site (product EOL'd); +-- hyperscalers.com has the only accessible product photo. +-- T9032-IX9: qct.io official product gallery CDN (PNG, 88KB). +-- T7064-IX1D: no accessible public image found on any source; skipped. +-- +-- QNAP: +-- QSW-M5216-1T: cdn.blueally.com (QNAPworks partner CDN, stable). +-- qnap.com/uploads returns 403; blueally.com front.png confirmed 200 OK. +-- +-- Sophos: +-- CS210-48FP: images.contentstack.io (official Sophos ContentStack CDN). +-- Front-view PNG, confirmed 200 OK from Sophos product comparison page. +-- URL includes Sophos-standard query params (immutable=true, cache=true). + +-- ── QCT (Quanta Cloud Technology) ──────────────────────────────────────────── + +-- T7032-IX1 — 32×100G QSFP28 bare-metal spine switch (Tomahawk) +UPDATE switches +SET image_url = 'https://www.qct.io/upload/website/product/gallery/normal/NetworkSwitchQuantaMeshT7032IX1_FrontView02-740x460_17112415623.png', + product_page_url = COALESCE(product_page_url, 'https://www.qct.io/product/index/Networking/Ethernet-Switch/T7000-Series/T7032-IX1'), + assets_scraped_at = NOW() +WHERE model = 'QuantaMesh T7032-IX1' + AND vendor_id = (SELECT id FROM vendors WHERE slug = 'quanta-cloud-technology'); + +-- T7064-IX4 — 64×100G QSFP28 bare-metal 2U spine switch (Tomahawk 2) +-- Image from hyperscalers.com (QCT official page removed — product EOL'd) +UPDATE switches +SET image_url = 'https://www.hyperscalers.com/image/cache/catalog/00-Products/Networking/QuantaMesh-BMS-T7064-IX4_DSC3446_18040216744-900x900.png', + product_page_url = COALESCE(product_page_url, 'https://www.hyperscalers.com/100G-switch-cumulus-QuantaMesh-BMS-T7064-IX4'), + assets_scraped_at = NOW() +WHERE model = 'QuantaMesh T7064-IX4' + AND vendor_id = (SELECT id FROM vendors WHERE slug = 'quanta-cloud-technology'); + +-- T9032-IX9 — 32×400G QSFP-DD bare-metal spine switch (first 400G QuantaMesh) +UPDATE switches +SET image_url = 'https://www.qct.io/upload/website/product/gallery/normal/ix9_DSC4879_19080210498_19081310742.png', + product_page_url = COALESCE(product_page_url, 'https://www.qct.io/en-US/product/index/Switch/Bare-Metal-Switch/Spine-Switch/QuantaMesh-BMS-T9032-IX9'), + assets_scraped_at = NOW() +WHERE model = 'QuantaMesh T9032-IX9' + AND vendor_id = (SELECT id FROM vendors WHERE slug = 'quanta-cloud-technology'); + +-- ── QNAP ────────────────────────────────────────────────────────────────────── + +-- QSW-M5216-1T — 16×25GbE SFP28 + 1×10GbE NBASE-T layer 2 managed switch +UPDATE switches +SET image_url = 'https://cdn.blueally.com/qnapworks/images/switches/qsw-m5216-1t/front.png', + product_page_url = COALESCE(product_page_url, 'https://www.qnap.com/en-us/product/qsw-m5216-1t'), + assets_scraped_at = NOW() +WHERE model = 'QSW-M5216-1T' + AND vendor_id = (SELECT id FROM vendors WHERE slug = 'qnap'); + +-- ── Sophos ──────────────────────────────────────────────────────────────────── + +-- CS210-48FP — 48×1G (16×2.5G) + Full PoE cloud-managed switch (200 Series) +UPDATE switches +SET image_url = 'https://images.contentstack.io/v3/assets/blt38f1f401b66100ad/blt7076601a3bae0b40/690f99fc6f78933df27cee37/cs210-48fp-front.png?width=850&quality=80&format=auto&cache=true&immutable=true', + product_page_url = COALESCE(product_page_url, 'https://www.sophos.com/en-us/products/sophos-switch/200-1000-series-network-switch-compare'), + assets_scraped_at = NOW() +WHERE model = 'CS210-48FP' + AND vendor_id = (SELECT id FROM vendors WHERE slug = 'sophos'); diff --git a/sql/077-barracuda-peplink-westermo-images.sql b/sql/077-barracuda-peplink-westermo-images.sql new file mode 100644 index 0000000..400dace --- /dev/null +++ b/sql/077-barracuda-peplink-westermo-images.sql @@ -0,0 +1,52 @@ +-- Migration 077 — Barracuda Networks, Peplink, Westermo +-- +-- All URLs verified HTTP 200 (2026-04-21). +-- +-- Barracuda Networks: +-- CloudGen Firewall F900: cdn.blueally.com (barraguard partner CDN, 69KB PNG). +-- barracuda.com/support and campus.barracuda.com return 403 for scraping; +-- barraguard.com (authorized partner) hosts the image on the blueally CDN. +-- +-- Peplink: +-- SD Switch 24-Port: cdn.blueally.com (peplinkworks partner CDN, 35KB JPEG). +-- peplink.com product gallery images require JS rendering; +-- peplinkworks.com (authorized reseller) exposes static CDN images. +-- Note: model is the "Rugged" 24-port SD Switch (IP67-rated); +-- confirmed matching the SD Switch 24-Port entry in the DB. +-- +-- Westermo: +-- Lynx 5612-F4G-T8G: westermo.eworldme.com Shopify CDN (14KB JPEG, 200 OK). +-- media.westermo.com returns text/html (not an image) for direct CDN paths; +-- westermo.eworldme.com is an authorized Westermo reseller with stable +-- versioned Shopify CDN URLs. + +-- ── Barracuda Networks ──────────────────────────────────────────────────────── + +-- CloudGen Firewall F900 — 8-port 10G rackmount enterprise firewall +UPDATE switches +SET image_url = 'https://cdn.blueally.com/barraguard/images/ng-firewall/ngfirewall-f900.png', + product_page_url = COALESCE(product_page_url, 'https://www.barracuda.com/products/cloudgen-firewall/models'), + assets_scraped_at = NOW() +WHERE model = 'CloudGen Firewall F900' + AND vendor_id = (SELECT id FROM vendors WHERE slug = 'barracuda-networks'); + +-- ── Peplink ─────────────────────────────────────────────────────────────────── + +-- SD Switch 24-Port — 24×1G RJ-45 rugged managed SD-WAN-ready switch +UPDATE switches +SET image_url = 'https://cdn.blueally.com/peplinkworks/images/sd-switch-rugged/24-port-switch-rugged-front.jpg', + product_page_url = COALESCE(product_page_url, 'https://www.peplink.com/products/sd-switch/'), + assets_scraped_at = NOW() +WHERE model = 'SD Switch 24-Port' + AND vendor_id = (SELECT id FROM vendors WHERE slug = 'peplink'); + +-- ── Westermo ────────────────────────────────────────────────────────────────── + +-- Lynx 5612-F4G-T8G — 4×100M SFP + 8×1G RJ-45 DIN-rail managed switch +-- Image from westermo.eworldme.com Shopify reseller CDN (official photo) +UPDATE switches +SET image_url = 'https://westermo.eworldme.com/cdn/shop/files/Westermo-Lynx-5612-F4G-T8G-LV-Easy-World-Automation-Front.jpg?v=1726655230', + product_page_url = COALESCE(product_page_url, 'https://www.westermo.com/products/switches/lynx/lynx-5612-f4g-t8g-lv'), + assets_scraped_at = NOW() +WHERE model = 'Lynx 5612-F4G-T8G' + AND vendor_id = (SELECT id FROM vendors WHERE slug = 'westermo');