Files
logpile/bible-local/07-exporters.md
2026-03-15 21:38:28 +03:00

3.3 KiB

07 — Exporters

Export surfaces

Endpoint Output Purpose
GET /api/export/csv CSV Serial-number export
GET /api/export/json raw-export ZIP bundle Reopen and re-analyze later
GET /api/export/reanimator JSON Reanimator hardware payload
POST /api/convert async ZIP artifact Batch archive-to-Reanimator conversion

Raw export

Raw export is not a final report dump. It is a replayable artifact that preserves enough source data for future parser improvements.

Current bundle contents:

  • raw_export.json
  • collect.log
  • parser_fields.json

Design rules:

  • raw source is authoritative
  • uploads of raw export must replay from raw source
  • parsed snapshots inside the bundle are diagnostic only

Reanimator export

Implementation files:

  • internal/exporter/reanimator_models.go
  • internal/exporter/reanimator_converter.go
  • internal/server/handlers.go
  • bible-local/docs/hardware-ingest-contract.md

Conversion rules:

  • canonical source is merged canonical inventory derived from hardware.devices plus legacy hardware slices
  • output must conform to the strict Reanimator ingest contract in docs/hardware-ingest-contract.md
  • timestamps are RFC3339
  • status is normalized to Reanimator-friendly values
  • missing PCIe serials may be generated from board serial + slot
  • missing CPU serials may be generated from board serial + socket
  • CPU firmware field means CPU microcode, not generic processor firmware inventory
  • NULL-style board manufacturer/product values are treated as absent
  • optional component telemetry/health fields are exported when LOGPile already has the data
  • partial hardware.devices must not suppress components still present only in legacy parser/collector fields
  • present is not serialized for exported components; presence is expressed by the existence of the component record itself

Inclusion rules

Included:

  • PCIe-class devices even when serial must be synthesized
  • contract v2.4 component telemetry and health fields when source data exists
  • hardware sensors grouped into fans, power, temperatures, other
  • Redfish linked metric docs that carry component telemetry: ProcessorMetrics, MemoryMetrics, DriveMetrics, EnvironmentMetrics, Metrics

Excluded:

  • memory with missing serial number
  • memory with present=false or status=Empty
  • CPUs with present=false
  • storage without serial_number
  • storage with present=false
  • power supplies without serial_number
  • power supplies with present=false
  • non-present network adapters
  • non-present PCIe / GPU devices
  • device-bound firmware duplicated at top-level firmware list
  • any field not present in the strict ingest contract

Batch convert

POST /api/convert accepts multiple supported files and produces a ZIP with:

  • one *.reanimator.json file per successful input
  • convert-summary.txt

Behavior:

  • unsupported filenames are skipped
  • each file is parsed independently
  • one bad file must not fail the whole batch if at least one conversion succeeds
  • result artifact is temporary and deleted after download

CSV export

GET /api/export/csv uses the same merged canonical inventory as Reanimator export, with legacy network-card fallback kept only for records that still have no canonical device match.