Skip to content

Set a cluster network's MTU.

PUT
/v1/admin/cluster/networks/{purpose}/mtu
Code sample: Shell / cURL
curl --request PUT \
--url https://stratum.example.com/v1/admin/cluster/networks/storage/mtu \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "mtu": 1500 }'

. Records the new MTU as the cluster network’s (nodes that join later are assigned it) and as the MTU of every active member’s declared link that carries the network. Each node’s underlay reconciler then applies its link, live, through NetworkManager: the network’s NICs on a node reconfigure briefly. The reconciler has no cross-node ordering, so the nodes do it on their own ticks (each within about two minutes), not strictly one at a time. Each link is also an entry in its node’s hardware plan history, and platform.cluster_network.mtu_changed is audited with the old and new MTU.

Returns 202 while the nodes converge (GET shows progress), 200 when every link already carries the value. Idempotent, and its own retry: every link is compared with the new value, so asking again after a failure finishes the job.

Refused (400) outside 1280..9216, for the overlay below 1558 (Geneve adds ~58 bytes), and for mgmt. Refused (409) while a member is joining or being removed or an upgrade is running (CLUSTER_BUSY), when a link also carries a network that needs more (MTU_CONFLICT), and when a VLAN would exceed the device under it. Lowering is the fix for a path that carries less than the network’s MTU (readiness StoragePathMTU, OverlayPathMTU); raising it does not raise the path.

Install-scope; gates on cluster:UpdateNetworkMTU.

purpose
required
string
Allowed values: storage overlay

The network. mgmt is not changed here.

Media typeapplication/json

The MTU to set.

object
mtu
required

The network’s MTU. The overlay needs at least 1558.

integer
>= 1280 <= 9216

Example

1500

Nothing to change; every link already carries the MTU.

Media typeapplication/json

A cluster network’s MTU and how far the nodes are in applying it.

object
purpose
required
string
Allowed values: storage overlay
mtu
required

The network’s MTU, the one wanted and what nodes that join later are assigned.

integer
previousMtu

The MTU a change replaced. Present on the response to a change.

integer
changed
required

Whether this call wrote anything (the network’s MTU or a link’s). Always false on GET.

boolean
converged
required

Every link is declared at mtu and its node reports it.

boolean
links
required

The active members’ links that carry the network.

Array<object>
object
nodeId
required
string
link
required

The link’s name in the node’s hardware plan.

string
interface
required
string
from
required

The MTU the link was declared at before this call; 0 is the default.

integer
to
required

The MTU it is declared at now.

integer
reported
required

The MTU the node reports on the interface; 0 when it has not reported.

integer
applied
required

Declared at to and reported at it.

boolean

Example

{
"purpose": "storage",
"mtu": 1500,
"previousMtu": 9000,
"links": [
{
"interface": "vlan90"
}
]
}

Recorded; the nodes are converging.

Media typeapplication/json

A cluster network’s MTU and how far the nodes are in applying it.

object
purpose
required
string
Allowed values: storage overlay
mtu
required

The network’s MTU, the one wanted and what nodes that join later are assigned.

integer
previousMtu

The MTU a change replaced. Present on the response to a change.

integer
changed
required

Whether this call wrote anything (the network’s MTU or a link’s). Always false on GET.

boolean
converged
required

Every link is declared at mtu and its node reports it.

boolean
links
required

The active members’ links that carry the network.

Array<object>
object
nodeId
required
string
link
required

The link’s name in the node’s hardware plan.

string
interface
required
string
from
required

The MTU the link was declared at before this call; 0 is the default.

integer
to
required

The MTU it is declared at now.

integer
reported
required

The MTU the node reports on the interface; 0 when it has not reported.

integer
applied
required

Declared at to and reported at it.

boolean

Example

{
"purpose": "storage",
"mtu": 1500,
"previousMtu": 9000,
"links": [
{
"interface": "vlan90"
}
]
}

Bad request.

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"
}
]
}

Authenticated but not authorized.

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"
}
]
}

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"
}
]
}

Conflicting state.

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"
}
]
}