anycloud 0.0.3 → 0.0.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/cli/commands/config/edit.js +15 -0
- package/dist/cli/commands/config/edit.js.map +1 -1
- package/dist/cli/commands/config/list.js +53 -18
- package/dist/cli/commands/config/list.js.map +1 -1
- package/dist/cli/commands/config/new.js +21 -0
- package/dist/cli/commands/config/new.js.map +1 -1
- package/dist/cli/commands/config/remove.js +10 -0
- package/dist/cli/commands/config/remove.js.map +1 -1
- package/dist/cli/commands/credentials/delete.js +10 -0
- package/dist/cli/commands/credentials/delete.js.map +1 -1
- package/dist/cli/commands/credentials/edit.js +16 -0
- package/dist/cli/commands/credentials/edit.js.map +1 -1
- package/dist/cli/commands/credentials/list.js +35 -13
- package/dist/cli/commands/credentials/list.js.map +1 -1
- package/dist/cli/commands/credentials/new.js +25 -0
- package/dist/cli/commands/credentials/new.js.map +1 -1
- package/dist/cli/commands/daemon/index.js +8 -6
- package/dist/cli/commands/daemon/index.js.map +1 -1
- package/dist/cli/commands/list.js +70 -19
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/login.js +10 -0
- package/dist/cli/commands/login.js.map +1 -1
- package/dist/cli/commands/logs.js +95 -10
- package/dist/cli/commands/logs.js.map +1 -1
- package/dist/cli/commands/run.js +110 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/serve.js +15 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/status.js +113 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/terminate.js +122 -8
- package/dist/cli/commands/terminate.js.map +1 -1
- package/dist/cli/commands/upgrade.js +66 -8
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/index.js +6 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/services/api-client.js +51 -49
- package/dist/cli/services/api-client.js.map +1 -1
- package/dist/cli/services/config.js +2 -0
- package/dist/cli/services/config.js.map +1 -1
- package/dist/cli/services/non-interactive.js +3 -3
- package/dist/cli/services/non-interactive.js.map +1 -1
- package/dist/cli/services/oauth.js +4 -5
- package/dist/cli/services/oauth.js.map +1 -1
- package/dist/cli/utils/env-parser.js +27 -0
- package/dist/cli/utils/env-parser.js.map +1 -0
- package/dist/cli/utils/output.js +42 -0
- package/dist/cli/utils/output.js.map +1 -1
- package/dist/daemon/cluster.js +122 -17
- package/dist/daemon/cluster.js.map +1 -1
- package/dist/daemon/docker.js +62 -21
- package/dist/daemon/docker.js.map +1 -1
- package/dist/daemon/preemption.js +127 -0
- package/dist/daemon/preemption.js.map +1 -0
- package/dist/daemon/server.js +128 -16
- package/dist/daemon/server.js.map +1 -1
- package/dist/shared/assets/clouds/azure/regions-per-type.json +21584 -1117
- package/dist/shared/id-generator.js +20 -0
- package/dist/shared/id-generator.js.map +1 -0
- package/dist/shared/types.js +5 -1
- package/dist/shared/types.js.map +1 -1
- package/package.json +16 -8
- package/dist/cli/commands/daemon/start.js +0 -32
- package/dist/cli/commands/daemon/start.js.map +0 -1
- package/dist/cli/commands/job.js +0 -71
- package/dist/cli/commands/job.js.map +0 -1
- package/dist/cli/commands/new.js +0 -15
- package/dist/cli/commands/new.js.map +0 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { uniqueNamesGenerator, animals, NumberDictionary, colors, } from 'unique-names-generator';
|
|
2
|
+
const NUMBER_DICT = NumberDictionary.generate({ min: 1, max: 99 });
|
|
3
|
+
/**
|
|
4
|
+
* Generate a unique server/app ID using readable names
|
|
5
|
+
* Example: "blue-dolphin-42"
|
|
6
|
+
*/
|
|
7
|
+
export function generateServerId() {
|
|
8
|
+
return uniqueNamesGenerator({
|
|
9
|
+
dictionaries: [colors, animals, NUMBER_DICT],
|
|
10
|
+
separator: '-',
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Generate a unique job ID using timestamp
|
|
15
|
+
* Example: "anycloud-1732019234567"
|
|
16
|
+
*/
|
|
17
|
+
export function generateJobId() {
|
|
18
|
+
return `anycloud-${Date.now()}`;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=id-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-generator.js","sourceRoot":"","sources":["../../src/shared/id-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,OAAO,EACP,gBAAgB,EAChB,MAAM,GACP,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,GAAG,gBAAgB,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;AAEnE;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,oBAAoB,CAAC;QAC1B,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC;QAC5C,SAAS,EAAE,GAAG;KACf,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;AAClC,CAAC"}
|
package/dist/shared/types.js
CHANGED
|
@@ -15,7 +15,7 @@ export var CloudType;
|
|
|
15
15
|
// Deployment type enum
|
|
16
16
|
export var DeploymentType;
|
|
17
17
|
(function (DeploymentType) {
|
|
18
|
-
DeploymentType["
|
|
18
|
+
DeploymentType["Server"] = "server";
|
|
19
19
|
DeploymentType["Job"] = "job";
|
|
20
20
|
})(DeploymentType || (DeploymentType = {}));
|
|
21
21
|
// Credential classes
|
|
@@ -78,4 +78,8 @@ export class CloudConfig {
|
|
|
78
78
|
return USRegions.length ? USRegions[0] : regionsPerType[0];
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
+
// GET /health - Daemon basic health check
|
|
82
|
+
// Response: 200 status code if healthy
|
|
83
|
+
// GET /deploymentHealth - Daemon detailed health check
|
|
84
|
+
// Response: 200 status code if container running and healthy
|
|
81
85
|
//# sourceMappingURL=types.js.map
|
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,OAAO,KAAK,iBAAiB,MAAM,2CAA2C,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACrG,OAAO,KAAK,iBAAiB,MAAM,2CAA2C,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACrG,OAAO,KAAK,mBAAmB,MAAM,6CAA6C,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEzG,sBAAsB;AACtB,MAAM,CAAN,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,wBAAW,CAAA;IACX,wBAAW,CAAA;IACX,4BAAe,CAAA;AACjB,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB;AAED,uBAAuB;AACvB,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "anycloud",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "Deploy
|
|
3
|
+
"version": "0.0.5",
|
|
4
|
+
"description": "Deploy containerized jobs and servers to any cloud provider",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "UNLICENSED",
|
|
7
7
|
"bin": {
|
|
@@ -21,16 +21,20 @@
|
|
|
21
21
|
"start": "yarn build && wrangler dev",
|
|
22
22
|
"deploy:staging": "wrangler deploy --env staging",
|
|
23
23
|
"deploy:production": "wrangler deploy --env production",
|
|
24
|
-
"cli": "
|
|
24
|
+
"cli": "node ./dist/cli/index.js",
|
|
25
|
+
"cli:staging": "CONDUCTOR_URL=https://conductor.laplazahealth.org node ./dist/cli/index.js",
|
|
25
26
|
"start:conductor": "node ./dist/conductor/server.js",
|
|
26
|
-
"test": "vitest run",
|
|
27
|
-
"test:watch": "vitest",
|
|
28
|
-
"test:integration": "yarn test:daemon",
|
|
27
|
+
"test": "LOCAL=true vitest run",
|
|
28
|
+
"test:watch": "LOCAL=true vitest",
|
|
29
|
+
"test:integration": "yarn test:daemon && yarn test:preemption",
|
|
29
30
|
"terminate": "export $(cat .dev.vars.staging | xargs) && ts-node-dev scripts/forceTerminate.ts",
|
|
30
31
|
"watch:daemon": "ts-node-dev src/cli/index.ts daemon start",
|
|
31
32
|
"test:daemon": "bash test/integration/daemon-basic.test.sh",
|
|
32
|
-
"test:
|
|
33
|
-
"test:
|
|
33
|
+
"test:daemon:private": "gh auth refresh --scopes write:packages,read:packages && GITHUB_TOKEN=$(gh auth token) bash test/integration/daemon-private-image.test.sh",
|
|
34
|
+
"test:preemption": "bash test/integration/daemon-preemption.test.sh",
|
|
35
|
+
"test:vmstartup": "bash test/integration/vmstartup.test.sh",
|
|
36
|
+
"test:conductor": "bash test/integration/conductor-startup.test.sh",
|
|
37
|
+
"test:e2e:azure": "bash scripts/test-jobs-integration-azure.sh",
|
|
34
38
|
"test:all": "yarn test && yarn test:integration",
|
|
35
39
|
"style": "yarn eslint . --ext .js,.ts && yarn prettier --check .",
|
|
36
40
|
"fmt": "yarn prettier --write .",
|
|
@@ -46,18 +50,22 @@
|
|
|
46
50
|
"@cloudflare/containers": "^0.0.30",
|
|
47
51
|
"@google-cloud/compute": "^6.4.0",
|
|
48
52
|
"@octokit/rest": "^21.0.2",
|
|
53
|
+
"@types/dotenv": "^8.2.3",
|
|
49
54
|
"@types/express": "^5.0.5",
|
|
50
55
|
"@types/node": "^22.0.0",
|
|
51
56
|
"axios": "^1.6.0",
|
|
52
57
|
"chalk": "^5.6.2",
|
|
58
|
+
"cli-table3": "^0.6.5",
|
|
53
59
|
"commander": "^14.0.2",
|
|
54
60
|
"dockerode": "^4.0.0",
|
|
61
|
+
"dotenv": "^17.2.3",
|
|
55
62
|
"express": "^5.1.0",
|
|
56
63
|
"gce-images": "^5.0.0",
|
|
57
64
|
"ini": "^6.0.0",
|
|
58
65
|
"node-forge": "^1.3.0",
|
|
59
66
|
"open": "^10.2.0",
|
|
60
67
|
"ora": "^9.0.0",
|
|
68
|
+
"posthog-node": "^5.11.2",
|
|
61
69
|
"prompts": "^2.4.2",
|
|
62
70
|
"semver": "^7.6.3",
|
|
63
71
|
"systeminformation": "^5.21.0",
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { startServer } from '../../../daemon/server.js';
|
|
3
|
-
import { log } from '../../../daemon/logger.js';
|
|
4
|
-
export function createStartCommand() {
|
|
5
|
-
return new Command('start')
|
|
6
|
-
.description('Start the AnyCloud daemon')
|
|
7
|
-
.argument('<cluster-secret>', 'Cluster secret for authentication')
|
|
8
|
-
.argument('<conductor-url>', 'URL of the conductor to connect to')
|
|
9
|
-
.requiredOption('--deployment-type <type>', 'Deployment type: app or job')
|
|
10
|
-
.action(async (clusterSecret, conductorUrl, options) => {
|
|
11
|
-
try {
|
|
12
|
-
// Validate deployment type
|
|
13
|
-
if (options.deploymentType !== 'app' &&
|
|
14
|
-
options.deploymentType !== 'job') {
|
|
15
|
-
log.error('Invalid deployment type. Must be either "app" or "job"');
|
|
16
|
-
process.exit(1);
|
|
17
|
-
}
|
|
18
|
-
const deploymentType = options.deploymentType;
|
|
19
|
-
log.info('Starting AnyCloud Daemon', {
|
|
20
|
-
deploymentType,
|
|
21
|
-
nodeVersion: process.version,
|
|
22
|
-
});
|
|
23
|
-
await startServer(clusterSecret, conductorUrl);
|
|
24
|
-
log.info('Daemon started successfully');
|
|
25
|
-
}
|
|
26
|
-
catch (error) {
|
|
27
|
-
log.error('Failed to start daemon', error);
|
|
28
|
-
process.exit(1);
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=start.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../../src/cli/commands/daemon/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAGhD,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;SACxB,WAAW,CAAC,2BAA2B,CAAC;SACxC,QAAQ,CAAC,kBAAkB,EAAE,mCAAmC,CAAC;SACjE,QAAQ,CAAC,iBAAiB,EAAE,oCAAoC,CAAC;SACjE,cAAc,CAAC,0BAA0B,EAAE,6BAA6B,CAAC;SACzE,MAAM,CACL,KAAK,EACH,aAAqB,EACrB,YAAoB,EACpB,OAAmC,EACnC,EAAE;QACF,IAAI,CAAC;YACH,2BAA2B;YAC3B,IACE,OAAO,CAAC,cAAc,KAAK,KAAK;gBAChC,OAAO,CAAC,cAAc,KAAK,KAAK,EAChC,CAAC;gBACD,GAAG,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;gBACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,cAAc,GAAG,OAAO,CAAC,cAAqC,CAAC;YAErE,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE;gBACnC,cAAc;gBACd,WAAW,EAAE,OAAO,CAAC,OAAO;aAC7B,CAAC,CAAC;YAEH,MAAM,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;YAE/C,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC1C,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,CACF,CAAC;AACN,CAAC"}
|
package/dist/cli/commands/job.js
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import prompts from 'prompts';
|
|
3
|
-
import { getGitHubToken } from '../services/auth.js';
|
|
4
|
-
import { resolveDeploymentProfile, loadDeploymentProfiles, } from '../services/config.js';
|
|
5
|
-
import { createDeployment } from '../services/api-client.js';
|
|
6
|
-
import { printInfo, printError, createSpinner } from '../utils/output.js';
|
|
7
|
-
import { isNonInteractive, getDeployProfileFromEnv, } from '../services/non-interactive.js';
|
|
8
|
-
export function createJobCommand() {
|
|
9
|
-
return new Command('job')
|
|
10
|
-
.description('Create a new job deployment')
|
|
11
|
-
.argument('<image>', 'Container image (e.g., alpine:latest, ghcr.io/user/job:latest)')
|
|
12
|
-
.option('--deploy <profile>', 'Deployment profile name from anycloud.json')
|
|
13
|
-
.requiredOption('--name <name>', 'Job name')
|
|
14
|
-
.action(async (image, options) => {
|
|
15
|
-
try {
|
|
16
|
-
printInfo(`Creating job deployment for image: ${image}`);
|
|
17
|
-
// Determine deployment profile
|
|
18
|
-
let deployProfile = options.deploy;
|
|
19
|
-
// Check for environment variable in non-interactive mode
|
|
20
|
-
if (!deployProfile && isNonInteractive()) {
|
|
21
|
-
deployProfile = getDeployProfileFromEnv();
|
|
22
|
-
if (!deployProfile) {
|
|
23
|
-
printError('Non-interactive mode: Deployment profile required.\n' +
|
|
24
|
-
' Provide --deploy flag or set ANYCLOUD_DEPLOY_PROFILE environment variable.');
|
|
25
|
-
process.exit(1);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
// If --deploy not provided and not in non-interactive mode, prompt for profile selection
|
|
29
|
-
if (!deployProfile) {
|
|
30
|
-
const profiles = await loadDeploymentProfiles();
|
|
31
|
-
const profileNames = Object.keys(profiles);
|
|
32
|
-
if (profileNames.length === 0) {
|
|
33
|
-
printError('No deployment profiles found in anycloud.json');
|
|
34
|
-
printInfo('Please create anycloud.json with deployment profiles.');
|
|
35
|
-
process.exit(1);
|
|
36
|
-
}
|
|
37
|
-
const selection = await prompts({
|
|
38
|
-
type: 'select',
|
|
39
|
-
name: 'profile',
|
|
40
|
-
message: 'Select deployment profile:',
|
|
41
|
-
choices: profileNames.map((name) => ({
|
|
42
|
-
title: name,
|
|
43
|
-
value: name,
|
|
44
|
-
description: `${profiles[name].length} config(s)`,
|
|
45
|
-
})),
|
|
46
|
-
});
|
|
47
|
-
if (!selection.profile) {
|
|
48
|
-
process.exit(0); // User cancelled
|
|
49
|
-
}
|
|
50
|
-
deployProfile = selection.profile;
|
|
51
|
-
}
|
|
52
|
-
printInfo(`Using deployment profile: ${deployProfile}`);
|
|
53
|
-
// Get GitHub token
|
|
54
|
-
const accessToken = await getGitHubToken();
|
|
55
|
-
// Resolve deployment profile and credentials
|
|
56
|
-
const deployConfig = await resolveDeploymentProfile(deployProfile);
|
|
57
|
-
// Create deployment with hardcoded 'job' type
|
|
58
|
-
const spinner = createSpinner('Creating job deployment...').start();
|
|
59
|
-
const response = await createDeployment(image, deployConfig, accessToken, options.name, 'job');
|
|
60
|
-
spinner.succeed('Job deployment created!');
|
|
61
|
-
console.log('');
|
|
62
|
-
printInfo(`Job ID: ${response.clusterId}`);
|
|
63
|
-
console.log('');
|
|
64
|
-
}
|
|
65
|
-
catch (error) {
|
|
66
|
-
printError(`Failed to create job deployment: ${error.message}`);
|
|
67
|
-
process.exit(1);
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=job.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"job.js","sourceRoot":"","sources":["../../../src/cli/commands/job.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/commands/new.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { printError } from '../utils/output.js';
|
|
3
|
-
export function createNewCommand() {
|
|
4
|
-
return new Command('new')
|
|
5
|
-
.description('Create a new app deployment (not yet supported)')
|
|
6
|
-
.argument('<image>', 'Container image (e.g., nginx:alpine, ghcr.io/user/repo:latest)')
|
|
7
|
-
.option('--deploy <profile>', 'Deployment profile name from anycloud.json')
|
|
8
|
-
.option('--name <name>', 'Deployment name')
|
|
9
|
-
.action(() => {
|
|
10
|
-
printError('App deployments are not yet supported.');
|
|
11
|
-
printError('Use "anycloud job" for job deployments.');
|
|
12
|
-
process.exit(1);
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=new.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../../src/cli/commands/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;SACtB,WAAW,CAAC,iDAAiD,CAAC;SAC9D,QAAQ,CACP,SAAS,EACT,gEAAgE,CACjE;SACA,MAAM,CAAC,oBAAoB,EAAE,4CAA4C,CAAC;SAC1E,MAAM,CAAC,eAAe,EAAE,iBAAiB,CAAC;SAC1C,MAAM,CAAC,GAAG,EAAE;QACX,UAAU,CAAC,wCAAwC,CAAC,CAAC;QACrD,UAAU,CAAC,yCAAyC,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC"}
|