anycloud 0.0.29 → 0.0.31
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/binaries/anycloud-darwin-arm64 +0 -0
- package/binaries/anycloud-darwin-x64 +0 -0
- package/binaries/anycloud-linux-arm64 +0 -0
- package/binaries/anycloud-linux-x64 +0 -0
- package/dist/cli/commands/daemon/index.js +5 -3
- package/dist/cli/commands/daemon/index.js.map +1 -1
- package/dist/cli/commands/list.js +12 -14
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/logs.js +39 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/ssh.js +23 -158
- package/dist/cli/commands/ssh.js.map +1 -1
- package/dist/cli/commands/status.js +10 -14
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/terminate.js +16 -16
- package/dist/cli/commands/terminate.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/services/ssh.js +197 -0
- package/dist/cli/services/ssh.js.map +1 -0
- package/dist/shared/types.js +0 -11
- package/dist/shared/types.js.map +1 -1
- package/dist/shared/utils.js +38 -2
- package/dist/shared/utils.js.map +1 -1
- package/package.json +2 -1
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
import { readFileSync } from 'fs';
|
|
2
3
|
import { log } from '../../../daemon/logger.js';
|
|
3
4
|
import { Coordinator } from '../../../daemon/cluster.js';
|
|
4
5
|
export function createDaemonCommand() {
|
|
5
6
|
return new Command('daemon')
|
|
6
7
|
.description('Start the AnyCloud daemon (runs on VMs)')
|
|
7
|
-
.argument('<props-
|
|
8
|
+
.argument('<props-file>', 'Path to JSON file containing DeploymentProps')
|
|
8
9
|
.argument('<conductor-url>', 'URL of the conductor to connect to')
|
|
9
|
-
.action(async (
|
|
10
|
+
.action(async (propsFile, conductorUrl) => {
|
|
10
11
|
try {
|
|
11
|
-
//
|
|
12
|
+
// Read deployment props from file
|
|
13
|
+
const propsJson = readFileSync(propsFile, 'utf-8');
|
|
12
14
|
const deploymentProps = JSON.parse(propsJson);
|
|
13
15
|
log.info('Starting AnyCloud Daemon', {
|
|
14
16
|
deploymentId: deploymentProps.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/commands/daemon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAGzD,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,yCAAyC,CAAC;SACtD,QAAQ,CAAC,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/commands/daemon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAGzD,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,yCAAyC,CAAC;SACtD,QAAQ,CAAC,cAAc,EAAE,8CAA8C,CAAC;SACxE,QAAQ,CAAC,iBAAiB,EAAE,oCAAoC,CAAC;SACjE,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,YAAoB,EAAE,EAAE;QACxD,IAAI,CAAC;YACH,kCAAkC;YAClC,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACnD,MAAM,eAAe,GAAoB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAE/D,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE;gBACnC,YAAY,EAAE,eAAe,CAAC,EAAE;gBAChC,cAAc,EAAE,eAAe,CAAC,cAAc;gBAC9C,WAAW,EAAE,OAAO,CAAC,OAAO;aAC7B,CAAC,CAAC;YAEH,yBAAyB;YACzB,oBAAoB,EAAE,CAAC;YAEvB,+BAA+B;YAC/B,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;YACtC,MAAM,WAAW,CAAC,KAAK,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;YAEvD,oBAAoB;YACpB,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;gBAC1B,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBACrC,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC,CAAC;YAEF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAE/B,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAExC,qBAAqB;YACrB,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,oBAAoB;IAC3B,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAY,EAAE,EAAE;QAC/C,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE;YAC9B,KAAK,EAAE,KAAK,CAAC,OAAO;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;QACH,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAe,EAAE,EAAE;QACnD,GAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -9,22 +9,18 @@ export function createListCommand() {
|
|
|
9
9
|
return new Command('list')
|
|
10
10
|
.alias('ls')
|
|
11
11
|
.description('📋 List all deployments')
|
|
12
|
-
.option('--
|
|
13
|
-
.option('--
|
|
12
|
+
.option('-n, --limit <number>', 'Number of deployments to show', '20')
|
|
13
|
+
.option('--all', 'Show all deployments')
|
|
14
14
|
.addHelpText('after', `
|
|
15
15
|
Examples:
|
|
16
|
-
$ anycloud list
|
|
17
|
-
$ anycloud list
|
|
18
|
-
$ anycloud list --
|
|
16
|
+
$ anycloud list # last 20 deployments (default)
|
|
17
|
+
$ anycloud list -n 50 # last 50 deployments
|
|
18
|
+
$ anycloud list --all # all deployments
|
|
19
19
|
`)
|
|
20
20
|
.action(async (options) => {
|
|
21
21
|
try {
|
|
22
|
-
// Determine
|
|
23
|
-
const
|
|
24
|
-
? 'all'
|
|
25
|
-
: options?.active
|
|
26
|
-
? 'active'
|
|
27
|
-
: 'default';
|
|
22
|
+
// Determine limit from flags
|
|
23
|
+
const limit = options?.all ? 0 : parseInt(options?.limit || '20', 10);
|
|
28
24
|
// Get GitHub token
|
|
29
25
|
const accessToken = await getGitHubToken();
|
|
30
26
|
// Fetch deployments
|
|
@@ -32,7 +28,7 @@ Examples:
|
|
|
32
28
|
const deployments = await listDeployments({
|
|
33
29
|
accessToken,
|
|
34
30
|
version: packageJson.version,
|
|
35
|
-
|
|
31
|
+
limit,
|
|
36
32
|
});
|
|
37
33
|
spinner.stop();
|
|
38
34
|
if (deployments.length === 0) {
|
|
@@ -49,11 +45,12 @@ Examples:
|
|
|
49
45
|
vmType: 24,
|
|
50
46
|
bucket: 16,
|
|
51
47
|
age: 6,
|
|
48
|
+
vm: 4,
|
|
52
49
|
spot: 3,
|
|
53
50
|
};
|
|
54
51
|
// Print header
|
|
55
52
|
console.log('');
|
|
56
|
-
console.log(chalk.cyan(`${'ID'.padEnd(cols.id)}${'IMAGE'.padEnd(cols.image)}${'CLOUD'.padEnd(cols.cloud)}${'REGION'.padEnd(cols.region)}${'ZONE'.padEnd(cols.zone)}${'VM TYPE'.padEnd(cols.vmType)}${'BUCKET'.padEnd(cols.bucket)}${'AGE'.padEnd(cols.age)}SPOT STATE`));
|
|
53
|
+
console.log(chalk.cyan(`${'ID'.padEnd(cols.id)}${'IMAGE'.padEnd(cols.image)}${'CLOUD'.padEnd(cols.cloud)}${'REGION'.padEnd(cols.region)}${'ZONE'.padEnd(cols.zone)}${'VM TYPE'.padEnd(cols.vmType)}${'BUCKET'.padEnd(cols.bucket)}${'AGE'.padEnd(cols.age)}${'VM'.padEnd(cols.vm)}SPOT STATE`));
|
|
57
54
|
// Print rows
|
|
58
55
|
for (const d of deployments) {
|
|
59
56
|
const emoji = stateEmoji[d.state] || '❓';
|
|
@@ -76,8 +73,9 @@ Examples:
|
|
|
76
73
|
const vmType = (d.vmType || '-').padEnd(cols.vmType);
|
|
77
74
|
const bucket = (d.bucketName || '-').padEnd(cols.bucket);
|
|
78
75
|
const ageStr = age.padEnd(cols.age);
|
|
76
|
+
const vmCount = String(d.vmCount ?? '?').padEnd(cols.vm);
|
|
79
77
|
const spot = d.spot ? '✓ ' : ' ';
|
|
80
|
-
console.log(`${id}${img}${cloud}${region}${zone}${vmType}${bucket}${ageStr}${spot}${d.state} ${emoji}`);
|
|
78
|
+
console.log(`${id}${img}${cloud}${region}${zone}${vmType}${bucket}${ageStr}${vmCount}${spot}${d.state} ${emoji}`);
|
|
81
79
|
}
|
|
82
80
|
console.log('');
|
|
83
81
|
printInfo(`${deployments.length} deployment(s)`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,SAAS,EACT,UAAU,EACV,aAAa,EACb,SAAS,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,WAAW,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEtE,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;SACvB,KAAK,CAAC,IAAI,CAAC;SACX,WAAW,CAAC,yBAAyB,CAAC;SACtC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cli/commands/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { resolveSSHContext, spawnSSH } from '../services/ssh.js';
|
|
3
|
+
import { printInfo, printError } from '../utils/output.js';
|
|
4
|
+
export function createLogsCommand() {
|
|
5
|
+
return new Command('logs')
|
|
6
|
+
.description('📜 View container logs from a deployment')
|
|
7
|
+
.argument('[id]', 'Deployment ID (optional - will prompt to select if not provided)')
|
|
8
|
+
.option('-f, --follow', 'Follow log output')
|
|
9
|
+
.addHelpText('after', `
|
|
10
|
+
Examples:
|
|
11
|
+
$ anycloud logs
|
|
12
|
+
$ anycloud logs job-abc123
|
|
13
|
+
$ anycloud logs job-abc123 -f # Follow/tail logs in real-time
|
|
14
|
+
`)
|
|
15
|
+
.action(async (id, options) => {
|
|
16
|
+
try {
|
|
17
|
+
const ctx = await resolveSSHContext({ id });
|
|
18
|
+
if (!ctx) {
|
|
19
|
+
process.exit(0);
|
|
20
|
+
}
|
|
21
|
+
printInfo(`Fetching logs from ${ctx.vmIp}...`);
|
|
22
|
+
console.log('');
|
|
23
|
+
const dockerCmd = options?.follow
|
|
24
|
+
? `docker logs -f ${ctx.deploymentId}`
|
|
25
|
+
: `docker logs ${ctx.deploymentId}`;
|
|
26
|
+
spawnSSH({
|
|
27
|
+
deploymentId: ctx.deploymentId,
|
|
28
|
+
vmIp: ctx.vmIp,
|
|
29
|
+
sshPrivateKey: ctx.sshPrivateKey,
|
|
30
|
+
command: dockerCmd,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
printError(`Failed to fetch logs: ${error.message}`);
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/cli/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;SACvB,WAAW,CAAC,0CAA0C,CAAC;SACvD,QAAQ,CACP,MAAM,EACN,kEAAkE,CACnE;SACA,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC;SAC3C,WAAW,CACV,OAAO,EACP;;;;;CAKL,CACI;SACA,MAAM,CAAC,KAAK,EAAE,EAAW,EAAE,OAA8B,EAAE,EAAE;QAC5D,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,SAAS,CAAC,sBAAsB,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,MAAM,SAAS,GAAG,OAAO,EAAE,MAAM;gBAC/B,CAAC,CAAC,kBAAkB,GAAG,CAAC,YAAY,EAAE;gBACtC,CAAC,CAAC,eAAe,GAAG,CAAC,YAAY,EAAE,CAAC;YAEtC,QAAQ,CAAC;gBACP,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,OAAO,EAAE,SAAS;aACnB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,yBAA0B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/cli/commands/ssh.js
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
import { spawn } from 'child_process';
|
|
3
|
-
import { writeFileSync, unlinkSync } from 'fs';
|
|
4
|
-
import { tmpdir } from 'os';
|
|
5
|
-
import { join } from 'path';
|
|
6
2
|
import prompts from 'prompts';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { printInfo, printError, createSpinner, selectDeployment, } from '../utils/output.js';
|
|
10
|
-
import { isNonInteractive, getEnvOptional, } from '../services/non-interactive.js';
|
|
11
|
-
import { DeploymentState, isExitedState, isVmAccessible, } from '../../shared/types.js';
|
|
12
|
-
import packageJson from '../../../package.json' with { type: 'json' };
|
|
3
|
+
import { resolveSSHContext, spawnSSH } from '../services/ssh.js';
|
|
4
|
+
import { printInfo, printError } from '../utils/output.js';
|
|
13
5
|
export function createSshCommand() {
|
|
14
6
|
return new Command('ssh')
|
|
15
7
|
.description('🔌 SSH into a deployment container')
|
|
@@ -26,113 +18,17 @@ Use --vm to SSH directly to the VM without entering the container.
|
|
|
26
18
|
`)
|
|
27
19
|
.action(async (id, options) => {
|
|
28
20
|
try {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
if (!
|
|
35
|
-
|
|
36
|
-
deploymentId = getEnvOptional('ANYCLOUD_DEPLOYMENT_ID');
|
|
37
|
-
if (!deploymentId) {
|
|
38
|
-
printError('Non-interactive mode: Deployment ID required.\n' +
|
|
39
|
-
' Provide ID as argument or set ANYCLOUD_DEPLOYMENT_ID environment variable.');
|
|
40
|
-
process.exit(1);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
const loadingSpinner = createSpinner('Loading deployments...').start();
|
|
45
|
-
const deployments = await listDeployments({
|
|
46
|
-
accessToken,
|
|
47
|
-
version: packageJson.version,
|
|
48
|
-
});
|
|
49
|
-
loadingSpinner.stop();
|
|
50
|
-
if (deployments.length === 0) {
|
|
51
|
-
printInfo('No deployments found.');
|
|
52
|
-
process.exit(0);
|
|
53
|
-
}
|
|
54
|
-
console.log('');
|
|
55
|
-
const selectedDeployment = await selectDeployment(deployments);
|
|
56
|
-
if (!selectedDeployment) {
|
|
57
|
-
process.exit(0);
|
|
58
|
-
}
|
|
59
|
-
// Check if VM is accessible
|
|
60
|
-
if (!isVmAccessible(selectedDeployment.state)) {
|
|
61
|
-
printError(`Deployment is ${selectedDeployment.state}.\n` +
|
|
62
|
-
' Cannot SSH - VM is not accessible.');
|
|
63
|
-
process.exit(1);
|
|
64
|
-
}
|
|
65
|
-
// Block container SSH during starting (container may not exist yet)
|
|
66
|
-
if (selectedDeployment.state === DeploymentState.Starting &&
|
|
67
|
-
!options?.vm) {
|
|
68
|
-
printError(`Deployment is still starting (container may not be ready).\n` +
|
|
69
|
-
' Use "anycloud ssh --vm" to SSH directly to the VM.\n' +
|
|
70
|
-
' Or wait for the deployment to be running.');
|
|
71
|
-
process.exit(1);
|
|
72
|
-
}
|
|
73
|
-
deploymentId = selectedDeployment.id;
|
|
74
|
-
isCompletedJob = isExitedState(selectedDeployment.state);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
// Load credentials and SSH key for this deployment
|
|
78
|
-
let credentials;
|
|
79
|
-
let sshPrivateKey;
|
|
80
|
-
try {
|
|
81
|
-
credentials = await loadDeploymentCredentials(deploymentId);
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
printError(`Credentials not found for deployment ${deploymentId}.\n` +
|
|
85
|
-
' This deployment may have been created from a different machine.\n' +
|
|
86
|
-
' Email support@anycloud.sh to reclaim it.');
|
|
87
|
-
process.exit(1);
|
|
88
|
-
}
|
|
89
|
-
try {
|
|
90
|
-
sshPrivateKey = await loadSshKey(deploymentId);
|
|
91
|
-
}
|
|
92
|
-
catch {
|
|
93
|
-
printError(`SSH key not found for deployment ${deploymentId}.\n` +
|
|
94
|
-
' This deployment may have been created from a different machine.\n' +
|
|
95
|
-
' Email support@anycloud.sh to reclaim it.');
|
|
96
|
-
process.exit(1);
|
|
97
|
-
}
|
|
98
|
-
// Get VM IPs
|
|
99
|
-
const spinner = createSpinner('Getting VM info...').start();
|
|
100
|
-
const statusRequest = {
|
|
101
|
-
id: deploymentId,
|
|
102
|
-
credentials,
|
|
103
|
-
accessToken,
|
|
104
|
-
version: packageJson.version,
|
|
105
|
-
sshPrivateKey,
|
|
106
|
-
};
|
|
107
|
-
const response = await getDeploymentStatus(statusRequest);
|
|
108
|
-
spinner.stop();
|
|
109
|
-
if (!response.vmStatuses || response.vmStatuses.length === 0) {
|
|
110
|
-
printError('No VMs found for this deployment.');
|
|
111
|
-
process.exit(1);
|
|
112
|
-
}
|
|
113
|
-
// Select VM IP
|
|
114
|
-
let vmIp;
|
|
115
|
-
if (response.vmStatuses.length === 1) {
|
|
116
|
-
vmIp = response.vmStatuses[0].ip;
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
// Multiple VMs - prompt for selection
|
|
120
|
-
const vmSelection = await prompts({
|
|
121
|
-
type: 'select',
|
|
122
|
-
name: 'ip',
|
|
123
|
-
message: 'Select VM to connect to:',
|
|
124
|
-
choices: response.vmStatuses.map((vm) => ({
|
|
125
|
-
title: vm.ip,
|
|
126
|
-
value: vm.ip,
|
|
127
|
-
})),
|
|
128
|
-
});
|
|
129
|
-
if (!vmSelection.ip) {
|
|
130
|
-
process.exit(0);
|
|
131
|
-
}
|
|
132
|
-
vmIp = vmSelection.ip;
|
|
21
|
+
const vmOnly = options?.vm ?? false;
|
|
22
|
+
const ctx = await resolveSSHContext({
|
|
23
|
+
id,
|
|
24
|
+
filterStarting: !vmOnly,
|
|
25
|
+
});
|
|
26
|
+
if (!ctx) {
|
|
27
|
+
process.exit(0);
|
|
133
28
|
}
|
|
29
|
+
const { deploymentId, vmIp, sshPrivateKey, isCompletedJob } = ctx;
|
|
134
30
|
// If job completed/errored, container has exited - prompt for snapshot
|
|
135
|
-
if (isCompletedJob && !
|
|
31
|
+
if (isCompletedJob && !vmOnly) {
|
|
136
32
|
const { proceed } = await prompts({
|
|
137
33
|
type: 'confirm',
|
|
138
34
|
name: 'proceed',
|
|
@@ -144,30 +40,12 @@ Use --vm to SSH directly to the VM without entering the container.
|
|
|
144
40
|
process.exit(0);
|
|
145
41
|
}
|
|
146
42
|
}
|
|
147
|
-
// Write SSH key to temp file
|
|
148
|
-
const keyFile = join(tmpdir(), `anycloud-ssh-${deploymentId}-${Date.now()}`);
|
|
149
|
-
writeFileSync(keyFile, sshPrivateKey, { mode: 0o600 });
|
|
150
|
-
const vmOnly = options?.vm ?? false;
|
|
151
43
|
printInfo(vmOnly
|
|
152
44
|
? `Connecting to VM ${vmIp}...`
|
|
153
45
|
: `Connecting to container on ${vmIp}...`);
|
|
154
46
|
console.log('');
|
|
155
|
-
//
|
|
156
|
-
|
|
157
|
-
'-i',
|
|
158
|
-
keyFile,
|
|
159
|
-
'-p',
|
|
160
|
-
'22',
|
|
161
|
-
'-o',
|
|
162
|
-
'StrictHostKeyChecking=no',
|
|
163
|
-
'-o',
|
|
164
|
-
'UserKnownHostsFile=/dev/null',
|
|
165
|
-
'-o',
|
|
166
|
-
'LogLevel=ERROR',
|
|
167
|
-
'-t',
|
|
168
|
-
`root@${vmIp}`,
|
|
169
|
-
];
|
|
170
|
-
// Add docker exec command unless --vm flag is set
|
|
47
|
+
// Build docker command unless --vm flag is set
|
|
48
|
+
let command;
|
|
171
49
|
if (!vmOnly) {
|
|
172
50
|
const snapshotName = `${deploymentId}-snapshot`;
|
|
173
51
|
// Get volume mounts from original container and pass to snapshot
|
|
@@ -176,34 +54,21 @@ Use --vm to SSH directly to the VM without entering the container.
|
|
|
176
54
|
const runSnapshot = `docker run -it --rm $MOUNTS ${snapshotName} bash`;
|
|
177
55
|
if (isCompletedJob) {
|
|
178
56
|
// Container exited - snapshot and run shell with volume mounts
|
|
179
|
-
|
|
57
|
+
command = `${getMounts} && docker commit ${deploymentId} ${snapshotName} && ${runSnapshot}`;
|
|
180
58
|
}
|
|
181
59
|
else {
|
|
182
60
|
// Try exec first, fallback to snapshot if container exited (handles direct ID case)
|
|
183
|
-
|
|
184
|
-
`
|
|
61
|
+
command =
|
|
62
|
+
`docker exec -it ${deploymentId} bash 2>/dev/null || ` +
|
|
63
|
+
`(${getMounts} && docker commit ${deploymentId} ${snapshotName} && ${runSnapshot})`;
|
|
185
64
|
}
|
|
186
65
|
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
catch {
|
|
194
|
-
// Ignore cleanup errors
|
|
195
|
-
}
|
|
196
|
-
process.exit(code ?? 0);
|
|
197
|
-
});
|
|
198
|
-
sshProcess.on('error', (err) => {
|
|
199
|
-
try {
|
|
200
|
-
unlinkSync(keyFile);
|
|
201
|
-
}
|
|
202
|
-
catch {
|
|
203
|
-
// Ignore cleanup errors
|
|
204
|
-
}
|
|
205
|
-
printError(`SSH failed: ${err.message}`);
|
|
206
|
-
process.exit(1);
|
|
66
|
+
spawnSSH({
|
|
67
|
+
deploymentId,
|
|
68
|
+
vmIp,
|
|
69
|
+
sshPrivateKey,
|
|
70
|
+
command,
|
|
71
|
+
interactive: true,
|
|
207
72
|
});
|
|
208
73
|
}
|
|
209
74
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssh.js","sourceRoot":"","sources":["../../../src/cli/commands/ssh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"ssh.js","sourceRoot":"","sources":["../../../src/cli/commands/ssh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;SACtB,WAAW,CAAC,oCAAoC,CAAC;SACjD,QAAQ,CACP,MAAM,EACN,kEAAkE,CACnE;SACA,MAAM,CAAC,MAAM,EAAE,kDAAkD,CAAC;SAClE,WAAW,CACV,OAAO,EACP;;;;;;;;CAQL,CACI;SACA,MAAM,CAAC,KAAK,EAAE,EAAW,EAAE,OAA0B,EAAE,EAAE;QACxD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,OAAO,EAAE,EAAE,IAAI,KAAK,CAAC;YAEpC,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC;gBAClC,EAAE;gBACF,cAAc,EAAE,CAAC,MAAM;aACxB,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC;YAElE,uEAAuE;YACvE,IAAI,cAAc,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC9B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC;oBAChC,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,SAAS;oBACf,OAAO,EACL,mGAAmG;oBACrG,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;gBAEH,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,SAAS,CAAC,6CAA6C,CAAC,CAAC;oBACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,SAAS,CACP,MAAM;gBACJ,CAAC,CAAC,oBAAoB,IAAI,KAAK;gBAC/B,CAAC,CAAC,8BAA8B,IAAI,KAAK,CAC5C,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,+CAA+C;YAC/C,IAAI,OAA2B,CAAC;YAChC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,YAAY,GAAG,GAAG,YAAY,WAAW,CAAC;gBAChD,iEAAiE;gBACjE,2EAA2E;gBAC3E,MAAM,SAAS,GAAG,+FAA+F,YAAY,eAAe,CAAC;gBAC7I,MAAM,WAAW,GAAG,+BAA+B,YAAY,OAAO,CAAC;gBAEvE,IAAI,cAAc,EAAE,CAAC;oBACnB,+DAA+D;oBAC/D,OAAO,GAAG,GAAG,SAAS,qBAAqB,YAAY,IAAI,YAAY,OAAO,WAAW,EAAE,CAAC;gBAC9F,CAAC;qBAAM,CAAC;oBACN,oFAAoF;oBACpF,OAAO;wBACL,mBAAmB,YAAY,uBAAuB;4BACtD,IAAI,SAAS,qBAAqB,YAAY,IAAI,YAAY,OAAO,WAAW,GAAG,CAAC;gBACxF,CAAC;YACH,CAAC;YAED,QAAQ,CAAC;gBACP,YAAY;gBACZ,IAAI;gBACJ,aAAa;gBACb,OAAO;gBACP,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,sBAAuB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -74,16 +74,16 @@ export function createStatusCommand() {
|
|
|
74
74
|
return new Command('status')
|
|
75
75
|
.description('📊 Get deployment status')
|
|
76
76
|
.argument('[id]', 'Deployment ID (optional - will prompt to select if not provided)')
|
|
77
|
-
.option('--
|
|
78
|
-
.option('--
|
|
77
|
+
.option('-n, --limit <number>', 'Number of deployments to show', '20')
|
|
78
|
+
.option('--all', 'Show all deployments')
|
|
79
79
|
.addHelpText('after', `
|
|
80
80
|
Examples:
|
|
81
81
|
$ anycloud status anycloud-123153255
|
|
82
82
|
$ anycloud status
|
|
83
|
-
$ anycloud status
|
|
84
|
-
$ anycloud status --
|
|
83
|
+
$ anycloud status -n 50 # select from last 50 deployments
|
|
84
|
+
$ anycloud status --all # select from all deployments
|
|
85
85
|
|
|
86
|
-
By default, shows
|
|
86
|
+
By default, shows the last 20 deployments.
|
|
87
87
|
|
|
88
88
|
Selection:
|
|
89
89
|
anycloud-123153255 - myapp running ⚡
|
|
@@ -110,12 +110,8 @@ Output:
|
|
|
110
110
|
try {
|
|
111
111
|
let deploymentId = id;
|
|
112
112
|
let selectedDeployment;
|
|
113
|
-
// Determine
|
|
114
|
-
const
|
|
115
|
-
? 'all'
|
|
116
|
-
: options?.active
|
|
117
|
-
? 'active'
|
|
118
|
-
: 'default';
|
|
113
|
+
// Determine limit from flags
|
|
114
|
+
const limit = options?.all ? 0 : parseInt(options?.limit || '20', 10);
|
|
119
115
|
// Get GitHub token
|
|
120
116
|
const accessToken = await getGitHubToken();
|
|
121
117
|
// If no ID provided, fetch and prompt for selection
|
|
@@ -130,12 +126,12 @@ Output:
|
|
|
130
126
|
}
|
|
131
127
|
}
|
|
132
128
|
else {
|
|
133
|
-
// List deployments
|
|
129
|
+
// List deployments
|
|
134
130
|
const loadingSpinner = createSpinner('Loading deployments...').start();
|
|
135
131
|
const deployments = await listDeployments({
|
|
136
132
|
accessToken,
|
|
137
133
|
version: packageJson.version,
|
|
138
|
-
|
|
134
|
+
limit,
|
|
139
135
|
});
|
|
140
136
|
loadingSpinner.stop();
|
|
141
137
|
if (deployments.length === 0) {
|
|
@@ -157,7 +153,7 @@ Output:
|
|
|
157
153
|
const deployments = await listDeployments({
|
|
158
154
|
accessToken,
|
|
159
155
|
version: packageJson.version,
|
|
160
|
-
|
|
156
|
+
limit: 0, // Fetch all to find the specific deployment
|
|
161
157
|
});
|
|
162
158
|
selectedDeployment = deployments.find((d) => d.id === deploymentId);
|
|
163
159
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,17 +40,17 @@ Output:
|
|
|
40
40
|
deploymentIds = envIds.split(',').map((id) => id.trim());
|
|
41
41
|
}
|
|
42
42
|
else {
|
|
43
|
-
// List all deployments
|
|
43
|
+
// List all deployments, only show those with active VMs
|
|
44
44
|
const loadingSpinner = createSpinner('Loading deployments...').start();
|
|
45
|
-
const
|
|
45
|
+
const allDeployments = await listDeployments({
|
|
46
46
|
accessToken,
|
|
47
47
|
version: packageJson.version,
|
|
48
|
-
|
|
48
|
+
limit: 0,
|
|
49
49
|
});
|
|
50
|
+
const deployments = allDeployments.filter((d) => (d.vmCount ?? 1) > 0);
|
|
50
51
|
loadingSpinner.stop();
|
|
51
52
|
if (deployments.length === 0) {
|
|
52
|
-
printInfo('No
|
|
53
|
-
printInfo('Only active deployments can be terminated. Inactive deployments are already stopped.');
|
|
53
|
+
printInfo('No deployments to terminate.');
|
|
54
54
|
process.exit(0);
|
|
55
55
|
}
|
|
56
56
|
// Prompt for deployment selection (multi-select)
|
|
@@ -74,24 +74,24 @@ Output:
|
|
|
74
74
|
deploymentIds = selection.deployments;
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
-
// When IDs are provided directly, validate they
|
|
77
|
+
// When IDs are provided directly, validate they have active VMs
|
|
78
78
|
if (ids?.length || isNonInteractive()) {
|
|
79
|
-
const
|
|
79
|
+
const allDeployments = await listDeployments({
|
|
80
80
|
accessToken,
|
|
81
81
|
version: packageJson.version,
|
|
82
|
-
|
|
82
|
+
limit: 0,
|
|
83
83
|
});
|
|
84
|
-
const
|
|
85
|
-
// Filter out
|
|
86
|
-
const
|
|
87
|
-
if (
|
|
88
|
-
for (const id of
|
|
89
|
-
printError(`Deployment ${id}
|
|
84
|
+
const terminatableIds = new Set(allDeployments.filter((d) => (d.vmCount ?? 1) > 0).map((d) => d.id));
|
|
85
|
+
// Filter out deployments with no VMs and warn the user
|
|
86
|
+
const noVmIds = deploymentIds.filter((id) => !terminatableIds.has(id));
|
|
87
|
+
if (noVmIds.length > 0) {
|
|
88
|
+
for (const id of noVmIds) {
|
|
89
|
+
printError(`Deployment ${id} has no active VMs.`);
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
|
-
deploymentIds = deploymentIds.filter((id) =>
|
|
92
|
+
deploymentIds = deploymentIds.filter((id) => terminatableIds.has(id));
|
|
93
93
|
if (deploymentIds.length === 0) {
|
|
94
|
-
printInfo('No
|
|
94
|
+
printInfo('No deployments to terminate.');
|
|
95
95
|
process.exit(0);
|
|
96
96
|
}
|
|
97
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminate.js","sourceRoot":"","sources":["../../../src/cli/commands/terminate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EACL,gBAAgB,EAChB,cAAc,GACf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,WAAW,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEtE,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC;SAC5B,WAAW,CAAC,sCAAsC,CAAC;SACnD,QAAQ,CACP,UAAU,EACV,mEAAmE,CACpE;SACA,WAAW,CACV,OAAO,EACP;;;;;;;;;;;CAWL,CACI;SACA,MAAM,CAAC,KAAK,EAAE,GAAc,EAAE,EAAE;QAC/B,IAAI,CAAC;YACH,IAAI,aAAa,GAAa,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAErD,mBAAmB;YACnB,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;YAE3C,qDAAqD;YACrD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,yDAAyD;gBACzD,IAAI,gBAAgB,EAAE,EAAE,CAAC;oBACvB,MAAM,MAAM,GAAG,cAAc,CAAC,wBAAwB,CAAC,CAAC;oBACxD,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,UAAU,CACR,iDAAiD;4BAC/C,gHAAgH,CACnH,CAAC;wBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAClB,CAAC;oBACD,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3D,CAAC;qBAAM,CAAC;oBACN,
|
|
1
|
+
{"version":3,"file":"terminate.js","sourceRoot":"","sources":["../../../src/cli/commands/terminate.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -7,6 +7,7 @@ import { createTerminateCommand } from './commands/terminate.js';
|
|
|
7
7
|
import { createListCommand } from './commands/list.js';
|
|
8
8
|
import { createUpdateCommand } from './commands/update.js';
|
|
9
9
|
import { createSshCommand } from './commands/ssh.js';
|
|
10
|
+
import { createLogsCommand } from './commands/logs.js';
|
|
10
11
|
import { createCredentialsCommand } from './commands/credentials/index.js';
|
|
11
12
|
import { createConfigCommand } from './commands/config/index.js';
|
|
12
13
|
import { createLoginCommand } from './commands/login.js';
|
|
@@ -57,6 +58,7 @@ program.addCommand(createListCommand());
|
|
|
57
58
|
program.addCommand(createTerminateCommand());
|
|
58
59
|
program.addCommand(createUpdateCommand());
|
|
59
60
|
program.addCommand(createSshCommand());
|
|
61
|
+
program.addCommand(createLogsCommand());
|
|
60
62
|
program.addCommand(createCredentialsCommand());
|
|
61
63
|
program.addCommand(createConfigCommand());
|
|
62
64
|
program.addCommand(_createDaemonCommand()); // Internal use only - hidden from help
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { spawn } from 'child_process';
|
|
2
|
+
import { writeFileSync, unlinkSync } from 'fs';
|
|
3
|
+
import { tmpdir } from 'os';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
import prompts from 'prompts';
|
|
6
|
+
import { getGitHubToken } from './auth.js';
|
|
7
|
+
import { getDeploymentStatus, listDeployments, loadSshKey, loadDeploymentCredentials, } from './api-client.js';
|
|
8
|
+
import { printInfo, printError, createSpinner, selectDeployment, } from '../utils/output.js';
|
|
9
|
+
import { isNonInteractive, getEnvOptional } from './non-interactive.js';
|
|
10
|
+
import { DeploymentState, isExitedState, } from '../../shared/types.js';
|
|
11
|
+
import packageJson from '../../../package.json' with { type: 'json' };
|
|
12
|
+
/**
|
|
13
|
+
* Resolves deployment ID, credentials, SSH key, and VM IP for SSH-based commands.
|
|
14
|
+
* Returns null if user cancels selection.
|
|
15
|
+
*/
|
|
16
|
+
export async function resolveSSHContext(options = {}) {
|
|
17
|
+
let deploymentId = options.id;
|
|
18
|
+
let isCompletedJob = false;
|
|
19
|
+
// Get GitHub token
|
|
20
|
+
const accessToken = await getGitHubToken();
|
|
21
|
+
// If no ID provided, fetch and prompt for selection
|
|
22
|
+
if (!deploymentId) {
|
|
23
|
+
if (isNonInteractive()) {
|
|
24
|
+
deploymentId = getEnvOptional('ANYCLOUD_DEPLOYMENT_ID');
|
|
25
|
+
if (!deploymentId) {
|
|
26
|
+
printError('Non-interactive mode: Deployment ID required.\n' +
|
|
27
|
+
' Provide ID as argument or set ANYCLOUD_DEPLOYMENT_ID environment variable.');
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
const loadingSpinner = createSpinner('Loading deployments...').start();
|
|
33
|
+
const deployments = await listDeployments({
|
|
34
|
+
accessToken,
|
|
35
|
+
version: packageJson.version,
|
|
36
|
+
});
|
|
37
|
+
loadingSpinner.stop();
|
|
38
|
+
if (deployments.length === 0) {
|
|
39
|
+
printInfo('No deployments found.');
|
|
40
|
+
process.exit(0);
|
|
41
|
+
}
|
|
42
|
+
console.log('');
|
|
43
|
+
const selectedDeployment = await selectDeployment(deployments.filter((d) => (d.vmCount ?? 1) > 0));
|
|
44
|
+
if (!selectedDeployment) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
// Block container SSH during starting if requested
|
|
48
|
+
if (options.filterStarting &&
|
|
49
|
+
selectedDeployment.state === DeploymentState.Starting) {
|
|
50
|
+
printError(`Deployment is still starting (container may not be ready).\n` +
|
|
51
|
+
' Use "anycloud ssh --vm" to SSH directly to the VM.\n' +
|
|
52
|
+
' Or wait for the deployment to be running.');
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
deploymentId = selectedDeployment.id;
|
|
56
|
+
isCompletedJob = isExitedState(selectedDeployment.state);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Load credentials and SSH key for this deployment
|
|
60
|
+
let credentials;
|
|
61
|
+
let sshPrivateKey;
|
|
62
|
+
try {
|
|
63
|
+
credentials = await loadDeploymentCredentials(deploymentId);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
printError(`Credentials not found for deployment ${deploymentId}.\n` +
|
|
67
|
+
' This deployment may have been created from a different machine.\n' +
|
|
68
|
+
' Email support@anycloud.sh to reclaim it.');
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
sshPrivateKey = await loadSshKey(deploymentId);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
printError(`SSH key not found for deployment ${deploymentId}.\n` +
|
|
76
|
+
' This deployment may have been created from a different machine.\n' +
|
|
77
|
+
' Email support@anycloud.sh to reclaim it.');
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
// Get VM IPs
|
|
81
|
+
const spinner = createSpinner('Getting VM info...').start();
|
|
82
|
+
const statusRequest = {
|
|
83
|
+
id: deploymentId,
|
|
84
|
+
credentials,
|
|
85
|
+
accessToken,
|
|
86
|
+
version: packageJson.version,
|
|
87
|
+
sshPrivateKey,
|
|
88
|
+
};
|
|
89
|
+
const response = await getDeploymentStatus(statusRequest);
|
|
90
|
+
spinner.stop();
|
|
91
|
+
if (!response.vmStatuses || response.vmStatuses.length === 0) {
|
|
92
|
+
printError('No VMs found for this deployment.');
|
|
93
|
+
process.exit(1);
|
|
94
|
+
}
|
|
95
|
+
// Select VM IP
|
|
96
|
+
let vmIp;
|
|
97
|
+
if (response.vmStatuses.length === 1) {
|
|
98
|
+
vmIp = response.vmStatuses[0].ip;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
// Multiple VMs - prompt for selection
|
|
102
|
+
const vmSelection = await prompts({
|
|
103
|
+
type: 'select',
|
|
104
|
+
name: 'ip',
|
|
105
|
+
message: 'Select VM to connect to:',
|
|
106
|
+
choices: response.vmStatuses.map((vm) => ({
|
|
107
|
+
title: vm.ip,
|
|
108
|
+
value: vm.ip,
|
|
109
|
+
})),
|
|
110
|
+
});
|
|
111
|
+
if (!vmSelection.ip) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
vmIp = vmSelection.ip;
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
deploymentId,
|
|
118
|
+
vmIp,
|
|
119
|
+
sshPrivateKey,
|
|
120
|
+
isCompletedJob,
|
|
121
|
+
response,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Spawns an SSH process to the given VM.
|
|
126
|
+
* Handles key file creation/cleanup and process lifecycle.
|
|
127
|
+
*/
|
|
128
|
+
export function spawnSSH(options) {
|
|
129
|
+
const { deploymentId, vmIp, sshPrivateKey, command, interactive } = options;
|
|
130
|
+
// Write SSH key to temp file
|
|
131
|
+
const keyFile = join(tmpdir(), `anycloud-ssh-${deploymentId}-${Date.now()}`);
|
|
132
|
+
writeFileSync(keyFile, sshPrivateKey, { mode: 0o600 });
|
|
133
|
+
// Build SSH args
|
|
134
|
+
const sshArgs = [
|
|
135
|
+
'-i',
|
|
136
|
+
keyFile,
|
|
137
|
+
'-p',
|
|
138
|
+
'22',
|
|
139
|
+
'-o',
|
|
140
|
+
'StrictHostKeyChecking=no',
|
|
141
|
+
'-o',
|
|
142
|
+
'UserKnownHostsFile=/dev/null',
|
|
143
|
+
'-o',
|
|
144
|
+
'LogLevel=ERROR',
|
|
145
|
+
];
|
|
146
|
+
if (interactive) {
|
|
147
|
+
sshArgs.push('-t');
|
|
148
|
+
}
|
|
149
|
+
sshArgs.push(`root@${vmIp}`);
|
|
150
|
+
if (command) {
|
|
151
|
+
sshArgs.push(command);
|
|
152
|
+
}
|
|
153
|
+
const sshProcess = spawn('ssh', sshArgs, { stdio: 'inherit' });
|
|
154
|
+
// Clean up key file when SSH exits
|
|
155
|
+
sshProcess.on('close', (code) => {
|
|
156
|
+
try {
|
|
157
|
+
unlinkSync(keyFile);
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
// Ignore cleanup errors
|
|
161
|
+
}
|
|
162
|
+
if (code !== 0) {
|
|
163
|
+
console.log('');
|
|
164
|
+
const exitCode = code ?? 1;
|
|
165
|
+
if (exitCode === 255) {
|
|
166
|
+
printError(`SSH connection failed (exit code ${exitCode}).\n` +
|
|
167
|
+
` The VM at ${vmIp} may not be reachable.\n` +
|
|
168
|
+
' Possible causes:\n' +
|
|
169
|
+
' - VM is still starting up\n' +
|
|
170
|
+
' - VM has been terminated\n' +
|
|
171
|
+
' - Network/firewall issue\n' +
|
|
172
|
+
' Run "anycloud status" to check VM state.');
|
|
173
|
+
}
|
|
174
|
+
else if (exitCode === 1) {
|
|
175
|
+
printError(`SSH session ended with an error (exit code ${exitCode}).\n` +
|
|
176
|
+
' The container may have exited or the command failed.\n' +
|
|
177
|
+
' Try "anycloud ssh --vm" to connect directly to the VM.');
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
printError(`SSH exited with code ${exitCode}.`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
process.exit(code ?? 0);
|
|
184
|
+
});
|
|
185
|
+
sshProcess.on('error', (err) => {
|
|
186
|
+
try {
|
|
187
|
+
unlinkSync(keyFile);
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
// Ignore cleanup errors
|
|
191
|
+
}
|
|
192
|
+
printError(`SSH failed: ${err.message}`);
|
|
193
|
+
process.exit(1);
|
|
194
|
+
});
|
|
195
|
+
return sshProcess;
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=ssh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssh.js","sourceRoot":"","sources":["../../../src/cli/services/ssh.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/types.js
CHANGED
|
@@ -88,21 +88,10 @@ export const TERMINAL_STATES = [
|
|
|
88
88
|
export function isTerminalState(state) {
|
|
89
89
|
return TERMINAL_STATES.includes(state);
|
|
90
90
|
}
|
|
91
|
-
/** Deployment is active (not yet in terminal state) */
|
|
92
|
-
export function isActiveState(state) {
|
|
93
|
-
return ACTIVE_STATES.includes(state);
|
|
94
|
-
}
|
|
95
91
|
/** Container ran and exited (for SSH snapshot access) */
|
|
96
92
|
export function isExitedState(state) {
|
|
97
93
|
return EXITED_STATES.includes(state);
|
|
98
94
|
}
|
|
99
|
-
/** VM is accessible (not provisioning, failed, or terminated) */
|
|
100
|
-
export function isVmAccessible(state) {
|
|
101
|
-
return (state !== DeploymentState.Provisioning &&
|
|
102
|
-
state !== DeploymentState.Failed &&
|
|
103
|
-
state !== DeploymentState.Terminating &&
|
|
104
|
-
state !== DeploymentState.Terminated);
|
|
105
|
-
}
|
|
106
95
|
// Credential classes
|
|
107
96
|
export class AWSCreds {
|
|
108
97
|
}
|
package/dist/shared/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,sBAAsB;AACtB,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,wBAAW,CAAA;IACX,4BAAe,CAAA;IACf,4BAAe,CAAA;AACjB,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB;AAED,uBAAuB;AACvB,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,6BAAW,CAAA;AACb,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAKD,sCAAsC;AACtC,MAAM,CAAN,IAAY,eAiBX;AAjBD,WAAY,eAAe;IACzB,yBAAyB;IACzB,gDAA6B,CAAA;IAC7B,8CAA2B,CAAA;IAC3B,gDAA6B,CAAA;IAC7B,wCAAqB,CAAA;IACrB,sCAAmB,CAAA;IAEnB,qCAAqC;IACrC,sCAAmB,CAAA;IAEnB,kBAAkB;IAClB,0CAAuB,CAAA;IACvB,oCAAiB,CAAA;IACjB,sCAAmB,CAAA;IACnB,8CAA2B,CAAA;IAC3B,4CAAyB,CAAA;AAC3B,CAAC,EAjBW,eAAe,KAAf,eAAe,QAiB1B;AAED,iCAAiC;AACjC,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,eAAe,CAAC,YAAY;IAC5B,eAAe,CAAC,WAAW;IAC3B,eAAe,CAAC,YAAY;IAC5B,eAAe,CAAC,QAAQ;IACxB,eAAe,CAAC,OAAO;CACf,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAoC;IACzD,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,KAAK;IACrC,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,IAAI;IACnC,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,IAAI;IACpC,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,IAAI;IAChC,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,IAAI;IAC/B,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,GAAG;IAC9B,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,GAAG;IAChC,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,GAAG;IAC7B,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,IAAI;IAC/B,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,IAAI;IACnC,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,IAAI;CACnC,CAAC;AAEF,gCAAgC;AAChC,MAAM,CAAC,MAAM,aAAa,GAAsB;IAC9C,eAAe,CAAC,YAAY;IAC5B,eAAe,CAAC,WAAW;IAC3B,eAAe,CAAC,YAAY;IAC5B,eAAe,CAAC,QAAQ;IACxB,eAAe,CAAC,OAAO;IACvB,eAAe,CAAC,OAAO;IACvB,eAAe,CAAC,WAAW;CAC5B,CAAC;AAEF,wEAAwE;AACxE,4CAA4C;AAC5C,iDAAiD;AACjD,MAAM,CAAC,MAAM,aAAa,GAAsB;IAC9C,eAAe,CAAC,SAAS;IACzB,eAAe,CAAC,OAAO;CACxB,CAAC;AAEF,uCAAuC;AACvC,+CAA+C;AAC/C,2CAA2C;AAC3C,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,eAAe,CAAC,MAAM;IACtB,eAAe,CAAC,UAAU;CAC3B,CAAC;AAEF,mEAAmE;AACnE,MAAM,CAAC,MAAM,eAAe,GAAsB;IAChD,GAAG,aAAa;IAChB,GAAG,iBAAiB;CACrB,CAAC;AAEF,mDAAmD;AACnD,MAAM,UAAU,eAAe,CAAC,KAAsB;IACpD,OAAO,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/utils.js
CHANGED
|
@@ -13,12 +13,48 @@ export function formatMs(ms) {
|
|
|
13
13
|
const minutes = ms / 60000;
|
|
14
14
|
return minutes === 1 ? '1 minute' : `${minutes} minutes`;
|
|
15
15
|
}
|
|
16
|
+
/** Error thrown when an operation times out */
|
|
17
|
+
export class TimeoutError extends Error {
|
|
18
|
+
constructor(operationName, timeoutMs) {
|
|
19
|
+
super(`${operationName} timed out after ${formatMs(timeoutMs)}`);
|
|
20
|
+
this.name = 'TimeoutError';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
16
23
|
/** Helper to add a timeout to a promise */
|
|
17
24
|
export async function withTimeout(promise, timeoutMs, operationName) {
|
|
18
|
-
|
|
19
|
-
|
|
25
|
+
let timeoutId;
|
|
26
|
+
const timeout = new Promise((_, reject) => {
|
|
27
|
+
timeoutId = setTimeout(() => reject(new TimeoutError(operationName, timeoutMs)), timeoutMs);
|
|
28
|
+
});
|
|
29
|
+
try {
|
|
30
|
+
return await Promise.race([promise, timeout]);
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
clearTimeout(timeoutId);
|
|
34
|
+
}
|
|
20
35
|
}
|
|
21
36
|
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
37
|
+
/**
|
|
38
|
+
* Retry an operation until it succeeds or max attempts reached.
|
|
39
|
+
* Retries all errors - transient ones get fixed, permanent ones fail after max attempts.
|
|
40
|
+
*/
|
|
41
|
+
export async function withRetry(operation, name, options = {}) {
|
|
42
|
+
const { maxAttempts = 3, waitMs = 5000, onRetry } = options;
|
|
43
|
+
let lastError;
|
|
44
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
45
|
+
try {
|
|
46
|
+
return await operation();
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
lastError = error;
|
|
50
|
+
if (attempt < maxAttempts) {
|
|
51
|
+
onRetry?.(attempt, maxAttempts, error);
|
|
52
|
+
await sleep(waitMs);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
throw lastError;
|
|
57
|
+
}
|
|
22
58
|
/**
|
|
23
59
|
* Poll until all items pass the check function.
|
|
24
60
|
* @throws Error if timeout is reached before all items pass
|
package/dist/shared/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/shared/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,2EAA2E;IAC3E,iCAAiC;IACjC,OAAO,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC;AAChD,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,QAAQ,CAAC,EAAU;IACjC,MAAM,OAAO,GAAG,EAAE,GAAG,KAAK,CAAC;IAC3B,OAAO,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,UAAU,CAAC;AAC3D,CAAC;AAED,2CAA2C;AAC3C,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAmB,EACnB,SAAiB,EACjB,aAAqB;IAErB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/shared/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "anycloud",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.31",
|
|
4
4
|
"description": "Deploy containerized jobs and servers to any cloud provider",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"deploy:staging": "yarn migrate:staging && yarn deploy:check:staging && wrangler deploy --env staging",
|
|
29
29
|
"deploy:check:prod": "export $(cat .dev.vars.prod | xargs) && DEPLOY_ENV=production npx tsx scripts/pre-deploy-check.ts",
|
|
30
30
|
"deploy:prod": "yarn migrate:prod && yarn deploy:check:prod && wrangler deploy --env production",
|
|
31
|
+
"logs:prod": "export $(cat .dev.vars.prod | xargs) && DEPLOY_ENV=production npx tsx scripts/get-deployment-logs.ts",
|
|
31
32
|
"cli": "CONDUCTOR_URL=https://conductor.laplazahealth.org node ./dist/cli/index.js",
|
|
32
33
|
"cli:prod": "node ./dist/cli/index.js",
|
|
33
34
|
"start:conductor": "node ./dist/conductor/server.js",
|