rackmind-cli 0.1.2 → 0.1.3
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/ai/tool-executor.d.ts.map +1 -1
- package/dist/ai/tool-executor.js +138 -41
- package/dist/ai/tool-executor.js.map +1 -1
- package/dist/ai/tools.js +4 -4
- package/dist/ai/tools.js.map +1 -1
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +126 -2
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/containers.d.ts +7 -2
- package/dist/commands/containers.d.ts.map +1 -1
- package/dist/commands/containers.js +30 -11
- package/dist/commands/containers.js.map +1 -1
- package/dist/commands/lifecycle.d.ts +6 -1
- package/dist/commands/lifecycle.d.ts.map +1 -1
- package/dist/commands/lifecycle.js +118 -25
- package/dist/commands/lifecycle.js.map +1 -1
- package/dist/commands/report.js +3 -3
- package/dist/commands/report.js.map +1 -1
- package/dist/commands/vms.d.ts +7 -2
- package/dist/commands/vms.d.ts.map +1 -1
- package/dist/commands/vms.js +30 -11
- package/dist/commands/vms.js.map +1 -1
- package/dist/index.js +28 -8
- package/dist/index.js.map +1 -1
- package/dist/server/client.d.ts +19 -2
- package/dist/server/client.d.ts.map +1 -1
- package/dist/server/client.js +27 -1
- package/dist/server/client.js.map +1 -1
- package/dist/server/proxmox.d.ts +54 -1
- package/dist/server/proxmox.d.ts.map +1 -1
- package/dist/server/proxmox.js +149 -12
- package/dist/server/proxmox.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"containers.js","sourceRoot":"","sources":["../../src/commands/containers.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4DAA4D;AAC5D,8EAA8E;AAC9E,8EAA8E;AAC9E
|
|
1
|
+
{"version":3,"file":"containers.js","sourceRoot":"","sources":["../../src/commands/containers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
type LifecycleAction = 'start' | 'stop' | 'restart';
|
|
2
|
+
export interface LifecycleCommandOptions {
|
|
3
|
+
force: boolean;
|
|
4
|
+
/** Skip task polling — return immediately after issuing the action */
|
|
5
|
+
noWait: boolean;
|
|
6
|
+
}
|
|
2
7
|
/**
|
|
3
8
|
* Perform a lifecycle action on a guest (container or VM).
|
|
4
9
|
*/
|
|
5
|
-
export declare function lifecycleCommand(vmidStr: string, action: LifecycleAction,
|
|
10
|
+
export declare function lifecycleCommand(vmidStr: string, action: LifecycleAction, options: LifecycleCommandOptions): Promise<void>;
|
|
6
11
|
export {};
|
|
7
12
|
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/commands/lifecycle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/commands/lifecycle.ts"],"names":[],"mappings":"AAkBA,KAAK,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAYpD,MAAM,WAAW,uBAAuB;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,sEAAsE;IACtE,MAAM,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAClC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,IAAI,CAAC,CAqLf"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
// ---------------------------------------------------------------------------
|
|
2
2
|
// rackmind start/stop/restart <vmid> — guest lifecycle commands
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
|
-
// Auto-detects whether the VMID is an LXC container or QEMU VM
|
|
5
|
-
// performs the requested action.
|
|
6
|
-
//
|
|
4
|
+
// Auto-detects whether the VMID is an LXC container or QEMU VM across all
|
|
5
|
+
// cluster nodes, then performs the requested action. Polls the task until
|
|
6
|
+
// completion by default (use --no-wait to skip). Destructive operations
|
|
7
|
+
// (stop, restart) require confirmation unless --force is passed.
|
|
7
8
|
// ---------------------------------------------------------------------------
|
|
8
9
|
import chalk from 'chalk';
|
|
9
10
|
import ora from 'ora';
|
|
10
|
-
import { ServerClient } from '../server/client.js';
|
|
11
|
+
import { ServerClient, ProxmoxApiError } from '../server/client.js';
|
|
11
12
|
import { readConfig } from '../config/index.js';
|
|
12
13
|
import { formatError, formatSuccess, formatWarning } from '../utils/format.js';
|
|
13
14
|
import { promptConfirm } from '../utils/prompt.js';
|
|
@@ -16,7 +17,7 @@ import { isQuietMode, isJsonMode } from '../globals.js';
|
|
|
16
17
|
/**
|
|
17
18
|
* Perform a lifecycle action on a guest (container or VM).
|
|
18
19
|
*/
|
|
19
|
-
export async function lifecycleCommand(vmidStr, action,
|
|
20
|
+
export async function lifecycleCommand(vmidStr, action, options) {
|
|
20
21
|
const vmid = parseInt(vmidStr, 10);
|
|
21
22
|
if (isNaN(vmid) || vmid <= 0) {
|
|
22
23
|
process.stderr.write(formatError(`Invalid VMID: "${vmidStr}" — must be a positive number`) + '\n');
|
|
@@ -32,10 +33,10 @@ export async function lifecycleCommand(vmidStr, action, force) {
|
|
|
32
33
|
process.exit(1);
|
|
33
34
|
}
|
|
34
35
|
try {
|
|
35
|
-
// Auto-detect guest type
|
|
36
|
+
// Auto-detect guest type across all cluster nodes
|
|
36
37
|
const guest = await detectGuestType(client, vmid);
|
|
37
38
|
if (!guest) {
|
|
38
|
-
process.stderr.write(formatError(`VMID ${vmid} not found as either an LXC container or QEMU VM`) + '\n');
|
|
39
|
+
process.stderr.write(formatError(`VMID ${vmid} not found as either an LXC container or QEMU VM on any cluster node`) + '\n');
|
|
39
40
|
process.exit(1);
|
|
40
41
|
}
|
|
41
42
|
// Validate action makes sense for current state
|
|
@@ -45,12 +46,13 @@ export async function lifecycleCommand(vmidStr, action, force) {
|
|
|
45
46
|
return;
|
|
46
47
|
}
|
|
47
48
|
// Confirm destructive actions
|
|
48
|
-
if (!force && (action === 'stop' || action === 'restart')) {
|
|
49
|
+
if (!options.force && (action === 'stop' || action === 'restart')) {
|
|
49
50
|
const config = readConfig();
|
|
50
51
|
if (config.preferences.confirmDestructive) {
|
|
51
52
|
const typeLabel = guest.type === 'lxc' ? 'container' : 'VM';
|
|
52
53
|
const nameLabel = guest.name ? ` (${guest.name})` : '';
|
|
53
|
-
const
|
|
54
|
+
const nodeLabel = ` on ${guest.node}`;
|
|
55
|
+
const confirmed = await promptConfirm(chalk.yellow(`This will ${action} ${typeLabel} ${vmid}${nameLabel}${nodeLabel}. Are you sure?`), false);
|
|
54
56
|
if (!confirmed) {
|
|
55
57
|
process.stderr.write(chalk.dim('Cancelled.\n'));
|
|
56
58
|
return;
|
|
@@ -64,31 +66,93 @@ export async function lifecycleCommand(vmidStr, action, force) {
|
|
|
64
66
|
const jsonMode = isJsonMode();
|
|
65
67
|
const spinner = quiet ? null : ora(`${actionLabel} ${typeLabel} ${vmid}...`).start();
|
|
66
68
|
try {
|
|
67
|
-
await performAction(client, guest, action);
|
|
69
|
+
const upid = await performAction(client, guest, action);
|
|
68
70
|
const pastTense = action === 'start' ? 'started' : action === 'stop' ? 'stopped' : 'restarted';
|
|
71
|
+
// Task polling — block until completion unless --no-wait
|
|
72
|
+
if (!options.noWait && upid) {
|
|
73
|
+
if (spinner) {
|
|
74
|
+
spinner.text = `${actionLabel} ${typeLabel} ${vmid} (waiting for task)...`;
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
await client.waitForTask(upid, guest.node);
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
81
|
+
if (jsonMode) {
|
|
82
|
+
const output = {
|
|
83
|
+
vmid,
|
|
84
|
+
type: guest.type,
|
|
85
|
+
name: guest.name,
|
|
86
|
+
node: guest.node,
|
|
87
|
+
action,
|
|
88
|
+
success: false,
|
|
89
|
+
error: msg,
|
|
90
|
+
upid,
|
|
91
|
+
};
|
|
92
|
+
if (spinner)
|
|
93
|
+
spinner.stop();
|
|
94
|
+
process.stdout.write(JSON.stringify(output, null, 2) + '\n');
|
|
95
|
+
}
|
|
96
|
+
else if (spinner) {
|
|
97
|
+
spinner.fail(`Task failed for ${typeLabel} ${vmid}: ${msg}`);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
process.stderr.write(formatError(msg) + '\n');
|
|
101
|
+
}
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
69
105
|
if (jsonMode) {
|
|
70
106
|
const output = {
|
|
71
107
|
vmid,
|
|
72
108
|
type: guest.type,
|
|
73
109
|
name: guest.name,
|
|
110
|
+
node: guest.node,
|
|
74
111
|
action,
|
|
75
112
|
success: true,
|
|
113
|
+
...(upid ? { upid } : {}),
|
|
114
|
+
waited: !options.noWait,
|
|
76
115
|
};
|
|
77
116
|
if (spinner)
|
|
78
117
|
spinner.stop();
|
|
79
118
|
process.stdout.write(JSON.stringify(output, null, 2) + '\n');
|
|
80
119
|
}
|
|
81
120
|
else if (spinner) {
|
|
82
|
-
|
|
121
|
+
const waitLabel = options.noWait ? ' (task submitted)' : '';
|
|
122
|
+
spinner.succeed(formatSuccess(`${typeLabel} ${vmid} ${pastTense} successfully${waitLabel}`));
|
|
83
123
|
}
|
|
84
124
|
}
|
|
85
125
|
catch (err) {
|
|
126
|
+
if (err instanceof ProxmoxApiError) {
|
|
127
|
+
const userMsg = err.toUserMessage();
|
|
128
|
+
if (jsonMode) {
|
|
129
|
+
const output = {
|
|
130
|
+
vmid,
|
|
131
|
+
type: guest.type,
|
|
132
|
+
name: guest.name,
|
|
133
|
+
node: guest.node,
|
|
134
|
+
action,
|
|
135
|
+
success: false,
|
|
136
|
+
error: err.message,
|
|
137
|
+
suggestion: err.suggestion || undefined,
|
|
138
|
+
};
|
|
139
|
+
if (spinner)
|
|
140
|
+
spinner.stop();
|
|
141
|
+
process.stdout.write(JSON.stringify(output, null, 2) + '\n');
|
|
142
|
+
}
|
|
143
|
+
else if (spinner) {
|
|
144
|
+
spinner.fail(`Failed to ${action} ${typeLabel} ${vmid}`);
|
|
145
|
+
process.stderr.write(formatError(userMsg) + '\n');
|
|
146
|
+
}
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
86
149
|
const message = err instanceof Error ? err.message : String(err);
|
|
87
150
|
if (jsonMode) {
|
|
88
151
|
const output = {
|
|
89
152
|
vmid,
|
|
90
153
|
type: guest.type,
|
|
91
154
|
name: guest.name,
|
|
155
|
+
node: guest.node,
|
|
92
156
|
action,
|
|
93
157
|
success: false,
|
|
94
158
|
error: message,
|
|
@@ -107,7 +171,11 @@ export async function lifecycleCommand(vmidStr, action, force) {
|
|
|
107
171
|
}
|
|
108
172
|
}
|
|
109
173
|
catch (err) {
|
|
110
|
-
const message = err instanceof
|
|
174
|
+
const message = err instanceof ProxmoxApiError
|
|
175
|
+
? err.toUserMessage()
|
|
176
|
+
: err instanceof Error
|
|
177
|
+
? err.message
|
|
178
|
+
: String(err);
|
|
111
179
|
logger.error('Lifecycle command failed', { error: message, vmid, action });
|
|
112
180
|
process.stderr.write(formatError(message) + '\n');
|
|
113
181
|
process.exit(1);
|
|
@@ -118,9 +186,37 @@ export async function lifecycleCommand(vmidStr, action, force) {
|
|
|
118
186
|
}
|
|
119
187
|
/**
|
|
120
188
|
* Detect whether a VMID belongs to an LXC container or QEMU VM.
|
|
121
|
-
*
|
|
189
|
+
* Uses /cluster/resources to search across ALL nodes in the cluster.
|
|
122
190
|
*/
|
|
123
191
|
async function detectGuestType(client, vmid) {
|
|
192
|
+
try {
|
|
193
|
+
// Search across all cluster nodes using /cluster/resources
|
|
194
|
+
const resources = await client.listResources('vm');
|
|
195
|
+
const match = resources.find((r) => r.vmid === vmid);
|
|
196
|
+
if (match) {
|
|
197
|
+
return {
|
|
198
|
+
vmid: match.vmid ?? vmid,
|
|
199
|
+
name: match.name ?? '',
|
|
200
|
+
type: match.type === 'lxc' ? 'lxc' : 'qemu',
|
|
201
|
+
status: match.status,
|
|
202
|
+
node: match.node,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
catch (err) {
|
|
207
|
+
logger.debug('Cluster resource lookup failed, falling back to single-node', {
|
|
208
|
+
vmid,
|
|
209
|
+
error: err instanceof Error ? err.message : String(err),
|
|
210
|
+
});
|
|
211
|
+
// Fallback: try single-node lookup
|
|
212
|
+
return await detectGuestTypeSingleNode(client, vmid);
|
|
213
|
+
}
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Fallback single-node guest detection (for non-cluster setups or permission issues).
|
|
218
|
+
*/
|
|
219
|
+
async function detectGuestTypeSingleNode(client, vmid) {
|
|
124
220
|
const node = await client.getNodeName();
|
|
125
221
|
// Try containers first
|
|
126
222
|
try {
|
|
@@ -132,6 +228,7 @@ async function detectGuestType(client, vmid) {
|
|
|
132
228
|
name: container.name,
|
|
133
229
|
type: 'lxc',
|
|
134
230
|
status: container.status,
|
|
231
|
+
node,
|
|
135
232
|
};
|
|
136
233
|
}
|
|
137
234
|
}
|
|
@@ -151,6 +248,7 @@ async function detectGuestType(client, vmid) {
|
|
|
151
248
|
name: vm.name,
|
|
152
249
|
type: 'qemu',
|
|
153
250
|
status: vm.status,
|
|
251
|
+
node,
|
|
154
252
|
};
|
|
155
253
|
}
|
|
156
254
|
}
|
|
@@ -181,32 +279,27 @@ function validateState(guest, action) {
|
|
|
181
279
|
}
|
|
182
280
|
/**
|
|
183
281
|
* Perform the lifecycle action on the Proxmox guest.
|
|
282
|
+
* Returns the UPID task string from Proxmox.
|
|
184
283
|
*/
|
|
185
284
|
async function performAction(client, guest, action) {
|
|
186
285
|
if (guest.type === 'lxc') {
|
|
187
286
|
switch (action) {
|
|
188
287
|
case 'start':
|
|
189
|
-
await client.startContainer(guest.vmid);
|
|
190
|
-
break;
|
|
288
|
+
return await client.startContainer(guest.vmid, guest.node);
|
|
191
289
|
case 'stop':
|
|
192
|
-
await client.stopContainer(guest.vmid);
|
|
193
|
-
break;
|
|
290
|
+
return await client.stopContainer(guest.vmid, guest.node);
|
|
194
291
|
case 'restart':
|
|
195
|
-
await client.restartContainer(guest.vmid);
|
|
196
|
-
break;
|
|
292
|
+
return await client.restartContainer(guest.vmid, guest.node);
|
|
197
293
|
}
|
|
198
294
|
}
|
|
199
295
|
else {
|
|
200
296
|
switch (action) {
|
|
201
297
|
case 'start':
|
|
202
|
-
await client.startVM(guest.vmid);
|
|
203
|
-
break;
|
|
298
|
+
return await client.startVM(guest.vmid, guest.node);
|
|
204
299
|
case 'stop':
|
|
205
|
-
await client.stopVM(guest.vmid);
|
|
206
|
-
break;
|
|
300
|
+
return await client.stopVM(guest.vmid, guest.node);
|
|
207
301
|
case 'restart':
|
|
208
|
-
await client.restartVM(guest.vmid);
|
|
209
|
-
break;
|
|
302
|
+
return await client.restartVM(guest.vmid, guest.node);
|
|
210
303
|
}
|
|
211
304
|
}
|
|
212
305
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/commands/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/commands/lifecycle.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/report.js
CHANGED
|
@@ -25,11 +25,11 @@ export async function reportCommand(format) {
|
|
|
25
25
|
}
|
|
26
26
|
try {
|
|
27
27
|
const node = await client.getNodeName();
|
|
28
|
-
// Fetch all data in parallel
|
|
28
|
+
// Fetch all data in parallel — use cluster-wide listing for multi-node support
|
|
29
29
|
const [nodes, containers, vms] = await Promise.all([
|
|
30
30
|
client.listNodes(),
|
|
31
|
-
client.
|
|
32
|
-
client.
|
|
31
|
+
client.listAllContainers(),
|
|
32
|
+
client.listAllVMs(),
|
|
33
33
|
]);
|
|
34
34
|
// Sort guests by VMID
|
|
35
35
|
containers.sort((a, b) => a.vmid - b.vmid);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,oDAAoD;AACpD,8EAA8E;AAC9E,wEAAwE;AACxE,8DAA8D;AAC9D,+CAA+C;AAC/C,8EAA8E;AAE9E,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACH,YAAY,GAIf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACH,WAAW,EACX,WAAW,EACX,aAAa,EACb,YAAY,EACZ,cAAc,EACd,WAAW,EACX,QAAQ,EACR,kBAAkB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAqD5C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAoB;IACpD,IAAI,MAAM,GAAwB,IAAI,CAAC;IAEvC,IAAI,CAAC;QACD,MAAM,GAAG,YAAY,CAAC,iBAAiB,EAAE,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QAExC
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/vms.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
export interface VMsCommandOptions {
|
|
2
|
+
json: boolean;
|
|
3
|
+
node?: string;
|
|
4
|
+
}
|
|
1
5
|
/**
|
|
2
|
-
* List all QEMU VMs
|
|
6
|
+
* List all QEMU VMs across all cluster nodes.
|
|
7
|
+
* Optionally filter by --node.
|
|
3
8
|
*/
|
|
4
|
-
export declare function vmsCommand(
|
|
9
|
+
export declare function vmsCommand(options: VMsCommandOptions): Promise<void>;
|
|
5
10
|
//# sourceMappingURL=vms.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vms.d.ts","sourceRoot":"","sources":["../../src/commands/vms.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vms.d.ts","sourceRoot":"","sources":["../../src/commands/vms.ts"],"names":[],"mappings":"AA0DA,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgF1E"}
|
package/dist/commands/vms.js
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
// rackmind vms (alias: vm) — list all QEMU virtual machines
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
4
|
// Fetches VMs from Proxmox API and displays them in a formatted table.
|
|
5
|
-
//
|
|
5
|
+
// Uses /cluster/resources to aggregate VMs across ALL cluster nodes.
|
|
6
|
+
// Supports --json for machine-readable output and --node to filter by node.
|
|
6
7
|
// ---------------------------------------------------------------------------
|
|
7
8
|
import chalk from 'chalk';
|
|
8
9
|
import { ServerClient } from '../server/client.js';
|
|
@@ -13,6 +14,7 @@ function toVMRow(vm) {
|
|
|
13
14
|
return {
|
|
14
15
|
vmid: vm.vmid,
|
|
15
16
|
name: vm.name,
|
|
17
|
+
node: vm.node,
|
|
16
18
|
status: vm.status,
|
|
17
19
|
cpus: vm.cpus,
|
|
18
20
|
memUsed: vm.mem,
|
|
@@ -27,9 +29,10 @@ function toVMRow(vm) {
|
|
|
27
29
|
};
|
|
28
30
|
}
|
|
29
31
|
/**
|
|
30
|
-
* List all QEMU VMs
|
|
32
|
+
* List all QEMU VMs across all cluster nodes.
|
|
33
|
+
* Optionally filter by --node.
|
|
31
34
|
*/
|
|
32
|
-
export async function vmsCommand(
|
|
35
|
+
export async function vmsCommand(options) {
|
|
33
36
|
let client = null;
|
|
34
37
|
try {
|
|
35
38
|
client = ServerClient.fromActiveProfile();
|
|
@@ -40,33 +43,49 @@ export async function vmsCommand(json) {
|
|
|
40
43
|
process.exit(1);
|
|
41
44
|
}
|
|
42
45
|
try {
|
|
43
|
-
|
|
44
|
-
|
|
46
|
+
// Use cluster-wide listing for multi-node support
|
|
47
|
+
let vms = await client.listAllVMs();
|
|
48
|
+
// Filter by node if specified
|
|
49
|
+
if (options.node) {
|
|
50
|
+
vms = vms.filter((vm) => vm.node === options.node);
|
|
51
|
+
}
|
|
45
52
|
// Sort by VMID
|
|
46
53
|
vms.sort((a, b) => a.vmid - b.vmid);
|
|
47
|
-
if (json) {
|
|
54
|
+
if (options.json) {
|
|
48
55
|
const rows = vms.map(toVMRow);
|
|
49
56
|
process.stdout.write(JSON.stringify(rows, null, 2) + '\n');
|
|
50
57
|
return;
|
|
51
58
|
}
|
|
52
59
|
if (vms.length === 0) {
|
|
53
|
-
|
|
60
|
+
const nodeLabel = options.node ? ` on node "${options.node}"` : '';
|
|
61
|
+
process.stderr.write(chalk.dim(`No QEMU virtual machines found${nodeLabel}.\n`));
|
|
54
62
|
return;
|
|
55
63
|
}
|
|
56
|
-
|
|
57
|
-
const
|
|
64
|
+
// Detect if multi-node (show node column only when there are multiple nodes)
|
|
65
|
+
const nodeNames = new Set(vms.map((vm) => vm.node));
|
|
66
|
+
const isMultiNode = nodeNames.size > 1;
|
|
67
|
+
const headerLabel = options.node
|
|
68
|
+
? `QEMU Virtual Machines on ${options.node}`
|
|
69
|
+
: 'QEMU Virtual Machines (all nodes)';
|
|
70
|
+
process.stderr.write(chalk.cyan.bold(`\n${headerLabel}`) + chalk.dim(` (${vms.length})\n\n`));
|
|
71
|
+
const headers = isMultiNode
|
|
72
|
+
? ['VMID', 'Name', 'Node', 'Status', 'CPUs', 'Memory', 'Disk', 'Uptime']
|
|
73
|
+
: ['VMID', 'Name', 'Status', 'CPUs', 'Memory', 'Disk', 'Uptime'];
|
|
74
|
+
const table = createTable(headers);
|
|
58
75
|
for (const vm of vms) {
|
|
59
76
|
const memRatio = vm.maxmem > 0 ? vm.mem / vm.maxmem : 0;
|
|
60
77
|
const diskRatio = vm.maxdisk > 0 ? vm.disk / vm.maxdisk : 0;
|
|
61
|
-
|
|
78
|
+
const row = [
|
|
62
79
|
String(vm.vmid),
|
|
63
80
|
truncate(vm.name || chalk.dim('(unnamed)'), 24),
|
|
81
|
+
...(isMultiNode ? [chalk.dim(vm.node)] : []),
|
|
64
82
|
colorStatus(vm.status),
|
|
65
83
|
String(vm.cpus),
|
|
66
84
|
`${formatBytes(vm.mem)} / ${formatBytes(vm.maxmem)} ${formatPercent(memRatio)}`,
|
|
67
85
|
`${formatBytes(vm.disk)} / ${formatBytes(vm.maxdisk)} ${formatPercent(diskRatio)}`,
|
|
68
86
|
formatUptime(vm.uptime),
|
|
69
|
-
]
|
|
87
|
+
];
|
|
88
|
+
table.push(row);
|
|
70
89
|
}
|
|
71
90
|
process.stderr.write(table.toString() + '\n\n');
|
|
72
91
|
}
|
package/dist/commands/vms.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vms.js","sourceRoot":"","sources":["../../src/commands/vms.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4DAA4D;AAC5D,8EAA8E;AAC9E,uEAAuE;AACvE
|
|
1
|
+
{"version":3,"file":"vms.js","sourceRoot":"","sources":["../../src/commands/vms.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -296,11 +296,15 @@ program
|
|
|
296
296
|
program
|
|
297
297
|
.command('containers')
|
|
298
298
|
.alias('ct')
|
|
299
|
-
.description('List all LXC containers')
|
|
299
|
+
.description('List all LXC containers across all cluster nodes')
|
|
300
300
|
.option('--json', 'Output in JSON format')
|
|
301
|
+
.option('--node <name>', 'Filter by cluster node name')
|
|
301
302
|
.action(async (options) => {
|
|
302
303
|
try {
|
|
303
|
-
await containersCommand(
|
|
304
|
+
await containersCommand({
|
|
305
|
+
json: Boolean(options.json) || isJsonMode(),
|
|
306
|
+
node: options.node,
|
|
307
|
+
});
|
|
304
308
|
}
|
|
305
309
|
catch (err) {
|
|
306
310
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -314,11 +318,15 @@ program
|
|
|
314
318
|
program
|
|
315
319
|
.command('vms')
|
|
316
320
|
.alias('vm')
|
|
317
|
-
.description('List all QEMU virtual machines')
|
|
321
|
+
.description('List all QEMU virtual machines across all cluster nodes')
|
|
318
322
|
.option('--json', 'Output in JSON format')
|
|
323
|
+
.option('--node <name>', 'Filter by cluster node name')
|
|
319
324
|
.action(async (options) => {
|
|
320
325
|
try {
|
|
321
|
-
await vmsCommand(
|
|
326
|
+
await vmsCommand({
|
|
327
|
+
json: Boolean(options.json) || isJsonMode(),
|
|
328
|
+
node: options.node,
|
|
329
|
+
});
|
|
322
330
|
}
|
|
323
331
|
catch (err) {
|
|
324
332
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -332,9 +340,13 @@ program
|
|
|
332
340
|
program
|
|
333
341
|
.command('start <vmid>')
|
|
334
342
|
.description('Start an LXC container or QEMU VM')
|
|
335
|
-
.
|
|
343
|
+
.option('--no-wait', 'Do not wait for the task to complete')
|
|
344
|
+
.action(async (vmid, options) => {
|
|
336
345
|
try {
|
|
337
|
-
await lifecycleCommand(vmid, 'start',
|
|
346
|
+
await lifecycleCommand(vmid, 'start', {
|
|
347
|
+
force: false,
|
|
348
|
+
noWait: options.wait === false,
|
|
349
|
+
});
|
|
338
350
|
}
|
|
339
351
|
catch (err) {
|
|
340
352
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -349,9 +361,13 @@ program
|
|
|
349
361
|
.command('stop <vmid>')
|
|
350
362
|
.description('Stop an LXC container or QEMU VM')
|
|
351
363
|
.option('--force', 'Skip confirmation prompt')
|
|
364
|
+
.option('--no-wait', 'Do not wait for the task to complete')
|
|
352
365
|
.action(async (vmid, options) => {
|
|
353
366
|
try {
|
|
354
|
-
await lifecycleCommand(vmid, 'stop',
|
|
367
|
+
await lifecycleCommand(vmid, 'stop', {
|
|
368
|
+
force: Boolean(options.force),
|
|
369
|
+
noWait: options.wait === false,
|
|
370
|
+
});
|
|
355
371
|
}
|
|
356
372
|
catch (err) {
|
|
357
373
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -366,9 +382,13 @@ program
|
|
|
366
382
|
.command('restart <vmid>')
|
|
367
383
|
.description('Restart an LXC container or QEMU VM')
|
|
368
384
|
.option('--force', 'Skip confirmation prompt')
|
|
385
|
+
.option('--no-wait', 'Do not wait for the task to complete')
|
|
369
386
|
.action(async (vmid, options) => {
|
|
370
387
|
try {
|
|
371
|
-
await lifecycleCommand(vmid, 'restart',
|
|
388
|
+
await lifecycleCommand(vmid, 'restart', {
|
|
389
|
+
force: Boolean(options.force),
|
|
390
|
+
noWait: options.wait === false,
|
|
391
|
+
});
|
|
372
392
|
}
|
|
373
393
|
catch (err) {
|
|
374
394
|
const message = err instanceof Error ? err.message : String(err);
|