88 lines
2.4 KiB
Markdown
88 lines
2.4 KiB
Markdown
# 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:
|
|
|
|
```text
|
|
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:
|
|
|
|
1. UI hardware views must read from `hardware.devices`
|
|
2. Reanimator conversion must derive device sections from `hardware.devices`
|
|
3. UI/export mismatches are bugs, not accepted divergence
|
|
4. New shared device fields belong in `HardwareDevice` first
|
|
|
|
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_tree`
|
|
- `redfish_fetch_errors`
|
|
- `source_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
|