Commit Graph

33 Commits

Author SHA1 Message Date
d41e3838d5 Add per-enclosure temperature metrics + Home Assistant MQTT publisher
- enclosure: fetch SES element descriptor page (0x07) and label temp/fan/
  psu/voltage elements with human-readable names
- temps service + /api/temps: per-enclosure hotspot (max across SES sensors
  and housed drive temps) plus named SES sensor list
- mqtt_publisher: paho-mqtt with HA discovery (device per enclosure, hotspot
  + per-sensor entities), LWT availability, opt-in via MQTT_HOST
- secrets: OpenBao KV v2 reader; MQTT creds sourced from secret/home_assistant
  with env fallback
- compose/requirements/README updated
2026-06-16 04:45:32 +00:00
50dd2a631e Filter dead temp sensors from SES health and recompute overall status
Xyratex HB-1235 enclosures have non-functional temperature sensor
slots that report Unrecoverable/Unknown at 0°C. The SES header
rolls these into UNRECOV=1, causing a false CRITICAL flag. Now we
skip dead sensors (0°C + non-OK status) and derive overall_status
from the actual parsed elements instead of the raw header counts.
2026-03-16 22:19:58 +00:00
3185acbb24 Skip secondary IOM enclosures with no device-linked slots
Dual-IOM shelves (e.g. NetApp DS2246 with two IOM6 modules) create
two sysfs enclosure entries. The secondary path reports populated
slots via SES but the kernel only links block devices through the
primary path. Filter these out during discovery to avoid showing
ghost enclosures with no drive data.
2026-03-16 22:12:48 +00:00
1b7412c80d Fix UnboundLocalError when no enclosures present 2026-03-07 23:02:34 +00:00
842f733638 Add tree-line connector for RAID child drives in host drives card 2026-03-07 19:07:14 +00:00
b11c1bdf98 Replace in-memory TTL cache with Redis 2026-03-07 18:45:15 +00:00
0112875894 Add enclosure health details (PSUs, fans, temps, voltages) via SES
Parse sg_ses --page=0x02 output to surface enclosure-level health data
including power supply status, fan RPMs, temperature sensors, and voltage
rails. Failed/critical components are reflected in the overview totals
and shown as status pills in the enclosure card header with an expandable
detail panel.
2026-03-07 06:03:26 +00:00
8ea8fdef08 Hide health status on RAID virtual disks in host drives section 2026-03-07 05:36:55 +00:00
1dd40a1181 Enumerate physical drives behind RAID via smartctl megaraid passthrough 2026-03-07 05:32:08 +00:00
98e435674c Fix smart_supported: treat null smart_support as unsupported 2026-03-07 05:21:41 +00:00
9ee701c749 Fix smart_supported detection for RAID controllers without SMART 2026-03-07 05:19:21 +00:00
798308d2bf Add host drives section for non-enclosure drives 2026-03-07 05:16:30 +00:00
927a5ccf3a Add ledctl locate/off LED controls to drive detail modal 2026-03-07 04:57:35 +00:00
51e6b49830 Make table view full-width and add fixed column layout 2026-03-07 04:48:34 +00:00
a25ce4ae21 Add ZFS drive state (ONLINE/FAULTED/DEGRADED) to UI 2026-03-07 04:44:31 +00:00
cea4db53fd Resolve multipath dm devices to underlying sd devices for ZFS pool map 2026-03-07 04:34:44 +00:00
3280d66888 Fix vdev parsing: use leading whitespace count instead of tab count 2026-03-07 04:20:42 +00:00
3ef7061aa5 Add ZFS vdev exposure in API and frontend 2026-03-07 04:14:14 +00:00
10de5563b2 Use nsenter with pid:host to run zpool in host mount namespace 2026-03-07 04:04:15 +00:00
034219c75e Set LD_LIBRARY_PATH only for zpool subprocess, not globally 2026-03-07 03:48:46 +00:00
4c033981c1 Fix ZFS pool detection: bind-mount host zpool binary and libs 2026-03-07 03:46:56 +00:00
861f9279c4 Implement full JBOD monitor frontend from design JSX
- Dark/light theme toggle, grid/table view toggle
- Expanded DriveHealthSummary with wwn, firmware, capacity, SMART
  counters, and computed health_status field
- Drive detail modal with identity, WWN, ZFS membership, SMART health
- 30s auto-refresh
2026-03-07 03:41:35 +00:00
284943c185 Fix SCSI firmware field name (scsi_revision) 2026-03-07 03:31:22 +00:00
4a2cbcaaec Fix SCSI/SAS drive identity fields (model, wwn, firmware) 2026-03-07 03:29:32 +00:00
78556bbfee Fix SPA serving conflicting with API routes 2026-03-07 03:23:45 +00:00
fdafb15b23 Sort slots numerically instead of lexicographically 2026-03-07 03:12:03 +00:00
8a8fbfbcf6 Use npm install instead of npm ci (no lockfile) 2026-03-07 03:06:26 +00:00
05448e7903 Remove zfsutils-linux from Dockerfile, bind-mount host ZFS tools
zfsutils-linux is not available in Debian Trixie. Instead, bind-mount
the host zpool/zfs binaries and shared libraries at runtime.
2026-03-07 03:05:41 +00:00
7beead8cae Add React frontend, ZFS pool mapping, and multi-stage Docker build
- Vite + React frontend with dark-themed dashboard, slot grid per
  enclosure, and SMART detail overlay
- ZFS pool membership via zpool status -P
- Multi-stage Dockerfile (Node build + Python runtime)
- Updated docker-compose with network_mode host and healthcheck
2026-03-07 03:04:23 +00:00
e2bd413041 Support 'array device' type for Xyratex enclosures 2026-03-07 02:35:13 +00:00
9b93eedbc8 Fix slot discovery for bare numeric sysfs directories 2026-03-07 02:33:12 +00:00
1157a5284f Add .gitignore and remove cached pyc files 2026-03-07 02:14:44 +00:00
9f918a3308 Initial commit: FastAPI JBOD monitor backend 2026-03-07 02:14:17 +00:00