anycloud 0.0.2 → 0.0.4
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/daemon/index.js +27 -5
- package/dist/cli/commands/daemon/index.js.map +1 -1
- package/dist/cli/commands/job.js +71 -0
- package/dist/cli/commands/job.js.map +1 -0
- package/dist/cli/commands/list.js +10 -9
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/logs.js +6 -5
- package/dist/cli/commands/logs.js.map +1 -1
- package/dist/cli/commands/new.js +7 -63
- package/dist/cli/commands/new.js.map +1 -1
- package/dist/cli/commands/terminate.js +50 -5
- package/dist/cli/commands/terminate.js.map +1 -1
- package/dist/cli/commands/upgrade.js +4 -4
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/services/api-client.js +28 -47
- package/dist/cli/services/api-client.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/daemon/cluster.js +11 -11
- package/dist/daemon/cluster.js.map +1 -1
- package/dist/daemon/docker.js +16 -12
- package/dist/daemon/docker.js.map +1 -1
- package/dist/daemon/server.js +13 -13
- package/dist/daemon/server.js.map +1 -1
- package/dist/shared/assets/clouds/azure/regions-per-type.json +21584 -1117
- package/dist/shared/types.js +6 -0
- package/dist/shared/types.js.map +1 -1
- package/package.json +8 -6
- package/dist/cli/commands/daemon/start.js +0 -25
- package/dist/cli/commands/daemon/start.js.map +0 -1
package/dist/daemon/cluster.js
CHANGED
|
@@ -8,27 +8,27 @@ import { MetricsCollector } from './metrics.js';
|
|
|
8
8
|
import { log } from './logger.js';
|
|
9
9
|
const ACK_INTERVAL = 4 * 60 * 1000; // 4 minutes
|
|
10
10
|
const METRICS_INTERVAL = 60 * 1000; // 1 minute
|
|
11
|
-
export class
|
|
12
|
-
constructor(
|
|
11
|
+
export class Coordinator {
|
|
12
|
+
constructor(deploymentSecret, conductorUrl) {
|
|
13
13
|
this.daemonProps = null;
|
|
14
14
|
this.clusterInfo = null;
|
|
15
15
|
this.privateIp = null;
|
|
16
16
|
this.publicIp = null;
|
|
17
17
|
this.ackInterval = null;
|
|
18
18
|
this.metricsInterval = null;
|
|
19
|
-
this.
|
|
19
|
+
this.deploymentSecret = deploymentSecret;
|
|
20
20
|
this.metricsCollector = new MetricsCollector();
|
|
21
21
|
this.conductorUrl = conductorUrl;
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
|
-
* Start
|
|
24
|
+
* Start deployment coordination
|
|
25
25
|
*/
|
|
26
26
|
async start(props) {
|
|
27
27
|
this.daemonProps = props;
|
|
28
28
|
// Get this VM's IP addresses
|
|
29
29
|
await this.discoverOwnIps();
|
|
30
30
|
log.info('Cluster coordinator started', {
|
|
31
|
-
|
|
31
|
+
id: props.id,
|
|
32
32
|
privateIp: this.privateIp,
|
|
33
33
|
publicIp: this.publicIp,
|
|
34
34
|
});
|
|
@@ -79,8 +79,8 @@ export class ClusterCoordinator {
|
|
|
79
79
|
try {
|
|
80
80
|
await axios.post(`${this.conductorUrl}/v1/ack`, {
|
|
81
81
|
conductorToken: this.daemonProps.conductorToken,
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
id: this.daemonProps.id,
|
|
83
|
+
deploymentSecret: this.deploymentSecret,
|
|
84
84
|
});
|
|
85
85
|
log.debug('Ack sent successfully');
|
|
86
86
|
}
|
|
@@ -97,7 +97,7 @@ export class ClusterCoordinator {
|
|
|
97
97
|
try {
|
|
98
98
|
// Collect metrics
|
|
99
99
|
await this.metricsCollector.collect();
|
|
100
|
-
// Discover
|
|
100
|
+
// Discover deployment VMs from DNS
|
|
101
101
|
await this.discoverClusterVMs();
|
|
102
102
|
// If we're the leader, check if we need to scale
|
|
103
103
|
if (this.isLeader()) {
|
|
@@ -110,7 +110,7 @@ export class ClusterCoordinator {
|
|
|
110
110
|
}, METRICS_INTERVAL);
|
|
111
111
|
}
|
|
112
112
|
/**
|
|
113
|
-
* Discover all VMs in the
|
|
113
|
+
* Discover all VMs in the deployment via DNS TXT records
|
|
114
114
|
*/
|
|
115
115
|
async discoverClusterVMs() {
|
|
116
116
|
if (!this.daemonProps)
|
|
@@ -183,7 +183,7 @@ export class ClusterCoordinator {
|
|
|
183
183
|
log.info('Triggering scale operation', { scalingFactor });
|
|
184
184
|
try {
|
|
185
185
|
await axios.post(`${this.conductorUrl}/v1/scale`, {
|
|
186
|
-
|
|
186
|
+
id: this.daemonProps.id,
|
|
187
187
|
conductorToken: this.daemonProps.conductorToken,
|
|
188
188
|
clusterFactor: scalingFactor,
|
|
189
189
|
image: this.daemonProps.image,
|
|
@@ -195,7 +195,7 @@ export class ClusterCoordinator {
|
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
197
|
/**
|
|
198
|
-
* Stop
|
|
198
|
+
* Stop deployment coordination
|
|
199
199
|
*/
|
|
200
200
|
stop() {
|
|
201
201
|
if (this.ackInterval) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cluster.js","sourceRoot":"","sources":["../../src/daemon/cluster.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,IAAI,GAAG,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AAChD,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;AAE/C,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"cluster.js","sourceRoot":"","sources":["../../src/daemon/cluster.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/docker.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import Docker from 'dockerode';
|
|
5
5
|
import { log } from './logger.js';
|
|
6
|
+
import { DeploymentType } from '../shared/types.js';
|
|
6
7
|
const docker = new Docker();
|
|
7
8
|
const APP_PORT = 8088;
|
|
8
9
|
export class DockerManager {
|
|
@@ -13,7 +14,7 @@ export class DockerManager {
|
|
|
13
14
|
/**
|
|
14
15
|
* Run container from pre-built image
|
|
15
16
|
*/
|
|
16
|
-
async runFromImage(
|
|
17
|
+
async runFromImage(id, imageName, domain, deploymentType) {
|
|
17
18
|
try {
|
|
18
19
|
log.info('Pulling Docker image', { imageName });
|
|
19
20
|
// Pull image
|
|
@@ -28,7 +29,7 @@ export class DockerManager {
|
|
|
28
29
|
});
|
|
29
30
|
log.info('Image pulled successfully', { imageName });
|
|
30
31
|
// Run container
|
|
31
|
-
await this.runContainer(imageName,
|
|
32
|
+
await this.runContainer(imageName, id, domain, deploymentType);
|
|
32
33
|
}
|
|
33
34
|
catch (error) {
|
|
34
35
|
log.error('Failed to run from image', error);
|
|
@@ -38,30 +39,33 @@ export class DockerManager {
|
|
|
38
39
|
/**
|
|
39
40
|
* Run Docker container with proper configuration
|
|
40
41
|
*/
|
|
41
|
-
async runContainer(imageName,
|
|
42
|
-
this.containerName = `anycloud-${
|
|
42
|
+
async runContainer(imageName, id, domain, deploymentType) {
|
|
43
|
+
this.containerName = `anycloud-${id}`;
|
|
43
44
|
// Stop and remove existing container if it exists
|
|
44
45
|
await this.stopContainer();
|
|
45
46
|
log.info('Starting container', {
|
|
46
47
|
imageName,
|
|
47
48
|
containerName: this.containerName,
|
|
49
|
+
deploymentType,
|
|
48
50
|
});
|
|
51
|
+
// Only expose ports for app deployments (not for jobs)
|
|
52
|
+
const isJob = deploymentType === DeploymentType.Job;
|
|
53
|
+
const exposedPorts = isJob ? {} : { [`${APP_PORT}/tcp`]: {} };
|
|
54
|
+
const portBindings = isJob
|
|
55
|
+
? {}
|
|
56
|
+
: { [`${APP_PORT}/tcp`]: [{ HostPort: String(APP_PORT) }] };
|
|
49
57
|
const container = await docker.createContainer({
|
|
50
58
|
Image: imageName,
|
|
51
59
|
name: this.containerName,
|
|
52
60
|
Env: [
|
|
53
|
-
`
|
|
61
|
+
`ID=${id}`,
|
|
54
62
|
`DOMAIN=${domain}`,
|
|
55
63
|
`PORT=${APP_PORT}`,
|
|
56
|
-
`
|
|
64
|
+
`DEPLOYMENT_TYPE=${deploymentType}`,
|
|
57
65
|
],
|
|
58
|
-
ExposedPorts:
|
|
59
|
-
[`${APP_PORT}/tcp`]: {},
|
|
60
|
-
},
|
|
66
|
+
ExposedPorts: exposedPorts,
|
|
61
67
|
HostConfig: {
|
|
62
|
-
PortBindings:
|
|
63
|
-
[`${APP_PORT}/tcp`]: [{ HostPort: String(APP_PORT) }],
|
|
64
|
-
},
|
|
68
|
+
PortBindings: portBindings,
|
|
65
69
|
RestartPolicy: {
|
|
66
70
|
Name: 'unless-stopped',
|
|
67
71
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/daemon/docker.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/daemon/docker.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/server.js
CHANGED
|
@@ -7,17 +7,17 @@ import { log } from './logger.js';
|
|
|
7
7
|
import { generateSelfSignedCert } from './cert.js';
|
|
8
8
|
import { DockerManager } from './docker.js';
|
|
9
9
|
import { MetricsCollector } from './metrics.js';
|
|
10
|
-
import {
|
|
10
|
+
import { Coordinator } from './cluster.js';
|
|
11
11
|
const CONTROL_PORT = 4142;
|
|
12
12
|
let dockerManager;
|
|
13
13
|
let metricsCollector;
|
|
14
14
|
let clusterCoordinator;
|
|
15
15
|
/**
|
|
16
|
-
* Middleware to authenticate requests with
|
|
16
|
+
* Middleware to authenticate requests with deployment secret
|
|
17
17
|
*/
|
|
18
|
-
function authenticateRequest(
|
|
18
|
+
function authenticateRequest(deploymentSecret) {
|
|
19
19
|
return (req, res, next) => {
|
|
20
|
-
const providedSecret = req.headers[
|
|
20
|
+
const providedSecret = req.headers[deploymentSecret.toLowerCase()];
|
|
21
21
|
if (providedSecret !== 'true') {
|
|
22
22
|
log.warn('Unauthorized request', { path: req.path, ip: req.ip });
|
|
23
23
|
return res.status(401).json({ error: 'Unauthorized' });
|
|
@@ -28,15 +28,15 @@ function authenticateRequest(clusterSecret) {
|
|
|
28
28
|
/**
|
|
29
29
|
* Start the daemon HTTP server
|
|
30
30
|
*/
|
|
31
|
-
export async function startServer(
|
|
31
|
+
export async function startServer(deploymentSecret, conductorUrl) {
|
|
32
32
|
const app = express();
|
|
33
33
|
app.use(express.json({ limit: '100mb' }));
|
|
34
34
|
// Authentication middleware
|
|
35
|
-
app.use(authenticateRequest(
|
|
35
|
+
app.use(authenticateRequest(deploymentSecret));
|
|
36
36
|
// Initialize managers
|
|
37
37
|
dockerManager = new DockerManager();
|
|
38
38
|
metricsCollector = new MetricsCollector();
|
|
39
|
-
clusterCoordinator = new
|
|
39
|
+
clusterCoordinator = new Coordinator(deploymentSecret, conductorUrl);
|
|
40
40
|
/**
|
|
41
41
|
* GET /health
|
|
42
42
|
* Basic health check - is the daemon alive?
|
|
@@ -45,10 +45,10 @@ export async function startServer(clusterSecret, conductorUrl, nonHttp) {
|
|
|
45
45
|
res.json({ status: 'healthy', timestamp: Date.now() });
|
|
46
46
|
});
|
|
47
47
|
/**
|
|
48
|
-
* GET /
|
|
48
|
+
* GET /deploymentHealth
|
|
49
49
|
* Check if the application container is running and healthy
|
|
50
50
|
*/
|
|
51
|
-
app.get('/
|
|
51
|
+
app.get('/deploymentHealth', async (req, res) => {
|
|
52
52
|
try {
|
|
53
53
|
const isHealthy = await dockerManager.isContainerHealthy();
|
|
54
54
|
const metrics = await metricsCollector.collect();
|
|
@@ -77,17 +77,17 @@ export async function startServer(clusterSecret, conductorUrl, nonHttp) {
|
|
|
77
77
|
try {
|
|
78
78
|
const props = req.body;
|
|
79
79
|
log.info('Received start command', {
|
|
80
|
-
|
|
80
|
+
id: props.id,
|
|
81
81
|
image: props.image,
|
|
82
82
|
});
|
|
83
83
|
if (!props.image) {
|
|
84
84
|
throw new Error('Image parameter is required');
|
|
85
85
|
}
|
|
86
86
|
// Pull and run container from image
|
|
87
|
-
await dockerManager.runFromImage(props.
|
|
88
|
-
// Start
|
|
87
|
+
await dockerManager.runFromImage(props.id, props.image, props.domain, props.deploymentType);
|
|
88
|
+
// Start deployment coordination (metrics, scaling, etc.)
|
|
89
89
|
await clusterCoordinator.start(props);
|
|
90
|
-
res.json({ status: 'started',
|
|
90
|
+
res.json({ status: 'started', id: props.id });
|
|
91
91
|
}
|
|
92
92
|
catch (error) {
|
|
93
93
|
log.error('Failed to start', error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/daemon/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,OAA4C,MAAM,SAAS,CAAC;AACnE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/daemon/server.ts"],"names":[],"mappings":"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"}
|