Skip to content

Commit c3c7a3d

Browse files
authored
Add Linode cloud adapter (#750)
* Add Linode cloud adapter * Fix Linode provision pricing metadata * Keep Linode CPU VPS kind stable
1 parent fa173b9 commit c3c7a3d

9 files changed

Lines changed: 1328 additions & 2 deletions

File tree

packages/cli/src/adapter-registry.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ export const CATEGORIES: readonly AdapterCategory[] = [
7878
id: 'cloud',
7979
pkgPrefix: '@profullstack/sh1pt-cloud',
8080
description: 'Raw-compute cloud providers — VPS, GPU, rollouts',
81-
adapters: ['atlantic', 'cloudflare', 'digitalocean', 'exe-dev', 'firebase', 'fly', 'hetzner', 'lambda-labs', 'nvidia', 'railway', 'runpod', 'supabase', 'vultr'],
81+
adapters: ['atlantic', 'cloudflare', 'digitalocean', 'exe-dev', 'firebase', 'fly', 'hetzner', 'lambda-labs', 'linode', 'nvidia', 'railway', 'runpod', 'supabase', 'vultr'],
8282
},
8383
{
8484
id: 'observability',

packages/cli/src/commands/scale.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ const DEFAULT_PRICING: Record<string, { label: string; hourly: number }> = {
172172
'cloud-vultr': { label: 'Vultr (VPS)', hourly: 0.007 },
173173
'cloud-hetzner': { label: 'Hetzner Cloud (VPS)', hourly: 0.005 },
174174
'cloud-lambda-labs': { label: 'Lambda Labs (GPU)', hourly: 0.75 },
175+
'cloud-linode': { label: 'Linode (VPS)', hourly: 0.0075 },
175176
'cloud-atlantic': { label: 'Atlantic.Net (VPS)', hourly: 0.008 },
176177
'cloud-railway': { label: 'Railway (hosting)', hourly: 0.017 },
177178
'cloud-cloudflare': { label: 'Cloudflare (Workers)', hourly: 0.0 },

packages/cloud/linode/README.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Linode / Akamai Cloud (VPS, GPU, Dedicated CPU, Block Storage)
2+
3+
Provides the Linode / Akamai Cloud cloud provider adapter for sh1pt scale and deploy workflows.
4+
5+
## What it does
6+
7+
- Connects cloud provider credentials and project settings.
8+
- Quotes Linode instance types before provisioning.
9+
- Supports CPU VPS, GPU, dedicated CPU, and Block Storage workflows where implemented.
10+
- Includes a connection flow for account or credential setup.
11+
- Includes setup guidance for required credentials or provider configuration.
12+
13+
## Package
14+
15+
- Name: `@profullstack/sh1pt-cloud-linode`
16+
- Path: `packages/cloud/linode`
17+
- Adapter ID: `cloud-linode`
18+
- Homepage: https://sh1pt.com
19+
20+
## Scripts
21+
22+
- `build`: `tsc -p tsconfig.json`
23+
- `prepublishOnly`: `pnpm build`
24+
- `typecheck`: `tsc -p tsconfig.json --noEmit`
25+
26+
## Usage
27+
28+
```bash
29+
pnpm add @profullstack/sh1pt-cloud-linode
30+
```
31+
32+
## Development
33+
34+
```bash
35+
pnpm --filter @profullstack/sh1pt-cloud-linode typecheck
36+
```
37+
38+
Run tests from the repository root:
39+
40+
```bash
41+
pnpm vitest run packages/cloud/linode/src/index.test.ts
42+
```
43+
44+
<!-- Generated by scripts/gen-module-readmes.mjs -->

packages/cloud/linode/package.json

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
{
2+
"name": "@profullstack/sh1pt-cloud-linode",
3+
"version": "0.1.15",
4+
"type": "module",
5+
"main": "./src/index.ts",
6+
"scripts": {
7+
"build": "tsc -p tsconfig.json",
8+
"typecheck": "tsc -p tsconfig.json --noEmit",
9+
"prepublishOnly": "pnpm build"
10+
},
11+
"dependencies": {
12+
"@profullstack/sh1pt-core": "workspace:*"
13+
},
14+
"license": "MIT",
15+
"repository": {
16+
"type": "git",
17+
"url": "git+https://github.com/profullstack/sh1pt.git",
18+
"directory": "packages/cloud/linode"
19+
},
20+
"homepage": "https://sh1pt.com",
21+
"bugs": "https://github.com/profullstack/sh1pt/issues",
22+
"files": [
23+
"dist"
24+
],
25+
"publishConfig": {
26+
"access": "public",
27+
"main": "./dist/index.js",
28+
"types": "./dist/index.d.ts",
29+
"exports": {
30+
".": {
31+
"types": "./dist/index.d.ts",
32+
"import": "./dist/index.js",
33+
"default": "./dist/index.js"
34+
}
35+
}
36+
}
37+
}

0 commit comments

Comments
 (0)