kurtosis-sdk 0.49.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/build/core/kurtosis_core_rpc_api_bindings/api_container_service_grpc_pb.d.ts +110 -0
- package/build/core/kurtosis_core_rpc_api_bindings/api_container_service_grpc_pb.js +581 -0
- package/build/core/kurtosis_core_rpc_api_bindings/api_container_service_grpc_web_pb.d.ts +236 -0
- package/build/core/kurtosis_core_rpc_api_bindings/api_container_service_grpc_web_pb.js +1174 -0
- package/build/core/kurtosis_core_rpc_api_bindings/api_container_service_pb.d.ts +918 -0
- package/build/core/kurtosis_core_rpc_api_bindings/api_container_service_pb.js +7616 -0
- package/build/core/kurtosis_core_rpc_api_bindings/executable_module_service_grpc_pb.d.ts +30 -0
- package/build/core/kurtosis_core_rpc_api_bindings/executable_module_service_grpc_pb.js +70 -0
- package/build/core/kurtosis_core_rpc_api_bindings/executable_module_service_grpc_web_pb.d.ts +44 -0
- package/build/core/kurtosis_core_rpc_api_bindings/executable_module_service_grpc_web_pb.js +198 -0
- package/build/core/kurtosis_core_rpc_api_bindings/executable_module_service_pb.d.ts +41 -0
- package/build/core/kurtosis_core_rpc_api_bindings/executable_module_service_pb.js +324 -0
- package/build/core/lib/constructor_calls.d.ts +33 -0
- package/build/core/lib/constructor_calls.js +328 -0
- package/build/core/lib/enclaves/enclave_context.d.ts +39 -0
- package/build/core/lib/enclaves/enclave_context.js +501 -0
- package/build/core/lib/enclaves/generic_api_container_client.d.ts +23 -0
- package/build/core/lib/enclaves/generic_api_container_client.js +6 -0
- package/build/core/lib/enclaves/generic_path_joiner.d.ts +3 -0
- package/build/core/lib/enclaves/generic_path_joiner.js +6 -0
- package/build/core/lib/enclaves/generic_tgz_archiver.d.ts +4 -0
- package/build/core/lib/enclaves/generic_tgz_archiver.js +2 -0
- package/build/core/lib/enclaves/grpc_node_api_container_client.d.ts +29 -0
- package/build/core/lib/enclaves/grpc_node_api_container_client.js +415 -0
- package/build/core/lib/enclaves/grpc_web_api_container_client.d.ts +28 -0
- package/build/core/lib/enclaves/grpc_web_api_container_client.js +415 -0
- package/build/core/lib/enclaves/node_tgz_archiver.d.ts +6 -0
- package/build/core/lib/enclaves/node_tgz_archiver.js +94 -0
- package/build/core/lib/enclaves/partition_connection.d.ts +20 -0
- package/build/core/lib/enclaves/partition_connection.js +62 -0
- package/build/core/lib/enclaves/template_and_data.d.ts +5 -0
- package/build/core/lib/enclaves/template_and_data.js +11 -0
- package/build/core/lib/enclaves/web_tgz_archiver.d.ts +5 -0
- package/build/core/lib/enclaves/web_tgz_archiver.js +26 -0
- package/build/core/lib/modules/module_context.d.ts +9 -0
- package/build/core/lib/modules/module_context.js +34 -0
- package/build/core/lib/services/container_config.d.ts +39 -0
- package/build/core/lib/services/container_config.js +85 -0
- package/build/core/lib/services/port_spec.d.ts +11 -0
- package/build/core/lib/services/port_spec.js +16 -0
- package/build/core/lib/services/service.d.ts +1 -0
- package/build/core/lib/services/service.js +6 -0
- package/build/core/lib/services/service_context.d.ts +19 -0
- package/build/core/lib/services/service_context.js +58 -0
- package/build/core/module_launch_api/args_io.d.ts +4 -0
- package/build/core/module_launch_api/args_io.js +60 -0
- package/build/core/module_launch_api/module_container_args.d.ts +8 -0
- package/build/core/module_launch_api/module_container_args.js +24 -0
- package/build/engine/kurtosis_engine_rpc_api_bindings/engine_service_grpc_pb.d.ts +50 -0
- package/build/engine/kurtosis_engine_rpc_api_bindings/engine_service_grpc_pb.js +186 -0
- package/build/engine/kurtosis_engine_rpc_api_bindings/engine_service_grpc_web_pb.d.ts +92 -0
- package/build/engine/kurtosis_engine_rpc_api_bindings/engine_service_grpc_web_pb.js +442 -0
- package/build/engine/kurtosis_engine_rpc_api_bindings/engine_service_pb.d.ts +267 -0
- package/build/engine/kurtosis_engine_rpc_api_bindings/engine_service_pb.js +2141 -0
- package/build/engine/lib/constructor_calls.d.ts +5 -0
- package/build/engine/lib/constructor_calls.js +34 -0
- package/build/engine/lib/kurtosis_context/generic_engine_client.d.ts +10 -0
- package/build/engine/lib/kurtosis_context/generic_engine_client.js +2 -0
- package/build/engine/lib/kurtosis_context/grpc_node_engine_client.d.ts +14 -0
- package/build/engine/lib/kurtosis_context/grpc_node_engine_client.js +165 -0
- package/build/engine/lib/kurtosis_context/grpc_web_engine_client.d.ts +14 -0
- package/build/engine/lib/kurtosis_context/grpc_web_engine_client.js +165 -0
- package/build/engine/lib/kurtosis_context/kurtosis_context.d.ts +19 -0
- package/build/engine/lib/kurtosis_context/kurtosis_context.js +236 -0
- package/build/index.d.ts +19 -0
- package/build/index.js +55 -0
- package/build/kurtosis_version/kurtosis_version.d.ts +1 -0
- package/build/kurtosis_version/kurtosis_version.js +8 -0
- package/package.json +59 -0
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.KurtosisContext = exports.DEFAULT_HTTP_LOGS_COLLECTOR_PORT_NUM = exports.DEFAULT_GRPC_PROXY_ENGINE_SERVER_PORT_NUM = exports.DEFAULT_GRPC_ENGINE_SERVER_PORT_NUM = void 0;
|
|
13
|
+
const loglevel_1 = require("loglevel");
|
|
14
|
+
const semver = require("semver");
|
|
15
|
+
const neverthrow_1 = require("neverthrow");
|
|
16
|
+
const browser_or_node_1 = require("browser-or-node");
|
|
17
|
+
const index_1 = require("../../../index");
|
|
18
|
+
const kurtosis_version_1 = require("../../../kurtosis_version/kurtosis_version");
|
|
19
|
+
const grpc_web_engine_client_1 = require("./grpc_web_engine_client");
|
|
20
|
+
const grpc_node_engine_client_1 = require("./grpc_node_engine_client");
|
|
21
|
+
const engine_service_pb_1 = require("../../kurtosis_engine_rpc_api_bindings/engine_service_pb");
|
|
22
|
+
const constructor_calls_1 = require("../constructor_calls");
|
|
23
|
+
const LOCAL_HOSTNAME = "localhost";
|
|
24
|
+
const API_CONTAINER_LOG_LEVEL = "debug";
|
|
25
|
+
exports.DEFAULT_GRPC_ENGINE_SERVER_PORT_NUM = 9710;
|
|
26
|
+
exports.DEFAULT_GRPC_PROXY_ENGINE_SERVER_PORT_NUM = 9711;
|
|
27
|
+
exports.DEFAULT_HTTP_LOGS_COLLECTOR_PORT_NUM = 9712;
|
|
28
|
+
// Blank tells the engine server to use the default
|
|
29
|
+
const DEFAULT_API_CONTAINER_VERSION_TAG = "";
|
|
30
|
+
// Docs available at https://docs.kurtosistech.com/kurtosis-engine-server/lib-documentation
|
|
31
|
+
class KurtosisContext {
|
|
32
|
+
constructor(client) {
|
|
33
|
+
this.client = client;
|
|
34
|
+
}
|
|
35
|
+
// Attempts to create a KurtosisContext connected to a Kurtosis engine running locally
|
|
36
|
+
static newKurtosisContextFromLocalEngine() {
|
|
37
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
let genericEngineClient;
|
|
39
|
+
try {
|
|
40
|
+
if (browser_or_node_1.isNode) {
|
|
41
|
+
//These imports are dynamically imported here, otherwise compiling in Web environment fails for 2 reasons:
|
|
42
|
+
// 1. "@grpc/grpc-js" could ONLY be run in Node environment(because of it's own dependencies). So importing it on top of the file will break compilation.
|
|
43
|
+
// 2. WebPack compiler intents to check the libs no matter if those are behind IF statement. Which also break. That's why /* webpackIgnore: true */, avoid checkings.
|
|
44
|
+
// 'engine_service_grpc_pb' has it's own "@grpc/grpc-js" import, that's why we import it dynamically also.
|
|
45
|
+
const grpc_node = yield Promise.resolve().then(() => require(/* webpackIgnore: true */ "@grpc/grpc-js"));
|
|
46
|
+
const engineServiceNode = yield Promise.resolve().then(() => require(/* webpackIgnore: true */ "../../kurtosis_engine_rpc_api_bindings/engine_service_grpc_pb"));
|
|
47
|
+
const kurtosisEngineSocketStr = `${LOCAL_HOSTNAME}:${exports.DEFAULT_GRPC_ENGINE_SERVER_PORT_NUM}`;
|
|
48
|
+
const engineServiceClientNode = new engineServiceNode.EngineServiceClient(kurtosisEngineSocketStr, grpc_node.credentials.createInsecure());
|
|
49
|
+
genericEngineClient = new grpc_node_engine_client_1.GrpcNodeEngineClient(engineServiceClientNode);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
// For the symmetricity purpose, we import 'engine_service_grpc_web_pb' here. But this wouldn't affect anything if imported normally.
|
|
53
|
+
const engineServiceWeb = yield Promise.resolve().then(() => require("../../kurtosis_engine_rpc_api_bindings/engine_service_grpc_web_pb"));
|
|
54
|
+
const kurtosisEngineSocketStr = `http://${LOCAL_HOSTNAME}:${exports.DEFAULT_GRPC_PROXY_ENGINE_SERVER_PORT_NUM}`;
|
|
55
|
+
const engineServiceClientWeb = new engineServiceWeb.EngineServiceClient(kurtosisEngineSocketStr);
|
|
56
|
+
genericEngineClient = new grpc_web_engine_client_1.GrpcWebEngineClient(engineServiceClientWeb);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
if (error instanceof Error) {
|
|
61
|
+
return (0, neverthrow_1.err)(error);
|
|
62
|
+
}
|
|
63
|
+
return (0, neverthrow_1.err)(new Error("An unknown exception value was thrown during creation of the engine client that wasn't an error: " + error));
|
|
64
|
+
}
|
|
65
|
+
const engineApiVersionValidationResult = yield KurtosisContext.validateEngineApiVersion(genericEngineClient);
|
|
66
|
+
if (engineApiVersionValidationResult.isErr()) {
|
|
67
|
+
return (0, neverthrow_1.err)(engineApiVersionValidationResult.error);
|
|
68
|
+
}
|
|
69
|
+
const kurtosisContext = new KurtosisContext(genericEngineClient);
|
|
70
|
+
return (0, neverthrow_1.ok)(kurtosisContext);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
// Docs available at https://docs.kurtosistech.com/kurtosis-engine-server/lib-documentation
|
|
74
|
+
createEnclave(enclaveId, isPartitioningEnabled) {
|
|
75
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
+
const enclaveArgs = (0, constructor_calls_1.newCreateEnclaveArgs)(enclaveId, DEFAULT_API_CONTAINER_VERSION_TAG, API_CONTAINER_LOG_LEVEL, isPartitioningEnabled);
|
|
77
|
+
const getEnclaveResponseResult = yield this.client.createEnclaveResponse(enclaveArgs);
|
|
78
|
+
if (getEnclaveResponseResult.isErr()) {
|
|
79
|
+
return (0, neverthrow_1.err)(getEnclaveResponseResult.error);
|
|
80
|
+
}
|
|
81
|
+
const enclaveResponse = getEnclaveResponseResult.value;
|
|
82
|
+
const enclaveInfo = enclaveResponse.getEnclaveInfo();
|
|
83
|
+
if (enclaveInfo === undefined) {
|
|
84
|
+
return (0, neverthrow_1.err)(new Error("An error occurred creating enclave with ID " + enclaveId + " enclaveInfo is undefined; " +
|
|
85
|
+
"this is a bug on this library"));
|
|
86
|
+
}
|
|
87
|
+
const newEnclaveContextResult = yield this.newEnclaveContextFromEnclaveInfo(enclaveInfo);
|
|
88
|
+
if (newEnclaveContextResult.isErr()) {
|
|
89
|
+
return (0, neverthrow_1.err)(new Error(`An error occurred creating an enclave context from a newly-created enclave; this should never happen`));
|
|
90
|
+
}
|
|
91
|
+
const enclaveContext = newEnclaveContextResult.value;
|
|
92
|
+
return (0, neverthrow_1.ok)(enclaveContext);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
// Docs available at https://docs.kurtosistech.com/kurtosis-engine-server/lib-documentation
|
|
96
|
+
getEnclaveContext(enclaveId) {
|
|
97
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
98
|
+
const getEnclavesResponseResult = yield this.client.getEnclavesResponse();
|
|
99
|
+
if (getEnclavesResponseResult.isErr()) {
|
|
100
|
+
return (0, neverthrow_1.err)(getEnclavesResponseResult.error);
|
|
101
|
+
}
|
|
102
|
+
const getEnclavesResponse = getEnclavesResponseResult.value;
|
|
103
|
+
const allEnclaveInfo = getEnclavesResponse.getEnclaveInfoMap();
|
|
104
|
+
const maybeEnclaveInfo = allEnclaveInfo.get(enclaveId);
|
|
105
|
+
if (maybeEnclaveInfo === undefined) {
|
|
106
|
+
return (0, neverthrow_1.err)(new Error(`No enclave with ID '${enclaveId}' found`));
|
|
107
|
+
}
|
|
108
|
+
const newEnclaveContextResult = yield this.newEnclaveContextFromEnclaveInfo(maybeEnclaveInfo);
|
|
109
|
+
if (newEnclaveContextResult.isErr()) {
|
|
110
|
+
return (0, neverthrow_1.err)(newEnclaveContextResult.error);
|
|
111
|
+
}
|
|
112
|
+
return (0, neverthrow_1.ok)(newEnclaveContextResult.value);
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
// Docs available at https://docs.kurtosistech.com/kurtosis-engine-server/lib-documentation
|
|
116
|
+
getEnclaves() {
|
|
117
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
+
const getEnclavesResponseResult = yield this.client.getEnclavesResponse();
|
|
119
|
+
if (getEnclavesResponseResult.isErr()) {
|
|
120
|
+
return (0, neverthrow_1.err)(getEnclavesResponseResult.error);
|
|
121
|
+
}
|
|
122
|
+
const getEnclavesResponse = getEnclavesResponseResult.value;
|
|
123
|
+
const enclaves = new Set();
|
|
124
|
+
for (let enclaveId of getEnclavesResponse.getEnclaveInfoMap().keys()) {
|
|
125
|
+
enclaves.add(enclaveId);
|
|
126
|
+
}
|
|
127
|
+
return (0, neverthrow_1.ok)(enclaves);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
// Docs available at https://docs.kurtosistech.com/kurtosis-engine-server/lib-documentation
|
|
131
|
+
stopEnclave(enclaveId) {
|
|
132
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
133
|
+
const stopEnclaveArgs = (0, constructor_calls_1.newStopEnclaveArgs)(enclaveId);
|
|
134
|
+
const stopEnclaveResult = yield this.client.stopEnclave(stopEnclaveArgs);
|
|
135
|
+
if (stopEnclaveResult.isErr()) {
|
|
136
|
+
return (0, neverthrow_1.err)(stopEnclaveResult.error);
|
|
137
|
+
}
|
|
138
|
+
return (0, neverthrow_1.ok)(null);
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
// Docs available at https://docs.kurtosistech.com/kurtosis-engine-server/lib-documentation
|
|
142
|
+
destroyEnclave(enclaveId) {
|
|
143
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
144
|
+
const destroyEnclaveArgs = (0, constructor_calls_1.newDestroyEnclaveArgs)(enclaveId);
|
|
145
|
+
const destroyEnclaveResult = yield this.client.destroyEnclave(destroyEnclaveArgs);
|
|
146
|
+
if (destroyEnclaveResult.isErr()) {
|
|
147
|
+
return (0, neverthrow_1.err)(destroyEnclaveResult.error);
|
|
148
|
+
}
|
|
149
|
+
return (0, neverthrow_1.ok)(null);
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
// Docs available at https://docs.kurtosistech.com/kurtosis-engine-server/lib-documentation
|
|
153
|
+
clean(shouldCleanAll) {
|
|
154
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
155
|
+
const cleanArgs = (0, constructor_calls_1.newCleanArgs)(shouldCleanAll);
|
|
156
|
+
const cleanResponseResult = yield this.client.clean(cleanArgs);
|
|
157
|
+
if (cleanResponseResult.isErr()) {
|
|
158
|
+
return (0, neverthrow_1.err)(cleanResponseResult.error);
|
|
159
|
+
}
|
|
160
|
+
const cleanResponse = cleanResponseResult.value;
|
|
161
|
+
const result = new Set();
|
|
162
|
+
for (let enclaveID of cleanResponse.getRemovedEnclaveIdsMap().keys()) {
|
|
163
|
+
result.add(enclaveID);
|
|
164
|
+
}
|
|
165
|
+
return (0, neverthrow_1.ok)(result);
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
// ====================================================================================================
|
|
169
|
+
// Private helper functions
|
|
170
|
+
// ====================================================================================================
|
|
171
|
+
newEnclaveContextFromEnclaveInfo(enclaveInfo) {
|
|
172
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
173
|
+
const enclaveContainersStatus = enclaveInfo.getContainersStatus();
|
|
174
|
+
if (enclaveContainersStatus !== engine_service_pb_1.EnclaveContainersStatus.ENCLAVECONTAINERSSTATUS_RUNNING) {
|
|
175
|
+
return (0, neverthrow_1.err)(new Error(`Enclave containers status was '${enclaveContainersStatus}', but we can't create an enclave context from a non-running enclave`));
|
|
176
|
+
}
|
|
177
|
+
const enclaveApiContainerStatus = enclaveInfo.getApiContainerStatus();
|
|
178
|
+
if (enclaveApiContainerStatus !== engine_service_pb_1.EnclaveAPIContainerStatus.ENCLAVEAPICONTAINERSTATUS_RUNNING) {
|
|
179
|
+
return (0, neverthrow_1.err)(new Error(`Enclave API container status was '${enclaveApiContainerStatus}', but we can't create an enclave context without a running API container`));
|
|
180
|
+
}
|
|
181
|
+
const apiContainerInfo = enclaveInfo.getApiContainerInfo();
|
|
182
|
+
if (apiContainerInfo === undefined) {
|
|
183
|
+
return (0, neverthrow_1.err)(new Error(`API container was listed as running, but no API container info exists`));
|
|
184
|
+
}
|
|
185
|
+
const apiContainerHostMachineInfo = enclaveInfo.getApiContainerHostMachineInfo();
|
|
186
|
+
if (apiContainerHostMachineInfo === undefined) {
|
|
187
|
+
return (0, neverthrow_1.err)(new Error(`API container was listed as running, but no API container host machine info exists`));
|
|
188
|
+
}
|
|
189
|
+
let newEnclaveContextResult;
|
|
190
|
+
if (browser_or_node_1.isNode) {
|
|
191
|
+
newEnclaveContextResult = yield index_1.EnclaveContext.newGrpcNodeEnclaveContext(LOCAL_HOSTNAME, apiContainerHostMachineInfo.getGrpcPortOnHostMachine(), enclaveInfo.getEnclaveId());
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
newEnclaveContextResult = yield index_1.EnclaveContext.newGrpcWebEnclaveContext(LOCAL_HOSTNAME, apiContainerHostMachineInfo.getGrpcProxyPortOnHostMachine(), enclaveInfo.getEnclaveId());
|
|
195
|
+
}
|
|
196
|
+
if (newEnclaveContextResult.isErr()) {
|
|
197
|
+
return (0, neverthrow_1.err)(newEnclaveContextResult.error);
|
|
198
|
+
}
|
|
199
|
+
const newEnclaveContext = newEnclaveContextResult.value;
|
|
200
|
+
return (0, neverthrow_1.ok)(newEnclaveContext);
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
static validateEngineApiVersion(genericKurtosisContext) {
|
|
204
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
205
|
+
const getEngineInfoResult = yield genericKurtosisContext.getEngineInfo();
|
|
206
|
+
if (getEngineInfoResult.isErr()) {
|
|
207
|
+
return (0, neverthrow_1.err)(getEngineInfoResult.error);
|
|
208
|
+
}
|
|
209
|
+
const engineInfoResponse = getEngineInfoResult.value;
|
|
210
|
+
const runningEngineVersionStr = engineInfoResponse.getEngineVersion();
|
|
211
|
+
const runningEngineSemver = semver.parse(runningEngineVersionStr);
|
|
212
|
+
if (runningEngineSemver === null) {
|
|
213
|
+
loglevel_1.default.warn(`We expected the running engine version to match format X.Y.Z, but instead got ${runningEngineVersionStr}; this means that we can't verify the API library and engine versions match so you may encounter runtime errors`);
|
|
214
|
+
}
|
|
215
|
+
const libraryEngineSemver = semver.parse(kurtosis_version_1.KURTOSIS_VERSION);
|
|
216
|
+
if (libraryEngineSemver === null) {
|
|
217
|
+
loglevel_1.default.warn(`We expected the library engine version to match format X.Y.Z, but instead got ${kurtosis_version_1.KURTOSIS_VERSION}; this means that we can't verify the API library and engine versions match so you may encounter runtime errors`);
|
|
218
|
+
}
|
|
219
|
+
if (runningEngineSemver && libraryEngineSemver) {
|
|
220
|
+
const runningEngineMajorVersion = semver.major(runningEngineSemver);
|
|
221
|
+
const runningEngineMinorVersion = semver.minor(runningEngineSemver);
|
|
222
|
+
const libraryEngineMajorVersion = semver.major(libraryEngineSemver);
|
|
223
|
+
const libraryEngineMinorVersion = semver.minor(libraryEngineSemver);
|
|
224
|
+
const doApiVersionsMatch = libraryEngineMajorVersion === runningEngineMajorVersion && libraryEngineMinorVersion === runningEngineMinorVersion;
|
|
225
|
+
if (!doApiVersionsMatch) {
|
|
226
|
+
return (0, neverthrow_1.err)(new Error(`An API version mismatch was detected between the running engine version '${runningEngineSemver.version}' and the engine version this Kurtosis SDK library expects, '${libraryEngineSemver.version}'. You should:\n` +
|
|
227
|
+
` 1) upgrade your Kurtosis CLI to latest using the instructions at https://docs.kurtosistech.com/installation.html\n` +
|
|
228
|
+
` 2) use the Kurtosis CLI to restart your engine via 'kurtosis engine restart'\n` +
|
|
229
|
+
` 3) upgrade your Kurtosis SDK library using the instructions at https://github.com/kurtosis-tech/kurtosis-engine-api-lib\n`));
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return (0, neverthrow_1.ok)(null);
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
exports.KurtosisContext = KurtosisContext;
|
package/build/index.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export { KURTOSIS_VERSION } from "./kurtosis_version/kurtosis_version";
|
|
2
|
+
export type { FilesArtifactUUID, ContainerConfig } from "./core/lib/services/container_config";
|
|
3
|
+
export { ContainerConfigBuilder } from "./core/lib/services/container_config";
|
|
4
|
+
export type { ServiceID } from "./core/lib/services/service";
|
|
5
|
+
export { ServiceContext } from "./core/lib/services/service_context";
|
|
6
|
+
export { PortSpec, PortProtocol } from "./core/lib/services/port_spec";
|
|
7
|
+
export { EnclaveContext } from "./core/lib/enclaves/enclave_context";
|
|
8
|
+
export type { EnclaveID, PartitionID } from "./core/lib/enclaves/enclave_context";
|
|
9
|
+
export { UnblockedPartitionConnection, BlockedPartitionConnection, SoftPartitionConnection } from "./core/lib/enclaves/partition_connection";
|
|
10
|
+
export type { ModuleID } from "./core/lib/modules/module_context";
|
|
11
|
+
export { ModuleContext } from "./core/lib/modules/module_context";
|
|
12
|
+
export { newExecCommandArgs, newLoadModuleArgs, newStartServicesArgs, newGetServicesArgs, newRemoveServiceArgs, newPartitionServices, newRepartitionArgs, newPartitionConnections, newPartitionConnectionInfo, newWaitForHttpGetEndpointAvailabilityArgs, newWaitForHttpPostEndpointAvailabilityArgs, newExecuteModuleArgs, newGetModulesArgs } from "./core/lib/constructor_calls";
|
|
13
|
+
export { ModuleContainerArgs } from "./core/module_launch_api/module_container_args";
|
|
14
|
+
export { getArgsFromEnv } from "./core/module_launch_api/args_io";
|
|
15
|
+
export { PartitionConnections } from "./core/kurtosis_core_rpc_api_bindings/api_container_service_pb";
|
|
16
|
+
export type { IExecutableModuleServiceServer } from "./core/kurtosis_core_rpc_api_bindings/executable_module_service_grpc_pb";
|
|
17
|
+
export { ExecuteArgs, ExecuteResponse } from "./core/kurtosis_core_rpc_api_bindings/executable_module_service_pb";
|
|
18
|
+
export { KurtosisContext, DEFAULT_GRPC_PROXY_ENGINE_SERVER_PORT_NUM, DEFAULT_GRPC_ENGINE_SERVER_PORT_NUM, DEFAULT_HTTP_LOGS_COLLECTOR_PORT_NUM } from "./engine/lib/kurtosis_context/kurtosis_context";
|
|
19
|
+
export { EnclaveAPIContainerHostMachineInfo } from "./engine/kurtosis_engine_rpc_api_bindings/engine_service_pb";
|
package/build/index.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EnclaveAPIContainerHostMachineInfo = exports.DEFAULT_HTTP_LOGS_COLLECTOR_PORT_NUM = exports.DEFAULT_GRPC_ENGINE_SERVER_PORT_NUM = exports.DEFAULT_GRPC_PROXY_ENGINE_SERVER_PORT_NUM = exports.KurtosisContext = exports.ExecuteResponse = exports.ExecuteArgs = exports.PartitionConnections = exports.getArgsFromEnv = exports.ModuleContainerArgs = exports.newGetModulesArgs = exports.newExecuteModuleArgs = exports.newWaitForHttpPostEndpointAvailabilityArgs = exports.newWaitForHttpGetEndpointAvailabilityArgs = exports.newPartitionConnectionInfo = exports.newPartitionConnections = exports.newRepartitionArgs = exports.newPartitionServices = exports.newRemoveServiceArgs = exports.newGetServicesArgs = exports.newStartServicesArgs = exports.newLoadModuleArgs = exports.newExecCommandArgs = exports.ModuleContext = exports.SoftPartitionConnection = exports.BlockedPartitionConnection = exports.UnblockedPartitionConnection = exports.EnclaveContext = exports.PortProtocol = exports.PortSpec = exports.ServiceContext = exports.ContainerConfigBuilder = exports.KURTOSIS_VERSION = void 0;
|
|
4
|
+
// Own Version
|
|
5
|
+
var kurtosis_version_1 = require("./kurtosis_version/kurtosis_version");
|
|
6
|
+
Object.defineProperty(exports, "KURTOSIS_VERSION", { enumerable: true, get: function () { return kurtosis_version_1.KURTOSIS_VERSION; } });
|
|
7
|
+
var container_config_1 = require("./core/lib/services/container_config");
|
|
8
|
+
Object.defineProperty(exports, "ContainerConfigBuilder", { enumerable: true, get: function () { return container_config_1.ContainerConfigBuilder; } });
|
|
9
|
+
var service_context_1 = require("./core/lib/services/service_context");
|
|
10
|
+
Object.defineProperty(exports, "ServiceContext", { enumerable: true, get: function () { return service_context_1.ServiceContext; } });
|
|
11
|
+
var port_spec_1 = require("./core/lib/services/port_spec");
|
|
12
|
+
Object.defineProperty(exports, "PortSpec", { enumerable: true, get: function () { return port_spec_1.PortSpec; } });
|
|
13
|
+
Object.defineProperty(exports, "PortProtocol", { enumerable: true, get: function () { return port_spec_1.PortProtocol; } });
|
|
14
|
+
// Enclaves
|
|
15
|
+
var enclave_context_1 = require("./core/lib/enclaves/enclave_context");
|
|
16
|
+
Object.defineProperty(exports, "EnclaveContext", { enumerable: true, get: function () { return enclave_context_1.EnclaveContext; } });
|
|
17
|
+
var partition_connection_1 = require("./core/lib/enclaves/partition_connection");
|
|
18
|
+
Object.defineProperty(exports, "UnblockedPartitionConnection", { enumerable: true, get: function () { return partition_connection_1.UnblockedPartitionConnection; } });
|
|
19
|
+
Object.defineProperty(exports, "BlockedPartitionConnection", { enumerable: true, get: function () { return partition_connection_1.BlockedPartitionConnection; } });
|
|
20
|
+
Object.defineProperty(exports, "SoftPartitionConnection", { enumerable: true, get: function () { return partition_connection_1.SoftPartitionConnection; } });
|
|
21
|
+
var module_context_1 = require("./core/lib/modules/module_context");
|
|
22
|
+
Object.defineProperty(exports, "ModuleContext", { enumerable: true, get: function () { return module_context_1.ModuleContext; } });
|
|
23
|
+
// Constructor Calls
|
|
24
|
+
var constructor_calls_1 = require("./core/lib/constructor_calls");
|
|
25
|
+
Object.defineProperty(exports, "newExecCommandArgs", { enumerable: true, get: function () { return constructor_calls_1.newExecCommandArgs; } });
|
|
26
|
+
Object.defineProperty(exports, "newLoadModuleArgs", { enumerable: true, get: function () { return constructor_calls_1.newLoadModuleArgs; } });
|
|
27
|
+
Object.defineProperty(exports, "newStartServicesArgs", { enumerable: true, get: function () { return constructor_calls_1.newStartServicesArgs; } });
|
|
28
|
+
Object.defineProperty(exports, "newGetServicesArgs", { enumerable: true, get: function () { return constructor_calls_1.newGetServicesArgs; } });
|
|
29
|
+
Object.defineProperty(exports, "newRemoveServiceArgs", { enumerable: true, get: function () { return constructor_calls_1.newRemoveServiceArgs; } });
|
|
30
|
+
Object.defineProperty(exports, "newPartitionServices", { enumerable: true, get: function () { return constructor_calls_1.newPartitionServices; } });
|
|
31
|
+
Object.defineProperty(exports, "newRepartitionArgs", { enumerable: true, get: function () { return constructor_calls_1.newRepartitionArgs; } });
|
|
32
|
+
Object.defineProperty(exports, "newPartitionConnections", { enumerable: true, get: function () { return constructor_calls_1.newPartitionConnections; } });
|
|
33
|
+
Object.defineProperty(exports, "newPartitionConnectionInfo", { enumerable: true, get: function () { return constructor_calls_1.newPartitionConnectionInfo; } });
|
|
34
|
+
Object.defineProperty(exports, "newWaitForHttpGetEndpointAvailabilityArgs", { enumerable: true, get: function () { return constructor_calls_1.newWaitForHttpGetEndpointAvailabilityArgs; } });
|
|
35
|
+
Object.defineProperty(exports, "newWaitForHttpPostEndpointAvailabilityArgs", { enumerable: true, get: function () { return constructor_calls_1.newWaitForHttpPostEndpointAvailabilityArgs; } });
|
|
36
|
+
Object.defineProperty(exports, "newExecuteModuleArgs", { enumerable: true, get: function () { return constructor_calls_1.newExecuteModuleArgs; } });
|
|
37
|
+
Object.defineProperty(exports, "newGetModulesArgs", { enumerable: true, get: function () { return constructor_calls_1.newGetModulesArgs; } });
|
|
38
|
+
// Module Launch API
|
|
39
|
+
var module_container_args_1 = require("./core/module_launch_api/module_container_args");
|
|
40
|
+
Object.defineProperty(exports, "ModuleContainerArgs", { enumerable: true, get: function () { return module_container_args_1.ModuleContainerArgs; } });
|
|
41
|
+
var args_io_1 = require("./core/module_launch_api/args_io");
|
|
42
|
+
Object.defineProperty(exports, "getArgsFromEnv", { enumerable: true, get: function () { return args_io_1.getArgsFromEnv; } });
|
|
43
|
+
var api_container_service_pb_1 = require("./core/kurtosis_core_rpc_api_bindings/api_container_service_pb");
|
|
44
|
+
Object.defineProperty(exports, "PartitionConnections", { enumerable: true, get: function () { return api_container_service_pb_1.PartitionConnections; } });
|
|
45
|
+
var executable_module_service_pb_1 = require("./core/kurtosis_core_rpc_api_bindings/executable_module_service_pb");
|
|
46
|
+
Object.defineProperty(exports, "ExecuteArgs", { enumerable: true, get: function () { return executable_module_service_pb_1.ExecuteArgs; } });
|
|
47
|
+
Object.defineProperty(exports, "ExecuteResponse", { enumerable: true, get: function () { return executable_module_service_pb_1.ExecuteResponse; } });
|
|
48
|
+
// TODO Remove this - shouldn't be necessary to be exported due to the newKurtosisContextFromLocalEngine() method
|
|
49
|
+
var kurtosis_context_1 = require("./engine/lib/kurtosis_context/kurtosis_context");
|
|
50
|
+
Object.defineProperty(exports, "KurtosisContext", { enumerable: true, get: function () { return kurtosis_context_1.KurtosisContext; } });
|
|
51
|
+
Object.defineProperty(exports, "DEFAULT_GRPC_PROXY_ENGINE_SERVER_PORT_NUM", { enumerable: true, get: function () { return kurtosis_context_1.DEFAULT_GRPC_PROXY_ENGINE_SERVER_PORT_NUM; } });
|
|
52
|
+
Object.defineProperty(exports, "DEFAULT_GRPC_ENGINE_SERVER_PORT_NUM", { enumerable: true, get: function () { return kurtosis_context_1.DEFAULT_GRPC_ENGINE_SERVER_PORT_NUM; } });
|
|
53
|
+
Object.defineProperty(exports, "DEFAULT_HTTP_LOGS_COLLECTOR_PORT_NUM", { enumerable: true, get: function () { return kurtosis_context_1.DEFAULT_HTTP_LOGS_COLLECTOR_PORT_NUM; } });
|
|
54
|
+
var engine_service_pb_1 = require("./engine/kurtosis_engine_rpc_api_bindings/engine_service_pb");
|
|
55
|
+
Object.defineProperty(exports, "EnclaveAPIContainerHostMachineInfo", { enumerable: true, get: function () { return engine_service_pb_1.EnclaveAPIContainerHostMachineInfo; } });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const KURTOSIS_VERSION: string;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KURTOSIS_VERSION = void 0;
|
|
4
|
+
// !!!!!!!!!!! DO NOT UPDATE! WILL BE MANUALLY UPDATED DURING THE RELEASE PROCESS !!!!!!!!!!!!!!!!!!!!!!
|
|
5
|
+
// This is necessary so that Kurt Core consumers (e.g. modules) will know if they're compatible with the currently-running
|
|
6
|
+
// API container
|
|
7
|
+
exports.KURTOSIS_VERSION = "0.49.5";
|
|
8
|
+
// !!!!!!!!!!! DO NOT UPDATE! WILL BE MANUALLY UPDATED DURING THE RELEASE PROCESS !!!!!!!!!!!!!!!!!!!!!!
|
package/package.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "kurtosis-sdk",
|
|
3
|
+
"//": "NOTE: DO NOT UPDATE THIS VERSION MANUALLY - IT WILL BE UPDATED DURING THE RELEASE PROCESS!",
|
|
4
|
+
"version": "0.49.5",
|
|
5
|
+
"main": "./build/index",
|
|
6
|
+
"description": "This repo contains a Typescript client for communicating with the Kurtosis Engine server, which is responsible for creating, managing and destroying Kurtosis Enclaves.",
|
|
7
|
+
"types": "./build/index",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build": "tsc && cp -R src/core/kurtosis_core_rpc_api_bindings build/core/ && cp -R src/engine/kurtosis_engine_rpc_api_bindings build/engine/",
|
|
10
|
+
"test": "ts-mocha -p tsconfig.json 'test/**/*.ts'"
|
|
11
|
+
},
|
|
12
|
+
"files": [
|
|
13
|
+
"build"
|
|
14
|
+
],
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/kurtosis-tech/kurtosis-sdk.git"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"kurtosis",
|
|
21
|
+
"engine",
|
|
22
|
+
"core",
|
|
23
|
+
"kurtosis-sdk"
|
|
24
|
+
],
|
|
25
|
+
"author": "Kurtosis Technologies Inc <support@kurtosistech.com> (https://www.kurtosistech.com/)",
|
|
26
|
+
"license": "Apache-2.0",
|
|
27
|
+
"bugs": {
|
|
28
|
+
"url": "https://github.com/kurtosis-tech/kurtosis-sdk/issues"
|
|
29
|
+
},
|
|
30
|
+
"homepage": "https://github.com/kurtosis-tech/kurtosis-sdk#readme",
|
|
31
|
+
"engines": {
|
|
32
|
+
"node": ">=16.13.0"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"@grpc/grpc-js": "^1.4.4",
|
|
36
|
+
"@types/semver": "^7.3.9",
|
|
37
|
+
"browser-or-node": "^2.0.0",
|
|
38
|
+
"google-protobuf": "^3.17.3",
|
|
39
|
+
"grpc-web": "^1.3.0",
|
|
40
|
+
"loglevel": "^1.7.1",
|
|
41
|
+
"neverthrow": "^4.2.2",
|
|
42
|
+
"semver": "^7.3.5",
|
|
43
|
+
"@types/google-protobuf": "^3.15.5",
|
|
44
|
+
"@types/path-browserify": "^1.0.0",
|
|
45
|
+
"path-browserify": "^1.0.1",
|
|
46
|
+
"tar": "^6.1.11"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@types/chai": "^4.2.21",
|
|
50
|
+
"@types/google-protobuf": "^3.15.5",
|
|
51
|
+
"@types/mocha": "^9.0.0",
|
|
52
|
+
"chai": "^4.3.4",
|
|
53
|
+
"mocha": "^9.0.3",
|
|
54
|
+
"ts-mocha": "^8.0.0",
|
|
55
|
+
"typescript": "^4.3.5",
|
|
56
|
+
"@types/tar": "^6.1.1",
|
|
57
|
+
"@types/targz": "^1.0.1"
|
|
58
|
+
}
|
|
59
|
+
}
|