Repository navigation
feat(dpf): add Go inventory discovery and release software BOM - #348
almaslennikov wants to merge 38 commits into
Conversation
[Medium impact] The latest changes appear safe to merge. SummaryAdds Go-based DPF inventory discovery, a separate release software BOM, typed inventory output and operator workflows.
Diagram%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Explicit site inputs] --> B[Read selected Redfish or SSH sources]
B --> C[Recheck identity and match cards to hosts]
C --> D[Check required results and compare saved facts]
D --> E{Required checks pass?}
E -->|Yes| F[Publish inventory]
E -->|No| G[Save partial results and preserve prior handoff]
Reviews (20) · Last reviewed commit: "fix(dpf): compare persisted empty runtim..." · Reviewed by Greptile |
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
3f841f9 to
cb15c24
Compare
|
Updated the implementation in amended commit Discovery now reuses digest-pinned Addressed the review findings:
The independent follow-up review also found that jq accepted multiple JSON documents. The adapter now requires exactly one object; actual-image regressions cover both object/object and scalar/object bodies. Local validation passed: full race suite, pinned lint, five-platform builds, actual-image tests for both architectures, CLI/docs contracts and strict MkDocs. Hosted CI must rerun for this amended head; no live management cluster or BMC was used. |
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
|
Added explicit BMC TLS opt-out in
Authorized lab retries confirmed that TLS bypass and session login work. Management and candidate HPE inventory were collected, but DPU reads returned403 and DPU session cleanup was incomplete. Host adapter coverage also needs qualification. These results do not qualify the hardware or management probe image; the existing gates remain closed. No firmware, power, account-policy or Kubernetes changes were made. |
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
…ions Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
…ions Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
…uired Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com> # Conflicts: # docs/reference/configuration.md # docs/user/validation.md
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Serialize compact v1alpha2 inventory with typed PSID, administrator and firmware-read facts, preserving legacy decoding and required checks. Omit successful observation bookkeeping and scope host BMC collection to identity and PCI mapping. Distinguish ERoT components from BMC firmware. Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Signed-off-by: Alexander Maslennikov <amaslennikov@nvidia.com>
Add native Go
l8k discover --target dpffor a DPU estate independent of Host Network Operator deployment. Explicit site YAML selects host/DPU Redfish or host/ARM SSH access, credential references and TLS/SSH trust. Inventory can run before management Kubernetes exists; a supplied management kubeconfig must work.Completion requires explicit DPU BMC endpoints and read-only verification of each session's Administrator privileges, matching enabled/unlocked account, password-change state and role. SSH identity cannot substitute. Account lookup supports bounded pagination and a single terminal slash on advertised member links, while rejecting unsafe paths and duplicate aliases. Requests use the validated advertised URI. Discovery never changes passwords or roles.
Physical association uses host/card serial identity, rejects contradictory PCI vendor information, and requires final identity rereads. BF4 B4240 readers follow explicit System/chassis relationships and retain identity-bound PSID observations where available. Optional OS/network, per-card firmware/PSID, MFT, NVConfig and restriction queries use existing read tools. Every unavailable or failed observation retains an actionable reason. After an optional SSH command timeout, the next read can reconnect with the original endpoint, credentials and host-key trust; the failed command is not replayed. Reconnection failures, cancellation and changed identity still block completion.
Inventory
v1alpha3publishes named host/DPU facts and field-specificissues. Generic observation maps, raw vendor firmware dumps and successful-state bookkeeping are omitted. Persisted YAML omits all provenance maps and references, including nested management, SSH, address-lookup and probe records, while preserving arbitrary user data-map keys. JSON diagnostic reports retain their source contracts. Host BMC output excludes firmware/time data; DPU firmware retains known activation and distinct ERoT components. Equivalent whitespace spellings cannot abort publication, but measured versions remain unchanged and padded versions cannot prove a software minimum. Version-aware decoding preserves conservative legacy input semantics and rejects contradictory facts.dpf.releaseselects an independent embedded software BOM, defaulting to26.4.0. Public output contains artifact coordinates, exact hardware applicability and named documented minima; omitted minima remain unknown. Catalog source lists and generic requirement lists stay internal. Compatibility never accepts partial, conflicting or inactive firmware as a running minimum. The catalog does not qualify hardware or enable provisioning.Refresh preserves user intent, credential references, comments, explicit values and prior successful output on partial failure. Address comparison retains locator facts and source outcomes while ignoring candidate references and source-byte digests. Copy-only normalization keeps wire-equivalent empty management-node and host/ARM runtime facts stable across YAML/JSON save and reload. Whole absent network/hardware observations remain distinguishable; nonempty values, failed-source reasons and actual address, route and interface changes remain material.
scopeDigestprotects endpoint/trust selection without duplicating requested endpoints in inventory. Optional address lookup uses explicit MAC selectors and bounded local lease/observed-neighbor sources; candidates never establish identity or receive credentials. No subnet scanning, tool installation, Python discovery runtime or custom discovery image is introduced.The CLI streams named operations and status on stderr, then reports host/DPU mappings and administrator verification. Required inventory failures remain distinct from deferred provisioning checks.
--quietsuppresses progress;--output jsonkeeps stdout to one final document. Debug/trace logs provide bounded stage, timing and request metadata without credentials or raw remote output.User documentation covers initial inventory, address lookup and refresh, explaining which operations run on the CLI, host OS, DPU ARM OS, BMC and management API. Each workflow has a diagram generated from repository-owned OpenSpec workflow definitions. Engineering plans and lab/test history are kept out of user guides. Discovery reference, workflow source, design and OpenSpec contracts describe reason persistence and timeout recovery.
Local validation:
make buildandmake testpassed; all DPF packages and the target adapter passed race tests.Hardware qualification remains unqualified and deployment acceptance remains not evaluated. Management-network probes stay gated. DPF generate/deploy/validate, hypervisor discovery and post-operator service validation are outside this preview. HBN-BGP discovery and lifecycle support will be delivered separately.