Start with what the API can tell you, then move to the guest, which the API cannot see. In this order:
POST /v1/vms blocks until the machine is built, so a provisioning failure
came back on the create itself as 409 create_failed, carrying the
hypervisor's own text, and the partial VM was destroyed and its IP released.
There is no half-built machine to inspect. Fix what detail said and create
again.
GET /v1/vms/{id}
Two separate fields, and there is no state:
status is the state of the VM's record on our side: creating, active,
retained or deleting.power is read live from the hypervisor on every request โ running,
stopped, or unknown.power: "unknown" with health: "unreachable" means the hypervisor could not
be reached. That is a problem on our side, and actions on that VM fail right
away until the hypervisor is back. A VM that was running when the hypervisor
under it rebooted comes back up on its own.
If power is stopped, start it: creation leaves a machine stopped, and
starting it is a separate call.
GET /v1/vms/{id}/events
The newest 100 events for that VM, newest first: what the platform did, when, and what failed. This is where to look when an action did not do what you expected; a failed create was answered in step 1.
If power is running, nothing on our side is left to check. Then:
ip in GET /v1/vms. A
recreated VM has a different address โ the old one went back to the
pool. If you wrote an address down rather than putting a DNS name in front,
this is the usual cause.ubuntu, or as root while GET /v1/vms/{id} shows "rescue": true: the
VM is then running the rescue system, not its own disk.There is no console and no password. You have three options:
fstab line. The VM and
everything on it stay as they are.To avoid this next time, make every firewall and sshd change revert itself unless you confirm it: Harden a VM.