Support GCP and Azure like AWS

Task 8760 · Done · Epic · created · updated

Add support for GCP and Azure with the same functionality as AWS: - Your Cloud (former Your AWS) - NodeLink may work on GCP and Azure - What else we have AWS specific Out of Scope: Jaah Hosted (still remains AWS only)

Subtasks

  • [business_analysis] Support GCP and Azure like AWS Done
    PRD: GCP+Azure join AWS under one "Your Cloud" card — Linux+Windows launch/lifecycle, priced instance browser, native NodeLink (Filestore/Azure Files), break-glass, MicroVM, labels; plan switch per provider, shared code. Deferred: node groups/Spot, federation. Hosted stays AWS.
  • [architecture] Support GCP and Azure like AWS Done
    New provider layer app/clouds with GCP and Azure REST adapters on httpx; AWS refactored onto it with its functions kept as facades. Children: C0 core+AWS+lifecycle, C1 GCP, C2 Azure, C3 console, C4 NodeLink (Filestore subdir / Azure share, bindfs), C5 dev rollout. GCP/Azure live oracles deferred until creds are filled. Memory: none applied.
  • [plan] Support GCP and Azure like AWS Done
    Split along the Architect's seams into 10 children over 4 phases (Foundation, Core, Surfaces, Verification). C0 split into protocol+migration / AWS onto layer; lifecycle and its UI split out; NodeLink split into seam / adapters; C5 split into stubs / oracle run. One migration. AC2.2 and AC9.1 tightened. Memory: none applied.
  • Provider protocol, migration and plan switches Done
    Shipped app/clouds (CloudProvider protocol, registry, provider_of 422, require_provider 403), FakeProvider, the epic's one migration (202610211437), and three Your Cloud switches (AWS on, GCP/Azure off) plus the TS twin. Quick gate and changed-area tests green; review lane passed; visual check shows the switches correct on desktop and phone. PR #6548 queued in the merge lane. Deferred to the AWS child: AWS routes calling require_provider. Memory: none applied.
  • Move AWS onto provider layer Done
    Lane fix: rebased; GCP adapter onto the extended protocol, registry in ProviderKey order, seam test on INFRA_PROVIDER_KEY, cross-org census names `field`. Quick gate green, 411 affected tests pass; PR #6555 re-queued. Live AWS repeat deferred to Dev oracle run. Memory: used mem-23019, mem-18424.
  • GCP compute adapter and credential Done
    GCP adapter (app/gcp: auth token, rest+LRO, network, catalog/prices, GcpProvider registered) and gcp credential type + Test; quick gate + 1397 tests green; review lane pass; PR #6552 merged (d36ff2ff), Jaah Deploy succeeded. Windows uses startup-script, not specialize (documented). Live GCP runs deferred to oracle child. Memory: none applied.
  • Azure compute adapter and credential Done
    Shipped app/azure (Entra auth, ARM REST+LRO, Retail Prices, AzureProvider registered) and the azure credential type/Test; quick gate + 1123 tests green, review lanes pass; PR #6550 merged (c3b67a0), Jaah Deploy succeeded. Live Azure oracles deferred until jaah/test/azure is filled. Memory: none applied.
  • NodeLink storage seam and typed mounts Done
    Shipped NodeLink storage-provider seam (EFS onto it, no behaviour change), typed v2 `mount` wire, cross-cloud 409 + Your Cloud switch 403s, and node-side nfs/aznfs mounts via a 3000:3000 bindfs view. Quick gate green; lane full gate merged #6553 (6517e09); its deploy was superseded by later merges. Live GCP/Azure oracle deferred; draft #8792 filed. Memory: none applied.
  • Cloud lifecycle actions and node detail Done
    Your Cloud lifecycle shipped: stop/start/change type (durable)/grow disk on AWS/GCP/Azure nodes, root grow on Linux/Windows, and console actions from cloud.actions. Quick gate green; PR #6567 merged (c00dd5d); its deploy was superseded. Live clouds are deferred to the oracle run; follow-ups are in draft #8831. Memory: used mem-18304, mem-23019.
  • Console Your Cloud card and connections Done
    Your Cloud card + provider footer, provider-first connections (generic GCP/Azure form, Provider column), per-cloud instance types + price reason; quick gate, 766 vitest, e2e green; #6570 merged (5a36fb84), deploy superseded. Deferred: draft #8833. Memory: used mem-17993, mem-22518.
  • NodeLink Filestore and Azure Files adapters Done
    GCP Filestore + Azure Files NFS NodeLink adapters, the 4 console choices with cost notes, switch 403s, docs. Quick gate green, review lanes pass, UI checked at 1280/390. PR #6565 queued in lane. Azure spike: service endpoint, no private endpoint. Live runs deferred to Dev oracle run. Memory: proposed 1 gotcha (mem-23120).
  • Dev credential stubs and provider switches Done
    Created jaah/test/gcp and jaah/test/azure stubs and jaah/test/aws with connection jaah-test-aws (subnet/SG resolved), all on dev, Operator org, through the console. (default) plan GCP/Azure Your Cloud ON. Operator notified. GCP/Azure in the provider picker deferred to #8778. Draft #8843 filed. Memory: none applied.
  • Dev oracle run across all providers Done
    Ran the dev oracles on GCP and AWS; Azure deferred because its credential is unfilled. GCP launch and lifecycle work. FAILs: AWS launch never joins (#8877), GCP pages show AWS wording (#8878), Filestore refused (#8879), Windows node vanishes (#8880). Test resources were deleted in the console; provider side is unverified. Memory: none applied.
  • [finish] Support GCP and Azure like AWS Done
    All 10 build children done; 8 PRs merged and deployed to dev. GCP Linux Your Cloud works live. Gaps filed: #8881 AWS launch regression, #8882 AWS wording on GCP, #8883 Filestore refused, #8884 GCP Windows, #8885 Azure untested live. Memory: none applied.
  • AWS Your Cloud node never reports in Done
    AWS Your Cloud fixed: default-VPC subnet launches now ask for a public IP (#6602); silent launches show a boot-log reason within 13 min (#6589); universe hardening (#6598). All merged and deployed to dev. Live: online in ~7 min; stop/start/type/disk/delete pass. Run-a-task deferred (needs account). Follow-up draft #8928. Memory: proposed mem-23526.
  • GCP and Azure node and NodeLink pages show Done
    GCP/Azure pages now use provider labels, console links, disk at launch, Grow disk pre-fill, Filestore terms, a same-cloud ready-only NodeLink picker and honest Delete wording. Quick gate green; PR #6590 merged (a02bfd4); its deploy was superseded. Follow-up draft #8893. Memory: none applied.
  • GCP Filestore NodeLink refused in us-central1 Done
    New GCP Filestore falls back to Regional 1 TiB when GCP refuses 100 GiB; capacity refusal names region/tier; cost note states both. Gates green, #6587 merged, dev deploy OK. Live dev oracle not run (console can't delete Filestore → draft #8890). Memory: none applied.
  • GCP Windows launch vanishes silently Done
    PR #6591 merged (c5d4d3e67) and deployed to dev; quick gate green, lane full gate green. Live on dev: the picker offers only Windows-capable types, a failed launch keeps its reason and an audit entry, and Allowed shows cloud and prices. The GCP Windows node never connected (unverified, operator skipped) — draft #8929; GCP second-region subnet bug — draft #8894. Memory: none applied.
  • Azure live oracle run on dev Done
    Azure live oracles deferred: jaah/test/azure is still a placeholder (AADSTS700038) and the operator chose to defer. AC1.1 refusal text and AC1.2 no-secret checks pass; nothing Azure was created. No PR. Memory: none applied.

Artifacts

Activity

  • Created
  • Runner started
  • Ready
  • Ready
  • Ready
  • Runner started
  • Awaiting response
  • Awaiting response
  • Awaiting response
  • Awaiting response
  • Awaiting response
  • Runner resumed
  • Awaiting response
  • Awaiting response
  • Awaiting response
  • Awaiting response
  • Awaiting response
  • Runner resumed
  • Runner ended (done)
  • Runner started
  • Awaiting response
  • Awaiting response
  • Awaiting response
  • Awaiting response
  • Awaiting response
  • Runner resumed
  • Awaiting response
  • Awaiting response
  • Runner resumed
  • Awaiting response
  • Awaiting response
  • Runner resumed
  • Runner ended (done)
  • Runner started
  • Draft
  • Draft
  • Draft
  • Draft
  • Draft
  • Draft
  • Draft
  • Draft
  • Draft
  • Draft
  • Draft
  • Ready
  • Ready
  • Ready
  • Ready
  • Ready
  • Ready
  • Ready
  • Ready
  • Ready
  • Ready
  • Ready
  • Runner ended (done)
  • Runner started
  • Runner ended (done)
  • Runner started
  • Runner started
  • Runner started
  • Runner started
  • Runner ended (done)
  • Runner ended (done)
  • Run
  • Runner ended (done)
  • Runner started
  • Runner ended (done)
  • Runner ended (done)
  • Runner started
  • Runner started
  • Runner started
  • Runner started
  • Awaiting response
  • Runner ended (done)
  • Runner ended (done)
  • Runner ended (done)
  • Awaiting response
  • Runner resumed
  • Runner ended (done)
  • Runner started
  • Awaiting response
  • Awaiting response
  • Awaiting response
  • Runner resumed
  • Awaiting response
  • Awaiting response
  • Runner resumed
  • Runner ended (done)
  • Runner started
  • Ready
  • Ready
  • Ready
  • Ready
  • Ready
  • Runner ended (done)
  • Runner started
  • Runner started
  • Runner started
  • Runner started
  • Runner started
  • Awaiting response
  • Awaiting response
  • Runner resumed
  • Runner ended (done)
  • Runner ended (done)
  • Runner ended (done)
  • Awaiting response
  • Awaiting response
  • Runner resumed
  • Runner ended (done)
  • Runner ended (done)
  • Runner ended (done)