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, 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.

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