Rack: posts vs facing, three views, ZimaBoard 832 shelves to scale #30

Merged
jared merged 3 commits from zimaboard-and-facing into main 2026-11-11 00:53:41 -05:00
Owner

Why

micro1 and monitor-02 are IceWhale ZimaBoard 832s on a shelf. They should be drawn as the real boards.

The StarTech's RPDU and ZimaBoard shelf hang on the rear posts but face the front. The rack page assumed rear-mounted meant rear-facing, so it drew them the wrong way round.

What changes

Posts and facing are separate fields

  • Each item has Mounted on (front posts, rear posts, or both for full depth) and Ports face (front or rear). Both are new fields; facing defaults to front.
  • Existing items, including the RPDU and the shelf on production, now read correctly with no data change.

Three views

  • Front: the front posts.
  • Rear posts: gear on the rear posts, seen from the front, i.e. what sits behind the front gear. This is where the RPDU and the ZimaBoards show port-side out.
  • Rear: the rack from behind.
  • An item seen from the side it doesn't face shows its back.
  • Each view button shows how many items it holds.

Shelves drawn to scale

  • A shelf is drawn as a true-scale shelf (a 19" panel is 482.6 mm), with its contents left to right by a new Position on shelf field.
  • Each item stands on the tray with a name tag below it and links to its device page.
  • Items without a drawing are labelled boxes.

IceWhale ZimaBoard 832

  • Traced from IceWhale's own labelled photo of the port end, from their ZimaDocs repo (hardware-interface-introduction.webp), at 81.4 mm wide.
  • Left to right: Mini-DisplayPort 1.2, two GbE RJ45 jacks over two USB 3.0 ports, then the DC 12V 5.5x2.5mm jack. Each RJ45 has a link LED and an activity LED.
  • Drawn on the gunmetal case, with the gold PCB edge and the black polycarbonate base.
  • Live data:
    • Each RJ45 link light follows one of the host's physical NICs, in name order: first NIC on the left jack.
    • The amber base glow follows the host's power status.
    • The tooltip lists the specs (N3450, 8GB LPDDR4, 32GB eMMC, 6W) and each NIC's state.

Schema: new cutsheet_items columns facing and slot, added on first use.

After deploy

On production, set Front drawing: IceWhale ZimaBoard 832 on micro1 and monitor-02, and Position on shelf 1 and 2.

Testing

  • Automated: 370 tests pass (5 new):
    • all three views, with a rear-post item facing front, one facing rear, and a full-depth server
    • view counts
    • shelf contents ordered by position, with each host's physical NICs
    • facing and slot validation, including that a position needs a shelf
  • Lint: flake8 is clean, ESLint reports 0 errors, and no em or en dashes remain.
  • Playwright in the preview, with micro1's second NIC down:
    • The "Rear posts" view shows the RPDU and the shelf with both ZimaBoards.
    • micro1's right jack is dark.
    • The tooltips are correct.
    • Clicking a board opens its device page.
    • No JS errors.

Merging: this branch and #29 (Pro Max faceplates) both add entries to the drawing list. Whichever merges second needs a small rebase, which I'll do.

ZimaBoards on the shelf

IceWhale's reference photo, for comparison:

Reference

🤖 Generated with Claude Code

## Why micro1 and monitor-02 are IceWhale ZimaBoard 832s on a shelf. They should be drawn as the real boards. The StarTech's RPDU and ZimaBoard shelf hang on the **rear posts** but **face the front**. The rack page assumed rear-mounted meant rear-facing, so it drew them the wrong way round. ## What changes **Posts and facing are separate fields** - Each item has **Mounted on** (front posts, rear posts, or both for full depth) and **Ports face** (front or rear). Both are new fields; facing defaults to front. - Existing items, including the RPDU and the shelf on production, now read correctly with no data change. **Three views** - **Front:** the front posts. - **Rear posts:** gear on the rear posts, seen from the front, i.e. what sits behind the front gear. This is where the RPDU and the ZimaBoards show port-side out. - **Rear:** the rack from behind. - An item seen from the side it doesn't face shows its back. - Each view button shows how many items it holds. **Shelves drawn to scale** - A shelf is drawn as a true-scale shelf (a 19" panel is 482.6 mm), with its contents left to right by a new **Position on shelf** field. - Each item stands on the tray with a name tag below it and links to its device page. - Items without a drawing are labelled boxes. **IceWhale ZimaBoard 832** - Traced from IceWhale's own labelled photo of the port end, from their ZimaDocs repo (`hardware-interface-introduction.webp`), at 81.4 mm wide. - Left to right: Mini-DisplayPort 1.2, two GbE RJ45 jacks over two USB 3.0 ports, then the DC 12V 5.5x2.5mm jack. Each RJ45 has a link LED and an activity LED. - Drawn on the gunmetal case, with the gold PCB edge and the black polycarbonate base. - Live data: - Each RJ45 link light follows one of the host's physical NICs, in name order: first NIC on the left jack. - The amber base glow follows the host's power status. - The tooltip lists the specs (N3450, 8GB LPDDR4, 32GB eMMC, 6W) and each NIC's state. **Schema:** new `cutsheet_items` columns `facing` and `slot`, added on first use. ## After deploy On production, set **Front drawing: IceWhale ZimaBoard 832** on micro1 and monitor-02, and **Position on shelf** 1 and 2. ## Testing - **Automated:** 370 tests pass (5 new): - all three views, with a rear-post item facing front, one facing rear, and a full-depth server - view counts - shelf contents ordered by position, with each host's physical NICs - facing and slot validation, including that a position needs a shelf - **Lint:** flake8 is clean, ESLint reports 0 errors, and no em or en dashes remain. - **Playwright** in the preview, with micro1's second NIC down: - The "Rear posts" view shows the RPDU and the shelf with both ZimaBoards. - micro1's right jack is dark. - The tooltips are correct. - Clicking a board opens its device page. - No JS errors. **Merging:** this branch and #29 (Pro Max faceplates) both add entries to the drawing list. Whichever merges second needs a small rebase, which I'll do. ![ZimaBoards on the shelf](https://code.lotusguild.org/LotusGuild/gandalf/raw/branch/pr-30-screenshots/1-zimaboards.png) IceWhale's reference photo, for comparison: ![Reference](https://code.lotusguild.org/LotusGuild/gandalf/raw/branch/pr-30-screenshots/2-reference.png) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
jared added 1 commit 2026-11-11 00:12:24 -05:00
Rack: ports-facing separate from posts, three views, ZimaBoard 832 shelves to scale
Lint / JS (eslint) (push) Successful in 8s
Lint / Python (flake8) (push) Successful in 1m0s
Lint / Notify on failure (push) Skipped
Lint / Deploy (push) Skipped
Security / Python Security (bandit) (push) Successful in 1m9s
Lint / Python (flake8) (pull_request) Successful in 57s
Test / Python Tests (pytest) (push) Successful in 1m14s
Lint / JS (eslint) (pull_request) Successful in 8s
Lint / Notify on failure (pull_request) Skipped
Lint / Deploy (pull_request) Skipped
Security / Python Security (bandit) (pull_request) Successful in 56s
Test / Python Tests (pytest) (pull_request) Successful in 1m5s
a9de175d90
Gear on the rear posts usually still faces the front (the StarTech's RPDU
and ZimaBoard shelf), so "which posts" and "which way the ports face" are
now separate fields (mount, facing). The page has three views: Front (front
posts), Rear posts (rear-post gear seen from the front, i.e. what is behind
the front gear) and Rear (from behind). An item seen from the side it
doesn't face shows its back. Facing defaults to front, so existing items
keep their meaning.

Shelves are drawn at true scale with their contents ordered by a new
"Position on shelf". The IceWhale ZimaBoard 832 is traced from IceWhale's
labelled photo of its port end (ZimaDocs): Mini-DP, two RJ45-over-USB 3.0
stacks with link/activity LEDs, DC jack, gunmetal case, gold PCB edge and
black base. Its RJ45 link lights follow the host's physical NICs and the
status glow follows the host.

New cutsheet_items columns facing and slot, added on first use.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jared added 1 commit 2026-11-11 00:35:28 -05:00
Rack: ConnectX-3 SFP+ cards in the ZimaBoards' PCIe slots; correct NIC mapping
Lint / JS (eslint) (push) Successful in 10s
Lint / Python (flake8) (push) Successful in 51s
Lint / Notify on failure (push) Skipped
Lint / Deploy (push) Skipped
Lint / JS (eslint) (pull_request) Successful in 8s
Lint / Python (flake8) (pull_request) Successful in 50s
Lint / Notify on failure (pull_request) Skipped
Lint / Deploy (pull_request) Skipped
Security / Python Security (bandit) (pull_request) Successful in 1m7s
Security / Python Security (bandit) (push) Successful in 1m8s
Test / Python Tests (pytest) (push) Successful in 1m38s
Test / Python Tests (pytest) (pull_request) Successful in 1m38s
486a93c5a0
From the rack photo, each ZimaBoard has a single-port ConnectX-3 lying flat
in its side PCIe slot with a DAC attached. Front drawing "ZimaBoard 832 +
ConnectX-3" draws the card beside the board at scale: PCB at board height,
heatsink, SFP+ cage with the DAC and pull tab, and a Gandalf link mark for
the card's interface.

The jacks were lit in NIC name order, which put the ConnectX-3 (enp1s0, PCI
bus 1) on the left RJ45. The onboard ports are enp2s0 (left) and enp3s0
(right); the PCIe card is enp1s0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Author
Owner

ConnectX-3 cards added

I drew these from the rack photo. Each ZimaBoard has a single-port ConnectX-3 lying flat in its side PCIe slot, with a DAC attached. The new Front drawing ZimaBoard 832 + ConnectX-3 draws the card beside the board at scale:

  • the PCB at board height, with the heatsink on top
  • the SFP+ cage on the board side, with the DAC plug and its pull tab hanging down
  • a round dot, which is Gandalf's link mark for the card's interface (enp1s0), not an LED on the card

Fix: which interface lights which jack. The jacks were lit in interface name order, which put the ConnectX-3 (enp1s0, on PCI bus 1) on the left RJ45. On production, micro1 and monitor-02 report:

  • enp1s0: the PCIe card
  • enp2s0: onboard port, drawn on the left jack
  • enp3s0: onboard port, drawn on the right jack

micro1's right jack is dark because enp3s0 is down there.

The preview below uses production's interface set:

ZimaBoards with ConnectX-3

## ConnectX-3 cards added I drew these from the rack photo. Each ZimaBoard has a single-port ConnectX-3 lying flat in its side PCIe slot, with a DAC attached. The new Front drawing **ZimaBoard 832 + ConnectX-3** draws the card beside the board at scale: - the PCB at board height, with the heatsink on top - the SFP+ cage on the board side, with the DAC plug and its pull tab hanging down - a round dot, which is Gandalf's link mark for the card's interface (`enp1s0`), not an LED on the card **Fix: which interface lights which jack.** The jacks were lit in interface name order, which put the ConnectX-3 (`enp1s0`, on PCI bus 1) on the left RJ45. On production, micro1 and monitor-02 report: - `enp1s0`: the PCIe card - `enp2s0`: onboard port, drawn on the left jack - `enp3s0`: onboard port, drawn on the right jack micro1's right jack is dark because `enp3s0` is down there. The preview below uses production's interface set: ![ZimaBoards with ConnectX-3](https://code.lotusguild.org/LotusGuild/gandalf/raw/branch/pr-30-screenshots/4-zimaboards-cx3.png)
jared added 1 commit 2026-11-11 00:46:28 -05:00
Merge remote-tracking branch 'origin/main' into zimaboard-and-facing
Lint / Python (flake8) (push) Successful in 58s
Lint / JS (eslint) (push) Successful in 8s
Lint / Notify on failure (push) Skipped
Lint / Deploy (push) Skipped
Lint / JS (eslint) (pull_request) Successful in 13s
Security / Python Security (bandit) (push) Successful in 1m11s
Test / Python Tests (pytest) (push) Successful in 1m14s
Security / Python Security (bandit) (pull_request) Successful in 1m44s
Test / Python Tests (pytest) (pull_request) Successful in 1m40s
Lint / Python (flake8) (pull_request) Successful in 48s
Lint / Notify on failure (pull_request) Skipped
Lint / Deploy (pull_request) Skipped
0243b23732
# Conflicts:
#	static/style.css
#	tests/test_cutsheet.py
jared merged commit 7e75ba8b3c into main 2026-11-11 00:53:41 -05:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: LotusGuild/gandalf#30