@constellation-network/node-pilot 0.0.8 → 0.0.10
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/README.md +26 -15
- package/bin/dev.js +1 -6
- package/bin/run.js +1 -1
- package/dist/base-command.d.ts +9 -0
- package/dist/base-command.js +20 -0
- package/dist/checks/check-hardware.js +3 -3
- package/dist/checks/check-initial-setup.js +2 -0
- package/dist/checks/check-layers.js +7 -7
- package/dist/checks/check-network.d.ts +2 -0
- package/dist/checks/check-network.js +46 -11
- package/dist/checks/check-node-ctl.js +4 -4
- package/dist/checks/check-project.d.ts +1 -0
- package/dist/checks/check-project.js +15 -4
- package/dist/checks/check-wallet.d.ts +3 -0
- package/dist/checks/check-wallet.js +37 -0
- package/dist/clm.d.ts +1 -0
- package/dist/clm.js +3 -0
- package/dist/commands/config/get.d.ts +6 -0
- package/dist/commands/config/get.js +57 -11
- package/dist/commands/config/set.d.ts +0 -1
- package/dist/commands/config/set.js +13 -11
- package/dist/commands/config.js +17 -22
- package/dist/commands/info.js +3 -2
- package/dist/commands/logs.d.ts +1 -1
- package/dist/commands/logs.js +7 -3
- package/dist/commands/restart.d.ts +10 -2
- package/dist/commands/restart.js +65 -9
- package/dist/commands/shutdown.js +3 -3
- package/dist/commands/status.js +4 -0
- package/dist/commands/test.js +10 -3
- package/dist/config-store.d.ts +47 -31
- package/dist/config-store.js +98 -42
- package/dist/helpers/config-helper.js +2 -2
- package/dist/helpers/env-templates.d.ts +4 -3
- package/dist/helpers/env-templates.js +28 -20
- package/dist/helpers/key-file-helper.d.ts +2 -0
- package/dist/helpers/key-file-helper.js +51 -16
- package/dist/helpers/project-helper.d.ts +2 -2
- package/dist/helpers/project-helper.js +37 -38
- package/dist/helpers/prompt-helper.d.ts +0 -1
- package/dist/helpers/prompt-helper.js +15 -15
- package/dist/services/archiver-service.d.ts +17 -0
- package/dist/services/archiver-service.js +104 -0
- package/dist/services/cluster-service.d.ts +10 -6
- package/dist/services/cluster-service.js +45 -45
- package/dist/services/docker-service.d.ts +9 -0
- package/dist/{helpers/docker-helper.js → services/docker-service.js} +11 -9
- package/dist/services/fastforward-service.js +3 -3
- package/dist/services/get-random-node.js +1 -1
- package/dist/{helpers/github-helper.d.ts → services/github-service.d.ts} +1 -1
- package/dist/{helpers/github-helper.js → services/github-service.js} +1 -1
- package/dist/services/node-service.js +14 -14
- package/dist/services/notify-service.d.ts +1 -0
- package/dist/services/notify-service.js +1 -0
- package/dist/services/systemd-service.d.ts +3 -0
- package/dist/services/systemd-service.js +45 -0
- package/dist/test.d.ts +1 -0
- package/dist/test.js +50 -0
- package/dist/types.d.ts +6 -0
- package/install-dependencies.sh +0 -2
- package/oclif.manifest.json +33 -4
- package/package.json +9 -8
- package/projects/custom/pilot.json +9 -0
- package/projects/hypergraph/Dockerfile +24 -18
- package/projects/hypergraph/docker-compose.yml +14 -14
- package/projects/hypergraph/networks/integrationnet/gl0.env +4 -0
- package/projects/hypergraph/networks/integrationnet/gl1.env +4 -0
- package/projects/hypergraph/networks/integrationnet/network.env +8 -0
- package/projects/hypergraph/networks/{integrationnet.env → integrationnet/source-nodes.env} +1 -9
- package/projects/hypergraph/networks/mainnet/gl0.env +4 -0
- package/projects/hypergraph/networks/mainnet/gl1.env +4 -0
- package/projects/hypergraph/networks/mainnet/network.env +8 -0
- package/projects/hypergraph/networks/{mainnet.env → mainnet/source-nodes.env} +0 -8
- package/projects/hypergraph/networks/testnet/gl0.env +5 -0
- package/projects/hypergraph/networks/testnet/gl1.env +4 -0
- package/projects/hypergraph/networks/testnet/network.env +8 -0
- package/projects/hypergraph/networks/{testnet.env → testnet/source-nodes.env} +0 -8
- package/projects/hypergraph/scripts/check-version.sh +31 -0
- package/projects/hypergraph/scripts/install.sh +30 -25
- package/projects/hypergraph/seedlist +268 -0
- package/scripts/autoheal.sh +8 -0
- package/scripts/restart_logger.sh +3 -0
- package/scripts/services/io.constellationnetwork.nodepilot.Updater.plist +16 -0
- package/scripts/services/node-pilot-autoheal.service +12 -0
- package/scripts/services/node-pilot-restarter.service +11 -0
- package/scripts/services/node-pilot-updater.service +13 -0
- package/scripts/update_logger.sh +3 -0
- package/dist/helpers/docker-helper.d.ts +0 -7
- package/projects/hypergraph/layers/gl1.env +0 -3
- package/projects/scripts/docker-cleanup.sh +0 -64
@@ -1,5 +1,7 @@
|
|
1
1
|
import { Args, Command } from '@oclif/core';
|
2
|
-
import
|
2
|
+
import chalk from "chalk";
|
3
|
+
import { clm } from "../../clm.js";
|
4
|
+
import { configStore, layerEnvNames, networkEnvNames } from "../../config-store.js";
|
3
5
|
import { configHelper } from "../../helpers/config-helper.js";
|
4
6
|
export default class ConfigSet extends Command {
|
5
7
|
static args = {
|
@@ -11,31 +13,31 @@ export default class ConfigSet extends Command {
|
|
11
13
|
'<%= config.bin %> <%= command.id %> CL_EXTERNAL_IP 127.0.0.1',
|
12
14
|
'<%= config.bin %> <%= command.id %> gl0:CL_PUBLIC_HTTP_PORT 9000',
|
13
15
|
];
|
14
|
-
logErrorAndExit(message) {
|
15
|
-
this.log(message);
|
16
|
-
this.exit(0);
|
17
|
-
}
|
18
16
|
async run() {
|
19
17
|
configHelper.assertProject('No configuration found. ');
|
20
18
|
const { args } = await this.parse(ConfigSet);
|
21
19
|
const { layersToRun } = configStore.getProjectInfo();
|
20
|
+
if (args.name.startsWith('key')) {
|
21
|
+
clm.error(`Key properties cannot be set directly. Please run ${chalk.cyan('cpilot config')} and select ${chalk.cyan('Key Info')} to manage the key file.`);
|
22
|
+
}
|
23
|
+
const { type: network } = configStore.getNetworkInfo();
|
22
24
|
if (args.name.includes(':')) {
|
23
25
|
const [layer, name] = args.name.split(':');
|
24
26
|
if (!layersToRun.includes(layer)) {
|
25
|
-
|
27
|
+
clm.error(`Invalid layer: ${layer}. Available layers: ${layersToRun.join(',')}`);
|
26
28
|
}
|
27
29
|
const validLayer = layer;
|
28
30
|
if (!Object.hasOwn(layerEnvNames, name)) {
|
29
|
-
|
31
|
+
clm.error(`Invalid layer configuration name: ${name}. Valid names are: ${Object.keys(layerEnvNames).join(', ')}`);
|
30
32
|
}
|
31
|
-
configStore.setEnvLayerInfo(validLayer, { [name]: args.value });
|
33
|
+
configStore.setEnvLayerInfo(network, validLayer, { [name]: args.value });
|
32
34
|
}
|
33
35
|
else {
|
34
36
|
const { name } = args;
|
35
|
-
if (!Object.hasOwn(
|
36
|
-
|
37
|
+
if (!Object.hasOwn(networkEnvNames, name)) {
|
38
|
+
clm.error(`Invalid configuration name: ${name}. Valid names are: ${Object.keys(networkEnvNames).join(', ')}`);
|
37
39
|
}
|
38
|
-
configStore.
|
40
|
+
configStore.setEnvNetworkInfo(network, { [name]: args.value });
|
39
41
|
}
|
40
42
|
}
|
41
43
|
}
|
package/dist/commands/config.js
CHANGED
@@ -3,11 +3,10 @@ import { Command } from '@oclif/core';
|
|
3
3
|
import { checkNetwork } from "../checks/check-network.js";
|
4
4
|
import { checkProject } from "../checks/check-project.js";
|
5
5
|
import { clm } from "../clm.js";
|
6
|
-
import { configStore } from "../config-store.js";
|
7
6
|
import { configHelper } from "../helpers/config-helper.js";
|
8
|
-
import { dockerHelper } from "../helpers/docker-helper.js";
|
9
7
|
import { keyFileHelper } from "../helpers/key-file-helper.js";
|
10
8
|
import { promptHelper } from "../helpers/prompt-helper.js";
|
9
|
+
import { dockerService } from "../services/docker-service.js";
|
11
10
|
export default class Config extends Command {
|
12
11
|
static description = 'Update configuration settings';
|
13
12
|
static examples = [
|
@@ -15,51 +14,47 @@ export default class Config extends Command {
|
|
15
14
|
];
|
16
15
|
async run() {
|
17
16
|
configHelper.assertProject('No configuration found. ');
|
18
|
-
let {
|
19
|
-
name = name.charAt(0).toUpperCase() + name.slice(1);
|
17
|
+
// let {name} = configStore.getProjectInfo();
|
18
|
+
// name = name.charAt(0).toUpperCase() + name.slice(1);
|
20
19
|
const answer = await select({
|
21
20
|
choices: [
|
22
|
-
{ name: 'Auto Restart', value: 'autoRestart' },
|
23
21
|
{ name: 'External IP Address', value: 'externalIp' },
|
24
22
|
{ name: 'Java Memory', value: 'javaMemory' },
|
25
23
|
{ name: 'Key File', value: 'keyFile' },
|
26
|
-
{ name:
|
27
|
-
{ name: `Network
|
24
|
+
{ name: 'Layers To Run', value: 'layersToRun' },
|
25
|
+
{ name: `Network`, value: 'network' },
|
28
26
|
],
|
29
27
|
message: 'What would you like to change?:',
|
30
28
|
});
|
31
29
|
// eslint-disable-next-line unicorn/prefer-switch
|
32
|
-
if (answer === '
|
33
|
-
await promptHelper.configureAutoRestart();
|
34
|
-
}
|
35
|
-
else if (answer === 'externalIp') {
|
30
|
+
if (answer === 'externalIp') {
|
36
31
|
await checkNetwork.configureIpAddress();
|
37
32
|
}
|
38
33
|
else if (answer === 'javaMemory') {
|
34
|
+
await shutdownNodeIfRunning();
|
39
35
|
await promptHelper.configureJavaMemoryArguments();
|
40
|
-
if (await dockerHelper.isRunning()) {
|
41
|
-
clm.preStep('The validator node must be restarted before changes can be applied.');
|
42
|
-
await promptHelper.doYouWishToContinue();
|
43
|
-
await dockerHelper.dockerDown();
|
44
|
-
await dockerHelper.dockerUp();
|
45
|
-
}
|
46
36
|
}
|
47
37
|
else if (answer === 'keyFile') {
|
38
|
+
await shutdownNodeIfRunning();
|
48
39
|
await keyFileHelper.showKeyFileInfo();
|
49
40
|
await keyFileHelper.promptForKeyFile();
|
50
41
|
}
|
51
42
|
else if (answer === 'layersToRun') {
|
52
|
-
|
53
|
-
clm.preStep('The validator node must be stopped first.');
|
54
|
-
await promptHelper.doYouWishToContinue();
|
55
|
-
await dockerHelper.dockerDown();
|
56
|
-
}
|
43
|
+
await shutdownNodeIfRunning();
|
57
44
|
await promptHelper.selectLayers();
|
58
45
|
await promptHelper.configureJavaMemoryArguments();
|
59
46
|
}
|
60
47
|
else if (answer === 'network') {
|
48
|
+
await shutdownNodeIfRunning();
|
61
49
|
await promptHelper.selectNetwork();
|
62
50
|
await checkProject.runInstall();
|
63
51
|
}
|
64
52
|
}
|
65
53
|
}
|
54
|
+
async function shutdownNodeIfRunning() {
|
55
|
+
if (await dockerService.isRunning()) {
|
56
|
+
clm.preStep('The validator node must be stopped first.');
|
57
|
+
await promptHelper.doYouWishToContinue();
|
58
|
+
await dockerService.dockerDown();
|
59
|
+
}
|
60
|
+
}
|
package/dist/commands/info.js
CHANGED
@@ -10,10 +10,13 @@ export default class Info extends Command {
|
|
10
10
|
configHelper.assertProject('No project info found. ');
|
11
11
|
const projectInfo = configStore.getProjectInfo();
|
12
12
|
const networkInfo = configStore.getNetworkInfo();
|
13
|
+
const { CL_EXTERNAL_IP: currentIpAddress } = configStore.getEnvInfo();
|
13
14
|
// Project Name
|
14
15
|
configHelper.showEnvInfo('Project Name', projectInfo.name);
|
15
16
|
// DAG Address
|
16
17
|
configHelper.showEnvInfo('DAG Address', projectInfo.dagAddress);
|
18
|
+
// External IP Address
|
19
|
+
configHelper.showEnvInfo('External IP Address', currentIpAddress);
|
17
20
|
// Node ID
|
18
21
|
configHelper.showEnvInfo('Node ID', projectInfo.nodeId);
|
19
22
|
// Layers to Run
|
@@ -26,7 +29,5 @@ export default class Info extends Command {
|
|
26
29
|
configHelper.showEnvInfo('Project Directory', projectInfo.projectDir);
|
27
30
|
// Fast Forward
|
28
31
|
configHelper.showEnvInfo('Fast Forward Enabled', (projectInfo.fastForward === undefined || Boolean(projectInfo.fastForward)).toString());
|
29
|
-
// Auto Restart
|
30
|
-
configHelper.showEnvInfo('Auto Restart Enabled', Boolean(projectInfo.autoRestart).toString());
|
31
32
|
}
|
32
33
|
}
|
package/dist/commands/logs.d.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
import { Command } from '@oclif/core';
|
2
2
|
export default class Logs extends Command {
|
3
3
|
static args: {
|
4
|
-
layer: import("@oclif/core/interfaces").Arg<string
|
4
|
+
layer: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
5
5
|
};
|
6
6
|
static description: string;
|
7
7
|
static examples: string[];
|
package/dist/commands/logs.js
CHANGED
@@ -5,7 +5,7 @@ import { configHelper } from "../helpers/config-helper.js";
|
|
5
5
|
import { shellService } from "../services/shell-service.js";
|
6
6
|
export default class Logs extends Command {
|
7
7
|
static args = {
|
8
|
-
layer: Args.string({ description: 'network layer to view. e.g. gl0' }),
|
8
|
+
layer: Args.string({ description: 'network layer to view. e.g. gl0', required: true }),
|
9
9
|
};
|
10
10
|
static description = 'view validator node runtime logs';
|
11
11
|
static examples = [
|
@@ -17,14 +17,18 @@ export default class Logs extends Command {
|
|
17
17
|
};
|
18
18
|
async run() {
|
19
19
|
configHelper.assertProject('No project found. ');
|
20
|
-
const { flags } = await this.parse(Logs);
|
20
|
+
const { args, flags } = await this.parse(Logs);
|
21
21
|
const numOfLines = Number.isNaN(Number(flags.numOfLines)) ? 100 : Number(flags.numOfLines);
|
22
|
+
const { layersToRun } = configStore.getProjectInfo();
|
23
|
+
if (!layersToRun.includes(args.layer)) {
|
24
|
+
this.error(`Invalid layer: ${args.layer}. Available layers: ${layersToRun.join(',')}`);
|
25
|
+
}
|
22
26
|
let tailFlag = flags.numOfLines ? `-n ${numOfLines}` : '-n 100';
|
23
27
|
if (flags.follow) {
|
24
28
|
tailFlag = ' -f';
|
25
29
|
}
|
26
30
|
const { projectDir } = configStore.getProjectInfo();
|
27
|
-
const logPath = path.join(projectDir, 'app-data',
|
31
|
+
const logPath = path.join(projectDir, 'app-data', `${args.layer}-logs`, 'app.log');
|
28
32
|
await shellService.runCommand(`tail ${tailFlag} ${logPath}`).catch(() => 1);
|
29
33
|
}
|
30
34
|
}
|
@@ -1,6 +1,14 @@
|
|
1
|
-
import {
|
2
|
-
export default class Restart extends
|
1
|
+
import { BaseCommand } from "../base-command.js";
|
2
|
+
export default class Restart extends BaseCommand {
|
3
|
+
static args: {
|
4
|
+
layer: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
5
|
+
};
|
3
6
|
static description: string;
|
4
7
|
static examples: string[];
|
8
|
+
static flags: {
|
9
|
+
autostart: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
10
|
+
update: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
11
|
+
};
|
5
12
|
run(): Promise<void>;
|
13
|
+
private restart;
|
6
14
|
}
|
package/dist/commands/restart.js
CHANGED
@@ -1,25 +1,81 @@
|
|
1
|
-
import {
|
1
|
+
import { Args, Flags } from '@oclif/core';
|
2
|
+
import { BaseCommand } from "../base-command.js";
|
2
3
|
import { checkProject } from "../checks/check-project.js";
|
3
4
|
import { clm } from "../clm.js";
|
4
5
|
import { configStore } from "../config-store.js";
|
5
6
|
import { configHelper } from "../helpers/config-helper.js";
|
6
|
-
import {
|
7
|
+
import { dockerService } from "../services/docker-service.js";
|
7
8
|
import { nodeService } from "../services/node-service.js";
|
8
|
-
export default class Restart extends
|
9
|
+
export default class Restart extends BaseCommand {
|
10
|
+
static args = {
|
11
|
+
layer: Args.string({ description: 'network layer to restart. e.g. gl0' }),
|
12
|
+
};
|
9
13
|
static description = 'A full shutdown of the validator node, then restart';
|
10
14
|
static examples = [
|
11
15
|
'<%= config.bin %> <%= command.id %>',
|
12
16
|
];
|
17
|
+
static flags = {
|
18
|
+
autostart: Flags.boolean({ description: 'restart each running project if it has been stopped' }),
|
19
|
+
update: Flags.boolean({ description: 'update each project if a new version is available' }),
|
20
|
+
};
|
13
21
|
async run() {
|
22
|
+
const { args, flags } = await this.parse(Restart);
|
23
|
+
this.checkProject(flags);
|
14
24
|
configHelper.assertProject('No project found. ');
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
25
|
+
if (!await dockerService.isRunning()) {
|
26
|
+
this.error('The validator node is not running.');
|
27
|
+
}
|
28
|
+
if (args && args.layer) {
|
29
|
+
const { layersToRun } = configStore.getProjectInfo();
|
30
|
+
const layer = args.layer;
|
31
|
+
if (!layersToRun.includes(layer)) {
|
32
|
+
this.error(`Invalid layer: ${layer}. Available layers: ${layersToRun.join(',')}`);
|
33
|
+
}
|
34
|
+
await nodeService.leaveCluster(layer);
|
35
|
+
await nodeService.pollForLayersState([layer], 'Offline');
|
36
|
+
clm.preStep(`Restarting ${layer.toUpperCase()}...`);
|
37
|
+
await dockerService.dockerRestart(layer);
|
38
|
+
return;
|
39
|
+
}
|
40
|
+
if (flags.update) {
|
41
|
+
const project = configStore.getActiveProject();
|
42
|
+
for (const project of configStore.getRunningProjects()) {
|
43
|
+
configStore.setActiveProject(project);
|
44
|
+
// eslint-disable-next-line no-await-in-loop
|
45
|
+
if (await checkProject.hasVersionChanged()) {
|
46
|
+
// eslint-disable-next-line no-await-in-loop
|
47
|
+
await this.restart();
|
48
|
+
}
|
49
|
+
}
|
50
|
+
configStore.setActiveProject(project);
|
51
|
+
return;
|
52
|
+
}
|
53
|
+
if (flags.autostart) {
|
54
|
+
const project = configStore.getActiveProject();
|
55
|
+
for (const project of configStore.getRunningProjects()) {
|
56
|
+
configStore.setActiveProject(project);
|
57
|
+
// eslint-disable-next-line no-await-in-loop
|
58
|
+
await this.restart();
|
59
|
+
}
|
60
|
+
configStore.setActiveProject(project);
|
61
|
+
return;
|
62
|
+
}
|
63
|
+
await this.restart();
|
64
|
+
}
|
65
|
+
async restart() {
|
66
|
+
// const pAll = layersToRun.map(l => nodeService.getNodeInfo(l));
|
67
|
+
// const info = await Promise.all(pAll);
|
68
|
+
// const isRunning = info.some(n => n.state !== 'Unavailable');
|
69
|
+
if (await dockerService.isRunning()) {
|
70
|
+
await nodeService.leaveClusterAllLayers();
|
71
|
+
const { layersToRun } = configStore.getProjectInfo();
|
72
|
+
await nodeService.pollForLayersState(layersToRun, 'Offline');
|
73
|
+
clm.preStep('Stopping the node...');
|
74
|
+
await dockerService.dockerDown();
|
75
|
+
}
|
20
76
|
clm.preStep('Checking for a new version...');
|
21
77
|
await checkProject.runUpgrade();
|
22
78
|
clm.preStep('Starting the node...');
|
23
|
-
await
|
79
|
+
await dockerService.dockerUp();
|
24
80
|
}
|
25
81
|
}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { Command } from '@oclif/core';
|
2
2
|
import { configStore } from "../config-store.js";
|
3
|
-
import { dockerHelper } from "../helpers/docker-helper.js";
|
4
|
-
import { nodeService } from "../services/node-service.js";
|
5
3
|
import { configHelper } from "../helpers/config-helper.js";
|
4
|
+
import { dockerService } from "../services/docker-service.js";
|
5
|
+
import { nodeService } from "../services/node-service.js";
|
6
6
|
export default class Shutdown extends Command {
|
7
7
|
static description = 'A full shutdown of the validator node';
|
8
8
|
static examples = [
|
@@ -13,6 +13,6 @@ export default class Shutdown extends Command {
|
|
13
13
|
const { layersToRun } = configStore.getProjectInfo();
|
14
14
|
await nodeService.leaveClusterAllLayers();
|
15
15
|
await nodeService.pollForLayersState(layersToRun, 'Offline');
|
16
|
-
await
|
16
|
+
await dockerService.dockerDown();
|
17
17
|
}
|
18
18
|
}
|
package/dist/commands/status.js
CHANGED
@@ -4,6 +4,7 @@ import { checkLayers } from "../checks/check-layers.js";
|
|
4
4
|
import { checkNetwork } from "../checks/check-network.js";
|
5
5
|
import { checkNodeCtl } from "../checks/check-node-ctl.js";
|
6
6
|
import { checkProject } from "../checks/check-project.js";
|
7
|
+
import { checkWallet } from "../checks/check-wallet.js";
|
7
8
|
import { keyFileHelper } from "../helpers/key-file-helper.js";
|
8
9
|
export default class Status extends Command {
|
9
10
|
// eslint-disable-next-line no-warning-comments
|
@@ -16,10 +17,13 @@ export default class Status extends Command {
|
|
16
17
|
export async function checkInstallationAndConfigurationStatus() {
|
17
18
|
await checkInitialSetup.firstTimeRun();
|
18
19
|
await checkProject.projectInstallation();
|
20
|
+
await checkNetwork.isNetworkConnectable();
|
19
21
|
await checkProject.releaseVersion();
|
20
22
|
await checkNodeCtl.check4Migration();
|
21
23
|
await keyFileHelper.promptIfNoKeyFile();
|
22
24
|
await checkNetwork.checkSeedList();
|
25
|
+
await checkNetwork.checkForExistingNodeIdInCluster();
|
26
|
+
await checkWallet.checkCollateral();
|
23
27
|
await checkLayers.layersRunning();
|
24
28
|
await checkLayers.layersReadyToJoin();
|
25
29
|
await checkLayers.layersStatus();
|
package/dist/commands/test.js
CHANGED
@@ -4,15 +4,22 @@ import fs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
5
5
|
import { fileURLToPath } from "node:url";
|
6
6
|
import { getRandomNode } from "../services/get-random-node.js";
|
7
|
-
import { checkNodeCtl } from "../checks/check-node-ctl.js";
|
8
7
|
export default class Test extends Command {
|
9
8
|
static description = 'node pilot test command';
|
10
9
|
static hidden = true;
|
11
10
|
async run() {
|
12
|
-
await checkNodeCtl.importKeyInfo(path.resolve('/Users/ffox/Projects/Constellation/node-pilot/cn-config.yaml'));
|
11
|
+
// await checkNodeCtl.importKeyInfo(path.resolve('/Users/ffox/Projects/Constellation/node-pilot/cn-config.yaml'));
|
12
|
+
// await this.testRandomNode();
|
13
|
+
// const info = await archiverService.getArchiveSnapshotInfo();
|
14
|
+
// console.log(info);
|
15
|
+
// const ordinal = archiverService.getDownloadedSnapshotRange();
|
16
|
+
// console.log(ordinal)
|
17
|
+
//
|
18
|
+
// await archiverService.syncToLatestSnapshot();
|
19
|
+
// await archiverService.checkLogsForMissingSnapshots();
|
13
20
|
}
|
14
21
|
async testRandomNode() {
|
15
|
-
const filePath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), `../../projects/hypergraph/networks/mainnet.env`);
|
22
|
+
const filePath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), `../../projects/hypergraph/networks/mainnet/source-nodes.env`);
|
16
23
|
const conetent = fs.readFileSync(filePath);
|
17
24
|
const parsed = dotenv.parse(conetent);
|
18
25
|
const nodes = ['1', '2', '3'].map(i => {
|
package/dist/config-store.d.ts
CHANGED
@@ -1,80 +1,100 @@
|
|
1
|
-
import { TessellationLayer } from "./types.js";
|
1
|
+
import { ClusterStats, TessellationLayer } from "./types.js";
|
2
2
|
declare class ConfigStore {
|
3
3
|
private pilotStore;
|
4
4
|
private projectStore;
|
5
5
|
constructor();
|
6
6
|
applyNewProjectStore(name: string): Promise<void>;
|
7
|
-
|
7
|
+
getActiveProject(): string;
|
8
|
+
getAppDir(): string;
|
8
9
|
getDockerEnvInfo(): object;
|
9
|
-
getEnvCommonInfo(): EnvCommonInfo;
|
10
10
|
getEnvInfo(): EnvInfo;
|
11
|
-
getEnvLayerInfo(layer: TessellationLayer): EnvLayerInfo;
|
11
|
+
getEnvLayerInfo(network: NetworkType, layer: TessellationLayer): EnvLayerInfo;
|
12
|
+
getEnvNetworkInfo(network: NetworkType): EnvNetworkInfo;
|
12
13
|
getLayerPortInfo(layer: TessellationLayer): PortInfo;
|
13
|
-
getNetworkEnvInfo(network: NetworkType): EnvCommonInfo;
|
14
14
|
getNetworkInfo(): NetworkInfo;
|
15
15
|
getProjectInfo(): ProjectInfo;
|
16
|
+
getProjects(): string[];
|
17
|
+
getRunningProjects(): string[];
|
16
18
|
getSystemInfo(): SystemInfo;
|
17
|
-
hasProjectFlag(name: string):
|
19
|
+
hasProjectFlag(name: string): any;
|
18
20
|
hasProjects(): boolean;
|
21
|
+
setActiveProject(name: string): void;
|
22
|
+
setClusterStats(info: Partial<ClusterStats>): void;
|
19
23
|
setDockerEnvInfo(info: Partial<{
|
20
24
|
DOCKER_IMAGE_VERSION: string;
|
21
25
|
DOCKER_USER_ID: string;
|
22
26
|
}>): void;
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
setNetworkEnvInfo(info: NetworkEnvInfo): void;
|
27
|
+
setEnvInfo(info: Partial<EnvInfo>): void;
|
28
|
+
setEnvLayerInfo(network: NetworkType, layer: TessellationLayer, info: Partial<EnvLayerInfo>): void;
|
29
|
+
setEnvNetworkInfo(network: NetworkType, info: Partial<EnvNetworkInfo>): void;
|
27
30
|
setNetworkInfo(info: Partial<NetworkInfo>): void;
|
28
31
|
setProjectFlag(name: string, value: boolean): any;
|
29
32
|
setProjectInfo(info: Partial<ProjectInfo>): void;
|
33
|
+
setProjectStatusToRunning(isRunning: boolean): void;
|
30
34
|
setSystemInfo(info: Partial<SystemInfo>): void;
|
35
|
+
private getPilotInfo;
|
36
|
+
private setPilotInfo;
|
31
37
|
}
|
32
38
|
export declare const configStore: ConfigStore;
|
33
|
-
type
|
34
|
-
|
39
|
+
export type EnvInfo = EnvKeyInfo & {
|
40
|
+
CL_ARCHIVE_NODE: boolean;
|
41
|
+
CL_EXTERNAL_IP: string;
|
35
42
|
};
|
36
|
-
export
|
37
|
-
|
38
|
-
|
43
|
+
export declare const envNames: {
|
44
|
+
CL_EXTERNAL_IP: number;
|
45
|
+
CL_KEYALIAS: number;
|
46
|
+
CL_KEYSTORE: number;
|
47
|
+
CL_PASSWORD: number;
|
39
48
|
};
|
40
|
-
export type
|
49
|
+
export type EnvCombinedInfo = EnvInfo & EnvLayerInfo & EnvNetworkInfo;
|
50
|
+
export type EnvNetworkInfo = EnvPeerInfo & {
|
41
51
|
CL_APP_ENV: string;
|
42
|
-
|
52
|
+
CL_COLLATERAL: string;
|
53
|
+
CL_L0_TOKEN_IDENTIFIER: string;
|
54
|
+
};
|
55
|
+
export type EnvKeyInfo = {
|
56
|
+
CL_KEYALIAS: string;
|
57
|
+
CL_KEYSTORE: string;
|
58
|
+
CL_PASSWORD: string;
|
59
|
+
};
|
60
|
+
export type EnvPeerInfo = {
|
43
61
|
CL_GLOBAL_L0_PEER_HOST: string;
|
44
62
|
CL_GLOBAL_L0_PEER_HTTP_PORT: string;
|
45
63
|
CL_GLOBAL_L0_PEER_ID: string;
|
46
|
-
CL_KEYALIAS: string;
|
47
|
-
CL_KEYSTORE: string;
|
48
64
|
CL_L0_PEER_HTTP_HOST: string;
|
49
65
|
CL_L0_PEER_HTTP_PORT: string;
|
50
66
|
CL_L0_PEER_ID: string;
|
51
67
|
CL_L0_PEER_P2P_PORT: string;
|
52
|
-
CL_L0_TOKEN_IDENTIFIER: string;
|
53
|
-
CL_PASSWORD: string;
|
54
68
|
};
|
55
|
-
export declare const
|
69
|
+
export declare const networkEnvNames: {
|
56
70
|
CL_APP_ENV: number;
|
57
|
-
CL_EXTERNAL_IP: number;
|
58
71
|
CL_GLOBAL_L0_PEER_HOST: number;
|
59
72
|
CL_GLOBAL_L0_PEER_HTTP_PORT: number;
|
60
73
|
CL_GLOBAL_L0_PEER_ID: number;
|
61
|
-
CL_KEYALIAS: number;
|
62
|
-
CL_KEYSTORE: number;
|
63
74
|
CL_L0_PEER_HTTP_HOST: number;
|
64
75
|
CL_L0_PEER_HTTP_PORT: number;
|
65
76
|
CL_L0_PEER_ID: number;
|
77
|
+
CL_L0_PEER_P2P_PORT: number;
|
66
78
|
CL_L0_TOKEN_IDENTIFIER: number;
|
67
|
-
CL_PASSWORD: number;
|
68
79
|
};
|
69
|
-
export type EnvLayerInfo = {
|
80
|
+
export type EnvLayerInfo = EnvPeerInfo & {
|
70
81
|
CL_CLI_HTTP_PORT: string;
|
71
82
|
CL_DOCKER_JAVA_OPTS: string;
|
83
|
+
CL_LB: string;
|
72
84
|
CL_P2P_HTTP_PORT: string;
|
73
85
|
CL_PUBLIC_HTTP_PORT: string;
|
74
86
|
};
|
75
87
|
export declare const layerEnvNames: {
|
76
88
|
CL_CLI_HTTP_PORT: number;
|
77
89
|
CL_DOCKER_JAVA_OPTS: number;
|
90
|
+
CL_GLOBAL_L0_PEER_HOST: number;
|
91
|
+
CL_GLOBAL_L0_PEER_HTTP_PORT: number;
|
92
|
+
CL_GLOBAL_L0_PEER_ID: number;
|
93
|
+
CL_L0_PEER_HTTP_HOST: number;
|
94
|
+
CL_L0_PEER_HTTP_PORT: number;
|
95
|
+
CL_L0_PEER_ID: number;
|
96
|
+
CL_L0_PEER_P2P_PORT: number;
|
97
|
+
CL_LB: number;
|
78
98
|
CL_P2P_HTTP_PORT: number;
|
79
99
|
CL_PUBLIC_HTTP_PORT: number;
|
80
100
|
};
|
@@ -87,9 +107,6 @@ export type SystemInfo = {
|
|
87
107
|
};
|
88
108
|
export type NetworkType = 'integrationnet' | 'mainnet' | 'testnet';
|
89
109
|
export type ProjectInfo = {
|
90
|
-
autoRestart: boolean;
|
91
|
-
autoStart: boolean;
|
92
|
-
autoUpdate: boolean;
|
93
110
|
dagAddress: string;
|
94
111
|
fastForward: boolean;
|
95
112
|
homeDir: string;
|
@@ -103,7 +120,6 @@ export type NetworkInfo = {
|
|
103
120
|
type: NetworkType;
|
104
121
|
version: string;
|
105
122
|
};
|
106
|
-
export type NetworkEnvInfo = Record<NetworkType, EnvCommonInfo>;
|
107
123
|
export type PortInfo = {
|
108
124
|
CLI: string;
|
109
125
|
P2P: string;
|