Networks

PUT /network/guest-networks

Update a guest network

Update network properties. ID must be provided in request body.

Status Codes:
POST /network/guest-networks/eligible-nics

List eligible NICs across all compute nodes

Aggregate physical and bond NICs (admin up, oper up, not enslaved) from all configured nodes — keyset paginated over BMCInfo

Request JSON Object:
  • after_id (integer) – keyset pagination: ID of last item on previous page

  • page (integer)

  • page_size (integer)

Status Codes:
Response JSON Object:
  • count (integer) – total configured nodes

  • has_more (boolean)

  • next_id (integer)

  • nodes[].error (string)

  • nodes[].fqdn (string)

  • nodes[].interfaces[].admin_state (string)

  • nodes[].interfaces[].allmulticast (boolean)

  • nodes[].interfaces[].carrier (boolean)

  • nodes[].interfaces[].code (string) – machine reason code (constants.Code*)

  • nodes[].interfaces[].current_speed (integer)

  • nodes[].interfaces[].flags[] (string)

  • nodes[].interfaces[].hardware.bus_info (string) – PCI/USB bus address (e.g., “0000:01:00.0”)

  • nodes[].interfaces[].hardware.device_type (string) – “physical”, “virtual”, “bridge”, “vlan”, etc.

  • nodes[].interfaces[].hardware.driver (string) – Kernel driver name (e.g., “e1000e”, “ixgbe”)

  • nodes[].interfaces[].hardware.driver_version (string) – Driver version

  • nodes[].interfaces[].hardware.firmware_version (string) – Firmware version

  • nodes[].interfaces[].hardware.is_sriov_pf (boolean) – true if SR-IOV physical function

  • nodes[].interfaces[].hardware.is_sriov_vf (boolean) – true if SR-IOV virtual function

  • nodes[].interfaces[].hardware.mac_vendor (string) – Human-readable vendor name derived from PCI vendor ID

  • nodes[].interfaces[].hardware.modalias (string) – Device modalias string

  • nodes[].interfaces[].hardware.pci_device (string) – PCI device ID

  • nodes[].interfaces[].hardware.pci_subsystem (string) – PCI subsystem ID

  • nodes[].interfaces[].hardware.pci_vendor (string) – PCI vendor ID (e.g., “8086” for Intel)

  • nodes[].interfaces[].ip_addresses[] (string)

  • nodes[].interfaces[].last_state_change_secs (integer) – State change tracking

  • nodes[].interfaces[].mac_address (string)

  • nodes[].interfaces[].master (string)

  • nodes[].interfaces[].max_speed (integer)

  • nodes[].interfaces[].mtu (integer)

  • nodes[].interfaces[].name (string)

  • nodes[].interfaces[].offloads (object)

  • nodes[].interfaces[].oper_state (string)

  • nodes[].interfaces[].overall_state (string) – Computed display fields

  • nodes[].interfaces[].ownership (string) – system|user|available|quarantine — see netconstants.Bucket*

  • nodes[].interfaces[].promiscuous (boolean)

  • nodes[].interfaces[].raw_flags (integer)

  • nodes[].interfaces[].reason (string) – human-readable reason

  • nodes[].interfaces[].ring_rx_current (integer) – Ring buffer sizes (ethtool -g) — current + hardware max, so the detail page can show the live value next to the editable ring_rx/ring_tx control.

  • nodes[].interfaces[].ring_rx_max (integer)

  • nodes[].interfaces[].ring_tx_current (integer)

  • nodes[].interfaces[].ring_tx_max (integer)

  • nodes[].interfaces[].sdwan_type (string)

  • nodes[].interfaces[].status (string) – Eligibility classification (net-new). Stamped node-local by ClassifyNICs so the values survive the control-node proxy and reach the UI as-is. The owning bridge is carried by the existing master field — no separate owner field.

  • nodes[].interfaces[].throughput_rx_mbps (number) – Throughput — 1-minute rolling average computed by the interface poller

  • nodes[].interfaces[].throughput_tx_mbps (number)

  • nodes[].interfaces[].traffic_role (string) – public|guest|management|”” - CS traffic-type via agent.properties

  • nodes[].interfaces[].tx_queue_len (integer)

  • nodes[].interfaces[].type (string)

  • nodes[].nic_count (integer)

  • nodes[].node_ip (string)

  • page_size (integer)

GET /network/guest-networks/jobs/last

Get latest job per network

Returns one job per unique network name — the most recent create, delete, or check

Status Codes:
Response JSON Object:
  • [].bridge_result.bridge_name (string)

  • [].bridge_result.failed (integer)

  • [].bridge_result.failed_nodes[].error (string)

  • [].bridge_result.failed_nodes[].fqdn (string)

  • [].bridge_result.failed_nodes[].node_ip (string)

  • [].bridge_result.failed_nodes[].reachable (boolean) – false = unreachable before ansible ran

  • [].bridge_result.nodes[] (string)

  • [].bridge_result.succeeded (integer)

  • [].bridge_result.total (integer)

  • [].error (string)

  • [].job_id (string)

  • [].network (string)

  • [].progress (integer)

  • [].state (string)

  • [].status (string)

  • [].total_nodes (integer)

GET /network/guest-networks/jobs/latest

Get latest guest network job by network name

Returns the most recent create or delete job for the given network name

Query Parameters:
  • network (string) – Network name

Status Codes:
Response JSON Object:
  • bridge_result.bridge_name (string)

  • bridge_result.failed (integer)

  • bridge_result.failed_nodes[].error (string)

  • bridge_result.failed_nodes[].fqdn (string)

  • bridge_result.failed_nodes[].node_ip (string)

  • bridge_result.failed_nodes[].reachable (boolean) – false = unreachable before ansible ran

  • bridge_result.nodes[] (string)

  • bridge_result.succeeded (integer)

  • bridge_result.total (integer)

  • error (string)

  • job_id (string)

  • network (string)

  • progress (integer)

  • state (string)

  • status (string)

  • total_nodes (integer)

POST /network/guest-networks/list

List guest networks

Get a list of guest networks with optional filters

Status Codes:
POST /network/guest-networks/{id}/restart

Restart a guest network

Restart a guest network by ID provided in request body

Status Codes:
GET /network/mtu

Get cluster MTU (declared vs actual)

Declared per-role MTU against the live value on every node, bridge and tunnel, with every divergence listed

Status Codes:
Response JSON Object:
  • awaiting[].actual (integer)

  • awaiting[].declared (integer)

  • awaiting[].detail (string)

  • awaiting[].device (string)

  • awaiting[].kind (string)

  • awaiting[].node (string)

  • awaiting[].role (string)

  • awaiting[].state (string)

  • declared.management (integer)

  • declared.public (integer)

  • declared.storage (integer)

  • declared.underlay (integer) – Underlay is REPORTED, not declared here: it is the fabric’s and is edited on the fabric page. It is carried because every refusal is measured against it (“storage_mtu=8234 exceeds vxlan_mtu=1500”), and a ceiling a user cannot see makes those refusals unexplainable.

  • divergences[].actual (integer)

  • divergences[].declared (integer)

  • divergences[].detail (string)

  • divergences[].device (string)

  • divergences[].kind (string)

  • divergences[].node (string)

  • divergences[].role (string)

  • divergences[].state (string)

  • nodes[].devices[].actual (integer)

  • nodes[].devices[].declared (integer) – 0 = nothing declared

  • nodes[].devices[].divergent (boolean)

  • nodes[].devices[].kind (string)

  • nodes[].devices[].name (string)

  • nodes[].devices[].role (string)

  • nodes[].error (string)

  • nodes[].fqdn (string)

  • nodes[].node_ip (string)

  • nodes[].node_role (string)

  • nodes[].status (string)

  • nodes[].zone (string) – Zone the node belongs to, for filtering only. The declaration itself is fleet-wide: a node being onboarded has no zone yet, so nothing can be applied per zone without the configure flow learning one first.

  • rollout_status (string)

  • status (string)

  • unreachable_nodes (integer)

PUT /network/mtu

Declare the cluster’s per-role MTU

Set the management, storage and public bridge MTU and roll the change out. Works with or without a fabric configuration.

Query Parameters:
  • acknowledge_unverifiable (boolean) – Proceed when a role has no probe target

Request JSON Object:
  • management (integer)

  • public (integer)

  • storage (integer)

Status Codes:
POST /network/mtu/l2probe

Send or count raw MTU probe frames on this node

One side of a layer 2 MTU test. Listen blocks for its window and returns a count; send emits a burst to the peer’s MAC. Used when ICMP is filtered.

Request JSON Object:
  • count (integer)

  • device (string) – (required)

  • mode (string) – (required)

  • mtu (integer) – MTU is the payload size under test, so the frame on the wire is this plus the 14-byte Ethernet header. (required)

  • peer (string) – Peer is the send side’s target IP. Its MAC is resolved on the node, from the neighbour table the ping probe has already populated, unless PeerMAC is supplied.

  • peer_mac (string)

  • token (integer) – Token marks one run’s frames so a listener never counts a stale burst from an earlier attempt on the same wire.

  • window_ms (integer)

Status Codes:
Response JSON Object:
  • detail (string)

  • device (string)

  • mode (string)

  • mtu (integer)

  • peer_mac (string)

  • received (integer)

  • sent (integer)

POST /network/mtu/node-apply

Apply a rollout MTU to a role bridge on this node

Persist, arm a self-revert watchdog, set live, probe, then commit or restore. Driven by the cluster MTU rollout.

Request JSON Object:
  • advisory_targets[] (string)

  • bridge (string) – (required)

  • dry_run (boolean) – DryRun proves the value and reverts unconditionally, persisting nothing.

  • mtu (integer) – (required)

  • phase (string) – Phase splits the sequence so a cluster-wide run holds every node at the new value while each probes; a probe needs both ends raised. “” keeps the single-call behaviour (raise, probe, then revert or commit) for manual callers.

  • probe_target (string)

  • self_revert_secs (integer) – SelfRevertSecs is the watchdog window. 0 uses the node default.

Status Codes:
Response JSON Object:
  • advisory_failures[] (string)

  • applied (boolean)

  • bridge (string)

  • detail (string)

  • devices[] (string)

  • limit_mtu (integer)

  • mtu (integer)

  • peer_mac (string) – PeerMAC is the probe target’s link-layer address, carried back only when the verdict was inconclusive, so the raw-frame fallback can build a frame without resolving it a second time.

  • persisted (boolean)

  • probe_ok (boolean)

  • probe_verdict (string) – ProbeVerdict is the three-state outcome behind ProbeOK: “pass”, “fail” or “inconclusive”. ProbeOK alone cannot separate a path that failed from one that could not be tested, and only the first is a reason to refuse a rollout. Empty on a result from a node predating this field.

  • probed (boolean)

  • reverted (boolean)

POST /network/stats

Get network statistics

Returns guest networks grouped by type and public IPs grouped by state

Status Codes:
Response JSON Object:
  • dashboard.allocation.percentage (number)

  • dashboard.allocation.total (integer)

  • dashboard.allocation.used (integer)

  • dashboard.bandwidth.estimated_usage (boolean)

  • dashboard.bandwidth.percentage (number)

  • dashboard.bandwidth.received_bytes (integer)

  • dashboard.bandwidth.sent_bytes (integer) – VR-tracked traffic counters aggregated across all guest networks (Network.Sentbytes / Receivedbytes)

  • dashboard.bandwidth.source (string)

  • dashboard.bandwidth.total_bytes (integer)

  • dashboard.bandwidth.total_gbps (number)

  • dashboard.bandwidth.total_mbps (integer)

  • dashboard.bandwidth.used_gbps (number)

  • dashboard.bandwidth.used_mbps (integer)

  • dashboard.implemented.percentage (number)

  • dashboard.implemented.total (integer)

  • dashboard.implemented.used (integer)

  • dashboard.ip_usage.percentage (number)

  • dashboard.ip_usage.total (integer)

  • dashboard.ip_usage.used (integer)

  • dashboard.setup.percentage (number)

  • dashboard.setup.total (integer)

  • dashboard.setup.used (integer)

  • guest_networks_by_type.segments[].label (string)

  • guest_networks_by_type.segments[].value (integer)

  • guest_networks_by_type.title (string)

  • guest_networks_by_type.total (integer)

  • public_ips_by_state.segments[].label (string)

  • public_ips_by_state.segments[].value (integer)

  • public_ips_by_state.title (string)

  • public_ips_by_state.total (integer)