@nosana/node 1.1.14-rc → 1.1.15
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/.env.dev +1 -2
- package/dist/.env.prd +1 -2
- package/dist/package.json +4 -2
- package/dist/src/NodeManager/checkForMaintenance.d.ts +1 -0
- package/dist/src/NodeManager/checkForMaintenance.js +40 -0
- package/dist/src/NodeManager/clients/hostManager/index.d.ts +4 -0
- package/dist/src/NodeManager/clients/hostManager/index.js +25 -0
- package/dist/src/NodeManager/clients/maintenanceMiddleware.d.ts +2 -0
- package/dist/src/NodeManager/clients/maintenanceMiddleware.js +11 -0
- package/dist/src/NodeManager/clients/maintenanceState.d.ts +10 -0
- package/dist/src/NodeManager/clients/maintenanceState.js +66 -0
- package/dist/src/NodeManager/clients/types.utils.d.ts +45 -0
- package/dist/src/NodeManager/configs/configs.d.ts +1 -3
- package/dist/src/NodeManager/configs/configs.js +1 -3
- package/dist/src/NodeManager/errors/NodeBannedError.d.ts +3 -0
- package/dist/src/NodeManager/errors/NodeBannedError.js +6 -0
- package/dist/src/NodeManager/errors/NodeNotQualifiedError.d.ts +3 -0
- package/dist/src/NodeManager/errors/NodeNotQualifiedError.js +6 -0
- package/dist/src/NodeManager/errors/NodeNotRegisteredError.d.ts +3 -0
- package/dist/src/NodeManager/errors/NodeNotRegisteredError.js +6 -0
- package/dist/src/NodeManager/index.js +25 -57
- package/dist/src/NodeManager/monitoring/log/NodeLog.d.ts +0 -1
- package/dist/src/NodeManager/monitoring/log/NodeLog.js +11 -38
- package/dist/src/NodeManager/monitoring/log/console/ConsoleLogger.d.ts +3 -0
- package/dist/src/NodeManager/monitoring/log/console/ConsoleLogger.js +33 -5
- package/dist/src/NodeManager/monitoring/ping/PingHandler.d.ts +2 -4
- package/dist/src/NodeManager/monitoring/ping/PingHandler.js +31 -26
- package/dist/src/NodeManager/monitoring/proxy/loggingProxy.d.ts +2 -1
- package/dist/src/NodeManager/monitoring/proxy/loggingProxy.js +2 -3
- package/dist/src/NodeManager/node/Node.d.ts +4 -6
- package/dist/src/NodeManager/node/Node.js +16 -29
- package/dist/src/NodeManager/node/api/ApiHandler.js +2 -3
- package/dist/src/NodeManager/node/api/middlewares/index.d.ts +0 -1
- package/dist/src/NodeManager/node/api/middlewares/index.js +0 -1
- package/dist/src/NodeManager/node/api/routes/post/index.d.ts +0 -1
- package/dist/src/NodeManager/node/api/routes/post/index.js +0 -1
- package/dist/src/NodeManager/node/grid/gridHandler.d.ts +2 -8
- package/dist/src/NodeManager/node/grid/gridHandler.js +10 -143
- package/dist/src/NodeManager/node/health/healthHandler.d.ts +1 -1
- package/dist/src/NodeManager/node/health/healthHandler.js +13 -11
- package/dist/src/NodeManager/node/job/JobRegistry.js +5 -3
- package/dist/src/NodeManager/node/job/defination/strategy/IpfsJobDefinitionStrategy.d.ts +1 -3
- package/dist/src/NodeManager/node/job/defination/strategy/IpfsJobDefinitionStrategy.js +2 -4
- package/dist/src/NodeManager/node/job/jobExternalUtil.d.ts +2 -3
- package/dist/src/NodeManager/node/job/jobExternalUtil.js +4 -4
- package/dist/src/NodeManager/node/job/jobHandler.js +5 -3
- package/dist/src/NodeManager/node/key/keyHandler.d.ts +0 -1
- package/dist/src/NodeManager/node/key/keyHandler.js +1 -38
- package/dist/src/NodeManager/node/market/benchmark.d.ts +15 -0
- package/dist/src/NodeManager/node/market/benchmark.js +84 -0
- package/dist/src/NodeManager/node/market/hostManager.d.ts +114 -0
- package/dist/src/NodeManager/node/market/hostManager.js +112 -0
- package/dist/src/NodeManager/node/market/marketAccess.d.ts +8 -0
- package/dist/src/NodeManager/node/market/marketAccess.js +53 -0
- package/dist/src/NodeManager/node/market/marketHandler.d.ts +10 -3
- package/dist/src/NodeManager/node/market/marketHandler.js +88 -6
- package/dist/src/NodeManager/node/register/index.d.ts +2 -12
- package/dist/src/NodeManager/node/register/index.js +12 -56
- package/dist/src/NodeManager/node/resource/resourceManager.d.ts +2 -1
- package/dist/src/NodeManager/node/resource/resourceManager.js +4 -4
- package/dist/src/NodeManager/sdk/index.js +4 -14
- package/dist/src/NodeManager/utils/wslCheck.js +1 -1
- package/dist/src/cli/createNosanaCli.js +2 -0
- package/dist/src/ipfs/IpfsClient.d.ts +7 -0
- package/dist/src/ipfs/IpfsClient.js +17 -0
- package/npm-shrinkwrap.json +30 -2
- package/package.json +5 -3
- package/dist/src/NodeManager/client/index.d.ts +0 -4
- package/dist/src/NodeManager/client/index.js +0 -14
- package/dist/src/NodeManager/node/api/middlewares/rest/verifyBackendSignatureMiddleware.d.ts +0 -3
- package/dist/src/NodeManager/node/api/middlewares/rest/verifyBackendSignatureMiddleware.js +0 -20
- package/dist/src/NodeManager/node/api/routes/post/node-validation.d.ts +0 -4
- package/dist/src/NodeManager/node/api/routes/post/node-validation.js +0 -1787
- package/dist/src/NodeManager/node/specs/specsHandler.d.ts +0 -17
- package/dist/src/NodeManager/node/specs/specsHandler.js +0 -135
- package/dist/src/NodeManager/node/specs/type.d.ts +0 -15
- /package/dist/src/NodeManager/{node/specs/type.js → clients/types.utils.js} +0 -0
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Client } from '@nosana/sdk';
|
|
2
|
-
import { Provider } from '../../provider/Provider.js';
|
|
3
|
-
import { NodeRepository } from '../../repository/NodeRepository.js';
|
|
4
|
-
export declare class SpecsHandler {
|
|
5
|
-
private provider;
|
|
6
|
-
private repository;
|
|
7
|
-
private sdk;
|
|
8
|
-
constructor(provider: Provider, repository: NodeRepository, sdk: Client);
|
|
9
|
-
check(): Promise<boolean>;
|
|
10
|
-
private submitSystemSpecs;
|
|
11
|
-
private processSuccess;
|
|
12
|
-
private parseLogsIntoJSON;
|
|
13
|
-
private processFailure;
|
|
14
|
-
private processSystemInfoBenchmark;
|
|
15
|
-
private processNetworkInfoBenchmark;
|
|
16
|
-
private processGPUInfoBenchmark;
|
|
17
|
-
}
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import { configs } from '../../configs/configs.js';
|
|
2
|
-
import { specsAndNetworkJob } from '../../../static/index.js';
|
|
3
|
-
import { applyLoggingProxyToClass } from '../../monitoring/proxy/loggingProxy.js';
|
|
4
|
-
import TaskManager from '../task/TaskManager.js';
|
|
5
|
-
import { generateRandomId } from '../utils/generateRandomId.js';
|
|
6
|
-
export class SpecsHandler {
|
|
7
|
-
constructor(provider, repository, sdk) {
|
|
8
|
-
this.provider = provider;
|
|
9
|
-
this.repository = repository;
|
|
10
|
-
this.sdk = sdk;
|
|
11
|
-
applyLoggingProxyToClass(this);
|
|
12
|
-
}
|
|
13
|
-
async check() {
|
|
14
|
-
const id = generateRandomId(32);
|
|
15
|
-
const task = new TaskManager(this.provider, this.repository, id, this.sdk.solana.wallet.publicKey.toString(), specsAndNetworkJob);
|
|
16
|
-
try {
|
|
17
|
-
task.bootstrap();
|
|
18
|
-
await task.start();
|
|
19
|
-
}
|
|
20
|
-
catch (error) {
|
|
21
|
-
throw error;
|
|
22
|
-
}
|
|
23
|
-
let result = this.repository.getFlow(id);
|
|
24
|
-
if (result) {
|
|
25
|
-
this.repository.deleteflow(result.id);
|
|
26
|
-
if (result && result.state.status === 'success') {
|
|
27
|
-
await this.processSuccess(result.state.opStates);
|
|
28
|
-
this.repository.updateNodeInfo({
|
|
29
|
-
protocol: this.provider.containerOrchestration.getProtocol(),
|
|
30
|
-
});
|
|
31
|
-
await this.submitSystemSpecs();
|
|
32
|
-
}
|
|
33
|
-
else if (result && result.state.status === 'failed') {
|
|
34
|
-
this.processFailure(result.state.opStates);
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
throw new Error('Cannot find results');
|
|
38
|
-
}
|
|
39
|
-
return true;
|
|
40
|
-
}
|
|
41
|
-
return false;
|
|
42
|
-
}
|
|
43
|
-
async submitSystemSpecs() {
|
|
44
|
-
const nodeInfo = this.repository.getNodeInfo();
|
|
45
|
-
const headers = new Headers();
|
|
46
|
-
headers.append('Authorization', await this.sdk.authorization.generate(configs().signMessage));
|
|
47
|
-
headers.append('Content-Type', 'application/json');
|
|
48
|
-
await fetch(`${configs().backendUrl}/nodes/${this.sdk.solana.provider.wallet.publicKey.toString()}/submit-system-specs`, {
|
|
49
|
-
method: 'POST',
|
|
50
|
-
headers,
|
|
51
|
-
body: JSON.stringify(nodeInfo),
|
|
52
|
-
}).catch((error) => {
|
|
53
|
-
console.error(error);
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
processSuccess(opStates) {
|
|
57
|
-
if (!opStates) {
|
|
58
|
-
throw new Error('Missing operation states in result');
|
|
59
|
-
}
|
|
60
|
-
for (const { operationId, logs } of opStates) {
|
|
61
|
-
switch (operationId) {
|
|
62
|
-
case 'system-info':
|
|
63
|
-
this.processSystemInfoBenchmark(logs);
|
|
64
|
-
break;
|
|
65
|
-
case 'network-info':
|
|
66
|
-
this.processNetworkInfoBenchmark(logs);
|
|
67
|
-
break;
|
|
68
|
-
case 'gpu-info':
|
|
69
|
-
this.processGPUInfoBenchmark(logs);
|
|
70
|
-
break;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
parseLogsIntoJSON(logs) {
|
|
75
|
-
return JSON.parse(logs.reduce((result, { log, type }) => type === 'stdout' ? result + log : result, ''));
|
|
76
|
-
}
|
|
77
|
-
processFailure(opStates) {
|
|
78
|
-
const errors = [];
|
|
79
|
-
if (opStates[0]) {
|
|
80
|
-
try {
|
|
81
|
-
const cudaCheckResults = JSON.parse(opStates[0].logs[0].log);
|
|
82
|
-
if (cudaCheckResults.error) {
|
|
83
|
-
errors.push('GPU benchmark failed. Ensure NVidia Cuda runtime drivers and NVidia Container Toolkit are correctly configured.');
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
catch (error) {
|
|
87
|
-
errors.push('GPU benchmark returned with no devices.');
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
if (opStates[1]) {
|
|
91
|
-
errors.push('Disk space check failed.');
|
|
92
|
-
}
|
|
93
|
-
if (errors.length > 0) {
|
|
94
|
-
throw new Error(errors.join(' '));
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
processSystemInfoBenchmark(logs) {
|
|
98
|
-
if (!logs[0])
|
|
99
|
-
throw new Error('Could not find system info logs');
|
|
100
|
-
const { system_environment, cpu_model: model, logical_cores, physical_cores, ram_mb, disk_gb, } = this.parseLogsIntoJSON(logs);
|
|
101
|
-
if (configs().minDiskSpace > disk_gb) {
|
|
102
|
-
throw new Error(`Node does not have enough disk space. Required: ${configs().minDiskSpace}GB, Available: ${disk_gb}GB`);
|
|
103
|
-
}
|
|
104
|
-
this.repository.updateNodeInfo({
|
|
105
|
-
system_environment,
|
|
106
|
-
cpu: {
|
|
107
|
-
model,
|
|
108
|
-
logical_cores,
|
|
109
|
-
physical_cores,
|
|
110
|
-
},
|
|
111
|
-
ram_mb,
|
|
112
|
-
disk_gb,
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
processNetworkInfoBenchmark(logs) {
|
|
116
|
-
if (!logs[0])
|
|
117
|
-
throw new Error('Could not find network info logs');
|
|
118
|
-
const { country, ip, ping_ms, download_mbps, upload_mbps } = this.parseLogsIntoJSON(logs);
|
|
119
|
-
this.repository.updateNodeInfo({
|
|
120
|
-
country,
|
|
121
|
-
network: {
|
|
122
|
-
ip,
|
|
123
|
-
ping_ms,
|
|
124
|
-
download_mbps,
|
|
125
|
-
upload_mbps,
|
|
126
|
-
},
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
processGPUInfoBenchmark(logs) {
|
|
130
|
-
if (!logs[0])
|
|
131
|
-
throw new Error('Could not find GPU info logs');
|
|
132
|
-
const results = this.parseLogsIntoJSON(logs);
|
|
133
|
-
this.repository.updateNodeInfo({ gpus: results });
|
|
134
|
-
}
|
|
135
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export type SystemInfoResults = {
|
|
2
|
-
system_environment: string;
|
|
3
|
-
cpu_model: string;
|
|
4
|
-
ram_mb: number;
|
|
5
|
-
disk_gb: number;
|
|
6
|
-
physical_cores: number;
|
|
7
|
-
logical_cores: number;
|
|
8
|
-
};
|
|
9
|
-
export type NetworkInfoResults = {
|
|
10
|
-
ip: string;
|
|
11
|
-
country: string;
|
|
12
|
-
ping_ms: number;
|
|
13
|
-
download_mbps: number;
|
|
14
|
-
upload_mbps: number;
|
|
15
|
-
};
|
|
File without changes
|