Cloud host lifecycle and provider parity

Task 9001 · Done · Coder · created · updated

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.

Pull request Pull request

Artifacts

Activity

  • Created
  • Run
  • Runner started
  • Runner ended (done)