Skip to content

List a node's physical NICs (operator-only).

GET
/v1/compute/nodes/{nodeId}/network-interfaces
Code sample: Shell / cURL
curl --request GET \
--url https://stratum.example.com/v1/compute/nodes/example/network-interfaces \
--header 'Authorization: Bearer <token>'

. Returns the host’s PHYSICAL network interfaces (name, MAC, link speed/duplex, driver, operational state, and assigned addresses) the bare-metal NIC inventory for the Metal node Network tab, distinct from OVN logical networking.

Read-only inventory: the control plane enumerates the local node from /sys/class/net (interfaces with a device symlink; lo / veth / OVS / bridge / tap are excluded) and caches the result.

Cedar action compute:DescribeNode. Platform-tenant: NICs are install infrastructure, never project-scoped.

nodeId
required
string
/^n-[a-z0-9-]+$/

The node’s physical network interfaces.

Media typeapplication/json
object
items
required
Array<object>

One physical network interface on a node.

object
name
required

Kernel interface name (e.g. enp1s0f0).

string
mac
required

MAC address (a bond member reports the bond’s).

string
permanentMac

The NIC’s burned-in MAC (bonding_slave/perm_hwaddr on a bond member, else the permanent address the kernel reports apart from the current one, as ethtool -P does, else its address). The hardware plan keys NICs on it.

string
speedMbps
required

Link speed in Mbit/s; -1 when unknown (link down or not reported).

integer format: int64
duplex
required

Full | half | unknown.

string
operState
required

Operational state: up | down | unknown.

string
mtu
required
integer format: int64
driver
required

Kernel driver (e.g. e1000e, ixgbe).

string
addresses
required

Assigned IPv4/IPv6 addresses in CIDR form.

Array<string>
purposes

What the node’s hardware plan says this NIC carries, in the shared purpose vocabulary, rolled up from the links stacked on it (a bond member carries its bond’s VLANs’ purposes). Without a plan, mapped from role: plane is mgmt, oob stays oob. Use this, not role.

Array<string>
Allowed values: oob mgmt storage overlay provider
role
required

Deprecated: read purposes. Kept for the console until it moves; plane maps to the purpose mgmt.

What the install uses this NIC for.

  • plane — the cluster/management plane NIC: the lifeline the control plane, the VIPs and node-to-node traffic ride on.
  • oob — the out-of-band admin NIC.
  • underlay — a declared underlay connection (storage, etc).
  • none — the install does not manage this NIC.

Derived from the NetworkManager connection profile the installer wrote for the device, not from its address range: inferring a role from addressing bakes one site’s plan into the product and mislabels anyone who numbers their estate differently.

Clients should treat plane, oob and underlay as install-managed and suppress reconfiguration actions on them — offering to re-declare the interface carrying a node’s management address is how a node gets disconnected from a web page. Only none is safe to offer as undeclared.

none means “not known to be managed”, not “known to be safe”: if the role could not be determined (nmcli unavailable) every NIC reports none, so a client must not treat it as positive evidence of anything.

string
Allowed values: plane oob underlay none

Example

{
"items": [
{
"purposes": [
"oob"
],
"role": "plane"
}
]
}

Resource not found.

Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
>= 400 <= 599
detail
string
instance
string format: uri-reference
requestId
required
string
code
required
string
issues

The findings of a rejected IAM policy document (custom and resource policies).

Array<object>

One finding of a rejected IAM policy document. A rejection lists every finding, so the author fixes the document in one round trip.

object
code
required

The finding, e.g. INVALID_DOCUMENT, UNKNOWN_ACTION, ACTION_NOT_APPLICABLE.

string
statement
required

Index of the statement at fault; -1 for the document as a whole.

integer
>= -1
detail
required
string
action

The offending action, where one is at fault (ACTION_NOT_APPLICABLE).

string
errors

Field errors, for codes that carry them: each problem at its field (see FieldError). Documented on the responses that set it, e.g. approveNodeJoin’s INVALID_INPUT and JOIN_APPROVAL_REFUSED. Absent otherwise.

Array<object>

One field’s problem, the stage-2 installer API’s shape. field is the field’s path, message what is wrong with it.

object
field
required

The field’s path, e.g. links[0].interface, disks[1].confirm, mgmt.address or role; empty for the whole request.

string
message
required
string
details

Structured facts about the refusal, for codes that carry them. The shape is fixed per code and documented on the response that answers it, e.g. IMAGE_POOL_MISMATCH (see ImagePoolMismatchDetails) and IMAGE_IN_USE. Absent for codes that carry none.

object
key
additional properties
any

Example

{
"issues": [
{
"code": "ACTION_NOT_APPLICABLE",
"action": "compute:CreateVpc"
}
]
}