Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
121 changes: 121 additions & 0 deletions api/openapi/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6783,11 +6783,15 @@ components:
example: module
type: string
health:
description: 'Deprecated: use status.health.'
example: OK
type: string
deprecated: true
healthRollup:
description: 'Deprecated: use status.healthRollup.'
example: OK
type: string
deprecated: true
id:
example: HGX_GPU_SXM_1
type: string
Expand Down Expand Up @@ -6819,9 +6823,13 @@ components:
sku:
example: '0x37040020'
type: string
status:
$ref: '#/components/schemas/models.OobInventoryStatus'
statusState:
description: 'Deprecated: use status.state.'
example: Enabled
type: string
deprecated: true
required:
- id
type: object
Expand Down Expand Up @@ -6861,11 +6869,15 @@ components:
models.OobFirmware:
properties:
health:
description: 'Deprecated: use status.health.'
example: OK
type: string
deprecated: true
healthRollup:
description: 'Deprecated: use status.healthRollup.'
example: OK
type: string
deprecated: true
id:
example: HGX_FW_GPU_SXM_1
type: string
Expand All @@ -6881,9 +6893,13 @@ components:
serviceId:
example: FirmwareInventory
type: string
status:
$ref: '#/components/schemas/models.OobInventoryStatus'
statusState:
description: 'Deprecated: use status.state.'
example: Enabled
type: string
deprecated: true
version:
example: 96.00.DA.00.0C
type: string
Expand Down Expand Up @@ -6946,6 +6962,36 @@ components:
- schemaVersion
- source
type: object
models.OobInventoryCondition:
properties:
conditionType:
example: Alert
type: string
message:
example: One or more errors were detected.
type: string
messageArgs:
items:
type: string
type: array
uniqueItems: false
messageId:
example: ResourceEvent.1.0.ResourceErrorsDetected
type: string
originOfCondition:
$ref: '#/components/schemas/models.OobInventoryReference'
resolution:
example: Review the related resource and replace the failed component.
type: string
severity:
example: Critical
type: string
timestamp:
example: '2026-07-23T17:20:43Z'
type: string
required:
- messageId
type: object
models.OobInventoryNode:
properties:
agentVersion:
Expand Down Expand Up @@ -7010,6 +7056,14 @@ components:
example: 'Attestation verification unavailable: SDK error'
type: string
type: object
models.OobInventoryReference:
properties:
'@odata.id':
example: /redfish/v1/Chassis/HGX_GPU_SXM_1
type: string
required:
- '@odata.id'
type: object
models.OobInventoryReportResponse:
properties:
hasMore:
Expand All @@ -7030,17 +7084,38 @@ components:
example: 100
type: integer
type: object
models.OobInventoryStatus:
properties:
conditions:
items:
$ref: '#/components/schemas/models.OobInventoryCondition'
type: array
uniqueItems: false
health:
example: OK
type: string
healthRollup:
example: Warning
type: string
state:
example: Enabled
type: string
type: object
models.OobManager:
properties:
firmwareVersion:
example: 26.03.03
type: string
health:
description: 'Deprecated: use status.health.'
example: OK
type: string
deprecated: true
healthRollup:
description: 'Deprecated: use status.healthRollup.'
example: OK
type: string
deprecated: true
id:
example: BMC
type: string
Expand All @@ -7053,9 +7128,13 @@ components:
odataId:
example: /redfish/v1/Managers/BMC
type: string
status:
$ref: '#/components/schemas/models.OobInventoryStatus'
statusState:
description: 'Deprecated: use status.state.'
example: Enabled
type: string
deprecated: true
uuid:
example: 6b00139a-bfde-1000-02b9-f2e9fb35ff5c
type: string
Expand Down Expand Up @@ -7110,6 +7189,8 @@ components:
nodeGroup:
example: node-group-1
type: string
nodeKind:
$ref: '#/components/schemas/models.NodeKind'
nodeName:
description: NodeName is the optional machine name configured on the OOB
collector.
Expand Down Expand Up @@ -7197,6 +7278,8 @@ components:
nodeGroupId:
example: 550e8400-e29b-41d4-a716-446655440001
type: string
nodeKind:
$ref: '#/components/schemas/models.NodeKind'
nodeName:
description: NodeName is the optional machine name configured on the OOB
collector.
Expand Down Expand Up @@ -7228,6 +7311,20 @@ components:
required:
- nodeUUID
type: object
models.NodeKind:
default: unknown
enum:
- unknown
- compute
- nvswitch
- power_shelf
example: compute
type: string
x-enum-varnames:
- NodeKindUnknown
- NodeKindCompute
- NodeKindNvSwitch
- NodeKindPowerShelf
models.OobNodesResponse:
properties:
hasMore:
Expand Down Expand Up @@ -7257,11 +7354,15 @@ components:
example: 96.00.DA.00.0C
type: string
health:
description: 'Deprecated: use status.health.'
example: OK
type: string
deprecated: true
healthRollup:
description: 'Deprecated: use status.healthRollup.'
example: OK
type: string
deprecated: true
id:
example: GPU_SXM_1
type: string
Expand All @@ -7283,9 +7384,13 @@ components:
sku:
example: '0x37040020'
type: string
status:
$ref: '#/components/schemas/models.OobInventoryStatus'
statusState:
description: 'Deprecated: use status.state.'
example: Enabled
type: string
deprecated: true
uuid:
example: beea8cdf-7b7d-035c-ed07-360e311fcbe1
type: string
Expand All @@ -7295,11 +7400,15 @@ components:
models.OobProcessor:
properties:
health:
description: 'Deprecated: use status.health.'
example: OK
type: string
deprecated: true
healthRollup:
description: 'Deprecated: use status.healthRollup.'
example: OK
type: string
deprecated: true
id:
example: DevType1_CPU0
type: string
Expand Down Expand Up @@ -7327,9 +7436,13 @@ components:
socket:
example: CPU0
type: string
status:
$ref: '#/components/schemas/models.OobInventoryStatus'
statusState:
description: 'Deprecated: use status.state.'
example: Enabled
type: string
deprecated: true
totalCores:
example: 56
type: integer
Expand Down Expand Up @@ -7385,11 +7498,15 @@ components:
example: Intel(R) Xeon(R) Platinum 8480CL
type: string
health:
description: 'Deprecated: use status.health.'
example: OK
type: string
deprecated: true
healthRollup:
description: 'Deprecated: use status.healthRollup.'
example: OK
type: string
deprecated: true
hostName:
example: dgx-01
type: string
Expand Down Expand Up @@ -7425,9 +7542,13 @@ components:
sku:
example: 920-24387-2540-000
type: string
status:
$ref: '#/components/schemas/models.OobInventoryStatus'
statusState:
description: 'Deprecated: use status.state.'
example: Enabled
type: string
deprecated: true
uuid:
example: 936672d4-bfde-1000-02bc-5cff35fbe9f2
type: string
Expand Down
4 changes: 3 additions & 1 deletion docs/cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,9 @@ top-level `inband` and `oob` objects. Use `--agent-type inband` or
`--agent-type oob` to request one view. OOB lists accept `--bmc-hostname` and
the `bmcHostname` sort key. OOB describe tables can be narrowed with
`--section managers,systems,chassis,firmware`; `--section all` includes every
inventory section. JSON describe output always includes the full inventory.
inventory section. Both the out-of-band node list and summary table include
`NODE KIND`. JSON describe output always includes
the full inventory, including nested Redfish status and condition details.
Comment thread
coderabbitai[bot] marked this conversation as resolved.

The investigative alert workflow is `summary → node → describe`: start with
impacted-node counts, inspect one node's alerts, then retrieve one alert's
Expand Down
14 changes: 13 additions & 1 deletion docs/sdk.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,22 @@ node, err := client.DescribeNodeWithOptions(ctx, nodeUUID, nvfleetint.DescribeNo
AgentType: nvfleetint.NodeAgentTypeOOB,
})
if err == nil && node.OOBInventory != nil {
fmt.Println(node.OOBInventory.SchemaVersion)
fmt.Println(node.OOBInventory.SchemaVersion, node.NodeKind)
for _, system := range node.OOBInventory.Systems {
if system.Status != nil {
fmt.Println(system.Status.State, system.Status.Health, system.Status.Conditions)
}
}
}
```

OOB node list and detail results expose the inventory classification as
`Node.NodeKind`.

OOB inventory exposes node kinds (`unknown`, `compute`, `nvswitch`, and
`power_shelf`) and nested Redfish status conditions on systems, processors,
managers, chassis, PCIe devices, and firmware.

`NewClient` requires an HTTPS API URL and an API key. Plain HTTP is accepted
only for loopback addresses used during local development.

Expand Down
4 changes: 3 additions & 1 deletion internal/cmd/node/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -695,7 +695,7 @@ func writeNodeTable(
if agentType == nvfleetint.NodeAgentTypeOOB || nodeListIsOOB(nodes) {
return clioutput.WriteTable(
w,
[]string{"UUID", "NODE NAME", "BMC HOSTNAME", "BMC IP", "COMPUTE ZONE", "NODE GROUP", "HEALTH", "VERIFICATION CHECK", "AGENT STATUS"},
[]string{"UUID", "NODE NAME", "NODE KIND", "BMC HOSTNAME", "BMC IP", "COMPUTE ZONE", "NODE GROUP", "HEALTH", "VERIFICATION CHECK", "AGENT STATUS"},
oobDetailNodeRows(nodes),
)
}
Expand Down Expand Up @@ -754,6 +754,7 @@ func oobDetailNodeRows(nodes []nvfleetint.Node) [][]string {
rows = append(rows, []string{
clioutput.DisplayString(node.UUID),
clioutput.DisplayString(node.NodeName),
clioutput.DisplayString(string(node.NodeKind)),
clioutput.DisplayString(node.BMCHostname),
clioutput.DisplayString(node.BMCIP),
clioutput.DisplayString(node.ComputeZone),
Expand Down Expand Up @@ -881,6 +882,7 @@ func oobNodeDescribeRows(node nvfleetint.NodeDetails) [][]string {
{"UNHEALTHY COMPONENTS", clioutput.FormatOptionalInt(node.UnhealthyComponentCount)},
{"LOCATION", cmdutil.FormatLocation(node.Location)},
{"NODE NAME", clioutput.DisplayString(node.NodeName)},
{"NODE KIND", clioutput.DisplayString(string(node.NodeKind))},
{"BMC HOSTNAME", clioutput.DisplayString(node.BMCHostname)},
{"BMC IP", clioutput.DisplayString(node.BMCIP)},
}
Expand Down
Loading
Loading