Add Linode cloud adapter#750
Conversation
Greptile SummaryThis PR adds the
Confidence Score: 5/5Safe to merge — the adapter introduces no breaking changes to existing providers and all new code is isolated to the linode package. Both previously flagged defects (block-storage dry-run bypassing the price guard, and provision returning a zero hourly rate) are now corrected and covered by dedicated tests. No new correctness issues were found in this pass. No files require special attention — the only open item is a minor sequential-vs-concurrent fetch in Important Files Changed
Sequence DiagramsequenceDiagram
participant CLI
participant LinodeAdapter
participant LinodeAPI as Linode API v4
CLI->>LinodeAdapter: connect(ctx)
LinodeAdapter->>LinodeAPI: GET /account
LinodeAPI-->>LinodeAdapter: "{ euuid, email }"
LinodeAdapter-->>CLI: "{ accountId }"
CLI->>LinodeAdapter: quote(ctx, spec)
alt block-storage
LinodeAdapter-->>CLI: computed hourly/monthly (no API call)
else cpu-vps / gpu / bare-metal
LinodeAdapter->>LinodeAPI: "GET /linode/types?page_size=500"
LinodeAPI-->>LinodeAdapter: "{ data: LinodeType[] }"
LinodeAdapter-->>CLI: "{ sku, hourly, monthly }"
end
CLI->>LinodeAdapter: provision(ctx, spec)
alt block-storage
Note over LinodeAdapter: maxHourlyPrice check BEFORE dryRun
LinodeAdapter->>LinodeAPI: POST /volumes
LinodeAPI-->>LinodeAdapter: LinodeVolume
LinodeAdapter-->>CLI: "Instance (kind=block-storage)"
else cpu-vps / gpu / bare-metal
LinodeAdapter->>LinodeAPI: "GET /linode/types?page_size=500"
LinodeAPI-->>LinodeAdapter: "{ data: LinodeType[] }"
LinodeAdapter->>LinodeAPI: POST /linode/instances
LinodeAPI-->>LinodeAdapter: LinodeInstance
LinodeAdapter-->>CLI: Instance (hourlyRate from matched type)
end
CLI->>LinodeAdapter: list(ctx)
LinodeAdapter->>LinodeAPI: "GET /linode/instances?page=N&page_size=500 (paginated)"
LinodeAdapter->>LinodeAPI: "GET /volumes?page=N&page_size=500 (paginated)"
LinodeAPI-->>LinodeAdapter: instances + volumes
LinodeAdapter-->>CLI: Instance[]
CLI->>LinodeAdapter: destroy(ctx, id)
LinodeAdapter->>LinodeAPI: "DELETE /linode/instances/{id}"
alt 404 (not a Linode instance)
LinodeAdapter->>LinodeAPI: "DELETE /volumes/{id}"
end
LinodeAdapter-->>CLI: void
Reviews (3): Last reviewed commit: "Keep Linode CPU VPS kind stable" | Re-trigger Greptile |
Summary
Replaces the closed/stale Linode adapter PR with a clean branch on current
origin/master.This adds a real
cloud-linodeprovider package for Linode / Akamai Cloud and registers it in the CLI/docs so the README-advertised Linode cloud surface has an implementation.What changed
@profullstack/sh1pt-cloud-linode.linodein the cloud adapter registry, scale pricing fallback, docs category list, and lockfile importer.Validation
corepack pnpm --filter @profullstack/sh1pt-core buildcorepack pnpm --filter @profullstack/sh1pt-cloud-linode typecheckcorepack pnpm --filter @profullstack/sh1pt-cloud-linode buildcorepack pnpm vitest run packages/cloud/linode/src/index.test.ts(24 tests)git diff --check origin/master...HEADgit diff --checkBounty / listing context
This is intended for the uGig sh1pt platform-adapter listing (
134f0007-139c-4cb8-98eb-652b5846f9ab), which local tracking records as offering 2,000-2,500 LN sats per accepted platform PR.If accepted for payout, route sats/BTC to:
bc1qev5ant33v5y89qqjvcf4mh9hlax5svqf5xd7gc