nas-burnin/app/routes
Brandon Walter 7f959e6f4c
Some checks are pending
Security scan / pip-audit (push) Waiting to run
Security scan / bandit (push) Waiting to run
Security scan / gitleaks (push) Waiting to run
Security scan / mypy (push) Waiting to run
feat: prominent failure-reason block + heuristic in drawer (1.0.0-50)
When a stage ends in failed/cancelled/unknown the drawer now shows
a coloured "Reason" pill at the top of that stage's section. Three
sources, in order of preference:

1. stage.error_text (the canonical, when set)
2. job.error_text (backfilled in the drawer endpoint when stage's
   own is empty — catches orphan rows from hard crashes like the
   pre-busy-timeout DB-locked failures)
3. Heuristic: if log_text is tiny (<500 bytes, just the START
   banner) AND no real badblocks progress was recorded, label as
   "Stopped without recording an error — likely cause: SSH
   connection drop or container restart while this stage was
   running." This catches the fingerprint of a deploy-during-burn-in
   killing the SSH session.

Otherwise: "No error message recorded." so there's never a blank
where the operator expects to see why something broke.

Red styling for failed, yellow for cancelled/unknown. Replaces the
inline stage-error-line for terminal states; the existing
stage-error-line still renders for non-terminal contexts.
2026-05-09 12:06:11 -07:00
..
__init__.py fix: address Codex routes-split follow-up review (1.0.0-39) 2026-05-03 15:04:38 -05:00
_drives_helpers.py fix: SMART overlay shows terminal states + reconciles orphans (1.0.0-49) 2026-05-09 11:46:45 -07:00
_helpers.py feat: rate limiter + mypy + lifecycle tests + routes/ split (1.0.0-33/-34) 2026-05-03 09:29:53 -04:00
audit.py refactor: extract history + audit + stats + report routes (1.0.0-35) 2026-05-03 09:44:22 -04:00
auth.py feat: rate limiter + mypy + lifecycle tests + routes/ split (1.0.0-33/-34) 2026-05-03 09:29:53 -04:00
burnin.py refactor: extract drives + burnin routes (1.0.0-37) 2026-05-03 09:59:15 -04:00
drives.py feat: prominent failure-reason block + heuristic in drawer (1.0.0-50) 2026-05-09 12:06:11 -07:00
history.py refactor: extract history + audit + stats + report routes (1.0.0-35) 2026-05-03 09:44:22 -04:00
report.py refactor: extract history + audit + stats + report routes (1.0.0-35) 2026-05-03 09:44:22 -04:00
settings.py refactor: extract settings routes (1.0.0-36) 2026-05-03 09:48:24 -04:00
stats.py refactor: extract history + audit + stats + report routes (1.0.0-35) 2026-05-03 09:44:22 -04:00
system.py infra: rename truenas-burnin → nas-burnin (1.0.0-41) 2026-05-04 07:16:02 -07:00