Cloud host lifecycle and provider parity
Goal: stop/start, type change, disk grow and delete behave correctly on every cloud, and GCP/Azure hosts never show AWS words or links.
- Stop records `stopping` until the cloud says stopped; Start right after Stop works (today AWS IncorrectInstanceState).
- Change type offers only compatible types (arch, Windows-capable, nested-virt/metal for MicroVM); a stopped node stays stopped after a type change; a type change that fails before finish goes `stuck`, not `running` forever.
- Azure grow drains dispatch first (Stop's 409/force) and restarts the VM if the PATCH is refused; root-grow re-asks are bounded and a grow the node can't do is shown; Windows grow runs `Update-HostStorageCache` first.
- Refuse lifecycle actions on dynamic node-group members; `cloud.actions` omits actions the caller can't perform.
- One "Delete host and its node" for a single-node host; node delete answers before the proxy timeout (GCP delete 504'd).
- GCP/Azure host page: provider name (not "Cloud (EC2)"), provider console links or none, disk size read at launch, Grow dialog pre-fills current size.
- Instance types: Windows picker lists only types the cloud accepts; Allowed list shows cloud and on-demand price for GCP/Azure, count refreshes after Allow; Products › Hosting prices offers only windows_capable types for a Windows license; a Windows hosting order without a tailnet credential is refused before payment.
- GCP connection in a second region picks a free /20 and a region-unique subnet name.
Out of scope: launch/boot (own task); NodeLink storage; Jaah Hosted's own lifecycle.
Done means: an API test per behaviour against `tests/fake_cloud.py::FakeProvider`; on dev, quick Stop→Start on AWS and a second-region GCP connection succeed (screenshots); quick gate green.
Outcome
Cloud lifecycle and provider parity merged (#6637, plus #6649 fixing the operator one-node host delete found on dev). Quick gate green; the lane ran the full gate. Dev checks done: AWS Stop→Start, second-region GCP connection, single Delete host and its node. Deferred: background verify of GCP/Azure deletes. Memory: none applied.
Artifacts
Activity
- Created
- Run
- Runner started
- Runner ended (done)