2.8 KiB
04 — Data Models
Core contract: AnalysisResult
internal/models/models.go defines the shared result passed between parsers, collectors, server handlers, and exporters.
Stability rule:
- do not rename or remove JSON fields from
AnalysisResult - additive fields are allowed
- UI and exporter compatibility depends on this shape remaining stable
Key fields:
| Field | Meaning |
|---|---|
filename |
Original upload name or synthesized live source name |
source_type |
archive or api |
protocol |
redfish, ipmi, or empty for archive uploads |
target_host |
Hostname or IP for live collection |
source_timezone |
Source timezone/offset if known |
collected_at |
Canonical collection/upload time |
raw_payloads |
Raw source data used for replay or diagnostics |
events |
Parsed event timeline |
fru |
FRU-derived inventory details |
sensors |
Sensor readings |
hardware |
Normalized hardware inventory |
HardwareConfig
Main sections:
hardware.board
hardware.devices
hardware.cpus
hardware.memory
hardware.storage
hardware.volumes
hardware.pcie_devices
hardware.gpus
hardware.network_adapters
hardware.network_cards
hardware.power_supplies
hardware.firmware
network_cards is legacy/alternate source data.
hardware.devices is the canonical cross-section inventory.
Canonical inventory: hardware.devices
hardware.devices is the single source of truth for device-oriented UI and Reanimator export.
Required rules:
- UI hardware views must read from
hardware.devices - Reanimator conversion must derive device sections from
hardware.devices - UI/export mismatches are bugs, not accepted divergence
- New shared device fields belong in
HardwareDevicefirst
NUMA affinity
NUMA affinity is nullable throughout the internal and Reanimator export path.
In Go it is represented as *int: nil means not reported / not applicable,
while a pointer to 0 means the real NUMA node 0. Numeric zero must never be
used as an absence sentinel.
Topology relationships outside the Reanimator ingest contract live in the
separate versioned topology.json document and are not added to
reanimator.json.
Deduplication priority:
| Priority | Key |
|---|---|
| 1 | usable serial_number |
| 2 | bdf |
| 3 | keep records separate |
Raw payloads
raw_payloads is authoritative for replayable sources.
Current important payloads:
redfish_treeredfish_fetch_errorssource_timezone
Normalized hardware fields are derived output, not the long-term source of truth.
Raw export package
/api/export/json produces a reopenable raw-export artifact.
Design rules:
- raw source stays authoritative
- uploads of raw-export artifacts must re-analyze from raw source
- parsed snapshots inside the bundle are diagnostic only