Virtual Machine States and Transitions

The following diagrams and tables show the required virtual machine (VM) states and task states for various commands issued by the user.

Allowed State Transitions

digraph states {
  graph [pad=".35", ranksep="0.65", nodesep="0.55", concentrate=true];
  node [fontsize=10 fontname="Monospace"];
  edge [arrowhead="normal", arrowsize="0.8"];
  label="All states are allowed to transition to DELETED and ERROR.";
  forcelabels=true;
  labelloc=bottom;
  labeljust=left;

  /* states */
  building [label="BUILDING"]
  active [label="ACTIVE"]
  paused [label="PAUSED"]
  suspended [label="SUSPENDED"]
  stopped [label="STOPPED"]
  rescued [label="RESCUED"]
  resized [label="RESIZED"]
  soft_deleted [label="SOFT_DELETED"]
  shelved [label="SHELVED"]
  shelved_offloaded [label="SHELVED_OFFLOADED"]
  deleted [label="DELETED", color="red"]
  error [label="ERROR", color="red"]

  /* transitions [action] */
  building -> active

  active -> active [headport=nw, tailport=ne]  // manual layout
  active -> soft_deleted [tailport=e]  // prevent arrowhead overlap
  active -> suspended
  active -> paused [tailport=w]  // prevent arrowhead overlap
  active -> stopped
  active -> shelved
  active -> shelved_offloaded
  active -> rescued
  active -> resized

  soft_deleted -> active [headport=e]  // prevent arrowhead overlap

  suspended -> active
  suspended -> shelved
  suspended -> shelved_offloaded

  paused -> active
  paused -> shelved
  paused -> shelved_offloaded

  stopped -> active
  stopped -> stopped [headport=nw, tailport=ne]  // manual layout
  stopped -> resized
  stopped -> rescued
  stopped -> shelved
  stopped -> shelved_offloaded

  resized -> active

  rescued -> active

  shelved -> shelved_offloaded
  shelved ->  active

  shelved_offloaded -> active
}

Requirements for Commands

Command Req’d VM States Req’d Task States Target State
pause Active, Shutoff, Rescued Resize Verify, unset Paused
unpause Paused N/A Active
suspend Active, Shutoff N/A Suspended
resume Suspended N/A Active
rescue Active, Shutoff Resize Verify, unset Rescued
unrescue Rescued N/A Active
set admin password Active N/A Active
rebuild Active, Shutoff Resize Verify, unset Active
force delete Soft Deleted N/A Deleted
restore Soft Deleted N/A Active
soft delete Active, Shutoff, Error N/A Soft Deleted
delete Active, Shutoff, Building, Rescued, Error N/A Deleted
backup Active, Shutoff N/A Active, Shutoff
snapshot Active, Shutoff N/A Active, Shutoff
start Shutoff, Stopped N/A Active
stop Active, Shutoff, Rescued Resize Verify, unset Stopped
reboot Active, Shutoff, Rescued Resize Verify, unset Active
resize Active, Shutoff Resize Verify, unset Resized
revert resize Active, Shutoff Resize Verify, unset Active
confirm resize Active, Shutoff Resize Verify, unset Active

VM states and Possible Commands

VM State Commands
Paused unpause
Suspended resume
Active set admin password, suspend, pause, rescue, rebuild, soft delete, delete, backup, snapshot, stop, reboot, resize, revert resize, confirm resize
Shutoff suspend, pause, rescue, rebuild, soft delete, delete, backup, start, snapshot, stop, reboot, resize, revert resize, confirm resize
Rescued unrescue, pause
Stopped rescue, delete, start
Soft Deleted force delete, restore
Error soft delete, delete
Building delete
Rescued delete, stop, reboot

Create Instance States

The following diagram shows the sequence of VM states, task states, and power states when a new VM instance is created.

Sequence of VM states, task states, and power states when a new VM instance is created.