@synteq/cli 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/client.d.ts +9 -9
- package/dist/api/client.js +205 -32
- package/dist/api/client.js.map +1 -1
- package/dist/api/types.d.ts +62 -42
- package/dist/commands/api.js +1 -1
- package/dist/commands/api.js.map +1 -1
- package/dist/commands/catalog.js +1 -1
- package/dist/commands/catalog.js.map +1 -1
- package/dist/commands/gpu/activity.d.ts +2 -2
- package/dist/commands/gpu/activity.js +5 -5
- package/dist/commands/gpu/activity.js.map +1 -1
- package/dist/commands/gpu/bandwidth.d.ts +2 -2
- package/dist/commands/gpu/bandwidth.js +5 -5
- package/dist/commands/gpu/bandwidth.js.map +1 -1
- package/dist/commands/gpu/boot-order.d.ts +2 -2
- package/dist/commands/gpu/boot-order.js +5 -5
- package/dist/commands/gpu/boot-order.js.map +1 -1
- package/dist/commands/gpu/console.d.ts +2 -2
- package/dist/commands/gpu/console.js +5 -5
- package/dist/commands/gpu/console.js.map +1 -1
- package/dist/commands/gpu/details.d.ts +2 -2
- package/dist/commands/gpu/details.js +5 -5
- package/dist/commands/gpu/details.js.map +1 -1
- package/dist/commands/gpu/ip/add.d.ts +2 -2
- package/dist/commands/gpu/ip/add.js +5 -5
- package/dist/commands/gpu/ip/add.js.map +1 -1
- package/dist/commands/gpu/ip/list.d.ts +2 -2
- package/dist/commands/gpu/ip/list.js +5 -5
- package/dist/commands/gpu/ip/list.js.map +1 -1
- package/dist/commands/gpu/list.d.ts +3 -3
- package/dist/commands/gpu/list.js +4 -4
- package/dist/commands/gpu/list.js.map +1 -1
- package/dist/commands/gpu/order.d.ts +2 -2
- package/dist/commands/gpu/order.js +2 -2
- package/dist/commands/gpu/order.js.map +1 -1
- package/dist/commands/gpu/power.d.ts +2 -2
- package/dist/commands/gpu/power.js +5 -5
- package/dist/commands/gpu/power.js.map +1 -1
- package/dist/commands/gpu/reinstall.d.ts +4 -2
- package/dist/commands/gpu/reinstall.js +5 -5
- package/dist/commands/gpu/reinstall.js.map +1 -1
- package/dist/commands/gpu/resize.d.ts +2 -2
- package/dist/commands/gpu/resize.js +5 -5
- package/dist/commands/gpu/resize.js.map +1 -1
- package/dist/commands/gpu/stats.d.ts +2 -2
- package/dist/commands/gpu/stats.js +5 -5
- package/dist/commands/gpu/stats.js.map +1 -1
- package/dist/commands/instant-metal/activity.d.ts +2 -2
- package/dist/commands/instant-metal/activity.js +5 -5
- package/dist/commands/instant-metal/activity.js.map +1 -1
- package/dist/commands/instant-metal/bandwidth.d.ts +2 -2
- package/dist/commands/instant-metal/bandwidth.js +5 -5
- package/dist/commands/instant-metal/bandwidth.js.map +1 -1
- package/dist/commands/instant-metal/boot-order.d.ts +2 -2
- package/dist/commands/instant-metal/boot-order.js +5 -5
- package/dist/commands/instant-metal/boot-order.js.map +1 -1
- package/dist/commands/instant-metal/console.d.ts +2 -2
- package/dist/commands/instant-metal/console.js +5 -5
- package/dist/commands/instant-metal/console.js.map +1 -1
- package/dist/commands/instant-metal/details.d.ts +2 -2
- package/dist/commands/instant-metal/details.js +5 -5
- package/dist/commands/instant-metal/details.js.map +1 -1
- package/dist/commands/instant-metal/ip/add.d.ts +2 -2
- package/dist/commands/instant-metal/ip/add.js +5 -5
- package/dist/commands/instant-metal/ip/add.js.map +1 -1
- package/dist/commands/instant-metal/ip/list.d.ts +2 -2
- package/dist/commands/instant-metal/ip/list.js +5 -5
- package/dist/commands/instant-metal/ip/list.js.map +1 -1
- package/dist/commands/instant-metal/list.d.ts +3 -3
- package/dist/commands/instant-metal/list.js +4 -4
- package/dist/commands/instant-metal/list.js.map +1 -1
- package/dist/commands/instant-metal/order.d.ts +2 -2
- package/dist/commands/instant-metal/order.js +2 -2
- package/dist/commands/instant-metal/order.js.map +1 -1
- package/dist/commands/instant-metal/power.d.ts +2 -2
- package/dist/commands/instant-metal/power.js +5 -5
- package/dist/commands/instant-metal/power.js.map +1 -1
- package/dist/commands/instant-metal/reinstall.d.ts +4 -2
- package/dist/commands/instant-metal/reinstall.js +5 -5
- package/dist/commands/instant-metal/reinstall.js.map +1 -1
- package/dist/commands/instant-metal/resize.d.ts +2 -2
- package/dist/commands/instant-metal/resize.js +5 -5
- package/dist/commands/instant-metal/resize.js.map +1 -1
- package/dist/commands/instant-metal/stats.d.ts +2 -2
- package/dist/commands/instant-metal/stats.js +5 -5
- package/dist/commands/instant-metal/stats.js.map +1 -1
- package/dist/commands/order/gpu.d.ts +2 -2
- package/dist/commands/order/gpu.js +2 -2
- package/dist/commands/order/gpu.js.map +1 -1
- package/dist/commands/order/instant-metal.d.ts +2 -2
- package/dist/commands/order/instant-metal.js +2 -2
- package/dist/commands/order/instant-metal.js.map +1 -1
- package/dist/commands/order/vps.d.ts +2 -2
- package/dist/commands/order/vps.js +2 -2
- package/dist/commands/order/vps.js.map +1 -1
- package/dist/commands/resources.js +5 -1
- package/dist/commands/resources.js.map +1 -1
- package/dist/commands/storage/attach.js +1 -1
- package/dist/commands/storage/attach.js.map +1 -1
- package/dist/commands/storage/order.js +6 -2
- package/dist/commands/storage/order.js.map +1 -1
- package/dist/commands/vds/activity.d.ts +2 -2
- package/dist/commands/vds/activity.js +5 -5
- package/dist/commands/vds/activity.js.map +1 -1
- package/dist/commands/vds/bandwidth.d.ts +2 -2
- package/dist/commands/vds/bandwidth.js +5 -5
- package/dist/commands/vds/bandwidth.js.map +1 -1
- package/dist/commands/vds/boot-order.d.ts +2 -2
- package/dist/commands/vds/boot-order.js +5 -5
- package/dist/commands/vds/boot-order.js.map +1 -1
- package/dist/commands/vds/console.d.ts +2 -2
- package/dist/commands/vds/console.js +5 -5
- package/dist/commands/vds/console.js.map +1 -1
- package/dist/commands/vds/details.d.ts +2 -2
- package/dist/commands/vds/details.js +5 -5
- package/dist/commands/vds/details.js.map +1 -1
- package/dist/commands/vds/ip/add.d.ts +2 -2
- package/dist/commands/vds/ip/add.js +5 -5
- package/dist/commands/vds/ip/add.js.map +1 -1
- package/dist/commands/vds/ip/list.d.ts +2 -2
- package/dist/commands/vds/ip/list.js +5 -5
- package/dist/commands/vds/ip/list.js.map +1 -1
- package/dist/commands/vds/list.d.ts +3 -3
- package/dist/commands/vds/list.js +4 -4
- package/dist/commands/vds/list.js.map +1 -1
- package/dist/commands/vds/order.d.ts +18 -2
- package/dist/commands/vds/order.js +202 -7
- package/dist/commands/vds/order.js.map +1 -1
- package/dist/commands/vds/power.d.ts +2 -2
- package/dist/commands/vds/power.js +5 -5
- package/dist/commands/vds/power.js.map +1 -1
- package/dist/commands/vds/reinstall.d.ts +4 -2
- package/dist/commands/vds/reinstall.js +5 -5
- package/dist/commands/vds/reinstall.js.map +1 -1
- package/dist/commands/vds/resize.d.ts +2 -2
- package/dist/commands/vds/resize.js +5 -5
- package/dist/commands/vds/resize.js.map +1 -1
- package/dist/commands/vds/stats.d.ts +2 -2
- package/dist/commands/vds/stats.js +5 -5
- package/dist/commands/vds/stats.js.map +1 -1
- package/dist/commands/vps/activity.d.ts +1 -1
- package/dist/commands/vps/activity.js +1 -1
- package/dist/commands/vps/activity.js.map +1 -1
- package/dist/commands/vps/bandwidth.d.ts +1 -1
- package/dist/commands/vps/bandwidth.js +1 -1
- package/dist/commands/vps/bandwidth.js.map +1 -1
- package/dist/commands/vps/boot-order.d.ts +1 -1
- package/dist/commands/vps/boot-order.js +1 -1
- package/dist/commands/vps/boot-order.js.map +1 -1
- package/dist/commands/vps/console.d.ts +1 -1
- package/dist/commands/vps/console.js +3 -3
- package/dist/commands/vps/console.js.map +1 -1
- package/dist/commands/vps/details.d.ts +1 -1
- package/dist/commands/vps/details.js +8 -8
- package/dist/commands/vps/details.js.map +1 -1
- package/dist/commands/vps/ip/add.d.ts +1 -1
- package/dist/commands/vps/ip/add.js +8 -8
- package/dist/commands/vps/ip/add.js.map +1 -1
- package/dist/commands/vps/ip/list.d.ts +1 -1
- package/dist/commands/vps/ip/list.js +4 -4
- package/dist/commands/vps/ip/list.js.map +1 -1
- package/dist/commands/vps/list.d.ts +4 -2
- package/dist/commands/vps/list.js +8 -4
- package/dist/commands/vps/list.js.map +1 -1
- package/dist/commands/vps/order.d.ts +7 -1
- package/dist/commands/vps/order.js +16 -9
- package/dist/commands/vps/order.js.map +1 -1
- package/dist/commands/vps/power.d.ts +1 -1
- package/dist/commands/vps/power.js +1 -1
- package/dist/commands/vps/power.js.map +1 -1
- package/dist/commands/vps/reinstall.d.ts +3 -1
- package/dist/commands/vps/reinstall.js +28 -1
- package/dist/commands/vps/reinstall.js.map +1 -1
- package/dist/commands/vps/resize.d.ts +7 -1
- package/dist/commands/vps/resize.js +52 -25
- package/dist/commands/vps/resize.js.map +1 -1
- package/dist/commands/vps/stats.d.ts +1 -1
- package/dist/commands/vps/stats.js +2 -2
- package/dist/commands/vps/stats.js.map +1 -1
- package/dist/tui/screens/Order.js +97 -21
- package/dist/tui/screens/Order.js.map +1 -1
- package/dist/tui/screens/Resources.js +7 -7
- package/dist/tui/screens/Resources.js.map +1 -1
- package/dist/ui/vps-detail.d.ts +3 -3
- package/dist/ui/vps-detail.js +9 -5
- package/dist/ui/vps-detail.js.map +1 -1
- package/dist/ui/vps-resolve.d.ts +2 -2
- package/dist/ui/vps-resolve.js +1 -1
- package/dist/ui/vps-resolve.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reinstall.js","sourceRoot":"","sources":["../../../src/commands/vps/reinstall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAA2B,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG7E,MAAM,CAAC,OAAO,OAAO,
|
|
1
|
+
{"version":3,"file":"reinstall.js","sourceRoot":"","sources":["../../../src/commands/vps/reinstall.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { BaseCommand } from "../../base/command.js";
|
|
2
|
-
|
|
2
|
+
/** Resolves the target RAM in GB from the `--ram` flag (already GB, no
|
|
3
|
+
* MB conversion) falling back to the seed spec's GB value. Exported
|
|
4
|
+
* standalone so the flag-parsing/unit contract has direct test coverage —
|
|
5
|
+
* a regression here (e.g. a reintroduced `* 1024`) would silently request
|
|
6
|
+
* 1024x too much RAM. */
|
|
7
|
+
export declare function resolveTargetRamGb(ramFlag: number | undefined, seedRamGb: number): number;
|
|
8
|
+
export default class ResourceResize extends BaseCommand {
|
|
3
9
|
static description: string;
|
|
4
10
|
static examples: string[];
|
|
5
11
|
static args: {
|
|
@@ -5,15 +5,31 @@ import { confirmDestructive, yesRequiredMessage } from "../../ui/confirm.js";
|
|
|
5
5
|
import { isInteractive, panel, summary } from "../../ui/wizard.js";
|
|
6
6
|
import { ok, statusColor } from "../../ui/glyphs.js";
|
|
7
7
|
import { pickPayment } from "../../ui/payment.js";
|
|
8
|
-
|
|
8
|
+
/** Resolves the target RAM in GB from the `--ram` flag (already GB, no
|
|
9
|
+
* MB conversion) falling back to the seed spec's GB value. Exported
|
|
10
|
+
* standalone so the flag-parsing/unit contract has direct test coverage —
|
|
11
|
+
* a regression here (e.g. a reintroduced `* 1024`) would silently request
|
|
12
|
+
* 1024x too much RAM. */
|
|
13
|
+
export function resolveTargetRamGb(ramFlag, seedRamGb) {
|
|
14
|
+
return ramFlag !== undefined ? ramFlag : seedRamGb;
|
|
15
|
+
}
|
|
16
|
+
// Server serializes money as Decimal-string (per ResizeQuoteOut in
|
|
17
|
+
// backend/app/schemas/resize.py). Always parse before any arithmetic /
|
|
18
|
+
// .toFixed() call — a raw string.toFixed() crashes the CLI on every quote.
|
|
19
|
+
function money(v) {
|
|
20
|
+
if (v == null)
|
|
21
|
+
return 0;
|
|
22
|
+
const n = typeof v === "number" ? v : Number(v);
|
|
23
|
+
return Number.isFinite(n) ? n : 0;
|
|
24
|
+
}
|
|
25
|
+
export default class ResourceResize extends BaseCommand {
|
|
9
26
|
static description = [
|
|
10
|
-
"Resize a
|
|
27
|
+
"Resize a Resource (change CPU / RAM / disk / bandwidth in place).",
|
|
11
28
|
"",
|
|
12
29
|
"Shows a prorated quote first, then confirms before charging. Upsizes",
|
|
13
30
|
"charge the payment method immediately; downsizes issue a pro-rated",
|
|
14
31
|
"credit instead. Disk can only grow. On a TTY you get a y/N prompt;",
|
|
15
32
|
"when stdout is piped, pass --yes or the command exits 1 without acting.",
|
|
16
|
-
"Use `vps resize quote <id>` to preview the cost without charging.",
|
|
17
33
|
].join("\n");
|
|
18
34
|
static examples = [
|
|
19
35
|
"<%= config.bin %> vps resize 019e... --ram 8 --yes # bump RAM to 8 GB; keep CPU/disk",
|
|
@@ -23,7 +39,7 @@ export default class VpsResize extends BaseCommand {
|
|
|
23
39
|
];
|
|
24
40
|
static args = {
|
|
25
41
|
id: Args.string({
|
|
26
|
-
description: "
|
|
42
|
+
description: "Resource id (full or the short id from `vps list`), hostname, or IP.",
|
|
27
43
|
required: true,
|
|
28
44
|
}),
|
|
29
45
|
};
|
|
@@ -32,11 +48,11 @@ export default class VpsResize extends BaseCommand {
|
|
|
32
48
|
description: "Plan id from `synteq catalog` — seeds the target CPU/RAM/disk/bandwidth spec. Individual --cpu/--ram/--disk/--bandwidth flags override it.",
|
|
33
49
|
}),
|
|
34
50
|
cpu: Flags.integer({
|
|
35
|
-
description: "Target CPU cores (>=1). Defaults to the
|
|
51
|
+
description: "Target CPU cores (>=1). Defaults to the Resource's current cores.",
|
|
36
52
|
min: 1,
|
|
37
53
|
}),
|
|
38
54
|
ram: Flags.integer({
|
|
39
|
-
description: "Target RAM in GB (>=1). Defaults to the
|
|
55
|
+
description: "Target RAM in GB (>=1). Defaults to the Resource's current RAM.",
|
|
40
56
|
min: 1,
|
|
41
57
|
}),
|
|
42
58
|
disk: Flags.integer({
|
|
@@ -71,7 +87,7 @@ export default class VpsResize extends BaseCommand {
|
|
|
71
87
|
const target = await this.buildTargetSpec(vps, flags);
|
|
72
88
|
const quote = await this.clients.api.vpsControl.resizeQuote(vpsId, {
|
|
73
89
|
cpu_cores: target.cpu_cores,
|
|
74
|
-
|
|
90
|
+
ram_gb: target.ram_gb,
|
|
75
91
|
disk_gb: target.disk_gb,
|
|
76
92
|
bandwidth_tb: target.bandwidth_tb,
|
|
77
93
|
dedicated: target.dedicated,
|
|
@@ -89,7 +105,7 @@ export default class VpsResize extends BaseCommand {
|
|
|
89
105
|
const isUpsize = quote.action === "charge";
|
|
90
106
|
const isDownsize = quote.action === "credit" || quote.action === "defer";
|
|
91
107
|
const restartNote = quote.restart_required
|
|
92
|
-
? " This
|
|
108
|
+
? " This Resource is running and the change stages CPU/RAM until the next power-cycle."
|
|
93
109
|
: "";
|
|
94
110
|
let payment;
|
|
95
111
|
if (isUpsize) {
|
|
@@ -98,7 +114,7 @@ export default class VpsResize extends BaseCommand {
|
|
|
98
114
|
tokens: this.clients.tokens,
|
|
99
115
|
config: this.clients.config,
|
|
100
116
|
flow: "vps_addon",
|
|
101
|
-
estimatedCost: quote.prorated_amount,
|
|
117
|
+
estimatedCost: money(quote.prorated_amount),
|
|
102
118
|
prefill: {
|
|
103
119
|
paymentMethodId: flags["payment-method"],
|
|
104
120
|
applyCredits: flags["apply-credits"],
|
|
@@ -111,24 +127,26 @@ export default class VpsResize extends BaseCommand {
|
|
|
111
127
|
if (!isInteractive()) {
|
|
112
128
|
this.error(yesRequiredMessage("`vps resize`"), { exit: 1 });
|
|
113
129
|
}
|
|
130
|
+
const prorated = money(quote.prorated_amount);
|
|
131
|
+
const newMonthly = money(quote.new_monthly_price);
|
|
114
132
|
const priceLine = isUpsize
|
|
115
|
-
? `Charge ~$${Math.abs(
|
|
133
|
+
? `Charge ~$${Math.abs(prorated).toFixed(2)} now (new monthly $${newMonthly.toFixed(2)})`
|
|
116
134
|
: isDownsize
|
|
117
135
|
? quote.action === "defer"
|
|
118
|
-
? `No charge now — the lower monthly $${
|
|
119
|
-
: `Issue ~$${Math.abs(
|
|
136
|
+
? `No charge now — the lower monthly $${newMonthly.toFixed(2)} applies at renewal`
|
|
137
|
+
: `Issue ~$${Math.abs(prorated).toFixed(2)} credit (new monthly $${newMonthly.toFixed(2)})`
|
|
120
138
|
: `No charge (spec/bandwidth tweak)`;
|
|
121
139
|
const outcome = await confirmDestructive({
|
|
122
140
|
message: `Resize ${vps.hostname}? ${priceLine}.${restartNote}`,
|
|
123
141
|
});
|
|
124
142
|
if (outcome !== "confirmed") {
|
|
125
|
-
this.log("Aborted —
|
|
143
|
+
this.log("Aborted — Resource left unchanged.");
|
|
126
144
|
return;
|
|
127
145
|
}
|
|
128
146
|
}
|
|
129
147
|
const body = {
|
|
130
148
|
cpu_cores: target.cpu_cores,
|
|
131
|
-
|
|
149
|
+
ram_gb: target.ram_gb,
|
|
132
150
|
disk_gb: target.disk_gb,
|
|
133
151
|
bandwidth_tb: target.bandwidth_tb,
|
|
134
152
|
dedicated: target.dedicated,
|
|
@@ -147,7 +165,7 @@ export default class VpsResize extends BaseCommand {
|
|
|
147
165
|
]));
|
|
148
166
|
if (result.status === "succeeded") {
|
|
149
167
|
this.log(ok(quote.restart_required
|
|
150
|
-
? "Resize applied — power-cycle the
|
|
168
|
+
? "Resize applied — power-cycle the Resource to activate the new CPU/RAM."
|
|
151
169
|
: "Resize applied."));
|
|
152
170
|
}
|
|
153
171
|
});
|
|
@@ -158,7 +176,7 @@ export default class VpsResize extends BaseCommand {
|
|
|
158
176
|
}
|
|
159
177
|
async buildTargetSpec(vps, flags) {
|
|
160
178
|
let seedCpu = vps.plan?.cpu_cores ?? 0;
|
|
161
|
-
let
|
|
179
|
+
let seedRamGb = vps.plan?.ram_gb ?? 0;
|
|
162
180
|
let seedDisk = vps.plan?.disk_gb ?? 0;
|
|
163
181
|
if (flags.plan) {
|
|
164
182
|
const catalog = await this.clients.api.vpsOrders.catalog();
|
|
@@ -166,36 +184,45 @@ export default class VpsResize extends BaseCommand {
|
|
|
166
184
|
if (!plan) {
|
|
167
185
|
this.error(`Plan ${flags.plan} not found in the catalog. Run \`synteq vps catalog\`.`, { exit: 1 });
|
|
168
186
|
}
|
|
187
|
+
// Reject a plan from the wrong product family. Without this,
|
|
188
|
+
// passing e.g. a VPS plan id to `vds resize --plan` silently
|
|
189
|
+
// reprices the VDS at the VPS shape when the numbers happen to
|
|
190
|
+
// match a VDS tier — a hard-to-notice bill/spec drift.
|
|
191
|
+
const resourceKind = vps.kind ?? vps.plan?.kind;
|
|
192
|
+
if (resourceKind && plan.kind && resourceKind !== plan.kind) {
|
|
193
|
+
this.error(`Plan ${flags.plan} is a ${plan.kind} plan, but this resource is a ${resourceKind}. ` +
|
|
194
|
+
`Pick a ${resourceKind} plan from \`synteq catalog\` (look for kind="${resourceKind}").`, { exit: 1 });
|
|
195
|
+
}
|
|
169
196
|
seedCpu = plan.cpu_cores;
|
|
170
|
-
|
|
197
|
+
seedRamGb = plan.ram_gb;
|
|
171
198
|
seedDisk = plan.disk_gb;
|
|
172
199
|
}
|
|
173
200
|
const cpu = flags.cpu ?? seedCpu;
|
|
174
|
-
const
|
|
201
|
+
const ramGb = resolveTargetRamGb(flags.ram, seedRamGb);
|
|
175
202
|
const disk = flags.disk ?? seedDisk;
|
|
176
|
-
if (cpu < 1 ||
|
|
203
|
+
if (cpu < 1 || ramGb < 1 || disk < 1) {
|
|
177
204
|
this.error("Could not resolve a full target spec. Pass --plan or all of --cpu/--ram/--disk.", { exit: 1 });
|
|
178
205
|
}
|
|
179
206
|
return {
|
|
180
207
|
cpu_cores: cpu,
|
|
181
|
-
|
|
208
|
+
ram_gb: ramGb,
|
|
182
209
|
disk_gb: disk,
|
|
183
210
|
bandwidth_tb: flags.bandwidth,
|
|
184
211
|
dedicated: flags.dedicated === undefined ? null : flags.dedicated,
|
|
185
212
|
};
|
|
186
213
|
}
|
|
187
214
|
quoteRows(vps, q) {
|
|
188
|
-
const specStr = (s) => `${s.cpu_cores} vCPU · ${
|
|
215
|
+
const specStr = (s) => `${s.cpu_cores} vCPU · ${s.ram_gb} GB RAM · ${s.disk_gb} GB disk${s.dedicated ? " · dedicated" : ""}`;
|
|
189
216
|
return [
|
|
190
|
-
["
|
|
217
|
+
["Resource", `${vps.hostname} (${vps.status})`],
|
|
191
218
|
["Current", specStr(q.current_spec)],
|
|
192
219
|
["Requested", specStr(q.requested_spec)],
|
|
193
220
|
["Action", q.action],
|
|
194
|
-
["Current monthly", `$${q.current_monthly_price.toFixed(2)}`],
|
|
195
|
-
["New monthly", `$${q.new_monthly_price.toFixed(2)}`],
|
|
221
|
+
["Current monthly", `$${money(q.current_monthly_price).toFixed(2)}`],
|
|
222
|
+
["New monthly", `$${money(q.new_monthly_price).toFixed(2)}`],
|
|
196
223
|
[
|
|
197
224
|
q.action === "credit" ? "Credit today" : "Charge today",
|
|
198
|
-
`$${Math.abs(q.prorated_amount).toFixed(2)}`,
|
|
225
|
+
`$${Math.abs(money(q.prorated_amount)).toFixed(2)}`,
|
|
199
226
|
],
|
|
200
227
|
["Restart required", q.restart_required ? "yes (power-cycle to apply CPU/RAM)" : undefined],
|
|
201
228
|
["In stock", q.in_stock ? undefined : `no — ${q.out_of_stock_reason ?? "capacity"}`],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resize.js","sourceRoot":"","sources":["../../../src/commands/vps/resize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,MAAM,CAAC,OAAO,OAAO,
|
|
1
|
+
{"version":3,"file":"resize.js","sourceRoot":"","sources":["../../../src/commands/vps/resize.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,12 +5,12 @@ import { panel } from "../../ui/wizard.js";
|
|
|
5
5
|
import { statusColor } from "../../ui/glyphs.js";
|
|
6
6
|
import { sparkline } from "../../ui/sparkline.js";
|
|
7
7
|
import { asPoints, formatCpu, formatRate, formatUptime, formatUsagePair, numOrNull, pickLatestPoint, } from "../../ui/stats.js";
|
|
8
|
-
export default class
|
|
8
|
+
export default class ResourceStats extends BaseCommand {
|
|
9
9
|
static description = [
|
|
10
10
|
"Show live CPU / memory / disk / uptime + network I/O for a VPS.",
|
|
11
11
|
"",
|
|
12
12
|
"Read-only. On a TTY it renders a compact readout with CPU and",
|
|
13
|
-
"network sparklines; `-o json` returns the raw
|
|
13
|
+
"network sparklines; `-o json` returns the raw metrics payload.",
|
|
14
14
|
].join("\n");
|
|
15
15
|
static examples = [
|
|
16
16
|
"<%= config.bin %> vps stats 019e...",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/commands/vps/stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EACL,QAAQ,EACR,SAAS,EACT,UAAU,EACV,YAAY,EACZ,eAAe,EACf,SAAS,EACT,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,OAAO,OAAO,
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/commands/vps/stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EACL,QAAQ,EACR,SAAS,EACT,UAAU,EACV,YAAY,EACZ,eAAe,EACf,SAAS,EACT,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAC,WAAW,GAAG;QACnB,iEAAiE;QACjE,EAAE;QACF,+DAA+D;QAC/D,gEAAgE;KACjE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,MAAM,CAAC,QAAQ,GAAG;QAChB,qCAAqC;QACrC,uFAAuF;QACvF,sFAAsF;KACvF,CAAC;IACF,MAAM,CAAC,IAAI,GAAG;QACZ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC;YACd,WAAW,EAAE,iEAAiE;YAC9E,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IACF,MAAM,CAAC,KAAK,GAAG;QACb,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;YACtB,WAAW,EACT,qGAAqG;YACvG,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;YACjD,OAAO,EAAE,MAAM;SAChB,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAA4B,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAG,KAAK,CAAC,SAAuD,CAAC;QAEhF,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACxC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC;gBAC5C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG;qBACjB,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC;qBACrB,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAuD,EAAE,CAAC,CAAC;aACtF,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;gBACjC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5C,OAAO;YACT,CAAC;YAED,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAElC,MAAM,MAAM,GAAI,KAAK,EAAE,MAA6B,IAAI,EAAE,CAAC;YAC3D,IAAI,CAAC,GAAG,CACN,KAAK,CAAC,OAAO,KAAK,YAAY,EAAE;gBAC9B,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,CAAC,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBACtD,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBACtD,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBAClD,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACpC,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aACvC,CAAC,CACH,CAAC;YAEF,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3D,IAAI,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7D,IAAI,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACjF,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7C,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjF,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtF,CAAC;YAED,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9D,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAEhE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,iBAAiB,SAAS,GAAG,CAAC,CAAC;YACxC,IAAI,CAAC,GAAG,CAAC,aAAa,QAAQ,IAAI,GAAG,EAAE,CAAC,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,aAAa,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,GAAG,CAAC,aAAa,QAAQ,IAAI,GAAG,EAAE,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC"}
|
|
@@ -22,6 +22,8 @@ const emptyDraft = {
|
|
|
22
22
|
projectId: null,
|
|
23
23
|
planId: null,
|
|
24
24
|
customSpec: {},
|
|
25
|
+
tierCategorySlug: null,
|
|
26
|
+
tierIndex: null,
|
|
25
27
|
storageSizeGb: null,
|
|
26
28
|
locationId: null,
|
|
27
29
|
imageId: null,
|
|
@@ -56,6 +58,11 @@ function stepsForKind(kind) {
|
|
|
56
58
|
else if (kind === "storage") {
|
|
57
59
|
base.push("size", "location", "hostname", "payment", "summary");
|
|
58
60
|
}
|
|
61
|
+
else if (kind === "vds") {
|
|
62
|
+
// VDS: pick a tier from the ladder, then the standard trailing steps.
|
|
63
|
+
// Server resolves cpu/ram/disk/price from tier_category_slug + tier_index.
|
|
64
|
+
base.push("vds-tier", "location", "image", "hostname", "auth", "payment", "summary");
|
|
65
|
+
}
|
|
59
66
|
else {
|
|
60
67
|
return PROGRESS_STEPS;
|
|
61
68
|
}
|
|
@@ -210,10 +217,18 @@ export function Order() {
|
|
|
210
217
|
});
|
|
211
218
|
}
|
|
212
219
|
else {
|
|
220
|
+
// Sizing mode per kind:
|
|
221
|
+
// vps → custom_spec (custom_cpu_cores/ram/disk sliders)
|
|
222
|
+
// vds → tier_category_slug + tier_index (server resolves)
|
|
223
|
+
// gpu / dedicated → plan_id (preset catalog plan)
|
|
224
|
+
const isVps = draft.kind === "vps";
|
|
225
|
+
const isVds = draft.kind === "vds";
|
|
213
226
|
const body = {
|
|
214
227
|
project_id: draft.projectId,
|
|
215
|
-
plan_id:
|
|
216
|
-
custom_spec:
|
|
228
|
+
plan_id: isVps || isVds ? undefined : draft.planId ?? undefined,
|
|
229
|
+
custom_spec: isVps ? buildCustomSpec(draft.customSpec) : undefined,
|
|
230
|
+
tier_category_slug: isVds ? draft.tierCategorySlug ?? undefined : undefined,
|
|
231
|
+
tier_index: isVds ? draft.tierIndex ?? undefined : undefined,
|
|
217
232
|
location_id: draft.locationId,
|
|
218
233
|
image_id: draft.imageId,
|
|
219
234
|
hostname: draft.hostname,
|
|
@@ -286,6 +301,8 @@ function StepRouter(props) {
|
|
|
286
301
|
return (React.createElement(PlanStep, { catalog: cat.orderCatalog, draft: draft, setDraft: setDraft, goNext: goNext }));
|
|
287
302
|
case "vps-spec":
|
|
288
303
|
return (React.createElement(VpsSpecStep, { customConfig: cat.orderCatalog?.custom_config ?? null, locations: cat.orderCatalog?.locations ?? [], userEmail: props.userEmail, draft: draft, setDraft: setDraft, goNext: goNext }));
|
|
304
|
+
case "vds-tier":
|
|
305
|
+
return (React.createElement(VdsTierStep, { catalog: cat.orderCatalog, draft: draft, setDraft: setDraft, goNext: goNext }));
|
|
289
306
|
case "size":
|
|
290
307
|
return (React.createElement(SizeStep, { catalog: cat.storageCatalog, draft: draft, setDraft: setDraft, goNext: goNext }));
|
|
291
308
|
case "location":
|
|
@@ -314,8 +331,9 @@ function StepRouter(props) {
|
|
|
314
331
|
function KindStep({ draft, setDraft, goNext, }) {
|
|
315
332
|
const items = [
|
|
316
333
|
{ value: "vps", label: "VPS", hint: "custom CPU/RAM/disk; shared or dedicated cores" },
|
|
334
|
+
{ value: "vds", label: "VDS", hint: "tier-based performance servers (order via web for now)" },
|
|
317
335
|
{ value: "gpu", label: "GPU", hint: "preset GPU-bearing plans" },
|
|
318
|
-
{ value: "dedicated", label: "
|
|
336
|
+
{ value: "dedicated", label: "Instant Metal", hint: "whole physical hosts" },
|
|
319
337
|
{ value: "storage", label: "Storage", hint: "block volume (attach to a VPS later)" },
|
|
320
338
|
];
|
|
321
339
|
return (React.createElement(Panel, { title: "What are you ordering?", paddingX: 3, paddingY: 1, width: 80 },
|
|
@@ -326,6 +344,8 @@ function KindStep({ draft, setDraft, goNext, }) {
|
|
|
326
344
|
kind: v,
|
|
327
345
|
planId: null,
|
|
328
346
|
customSpec: {},
|
|
347
|
+
tierCategorySlug: null,
|
|
348
|
+
tierIndex: null,
|
|
329
349
|
storageSizeGb: null,
|
|
330
350
|
locationId: null,
|
|
331
351
|
imageId: null,
|
|
@@ -376,7 +396,7 @@ function PlanStep({ catalog, draft, setDraft, goNext, }) {
|
|
|
376
396
|
hint: planRowHint(p),
|
|
377
397
|
disabled: p.in_stock ? undefined : "out of stock",
|
|
378
398
|
}));
|
|
379
|
-
return (React.createElement(Panel, { title: `Pick a ${draft.kind === "gpu" ? "GPU" : "
|
|
399
|
+
return (React.createElement(Panel, { title: `Pick a ${draft.kind === "gpu" ? "GPU" : "Instant Metal"} plan`, paddingX: 3, paddingY: 1, width: 80 },
|
|
380
400
|
React.createElement(Menu, { items: items, initialIndex: Math.max(0, items.findIndex((i) => i.value === draft.planId)), onSelect: (v) => {
|
|
381
401
|
setDraft((d) => ({ ...d, planId: v, locationId: null }));
|
|
382
402
|
goNext();
|
|
@@ -387,15 +407,54 @@ function planRowLabel(p) {
|
|
|
387
407
|
}
|
|
388
408
|
function planRowHint(p) {
|
|
389
409
|
const cores = `${p.cpu_cores}c`;
|
|
390
|
-
const ram = `${
|
|
410
|
+
const ram = `${p.ram_gb}G`;
|
|
391
411
|
const disk = `${p.disk_gb}G`;
|
|
392
412
|
const extra = p.gpu_model ? ` · ${p.gpu_model}` : "";
|
|
393
413
|
return `${cores} ${ram} ${disk}${extra}`;
|
|
394
414
|
}
|
|
415
|
+
// VDS-specific tier picker. Reads catalog.categories[slug].slider_config.tiers
|
|
416
|
+
// (the same ladder the server enforces at order time) and submits the pick
|
|
417
|
+
// as tier_category_slug + tier_index. Different shape from PlanStep (plans)
|
|
418
|
+
// and VpsSpecStep (custom sliders) — VDS is a third product family.
|
|
419
|
+
function VdsTierStep({ catalog, draft, setDraft, goNext, }) {
|
|
420
|
+
if (!catalog) {
|
|
421
|
+
return (React.createElement(Panel, { title: "Catalog unavailable", paddingX: 3, paddingY: 1, width: 80 },
|
|
422
|
+
React.createElement(Text, { color: colors.error }, "Couldn't load the order catalog. Try again later.")));
|
|
423
|
+
}
|
|
424
|
+
// Find an enabled VDS category with a non-empty ladder. Usually
|
|
425
|
+
// exactly one (vds_performance); multiple would need a category
|
|
426
|
+
// picker step first — not shipped, we take the first enabled.
|
|
427
|
+
const vdsCats = (catalog.categories ?? []).filter((c) => c.slug.startsWith("vds") &&
|
|
428
|
+
c.slider_config?.enabled &&
|
|
429
|
+
(c.slider_config.tiers?.length ?? 0) > 0);
|
|
430
|
+
if (vdsCats.length === 0) {
|
|
431
|
+
return (React.createElement(Panel, { title: "No VDS tiers configured", paddingX: 3, paddingY: 1, width: 80 },
|
|
432
|
+
React.createElement(Text, { color: colors.warning }, "No VDS tier ladders are enabled on this deployment. Pick a different resource kind or order VDS from the web console.")));
|
|
433
|
+
}
|
|
434
|
+
const cat = vdsCats[0];
|
|
435
|
+
const tiers = cat.slider_config?.tiers ?? [];
|
|
436
|
+
const items = tiers.map((t, i) => ({
|
|
437
|
+
value: i,
|
|
438
|
+
label: `Tier ${i} $${t.monthly_price}/mo`,
|
|
439
|
+
hint: `${t.cpu}c · ${t.ram_gb}GB RAM · ${t.disk_gb}GB disk · ${t.bandwidth_tb}TB BW`,
|
|
440
|
+
}));
|
|
441
|
+
return (React.createElement(Panel, { title: `Pick a VDS tier (${cat.name ?? cat.slug})`, paddingX: 3, paddingY: 1, width: 80 },
|
|
442
|
+
React.createElement(Menu, { items: items, initialIndex: Math.max(0, items.findIndex((i) => i.value === draft.tierIndex)), onSelect: (v) => {
|
|
443
|
+
setDraft((d) => ({
|
|
444
|
+
...d,
|
|
445
|
+
tierCategorySlug: cat.slug,
|
|
446
|
+
tierIndex: v,
|
|
447
|
+
// Reset downstream location so the next step re-picks based
|
|
448
|
+
// on where this tier is actually available.
|
|
449
|
+
locationId: null,
|
|
450
|
+
}));
|
|
451
|
+
goNext();
|
|
452
|
+
} })));
|
|
453
|
+
}
|
|
395
454
|
function VpsSpecStep({ customConfig, locations, userEmail, draft, setDraft, goNext, }) {
|
|
396
455
|
if (!customConfig?.enabled) {
|
|
397
456
|
return (React.createElement(Panel, { title: "Custom VPS unavailable", paddingX: 3, paddingY: 1, width: 80 },
|
|
398
|
-
React.createElement(Text, { color: colors.warning }, "Custom VPS spec is not currently offered. Pick GPU or
|
|
457
|
+
React.createElement(Text, { color: colors.warning }, "Custom VPS spec is not currently offered. Pick GPU or Instant Metal instead.")));
|
|
399
458
|
}
|
|
400
459
|
return (React.createElement(VpsSpecFieldsStep, { customConfig: customConfig, locations: locations, userEmail: userEmail, draft: draft, setDraft: setDraft, goNext: goNext }));
|
|
401
460
|
}
|
|
@@ -404,8 +463,7 @@ function VpsSpecFieldsStep({ customConfig, locations, userEmail, draft, setDraft
|
|
|
404
463
|
const dedicated = Boolean(draft.customSpec._dedicated);
|
|
405
464
|
const baseCfg = dedicated ? customConfig.dedicated : customConfig;
|
|
406
465
|
const initialCpu = draft.customSpec.cpu_cores ?? baseCfg.cpu_min;
|
|
407
|
-
const initialRamGb =
|
|
408
|
-
customConfig.ram_min_gb;
|
|
466
|
+
const initialRamGb = draft.customSpec.ram_gb ?? customConfig.ram_min_gb;
|
|
409
467
|
const initialDisk = draft.customSpec.disk_gb ?? customConfig.disk_min_gb;
|
|
410
468
|
const initialBw = draft.customSpec.bandwidth_tb ?? customConfig.bandwidth_min_tb;
|
|
411
469
|
const [cpu, setCpu] = useState(String(initialCpu));
|
|
@@ -437,7 +495,7 @@ function VpsSpecFieldsStep({ customConfig, locations, userEmail, draft, setDraft
|
|
|
437
495
|
api.vpsOrders
|
|
438
496
|
.customAvailability({
|
|
439
497
|
cpu_cores: cpuN,
|
|
440
|
-
|
|
498
|
+
ram_gb: ramN,
|
|
441
499
|
disk_gb: diskN,
|
|
442
500
|
location_id: loc.id,
|
|
443
501
|
dedicated,
|
|
@@ -463,7 +521,7 @@ function VpsSpecFieldsStep({ customConfig, locations, userEmail, draft, setDraft
|
|
|
463
521
|
customSpec: {
|
|
464
522
|
...d.customSpec,
|
|
465
523
|
cpu_cores: d.customSpec.cpu_cores ?? initialCpu,
|
|
466
|
-
|
|
524
|
+
ram_gb: d.customSpec.ram_gb ?? initialRamGb,
|
|
467
525
|
disk_gb: d.customSpec.disk_gb ?? initialDisk,
|
|
468
526
|
bandwidth_tb: d.customSpec.bandwidth_tb ?? initialBw,
|
|
469
527
|
},
|
|
@@ -511,7 +569,7 @@ function VpsSpecFieldsStep({ customConfig, locations, userEmail, draft, setDraft
|
|
|
511
569
|
customSpec: {
|
|
512
570
|
...d.customSpec,
|
|
513
571
|
cpu_cores: Number(cpu),
|
|
514
|
-
|
|
572
|
+
ram_gb: Number(ramGb),
|
|
515
573
|
disk_gb: Number(disk),
|
|
516
574
|
bandwidth_tb: Number(bw),
|
|
517
575
|
},
|
|
@@ -604,7 +662,7 @@ function VpsSpecFieldsStep({ customConfig, locations, userEmail, draft, setDraft
|
|
|
604
662
|
React.createElement(Box, { marginTop: 1 }),
|
|
605
663
|
React.createElement(NumberInput, { label: "CPU cores", value: cpu, onChange: (v) => liveSet(v, setCpu, (n) => ({ cpu_cores: n })), onSubmit: () => setSpecRow(2), min: cpuMin, max: cpuMax, step: cpuStep, unit: "vCPU", focused: specFocused && specRow === 1 }),
|
|
606
664
|
React.createElement(Box, { marginTop: 1 }),
|
|
607
|
-
React.createElement(NumberInput, { label: "RAM", value: ramGb, onChange: (v) => liveSet(v, setRamGb, (n) => ({
|
|
665
|
+
React.createElement(NumberInput, { label: "RAM", value: ramGb, onChange: (v) => liveSet(v, setRamGb, (n) => ({ ram_gb: n })), onSubmit: () => setSpecRow(3), min: ramMin, max: ramMax, step: ramStep, unit: "GB", focused: specFocused && specRow === 2 }),
|
|
608
666
|
React.createElement(Box, { marginTop: 1 }),
|
|
609
667
|
React.createElement(NumberInput, { label: "Disk", value: disk, onChange: (v) => liveSet(v, setDisk, (n) => ({ disk_gb: n })), onSubmit: () => setSpecRow(4), min: diskMin, max: diskMax, step: diskStep, unit: "GB NVMe", focused: specFocused && specRow === 3 }),
|
|
610
668
|
React.createElement(Box, { marginTop: 1 }),
|
|
@@ -989,11 +1047,20 @@ function SummaryStep({ draft, cat, onSubmit, onEdit, }) {
|
|
|
989
1047
|
const imageName = cat.orderCatalog?.images.find((i) => i.id === draft.imageId)?.display_name;
|
|
990
1048
|
const plan = cat.orderCatalog?.plans.find((p) => p.id === draft.planId);
|
|
991
1049
|
const chosenPm = cat.paymentMethods.find((m) => m.id === draft.paymentMethodId);
|
|
1050
|
+
// VDS: pull the picked tier's spec back out of the catalog for display.
|
|
1051
|
+
// The server owns the truth; we resolve here purely for the summary
|
|
1052
|
+
// preview so the user sees what they're about to buy.
|
|
1053
|
+
const vdsCat = draft.kind === "vds"
|
|
1054
|
+
? (cat.orderCatalog?.categories ?? []).find((c) => c.slug === draft.tierCategorySlug)
|
|
1055
|
+
: null;
|
|
1056
|
+
const vdsTier = vdsCat?.slider_config?.tiers?.[draft.tierIndex ?? -1];
|
|
992
1057
|
const specLine = draft.kind === "vps"
|
|
993
|
-
? `${draft.customSpec.cpu_cores ?? "?"} vCPU · ${
|
|
994
|
-
:
|
|
995
|
-
?
|
|
996
|
-
:
|
|
1058
|
+
? `${draft.customSpec.cpu_cores ?? "?"} vCPU · ${draft.customSpec.ram_gb ?? 0} GB RAM · ${draft.customSpec.disk_gb ?? "?"} GB disk${draft.customSpec.bandwidth_tb ? ` · ${draft.customSpec.bandwidth_tb} TB BW` : ""}${draft.customSpec._dedicated ? " · dedicated" : ""}`
|
|
1059
|
+
: draft.kind === "vds" && vdsTier
|
|
1060
|
+
? `Tier ${draft.tierIndex} — ${vdsTier.cpu}c ${vdsTier.ram_gb}G ${vdsTier.disk_gb}G · ${vdsTier.bandwidth_tb}TB BW ($${vdsTier.monthly_price}/mo)`
|
|
1061
|
+
: plan
|
|
1062
|
+
? `${plan.name} — ${plan.cpu_cores}c ${plan.ram_gb}G ${plan.disk_gb}G${plan.gpu_model ? ` · ${plan.gpu_model}` : ""}`
|
|
1063
|
+
: undefined;
|
|
997
1064
|
const paymentLabel = (() => {
|
|
998
1065
|
const parts = [];
|
|
999
1066
|
if (draft.applyCredits && cat.creditBalance > 0) {
|
|
@@ -1102,11 +1169,11 @@ function tipForStep(step, draft, cancelConfirm) {
|
|
|
1102
1169
|
}
|
|
1103
1170
|
}
|
|
1104
1171
|
function buildCustomSpec(s) {
|
|
1105
|
-
if (!s.cpu_cores || !s.
|
|
1172
|
+
if (!s.cpu_cores || !s.ram_gb || !s.disk_gb)
|
|
1106
1173
|
return undefined;
|
|
1107
1174
|
return {
|
|
1108
1175
|
cpu_cores: s.cpu_cores,
|
|
1109
|
-
|
|
1176
|
+
ram_gb: s.ram_gb,
|
|
1110
1177
|
disk_gb: s.disk_gb,
|
|
1111
1178
|
bandwidth_tb: s.bandwidth_tb,
|
|
1112
1179
|
dedicated: s._dedicated,
|
|
@@ -1132,14 +1199,23 @@ function estimateMonthlyCost(draft, cat) {
|
|
|
1132
1199
|
return { amount: plan.monthly_price, label: plan.name };
|
|
1133
1200
|
}
|
|
1134
1201
|
}
|
|
1202
|
+
if (draft.kind === "vds" && draft.tierCategorySlug && draft.tierIndex != null && cat.orderCatalog) {
|
|
1203
|
+
const vc = (cat.orderCatalog.categories ?? []).find((c) => c.slug === draft.tierCategorySlug);
|
|
1204
|
+
const t = vc?.slider_config?.tiers?.[draft.tierIndex];
|
|
1205
|
+
if (t) {
|
|
1206
|
+
return {
|
|
1207
|
+
amount: typeof t.monthly_price === "string" ? Number(t.monthly_price) : t.monthly_price,
|
|
1208
|
+
label: `VDS tier ${draft.tierIndex} · ${t.cpu}c ${t.ram_gb}GB ${t.disk_gb}GB`,
|
|
1209
|
+
};
|
|
1210
|
+
}
|
|
1211
|
+
}
|
|
1135
1212
|
if (draft.kind === "vps" && cat.orderCatalog?.custom_config) {
|
|
1136
1213
|
const cfg = cat.orderCatalog.custom_config;
|
|
1137
1214
|
const baseCfg = draft.customSpec._dedicated ? cfg.dedicated : cfg;
|
|
1138
1215
|
const cpu = draft.customSpec.cpu_cores;
|
|
1139
|
-
const
|
|
1216
|
+
const ramGb = draft.customSpec.ram_gb;
|
|
1140
1217
|
const disk = draft.customSpec.disk_gb;
|
|
1141
|
-
if (cpu &&
|
|
1142
|
-
const ramGb = ramMb / 1024;
|
|
1218
|
+
if (cpu && ramGb && disk) {
|
|
1143
1219
|
const bwTb = draft.customSpec.bandwidth_tb ?? cfg.bandwidth_included_tb;
|
|
1144
1220
|
const extraTb = Math.max(0, bwTb - cfg.bandwidth_included_tb);
|
|
1145
1221
|
const amount = baseCfg.base_price +
|