2.3 KiB
05 — Collectors
Collectors live in internal/collector/.
Core files:
internal/collector/registry.go— connector registry (redfish,ipmi)internal/collector/redfish.go— real Redfish connectorinternal/collector/ipmi_mock.go— IPMI mock connector scaffoldinternal/collector/types.go— request/progress contracts
Redfish Collector (redfish)
Status: Production-ready.
Request contract (from server)
Passed through from /api/collect after validation:
host,port,usernameauth_type=password|token(+ matching credential field)tls_mode=strict|insecure
Discovery
Dynamic — does not assume fixed paths. Discovers:
Systemscollection → per-system resourcesChassiscollection → enclosure/board dataManagerscollection → BMC/firmware info
Collected data
| Category | Notes |
|---|---|
| CPU | Model, cores, threads, socket, status |
| Memory | DIMM slot, size, type, speed, serial, manufacturer |
| Storage | Slot, type, model, serial, firmware, interface, status |
| GPU | Detected via PCIe class + NVIDIA vendor ID |
| PSU | Model, serial, wattage, firmware, telemetry (input/output power, voltage) |
| NIC | Model, serial, port count, BDF |
| PCIe | Slot, vendor_id, device_id, BDF, link width/speed |
| Firmware | BIOS, BMC versions |
Raw snapshot
Full Redfish response tree is stored in result.RawPayloads["redfish_tree"].
This allows future offline re-analysis without re-collecting from a live BMC.
Parsing guidelines
When adding Redfish mappings, follow these principles:
- Support alternate collection paths (resources may appear at different odata URLs).
- Follow
@odata.idreferences and handle embeddedMembersarrays. - Deduplicate by serial / BDF / slot+model (in that priority order).
- Prefer tolerant/fallback parsing — missing fields should be silently skipped, not cause the whole collection to fail.
Progress reporting
The collector emits progress log entries at each stage (connecting, enumerating systems, collecting CPUs, etc.) so the UI can display meaningful status. Current progress message strings are user-facing and may be localized.
IPMI Collector (ipmi)
Status: Mock scaffold only — not implemented.
Registered in the collector registry but returns placeholder data. Real IPMI support is a future work item.