Hand-rolled Redfish client; OpenAPI specs as reference¶
Status¶
Accepted — transport migration to resty/v2 in Phase 3 (paired with the payload realignment that already reworks the client and response structs).
Context¶
The family client rule: use the official vendor Go SDK if available and useful, else
hand-roll a lean resty/v2 client. Redfish has no single Go SDK that models the multi-
vendor surface this exporter scrapes (Dell, HPE, Lenovo, Supermicro, …). The repo ships
the Dell iDRAC 10 and DMTF Redfish OpenAPI documents in docs/swagger/ (~4.7 MB).
Decision¶
Hand-roll the client. Migrate the existing net/http transport to resty/v2 (retry
excluding 4xx, TLS min 1.2, bearer/session header) to match the family. Treat the OpenAPI
specs as a payload-realignment reference, not a codegen source: generating a client
from a 2.8 MB / hundreds-of-schema spec would pull in a monstrous dependency tree for an
exporter that touches ~15 resources, failing the "no regression" criterion.
Consequences¶
The lean client stays readable and vendor-tolerant. The specs are used to validate the hand-written response structs and to harden parsing (see [0008]). New metrics map to hand-written structs; there is no generated surface to maintain.