Skip to content

The machine, as the installer sees it.

GET
/v1/installer/hardware
Code sample: Shell / cURL
curl --request GET \
--url https://192.0.2.10:9443/v1/installer/hardware \
--header 'Authorization: <Authorization>'

Disks (with what holds them, SMART health where smartctl can read it, and whether each can become a data disk), NICs, the CPU and its virtualisation extensions, memory and PCI devices. Read on every call; nothing is cached.

The hardware inventory.

Media typeapplication/json
object
uefi
required
boolean
cpu
required
object
model
required
string
sockets
required
integer
cores
required

Physical cores, all sockets.

integer
threads
required

Logical CPUs.

integer
virtualization
required

The virtualisation extension the CPU advertises.

string
Allowed values: vmx svm none
kvm
required

Whether /dev/kvm exists (the extension is enabled in firmware and the module loaded).

boolean
memory
required
object
totalBytes
required
integer format: int64
disks
required
Array<object>
object
name
required
string
path
required
string
byId
required

The disk’s /dev/disk/by-id aliases, best first. A data disk is named by the first.

Array<string>
model
string
serial
string
wwn
string
transport
string
sizeBytes
required
integer format: int64
rotational
required
boolean
removable
required
boolean
readOnly
required
boolean
mountpoints
required
Array<string>
holders
required

What already holds data on the disk, including md members and arrays.

Array<object>
object
kind
required
string
Allowed values: partition-table partition filesystem lvm-pv md-member md-array device-mapper
device
required
string
detail
string
blank
required

Nothing holds the disk; using it as a data disk wipes nothing.

boolean
osDisk
required

The disk carries the running system (something on it is mounted).

boolean
dataDiskEligible
required
boolean
ineligibleReason
string
smart
required

The SMART verdict. unknown is never healthy.

object
condition
required
string
Allowed values: unknown healthy hot wearing failing
reasons
required
Array<string>
smartPassed
boolean
temperatureCelsius
integer
percentageUsed
integer
powerOnHours
integer format: int64
mediaErrors
integer format: int64
reallocatedSectors
integer format: int64
pendingSectors
integer format: int64
nics
required
Array<object>
object
name
required
string
mac
required
string
operState
required
string
link
required
string
Allowed values: up down unknown
speedMbps
required

-1 when unknown.

integer format: int64
mtu
required
integer format: int64
driver
string
addresses
required
Array<string>
oob
required

The OOB NIC stage 1 configured; this API is served on it.

boolean
pciDevices
required
Array<object>

One PCI function (the inventory).

object
address
required
string
vendorId
required
string
deviceId
required
string
classCode
required
string
category
required
string
Allowed values: gpu accelerator network storage usb audio bridge other
vendorName
required
string
deviceName
required
string
driver
required
string
iommuGroup
required
string
numaNode
required
integer
bootVga
boolean
sriovTotalVfs
integer
sriovNumVfs
integer
resolvers
required

The IPv4 DNS servers the host itself uses (/etc/resolv.conf, loopback left out): what stage 1 set on the NIC, or what DHCP handed out. A suggestion for dns.upstreamServers, which takes the same kind of address; the installer never copies them there by itself.

Array<string>

Example

{
"cpu": {
"virtualization": "vmx"
},
"disks": [
{
"holders": [
{
"kind": "partition-table"
}
],
"smart": {
"condition": "unknown"
}
}
],
"nics": [
{
"link": "up"
}
],
"pciDevices": [
{
"category": "gpu"
}
]
}

No install code, or the wrong one.

Media typeapplication/problem+json

RFC 7807 problem details, the control plane’s shape.

object
type
required
string
title
required
string
status
required
integer
>= 400 <= 599
detail
string
code
required
string
requestId
required
string
errors

Field errors, for INVALID_CONFIG.

Array<object>
object
field
required

The structured field (network.floatingIpCidrs[1]); empty for the whole config. For a raw YAML draft, the node.yaml key.

string
message
required
string

Example generated

{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"code": "example",
"requestId": "example",
"errors": [
{
"field": "example",
"message": "example"
}
]
}

Too many wrong install codes; wait for Retry-After.

Media typeapplication/problem+json

RFC 7807 problem details, the control plane’s shape.

object
type
required
string
title
required
string
status
required
integer
>= 400 <= 599
detail
string
code
required
string
requestId
required
string
errors

Field errors, for INVALID_CONFIG.

Array<object>
object
field
required

The structured field (network.floatingIpCidrs[1]); empty for the whole config. For a raw YAML draft, the node.yaml key.

string
message
required
string

Example generated

{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"code": "example",
"requestId": "example",
"errors": [
{
"field": "example",
"message": "example"
}
]
}
Retry-After
integer

Seconds until the next attempt is considered.

The installer failed to answer.

Media typeapplication/problem+json

RFC 7807 problem details, the control plane’s shape.

object
type
required
string
title
required
string
status
required
integer
>= 400 <= 599
detail
string
code
required
string
requestId
required
string
errors

Field errors, for INVALID_CONFIG.

Array<object>
object
field
required

The structured field (network.floatingIpCidrs[1]); empty for the whole config. For a raw YAML draft, the node.yaml key.

string
message
required
string

Example generated

{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"code": "example",
"requestId": "example",
"errors": [
{
"field": "example",
"message": "example"
}
]
}