Describe a migration by id.
curl --request GET \ --url https://stratum.example.com/v1/projects/example/compute/migrations/example \ --header 'Authorization: Bearer <token>'A single cold-migration record, scoped to the project (the migration’s instance must belong to it). Surfaces the migration-specific detail the instance state can’t — source/target node + pool, size, state, and the error reason on failure.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Responses
Section titled “Responses”The migration record.
A cold-migration record. Poll the instance state for completion.
object
Bytes of the volume copied so far during the streaming phase (the “X” against sizeBytes = “Y”). Absent until streaming starts.
Current copy rate in bytes/sec (for a rate + ETA). Absent until streaming.
When copiedBytes/throughput were last sampled.
When the migration first left pending. Absent on records written before this field existed, so treat its absence as unknown rather than zero.
When the migration reached done or failed. Absent while still in flight; present on a failure too, which is what distinguishes “never started” from “started and failed”.
The peak vCPU throttle libvirt applied to force convergence, as a percentage. Absent until auto-converge engages, which on a lightly dirtying guest is never.
This is the dominant effect a running workload feels during a live migration. The network cutover is around 0.22s and does not drop established connections; a throttled guest can run at a few percent of its normal throughput for tens of seconds, which to a client looks like the server hanging rather than a brief interruption.
Guest memory libvirt is copying.
Bytes still to copy. NOT monotonic: each pre-copy pass re-sends pages dirtied during the previous one, so this can rise. Do not render it as a progress bar that only moves forwards.
Example
{ "state": "pending"}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" } ]}