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
}](../_images/graphviz-fa8a74bb135d06ccb43a311b6e3dcbaaf9041e3c.png)
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, Shutoff | 
| 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.
