Set a cluster network's MTU.
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.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The network. mgmt is not changed here.
Request Bodyrequired
Section titled “Request Bodyrequired”The MTU to set.
object
The network’s MTU. The overlay needs at least 1558.
Example
1500Responses
Section titled “Responses”Nothing to change; every link already carries the MTU.
A cluster network’s MTU and how far the nodes are in applying it.
object
The network’s MTU, the one wanted and what nodes that join later are assigned.
The MTU a change replaced. Present on the response to a change.
Whether this call wrote anything (the network’s MTU or a link’s). Always false on GET.
Every link is declared at mtu and its node reports it.
The active members’ links that carry the network.
object
The link’s name in the node’s hardware plan.
The MTU the link was declared at before this call; 0 is the default.
The MTU it is declared at now.
The MTU the node reports on the interface; 0 when it has not reported.
Declared at to and reported at it.
Example
{ "purpose": "storage", "mtu": 1500, "previousMtu": 9000, "links": [ { "interface": "vlan90" } ]}Recorded; the nodes are converging.
A cluster network’s MTU and how far the nodes are in applying it.
object
The network’s MTU, the one wanted and what nodes that join later are assigned.
The MTU a change replaced. Present on the response to a change.
Whether this call wrote anything (the network’s MTU or a link’s). Always false on GET.
Every link is declared at mtu and its node reports it.
The active members’ links that carry the network.
object
The link’s name in the node’s hardware plan.
The MTU the link was declared at before this call; 0 is the default.
The MTU it is declared at now.
The MTU the node reports on the interface; 0 when it has not reported.
Declared at to and reported at it.
Example
{ "purpose": "storage", "mtu": 1500, "previousMtu": 9000, "links": [ { "interface": "vlan90" } ]}Bad request.
object
The findings of a rejected IAM policy document (custom and resource policies).
One finding of a rejected IAM policy document. A rejection lists every finding, so the author fixes the document in one round trip.
object
The finding, e.g. INVALID_DOCUMENT, UNKNOWN_ACTION, ACTION_NOT_APPLICABLE.
Index of the statement at fault; -1 for the document as a whole.
The offending action, where one is at fault (ACTION_NOT_APPLICABLE).
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.
One field’s problem, the stage-2 installer API’s shape.
field is the field’s path, message what is wrong with it.
object
The field’s path, e.g. links[0].interface, disks[1].confirm,
mgmt.address or role; empty for the whole request.
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
Example
{ "issues": [ { "code": "ACTION_NOT_APPLICABLE", "action": "compute:CreateVpc" } ]}Authenticated but not authorized.
object
The findings of a rejected IAM policy document (custom and resource policies).
One finding of a rejected IAM policy document. A rejection lists every finding, so the author fixes the document in one round trip.
object
The finding, e.g. INVALID_DOCUMENT, UNKNOWN_ACTION, ACTION_NOT_APPLICABLE.
Index of the statement at fault; -1 for the document as a whole.
The offending action, where one is at fault (ACTION_NOT_APPLICABLE).
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.
One field’s problem, the stage-2 installer API’s shape.
field is the field’s path, message what is wrong with it.
object
The field’s path, e.g. links[0].interface, disks[1].confirm,
mgmt.address or role; empty for the whole request.
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
Example
{ "issues": [ { "code": "ACTION_NOT_APPLICABLE", "action": "compute:CreateVpc" } ]}Resource not found.
object
The findings of a rejected IAM policy document (custom and resource policies).
One finding of a rejected IAM policy document. A rejection lists every finding, so the author fixes the document in one round trip.
object
The finding, e.g. INVALID_DOCUMENT, UNKNOWN_ACTION, ACTION_NOT_APPLICABLE.
Index of the statement at fault; -1 for the document as a whole.
The offending action, where one is at fault (ACTION_NOT_APPLICABLE).
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.
One field’s problem, the stage-2 installer API’s shape.
field is the field’s path, message what is wrong with it.
object
The field’s path, e.g. links[0].interface, disks[1].confirm,
mgmt.address or role; empty for the whole request.
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
Example
{ "issues": [ { "code": "ACTION_NOT_APPLICABLE", "action": "compute:CreateVpc" } ]}Conflicting state.
object
The findings of a rejected IAM policy document (custom and resource policies).
One finding of a rejected IAM policy document. A rejection lists every finding, so the author fixes the document in one round trip.
object
The finding, e.g. INVALID_DOCUMENT, UNKNOWN_ACTION, ACTION_NOT_APPLICABLE.
Index of the statement at fault; -1 for the document as a whole.
The offending action, where one is at fault (ACTION_NOT_APPLICABLE).
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.
One field’s problem, the stage-2 installer API’s shape.
field is the field’s path, message what is wrong with it.
object
The field’s path, e.g. links[0].interface, disks[1].confirm,
mgmt.address or role; empty for the whole request.
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
Example
{ "issues": [ { "code": "ACTION_NOT_APPLICABLE", "action": "compute:CreateVpc" } ]}