Skip to content
Samar Siddiqui
All projects

2026SMS InfoComm

SMS Pre-Check

Pre-test go/no-go validation gate

  • Bash
  • PowerShell
  • Redfish
  • IPMI
  • SSH
to screen a unit before final test
~1 min
exit code, with manual-fix steps
Go / no-go

At a glance

  • A go/no-go pre-check a technician runs before starting the final server test, so a unit that was never going to pass doesn't burn a limited test slot.
  • Runs a dozen gated checks over the BMC and host: power-on, OS boot, serial-number programming, active faults, accelerator/drive count, firmware presence, console access, network link type, PCIe link health, and sensor sanity.
  • Ends in a summary table and a go/no-go exit code; each failure is followed by copy-paste “how to check manually” steps pre-filled with the unit's details.
  • The technician enters only a rack/slot location; a shared inventory resolves the management and host addresses, and credentials are auto-probed.
  • Optional add-on checks for fan-RPM ramp and a short CPU/NVMe/GPU stress smoke test, always safely restoring hardware state (fan control back to auto, even on Ctrl-C).
  • Reuses the jump-host scaffolding (inventory, credential probe, ship-a-worker launchers) from the NVDebug tooling; every check degrades to a clearly labeled SKIP rather than a false failure when it can't be evaluated.

A fast, do-this-first gate for the server test floor: enter a rack/slot, and in about a minute you know whether a unit is even worth putting on a scarce, hours-long final-test station, with a red/green summary and manual-fix steps for anything that fails.

Purpose

Final server validation runs on a limited number of test stations, and a full test is long. Starting one on a unit with an obvious blocker (it won't power on, won't boot the OS, is missing a serial number, has an active fault, or has a mis-set link) wastes a slot another unit needed. I built this pre-check so a technician can screen a unit in about a minute before committing a station: catch the cheap-to-detect failures up front, and only start the real test on units that can plausibly pass.

Goals

  • Cheap and fast. Seconds-to-a-minute screening, run from the same jump host the technicians already use.
  • Location-only input. The tech types a rack/slot; everything else (addresses, credentials, expected counts) is resolved automatically.
  • Never a false stop. Anything that can't be evaluated reports SKIP and doesn't flip the result; only real failures fail.
  • Actionable. Every failure explains how to verify and fix it by hand, with commands pre-filled for that unit.

Development process

  • Mirrored the real test's entry conditions. I walked the final-test procedure and turned its earliest, highest-yield gates into standalone checks (power, OS boot, serials, faults, counts, firmware, console, link type, PCIe health, sensors) so a pass here strongly predicts the test won't fail out immediately.
  • Evidence-first output. As with the diagnostic tools, every command is echoed with its full raw output above the parsed verdict, so a technician can trust, and re-run, exactly what the tool did.
  • Graceful degradation. The floor's network reachability and available tooling vary, so each check independently degrades to a labeled SKIP instead of blocking, and the final verdict is only about genuine failures.
  • Reuse over rebuild. It reuses the location inventory, credential probing, and ship-a-worker-to-the-jump-host launchers from the NVDebug tooling, so the two tools feel identical to operate.
  • Optional deeper gates. I added opt-in fan-ramp and short stress-smoke checks for cases where a quick load test is worth the extra time, with hardware state always restored afterward.