fix(parser): parse Dell iDRAC10 TSR inventory from captured Redfish walk
iDRAC10-generation TSR bundles no longer ship sysinfo_dcim_view.xml / sysinfo_dcim_softwareidentity.xml, so the dell parser produced events but no hardware inventory for them. These bundles instead carry redfishidracwalk.tar.gz, a captured dump of the iDRAC's own Redfish tree. Add vendors/redfishtree, a shared helper that reconstructs a path->document map from a tar.gz/zip-packaged Redfish walk (vendor-independent detection: path hint + /redfish/v1 service-root/Systems/Chassis structural check) and replays it through the existing collector.ReplayRedfishFromRawPayloads. vendors/dell uses it to enrich DCIM-XML-derived data (append-only, existing dedupe passes resolve overlaps). Also register vendors/redfishwalk, a low-confidence fallback VendorParser using the same helpers, so any other vendor that starts shipping this kind of raw Redfish walk is picked up automatically without a dedicated parser. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
6e1a8232ec
commit
f599215760
@@ -58,6 +58,7 @@ When `vendor_id` and `device_id` are known but the model name is missing or gene
|
||||
| `lenovo_xcc` | Lenovo XCC mini-log ZIP archives | JSON inventory + platform event logs |
|
||||
| `nvidia` | HGX Field Diagnostics | GPU- and fabric-heavy diagnostic input |
|
||||
| `nvidia_bug_report` | `nvidia-bug-report-*.log.gz` | dmidecode, lspci, NVIDIA driver sections |
|
||||
| `redfish_walk` | Any archive carrying a captured Redfish directory-tree walk (tar.gz/zip of `<path>/index.json` docs) | Low-confidence (35) vendor-agnostic fallback; see `dell` for the first known source and `redfishtree` helper package |
|
||||
| `unraid` | Unraid diagnostics/log bundles | Server and storage-focused parsing |
|
||||
| `xfusion` | xFusion iBMC `tar.gz` dump / file export | AppDump + RTOSDump + LogDump merge for hardware and firmware |
|
||||
| `xigmanas` | XigmaNAS plain logs | FreeBSD/NAS-oriented inventory |
|
||||
@@ -216,6 +217,51 @@ and `LogDump/` trees.
|
||||
|
||||
---
|
||||
|
||||
### Dell TSR (`dell`)
|
||||
|
||||
**Status:** Ready (v3.0). Two inventory source generations, both handled by the same parser.
|
||||
|
||||
**Archive format:** TSR nested zip (`signature` + `TSR*.pl.zip`).
|
||||
|
||||
**Extracted data:**
|
||||
- Older/DCIM-XML generation: `sysinfo_dcim_view.xml` (board/CPU/NIC/etc.), `sysinfo_dcim_softwareidentity.xml`
|
||||
(firmware), `sysinfo_cim_sensor.xml` (sensors), `curr_lclog.xml` (Lifecycle Controller events),
|
||||
`tsr/metadata.json` (board identity fallback).
|
||||
- iDRAC10-generation: same `metadata.json`/`curr_lclog.xml`, but no DCIM-XML files — instead
|
||||
`tsr/hardware/sysinfo/inventory/redfishidracwalk.tar.gz` holds a captured Redfish directory-tree
|
||||
walk. Parsed via the shared `redfishtree` helper package and replayed through
|
||||
`collector.ReplayRedfishFromRawPayloads` (`internal/parser/vendors/dell/redfish_walk.go`), then
|
||||
append-merged into the same `Hardware`/`Sensors`/`FRU`/`Events` slices the DCIM-XML path fills, so
|
||||
the existing dedupe passes resolve any overlap in favor of DCIM-derived data. See ADL-048.
|
||||
|
||||
---
|
||||
|
||||
### Generic Redfish walk fallback (`redfish_walk`)
|
||||
|
||||
**Status:** Ready (v1.0.0).
|
||||
|
||||
**Confidence:** 35 (above the `generic` fallback's 15, below every dedicated vendor parser — wins
|
||||
`Detect()` only when no dedicated parser also recognizes the archive).
|
||||
|
||||
**Purpose:** Vendor-agnostic catch-all for any archive that carries a captured Redfish
|
||||
directory-tree walk (one JSON document per resource, e.g.
|
||||
`redfish/v1/Systems/System.Embedded.1/index.json`) but isn't otherwise claimed by a dedicated vendor
|
||||
parser. First known source is Dell iDRAC10 TSR bundles (handled directly by `dell`, see above); this
|
||||
exists so any other vendor shipping the same kind of raw Redfish walk is picked up automatically.
|
||||
|
||||
**Detection (`internal/parser/vendors/redfishtree`):** two-step, vendor-independent —
|
||||
1. Path hint: an archive member path containing `redfish` and ending in `.tar.gz`/`.tgz`/`.zip`.
|
||||
2. Structural confirmation: the unpacked tree must contain a document whose own `@odata.id` is
|
||||
exactly `/redfish/v1`, plus a `/redfish/v1/Systems` or `/redfish/v1/Chassis` collection.
|
||||
|
||||
Documents are keyed by their own `@odata.id`, not the on-disk directory name (some resource names
|
||||
are URL-encoded on disk, e.g. `Assembly%23`, but not in the JSON payload).
|
||||
|
||||
**Extracted data:** whatever `collector.ReplayRedfishFromRawPayloads` produces from the replayed
|
||||
tree — board identity, firmware, CPUs, memory, storage, PCIe, GPUs, NICs, PSUs, sensors, events.
|
||||
|
||||
---
|
||||
|
||||
### Generic text fallback (`generic`)
|
||||
|
||||
**Status:** Ready (v1.0.0).
|
||||
@@ -234,7 +280,8 @@ and `LogDump/` trees.
|
||||
|
||||
| Vendor | ID | Status | Tested on |
|
||||
|--------|----|--------|-----------|
|
||||
| Dell TSR | `dell` | Ready | TSR nested zip archives |
|
||||
| Dell TSR | `dell` | Ready | TSR nested zip archives (DCIM-XML and iDRAC10 Redfish-walk generations) |
|
||||
| Generic Redfish walk | `redfish_walk` | Ready (fallback) | Any archive with a captured Redfish tree dump |
|
||||
| Reanimator Easy Bee | `easy_bee` | Ready | `bee-support-*.tar.gz` support bundles |
|
||||
| HPE iLO AHS | `hpe_ilo_ahs` | Ready | iLO 6 `.ahs` exports |
|
||||
| Inspur / Kaytus | `inspur` | Ready | KR4268X2 onekeylog |
|
||||
|
||||
Reference in New Issue
Block a user