Consistency model

Here is the consistency model for headnodes.

  • headnode_create: After running this, you can then run headnode_create_nic, headnode_delete_nic, headnode_connect_network, headnode_detach_network as much as you want, until you run headnode_start. The headnode’s VM is then created, started, and connected to the appropriate networks. As soon as you do this, the headnode becomes ‘frozen’, and no more changes to it are allowed. (Currently, the headnode is marked dirty/clean instead of unfrozen/frozen. This lines up with the semantics in one way, in that a dirty headnode hasn’t been fully applied yet. But, they act different enough that this will probably change. This change will not affect external behavior.)
  • headnode_delete: This deletes the headnode immediately, detaching it from all networks it was attached to. Due to current limitations, this operation cannot be run at all. Eventually, this call should succeed as long as the headnode is powered off.
  • headnode_start, headnode_stop: These cycle power on the headnode. It’s also possible that, eventually, we might allow networking changes to powered-off headnodes. (It’s semantically reasonable, but might be tricky in implementation.)