Read the cloned VM state before applying resource overrides or randomizing
its MAC address and serial. Suspended clones must retain the configuration
used to save their state.
Cover suspended and stopped clones through the command runner, including
assigned resource precedence, optional image FQN lookup, and metadata
command and JSON errors.
* Support Vetu virtualization on Linux in addition to Tart on macOS
* api(portForward): ensure that rendezvousConn is closed
* Re-try SSH connections in integration tests
Because a VM might be still booting.
* Load testing: synthetic VMs, multiple worker support and Grafana k6 test
* echoserver: prevent fallthrough when Accept() fails
* Move default local-dev context logic to CreateDevController()
* Synthetic: add a random delay to startup script echoing
* Implement restart policy for VMs
* Do not update VM.Resource, we only use it as a read-only specification
* Err()/setErr(): use atomic.Pointer instead of sync.Mutex