@kapeta/local-cluster-service 0.0.0-96f91ef
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/.eslintrc.cjs +25 -0
- package/.github/workflows/check-license.yml +17 -0
- package/.github/workflows/main.yml +26 -0
- package/.prettierignore +4 -0
- package/.vscode/launch.json +19 -0
- package/CHANGELOG.md +920 -0
- package/LICENSE +38 -0
- package/README.md +36 -0
- package/definitions.d.ts +35 -0
- package/dist/cjs/index.d.ts +34 -0
- package/dist/cjs/index.js +263 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/src/RepositoryWatcher.d.ts +30 -0
- package/dist/cjs/src/RepositoryWatcher.js +332 -0
- package/dist/cjs/src/ai/aiClient.d.ts +20 -0
- package/dist/cjs/src/ai/aiClient.js +74 -0
- package/dist/cjs/src/ai/routes.d.ts +7 -0
- package/dist/cjs/src/ai/routes.js +37 -0
- package/dist/cjs/src/ai/transform.d.ts +11 -0
- package/dist/cjs/src/ai/transform.js +239 -0
- package/dist/cjs/src/ai/types.d.ts +40 -0
- package/dist/cjs/src/ai/types.js +2 -0
- package/dist/cjs/src/api.d.ts +7 -0
- package/dist/cjs/src/api.js +29 -0
- package/dist/cjs/src/assetManager.d.ts +41 -0
- package/dist/cjs/src/assetManager.js +274 -0
- package/dist/cjs/src/assets/routes.d.ts +7 -0
- package/dist/cjs/src/assets/routes.js +165 -0
- package/dist/cjs/src/attachments/routes.d.ts +7 -0
- package/dist/cjs/src/attachments/routes.js +72 -0
- package/dist/cjs/src/authManager.d.ts +16 -0
- package/dist/cjs/src/authManager.js +64 -0
- package/dist/cjs/src/cacheManager.d.ts +20 -0
- package/dist/cjs/src/cacheManager.js +51 -0
- package/dist/cjs/src/clusterService.d.ts +44 -0
- package/dist/cjs/src/clusterService.js +120 -0
- package/dist/cjs/src/codeGeneratorManager.d.ts +14 -0
- package/dist/cjs/src/codeGeneratorManager.js +93 -0
- package/dist/cjs/src/config/routes.d.ts +7 -0
- package/dist/cjs/src/config/routes.js +160 -0
- package/dist/cjs/src/configManager.d.ts +42 -0
- package/dist/cjs/src/configManager.js +136 -0
- package/dist/cjs/src/containerManager.d.ts +148 -0
- package/dist/cjs/src/containerManager.js +958 -0
- package/dist/cjs/src/definitionsManager.d.ts +20 -0
- package/dist/cjs/src/definitionsManager.js +171 -0
- package/dist/cjs/src/filesystem/routes.d.ts +7 -0
- package/dist/cjs/src/filesystem/routes.js +105 -0
- package/dist/cjs/src/filesystemManager.d.ts +27 -0
- package/dist/cjs/src/filesystemManager.js +118 -0
- package/dist/cjs/src/identities/routes.d.ts +7 -0
- package/dist/cjs/src/identities/routes.js +37 -0
- package/dist/cjs/src/instanceManager.d.ts +69 -0
- package/dist/cjs/src/instanceManager.js +910 -0
- package/dist/cjs/src/instances/routes.d.ts +7 -0
- package/dist/cjs/src/instances/routes.js +179 -0
- package/dist/cjs/src/middleware/cors.d.ts +6 -0
- package/dist/cjs/src/middleware/cors.js +14 -0
- package/dist/cjs/src/middleware/kapeta.d.ts +15 -0
- package/dist/cjs/src/middleware/kapeta.js +28 -0
- package/dist/cjs/src/middleware/stringBody.d.ts +9 -0
- package/dist/cjs/src/middleware/stringBody.js +18 -0
- package/dist/cjs/src/networkManager.d.ts +37 -0
- package/dist/cjs/src/networkManager.js +119 -0
- package/dist/cjs/src/operatorManager.d.ts +41 -0
- package/dist/cjs/src/operatorManager.js +211 -0
- package/dist/cjs/src/progressListener.d.ts +31 -0
- package/dist/cjs/src/progressListener.js +133 -0
- package/dist/cjs/src/providerManager.d.ts +11 -0
- package/dist/cjs/src/providerManager.js +84 -0
- package/dist/cjs/src/providers/routes.d.ts +7 -0
- package/dist/cjs/src/providers/routes.js +46 -0
- package/dist/cjs/src/proxy/routes.d.ts +7 -0
- package/dist/cjs/src/proxy/routes.js +115 -0
- package/dist/cjs/src/proxy/types/rest.d.ts +10 -0
- package/dist/cjs/src/proxy/types/rest.js +123 -0
- package/dist/cjs/src/proxy/types/web.d.ts +8 -0
- package/dist/cjs/src/proxy/types/web.js +61 -0
- package/dist/cjs/src/repositoryManager.d.ts +35 -0
- package/dist/cjs/src/repositoryManager.js +247 -0
- package/dist/cjs/src/serviceManager.d.ts +36 -0
- package/dist/cjs/src/serviceManager.js +106 -0
- package/dist/cjs/src/socketManager.d.ts +32 -0
- package/dist/cjs/src/socketManager.js +125 -0
- package/dist/cjs/src/storageService.d.ts +21 -0
- package/dist/cjs/src/storageService.js +81 -0
- package/dist/cjs/src/taskManager.d.ts +70 -0
- package/dist/cjs/src/taskManager.js +181 -0
- package/dist/cjs/src/tasks/routes.d.ts +7 -0
- package/dist/cjs/src/tasks/routes.js +39 -0
- package/dist/cjs/src/traffic/routes.d.ts +7 -0
- package/dist/cjs/src/traffic/routes.js +22 -0
- package/dist/cjs/src/types.d.ts +99 -0
- package/dist/cjs/src/types.js +39 -0
- package/dist/cjs/src/utils/BlockInstanceRunner.d.ts +28 -0
- package/dist/cjs/src/utils/BlockInstanceRunner.js +432 -0
- package/dist/cjs/src/utils/DefaultProviderInstaller.d.ts +15 -0
- package/dist/cjs/src/utils/DefaultProviderInstaller.js +136 -0
- package/dist/cjs/src/utils/InternalConfigProvider.d.ts +38 -0
- package/dist/cjs/src/utils/InternalConfigProvider.js +146 -0
- package/dist/cjs/src/utils/LogData.d.ts +23 -0
- package/dist/cjs/src/utils/LogData.js +46 -0
- package/dist/cjs/src/utils/commandLineUtils.d.ts +8 -0
- package/dist/cjs/src/utils/commandLineUtils.js +39 -0
- package/dist/cjs/src/utils/pathTemplateParser.d.ts +30 -0
- package/dist/cjs/src/utils/pathTemplateParser.js +135 -0
- package/dist/cjs/src/utils/utils.d.ts +40 -0
- package/dist/cjs/src/utils/utils.js +148 -0
- package/dist/cjs/start.d.ts +5 -0
- package/dist/cjs/start.js +17 -0
- package/dist/cjs/test/proxy/types/rest.test.d.ts +5 -0
- package/dist/cjs/test/proxy/types/rest.test.js +48 -0
- package/dist/cjs/test/utils/pathTemplateParser.test.d.ts +5 -0
- package/dist/cjs/test/utils/pathTemplateParser.test.js +27 -0
- package/dist/esm/index.d.ts +34 -0
- package/dist/esm/index.js +263 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/src/RepositoryWatcher.d.ts +30 -0
- package/dist/esm/src/RepositoryWatcher.js +332 -0
- package/dist/esm/src/ai/aiClient.d.ts +20 -0
- package/dist/esm/src/ai/aiClient.js +74 -0
- package/dist/esm/src/ai/routes.d.ts +7 -0
- package/dist/esm/src/ai/routes.js +37 -0
- package/dist/esm/src/ai/transform.d.ts +11 -0
- package/dist/esm/src/ai/transform.js +239 -0
- package/dist/esm/src/ai/types.d.ts +40 -0
- package/dist/esm/src/ai/types.js +2 -0
- package/dist/esm/src/api.d.ts +7 -0
- package/dist/esm/src/api.js +29 -0
- package/dist/esm/src/assetManager.d.ts +41 -0
- package/dist/esm/src/assetManager.js +274 -0
- package/dist/esm/src/assets/routes.d.ts +7 -0
- package/dist/esm/src/assets/routes.js +165 -0
- package/dist/esm/src/attachments/routes.d.ts +7 -0
- package/dist/esm/src/attachments/routes.js +72 -0
- package/dist/esm/src/authManager.d.ts +16 -0
- package/dist/esm/src/authManager.js +64 -0
- package/dist/esm/src/cacheManager.d.ts +20 -0
- package/dist/esm/src/cacheManager.js +51 -0
- package/dist/esm/src/clusterService.d.ts +44 -0
- package/dist/esm/src/clusterService.js +120 -0
- package/dist/esm/src/codeGeneratorManager.d.ts +14 -0
- package/dist/esm/src/codeGeneratorManager.js +93 -0
- package/dist/esm/src/config/routes.d.ts +7 -0
- package/dist/esm/src/config/routes.js +160 -0
- package/dist/esm/src/configManager.d.ts +42 -0
- package/dist/esm/src/configManager.js +136 -0
- package/dist/esm/src/containerManager.d.ts +148 -0
- package/dist/esm/src/containerManager.js +958 -0
- package/dist/esm/src/definitionsManager.d.ts +20 -0
- package/dist/esm/src/definitionsManager.js +171 -0
- package/dist/esm/src/filesystem/routes.d.ts +7 -0
- package/dist/esm/src/filesystem/routes.js +105 -0
- package/dist/esm/src/filesystemManager.d.ts +27 -0
- package/dist/esm/src/filesystemManager.js +118 -0
- package/dist/esm/src/identities/routes.d.ts +7 -0
- package/dist/esm/src/identities/routes.js +37 -0
- package/dist/esm/src/instanceManager.d.ts +69 -0
- package/dist/esm/src/instanceManager.js +910 -0
- package/dist/esm/src/instances/routes.d.ts +7 -0
- package/dist/esm/src/instances/routes.js +179 -0
- package/dist/esm/src/middleware/cors.d.ts +6 -0
- package/dist/esm/src/middleware/cors.js +14 -0
- package/dist/esm/src/middleware/kapeta.d.ts +15 -0
- package/dist/esm/src/middleware/kapeta.js +28 -0
- package/dist/esm/src/middleware/stringBody.d.ts +9 -0
- package/dist/esm/src/middleware/stringBody.js +18 -0
- package/dist/esm/src/networkManager.d.ts +37 -0
- package/dist/esm/src/networkManager.js +119 -0
- package/dist/esm/src/operatorManager.d.ts +41 -0
- package/dist/esm/src/operatorManager.js +211 -0
- package/dist/esm/src/progressListener.d.ts +31 -0
- package/dist/esm/src/progressListener.js +133 -0
- package/dist/esm/src/providerManager.d.ts +11 -0
- package/dist/esm/src/providerManager.js +84 -0
- package/dist/esm/src/providers/routes.d.ts +7 -0
- package/dist/esm/src/providers/routes.js +46 -0
- package/dist/esm/src/proxy/routes.d.ts +7 -0
- package/dist/esm/src/proxy/routes.js +115 -0
- package/dist/esm/src/proxy/types/rest.d.ts +10 -0
- package/dist/esm/src/proxy/types/rest.js +123 -0
- package/dist/esm/src/proxy/types/web.d.ts +8 -0
- package/dist/esm/src/proxy/types/web.js +61 -0
- package/dist/esm/src/repositoryManager.d.ts +35 -0
- package/dist/esm/src/repositoryManager.js +247 -0
- package/dist/esm/src/serviceManager.d.ts +36 -0
- package/dist/esm/src/serviceManager.js +106 -0
- package/dist/esm/src/socketManager.d.ts +32 -0
- package/dist/esm/src/socketManager.js +125 -0
- package/dist/esm/src/storageService.d.ts +21 -0
- package/dist/esm/src/storageService.js +81 -0
- package/dist/esm/src/taskManager.d.ts +70 -0
- package/dist/esm/src/taskManager.js +181 -0
- package/dist/esm/src/tasks/routes.d.ts +7 -0
- package/dist/esm/src/tasks/routes.js +39 -0
- package/dist/esm/src/traffic/routes.d.ts +7 -0
- package/dist/esm/src/traffic/routes.js +22 -0
- package/dist/esm/src/types.d.ts +99 -0
- package/dist/esm/src/types.js +39 -0
- package/dist/esm/src/utils/BlockInstanceRunner.d.ts +28 -0
- package/dist/esm/src/utils/BlockInstanceRunner.js +432 -0
- package/dist/esm/src/utils/DefaultProviderInstaller.d.ts +15 -0
- package/dist/esm/src/utils/DefaultProviderInstaller.js +136 -0
- package/dist/esm/src/utils/InternalConfigProvider.d.ts +38 -0
- package/dist/esm/src/utils/InternalConfigProvider.js +146 -0
- package/dist/esm/src/utils/LogData.d.ts +23 -0
- package/dist/esm/src/utils/LogData.js +46 -0
- package/dist/esm/src/utils/commandLineUtils.d.ts +8 -0
- package/dist/esm/src/utils/commandLineUtils.js +39 -0
- package/dist/esm/src/utils/pathTemplateParser.d.ts +30 -0
- package/dist/esm/src/utils/pathTemplateParser.js +135 -0
- package/dist/esm/src/utils/utils.d.ts +40 -0
- package/dist/esm/src/utils/utils.js +148 -0
- package/dist/esm/start.d.ts +5 -0
- package/dist/esm/start.js +17 -0
- package/dist/esm/test/proxy/types/rest.test.d.ts +5 -0
- package/dist/esm/test/proxy/types/rest.test.js +48 -0
- package/dist/esm/test/utils/pathTemplateParser.test.d.ts +5 -0
- package/dist/esm/test/utils/pathTemplateParser.test.js +27 -0
- package/index.ts +280 -0
- package/jest.config.js +8 -0
- package/package.json +134 -0
- package/src/RepositoryWatcher.ts +363 -0
- package/src/ai/aiClient.ts +93 -0
- package/src/ai/routes.ts +39 -0
- package/src/ai/transform.ts +275 -0
- package/src/ai/types.ts +45 -0
- package/src/api.ts +32 -0
- package/src/assetManager.ts +355 -0
- package/src/assets/routes.ts +183 -0
- package/src/attachments/routes.ts +79 -0
- package/src/authManager.ts +67 -0
- package/src/cacheManager.ts +59 -0
- package/src/clusterService.ts +142 -0
- package/src/codeGeneratorManager.ts +109 -0
- package/src/config/routes.ts +201 -0
- package/src/configManager.ts +180 -0
- package/src/containerManager.ts +1178 -0
- package/src/definitionsManager.ts +212 -0
- package/src/filesystem/routes.ts +123 -0
- package/src/filesystemManager.ts +133 -0
- package/src/identities/routes.ts +38 -0
- package/src/instanceManager.ts +1160 -0
- package/src/instances/routes.ts +203 -0
- package/src/middleware/cors.ts +14 -0
- package/src/middleware/kapeta.ts +41 -0
- package/src/middleware/stringBody.ts +21 -0
- package/src/networkManager.ts +148 -0
- package/src/operatorManager.ts +294 -0
- package/src/progressListener.ts +151 -0
- package/src/providerManager.ts +97 -0
- package/src/providers/routes.ts +51 -0
- package/src/proxy/routes.ts +153 -0
- package/src/proxy/types/rest.ts +172 -0
- package/src/proxy/types/web.ts +70 -0
- package/src/repositoryManager.ts +291 -0
- package/src/serviceManager.ts +133 -0
- package/src/socketManager.ts +138 -0
- package/src/storageService.ts +97 -0
- package/src/taskManager.ts +247 -0
- package/src/tasks/routes.ts +43 -0
- package/src/traffic/routes.ts +23 -0
- package/src/types.ts +112 -0
- package/src/utils/BlockInstanceRunner.ts +577 -0
- package/src/utils/DefaultProviderInstaller.ts +150 -0
- package/src/utils/InternalConfigProvider.ts +214 -0
- package/src/utils/LogData.ts +50 -0
- package/src/utils/commandLineUtils.ts +45 -0
- package/src/utils/pathTemplateParser.ts +157 -0
- package/src/utils/utils.ts +155 -0
- package/start.ts +14 -0
- package/test/proxy/types/rest.test.ts +54 -0
- package/test/utils/pathTemplateParser.test.ts +29 -0
- package/tsconfig.json +15 -0
@@ -0,0 +1,179 @@
|
|
1
|
+
"use strict";
|
2
|
+
/**
|
3
|
+
* Copyright 2023 Kapeta Inc.
|
4
|
+
* SPDX-License-Identifier: BUSL-1.1
|
5
|
+
*/
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
8
|
+
};
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
10
|
+
const express_promise_router_1 = __importDefault(require("express-promise-router"));
|
11
|
+
const instanceManager_1 = require("../instanceManager");
|
12
|
+
const serviceManager_1 = require("../serviceManager");
|
13
|
+
const cors_1 = require("../middleware/cors");
|
14
|
+
const kapeta_1 = require("../middleware/kapeta");
|
15
|
+
const stringBody_1 = require("../middleware/stringBody");
|
16
|
+
const types_1 = require("../types");
|
17
|
+
const taskManager_1 = require("../taskManager");
|
18
|
+
const router = (0, express_promise_router_1.default)();
|
19
|
+
router.use('/', cors_1.corsHandler);
|
20
|
+
router.use('/', kapeta_1.kapetaHeaders);
|
21
|
+
/**
|
22
|
+
* Get all instances
|
23
|
+
*/
|
24
|
+
router.get('/', (req, res) => {
|
25
|
+
res.send(instanceManager_1.instanceManager.getInstances());
|
26
|
+
});
|
27
|
+
/**
|
28
|
+
* Get all instances
|
29
|
+
*/
|
30
|
+
router.get('/:systemId/instances', async (req, res) => {
|
31
|
+
res.send(await instanceManager_1.instanceManager.getInstancesForPlan(req.params.systemId));
|
32
|
+
});
|
33
|
+
/**
|
34
|
+
* Get single instance in a plan
|
35
|
+
*/
|
36
|
+
router.get('/:systemId/instances/:instanceId', (req, res) => {
|
37
|
+
res.send(instanceManager_1.instanceManager.getInstance(req.params.systemId, req.params.instanceId));
|
38
|
+
});
|
39
|
+
/**
|
40
|
+
* Start all instances in a plan
|
41
|
+
*/
|
42
|
+
router.post('/:systemId/start', async (req, res) => {
|
43
|
+
try {
|
44
|
+
const task = await instanceManager_1.instanceManager.startAllForPlan(req.params.systemId);
|
45
|
+
res.status(202).send({
|
46
|
+
ok: true,
|
47
|
+
taskId: task.id,
|
48
|
+
});
|
49
|
+
}
|
50
|
+
catch (e) {
|
51
|
+
res.status(500).send({ ok: false, error: e.message });
|
52
|
+
}
|
53
|
+
});
|
54
|
+
/**
|
55
|
+
* Stop all instances in plan
|
56
|
+
*/
|
57
|
+
router.post('/:systemId/stop', async (req, res) => {
|
58
|
+
const task = instanceManager_1.instanceManager.stopAllForPlan(req.params.systemId);
|
59
|
+
res.status(202).send({
|
60
|
+
ok: true,
|
61
|
+
taskId: task.id,
|
62
|
+
});
|
63
|
+
});
|
64
|
+
/**
|
65
|
+
* Start single instance in a plan
|
66
|
+
*/
|
67
|
+
router.post('/:systemId/:instanceId/start', async (req, res) => {
|
68
|
+
try {
|
69
|
+
const result = await instanceManager_1.instanceManager.start(req.params.systemId, req.params.instanceId);
|
70
|
+
if (result instanceof taskManager_1.Task) {
|
71
|
+
res.status(202).send({
|
72
|
+
ok: true,
|
73
|
+
taskId: result.id,
|
74
|
+
});
|
75
|
+
}
|
76
|
+
else {
|
77
|
+
res.status(202).send({
|
78
|
+
ok: true,
|
79
|
+
pid: result.pid,
|
80
|
+
type: result.type,
|
81
|
+
});
|
82
|
+
}
|
83
|
+
}
|
84
|
+
catch (e) {
|
85
|
+
res.status(500).send({ ok: false, error: e.message });
|
86
|
+
}
|
87
|
+
});
|
88
|
+
/**
|
89
|
+
* Stop single instance in a plan
|
90
|
+
*/
|
91
|
+
router.post('/:systemId/:instanceId/stop', async (req, res) => {
|
92
|
+
await instanceManager_1.instanceManager.stop(req.params.systemId, req.params.instanceId);
|
93
|
+
res.status(202).send({ ok: true });
|
94
|
+
});
|
95
|
+
/**
|
96
|
+
* Get logs for instance in a plan
|
97
|
+
*/
|
98
|
+
router.get('/:systemId/:instanceId/logs', async (req, res) => {
|
99
|
+
const instanceInfo = instanceManager_1.instanceManager.getInstance(req.params.systemId, req.params.instanceId);
|
100
|
+
if (!instanceInfo) {
|
101
|
+
res.status(404).send({ ok: false });
|
102
|
+
return;
|
103
|
+
}
|
104
|
+
try {
|
105
|
+
const logs = await instanceManager_1.instanceManager.getLogs(req.params.systemId, req.params.instanceId);
|
106
|
+
res.status(200).send({
|
107
|
+
logs,
|
108
|
+
});
|
109
|
+
}
|
110
|
+
catch (e) {
|
111
|
+
res.status(500).send({ ok: false, error: e.message });
|
112
|
+
}
|
113
|
+
});
|
114
|
+
/**
|
115
|
+
* Get public address for instance in a plan if available
|
116
|
+
*/
|
117
|
+
router.get('/:systemId/:instanceId/address/public', (req, res) => {
|
118
|
+
const instance = instanceManager_1.instanceManager.getInstance(req.params.systemId, req.params.instanceId);
|
119
|
+
if (!instance) {
|
120
|
+
res.status(404).send({ ok: false });
|
121
|
+
return;
|
122
|
+
}
|
123
|
+
if (!instance.address) {
|
124
|
+
res.status(400).send({ error: `Instance does not have an address. Make sure it's running.` });
|
125
|
+
return;
|
126
|
+
}
|
127
|
+
res.status(200).send(instance.address);
|
128
|
+
});
|
129
|
+
/**
|
130
|
+
* Get public address for particular resource on instance in a plan if available
|
131
|
+
*/
|
132
|
+
router.get('/:systemId/:instanceId/provider/:portType/:resourceName/address/public', (req, res) => {
|
133
|
+
res.send(serviceManager_1.serviceManager.getConsumerAddress(req.params.systemId, req.params.instanceId, req.params.resourceName, req.params.portType, req.kapeta?.environment));
|
134
|
+
});
|
135
|
+
router.use('/', stringBody_1.stringBody);
|
136
|
+
router.use('/', (req, res, next) => {
|
137
|
+
if (!req.kapeta.blockRef) {
|
138
|
+
res.status(400).send({ error: 'Missing X-Kapeta-Block header.' });
|
139
|
+
return;
|
140
|
+
}
|
141
|
+
next();
|
142
|
+
});
|
143
|
+
/**
|
144
|
+
* Updates the full configuration for a given instance.
|
145
|
+
*/
|
146
|
+
router.put('/', async (req, res) => {
|
147
|
+
let instance = req.stringBody ? JSON.parse(req.stringBody) : null;
|
148
|
+
if (req.kapeta.environment === 'docker') {
|
149
|
+
//A bit hacky but we want to avoid overwriting the docker PID with a process PID
|
150
|
+
const oldInstance = instanceManager_1.instanceManager.getInstance(req.kapeta.systemId, req.kapeta.instanceId);
|
151
|
+
if (oldInstance) {
|
152
|
+
instance.pid = oldInstance.pid;
|
153
|
+
instance.desiredStatus = oldInstance.desiredStatus;
|
154
|
+
}
|
155
|
+
instance.type = types_1.InstanceType.DOCKER;
|
156
|
+
instance.owner = types_1.InstanceOwner.INTERNAL;
|
157
|
+
}
|
158
|
+
else {
|
159
|
+
// Coming from user starting the instance outside of kapeta
|
160
|
+
instance.type = types_1.InstanceType.LOCAL;
|
161
|
+
instance.owner = types_1.InstanceOwner.EXTERNAL;
|
162
|
+
instance.desiredStatus = types_1.DesiredInstanceStatus.EXTERNAL;
|
163
|
+
}
|
164
|
+
try {
|
165
|
+
await instanceManager_1.instanceManager.registerInstanceFromSDK(req.kapeta.systemId, req.kapeta.instanceId, instance);
|
166
|
+
res.status(202).send({ ok: true });
|
167
|
+
}
|
168
|
+
catch (e) {
|
169
|
+
res.status(400).send({ error: e.message });
|
170
|
+
}
|
171
|
+
});
|
172
|
+
/**
|
173
|
+
* Delete instance
|
174
|
+
*/
|
175
|
+
router.delete('/', async (req, res) => {
|
176
|
+
await instanceManager_1.instanceManager.markAsStopped(req.kapeta.systemId, req.kapeta.instanceId);
|
177
|
+
res.status(202).send({ ok: true });
|
178
|
+
});
|
179
|
+
exports.default = router;
|
@@ -0,0 +1,14 @@
|
|
1
|
+
"use strict";
|
2
|
+
/**
|
3
|
+
* Copyright 2023 Kapeta Inc.
|
4
|
+
* SPDX-License-Identifier: BUSL-1.1
|
5
|
+
*/
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
7
|
+
exports.corsHandler = void 0;
|
8
|
+
function corsHandler(req, res, next) {
|
9
|
+
res.set('Access-Control-Allow-Origin', req.headers.origin);
|
10
|
+
res.set('Access-Control-Allow-Methods', 'GET, PUT, POST, DELETE, HEAD, PATCH');
|
11
|
+
res.set('Access-Control-Allow-Headers', '*');
|
12
|
+
next();
|
13
|
+
}
|
14
|
+
exports.corsHandler = corsHandler;
|
@@ -0,0 +1,15 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright 2023 Kapeta Inc.
|
3
|
+
* SPDX-License-Identifier: BUSL-1.1
|
4
|
+
*/
|
5
|
+
import { NextFunction, Request, Response } from 'express';
|
6
|
+
import { EnvironmentType } from '../types';
|
7
|
+
export interface KapetaRequest extends Request {
|
8
|
+
kapeta?: {
|
9
|
+
blockRef: string;
|
10
|
+
instanceId: string;
|
11
|
+
systemId: string;
|
12
|
+
environment?: EnvironmentType;
|
13
|
+
};
|
14
|
+
}
|
15
|
+
export declare function kapetaHeaders(req: KapetaRequest, res: Response, next: NextFunction): void;
|
@@ -0,0 +1,28 @@
|
|
1
|
+
"use strict";
|
2
|
+
/**
|
3
|
+
* Copyright 2023 Kapeta Inc.
|
4
|
+
* SPDX-License-Identifier: BUSL-1.1
|
5
|
+
*/
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
7
|
+
exports.kapetaHeaders = void 0;
|
8
|
+
const nodejs_utils_1 = require("@kapeta/nodejs-utils");
|
9
|
+
function kapetaHeaders(req, res, next) {
|
10
|
+
let blockRef = req.headers['x-kapeta-block'];
|
11
|
+
let systemId = req.headers['x-kapeta-system'];
|
12
|
+
let instanceId = req.headers['x-kapeta-instance'];
|
13
|
+
let environment = req.headers['x-kapeta-environment'];
|
14
|
+
if (blockRef) {
|
15
|
+
blockRef = (0, nodejs_utils_1.normalizeKapetaUri)(blockRef);
|
16
|
+
}
|
17
|
+
if (systemId) {
|
18
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
19
|
+
}
|
20
|
+
req.kapeta = {
|
21
|
+
blockRef,
|
22
|
+
instanceId,
|
23
|
+
systemId,
|
24
|
+
environment: environment ? environment : undefined,
|
25
|
+
};
|
26
|
+
next();
|
27
|
+
}
|
28
|
+
exports.kapetaHeaders = kapetaHeaders;
|
@@ -0,0 +1,9 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright 2023 Kapeta Inc.
|
3
|
+
* SPDX-License-Identifier: BUSL-1.1
|
4
|
+
*/
|
5
|
+
import { NextFunction, Request, Response } from 'express';
|
6
|
+
export type StringBodyRequest = Request<any> & {
|
7
|
+
stringBody?: string;
|
8
|
+
};
|
9
|
+
export declare function stringBody(req: StringBodyRequest, res: Response, next: NextFunction): void;
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
/**
|
3
|
+
* Copyright 2023 Kapeta Inc.
|
4
|
+
* SPDX-License-Identifier: BUSL-1.1
|
5
|
+
*/
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
7
|
+
exports.stringBody = void 0;
|
8
|
+
function stringBody(req, res, next) {
|
9
|
+
// push the data to body
|
10
|
+
const body = [];
|
11
|
+
req.on('data', (chunk) => {
|
12
|
+
body.push(chunk);
|
13
|
+
}).on('end', () => {
|
14
|
+
req.stringBody = Buffer.concat(body).toString();
|
15
|
+
next();
|
16
|
+
});
|
17
|
+
}
|
18
|
+
exports.stringBody = stringBody;
|
@@ -0,0 +1,37 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright 2023 Kapeta Inc.
|
3
|
+
* SPDX-License-Identifier: BUSL-1.1
|
4
|
+
*/
|
5
|
+
import { Connection } from '@kapeta/schemas';
|
6
|
+
import { SimpleRequest, SimpleResponse } from './types';
|
7
|
+
declare class NetworkManager {
|
8
|
+
private _connections;
|
9
|
+
private _sources;
|
10
|
+
private _targets;
|
11
|
+
static toConnectionId(connection: Connection): string;
|
12
|
+
constructor();
|
13
|
+
_ensureSystem(systemId: string): void;
|
14
|
+
_ensureConnection(systemId: string, connectionId: string): Traffic[];
|
15
|
+
_ensureSource(systemId: string, sourceBlockInstanceId: string): Traffic[];
|
16
|
+
_ensureTarget(systemId: string, targetBlockInstanceId: string): Traffic[];
|
17
|
+
addRequest(systemId: string, connection: Connection, request: SimpleRequest, consumerMethodId?: string, providerMethodId?: string): Traffic;
|
18
|
+
getTrafficForConnection(systemId: string, connectionId: string): Traffic[];
|
19
|
+
getTrafficForSource(systemId: string, blockInstanceId: string): Traffic[];
|
20
|
+
getTrafficForTarget(systemId: string, blockInstanceId: string): Traffic[];
|
21
|
+
}
|
22
|
+
declare class Traffic {
|
23
|
+
readonly id: string;
|
24
|
+
readonly connectionId: string;
|
25
|
+
readonly consumerMethodId: string | undefined;
|
26
|
+
readonly providerMethodId: string | undefined;
|
27
|
+
readonly created: number;
|
28
|
+
readonly request: SimpleRequest;
|
29
|
+
ended: null | number;
|
30
|
+
error: null | string;
|
31
|
+
response: SimpleResponse | null;
|
32
|
+
constructor(connection: Connection, request: SimpleRequest, consumerMethodId?: string, providerMethodId?: string);
|
33
|
+
asError(err: any): void;
|
34
|
+
withResponse(response: SimpleResponse): void;
|
35
|
+
}
|
36
|
+
export declare const networkManager: NetworkManager;
|
37
|
+
export {};
|
@@ -0,0 +1,119 @@
|
|
1
|
+
"use strict";
|
2
|
+
/**
|
3
|
+
* Copyright 2023 Kapeta Inc.
|
4
|
+
* SPDX-License-Identifier: BUSL-1.1
|
5
|
+
*/
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
8
|
+
};
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
10
|
+
exports.networkManager = void 0;
|
11
|
+
const node_uuid_1 = __importDefault(require("node-uuid"));
|
12
|
+
const nodejs_utils_1 = require("@kapeta/nodejs-utils");
|
13
|
+
class NetworkManager {
|
14
|
+
_connections;
|
15
|
+
_sources;
|
16
|
+
_targets;
|
17
|
+
static toConnectionId(connection) {
|
18
|
+
return [
|
19
|
+
connection.provider.blockId,
|
20
|
+
connection.provider.resourceName,
|
21
|
+
connection.consumer.blockId,
|
22
|
+
connection.consumer.resourceName,
|
23
|
+
].join('_');
|
24
|
+
}
|
25
|
+
constructor() {
|
26
|
+
this._connections = {};
|
27
|
+
this._sources = {};
|
28
|
+
this._targets = {};
|
29
|
+
}
|
30
|
+
_ensureSystem(systemId) {
|
31
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
32
|
+
if (!this._connections[systemId]) {
|
33
|
+
this._connections[systemId] = {};
|
34
|
+
}
|
35
|
+
if (!this._sources[systemId]) {
|
36
|
+
this._sources[systemId] = {};
|
37
|
+
}
|
38
|
+
if (!this._targets[systemId]) {
|
39
|
+
this._targets[systemId] = {};
|
40
|
+
}
|
41
|
+
}
|
42
|
+
_ensureConnection(systemId, connectionId) {
|
43
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
44
|
+
this._ensureSystem(systemId);
|
45
|
+
if (!this._connections[systemId][connectionId]) {
|
46
|
+
this._connections[systemId][connectionId] = [];
|
47
|
+
}
|
48
|
+
return this._connections[systemId][connectionId];
|
49
|
+
}
|
50
|
+
_ensureSource(systemId, sourceBlockInstanceId) {
|
51
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
52
|
+
this._ensureSystem(systemId);
|
53
|
+
if (!this._sources[systemId][sourceBlockInstanceId]) {
|
54
|
+
this._sources[systemId][sourceBlockInstanceId] = [];
|
55
|
+
}
|
56
|
+
return this._sources[systemId][sourceBlockInstanceId];
|
57
|
+
}
|
58
|
+
_ensureTarget(systemId, targetBlockInstanceId) {
|
59
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
60
|
+
this._ensureSystem(systemId);
|
61
|
+
if (!this._targets[systemId][targetBlockInstanceId]) {
|
62
|
+
this._targets[systemId][targetBlockInstanceId] = [];
|
63
|
+
}
|
64
|
+
return this._targets[systemId][targetBlockInstanceId];
|
65
|
+
}
|
66
|
+
addRequest(systemId, connection, request, consumerMethodId, providerMethodId) {
|
67
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
68
|
+
const traffic = new Traffic(connection, request, consumerMethodId, providerMethodId);
|
69
|
+
this._ensureConnection(systemId, traffic.connectionId).push(traffic);
|
70
|
+
this._ensureSource(systemId, connection.provider.blockId).push(traffic);
|
71
|
+
this._ensureTarget(systemId, connection.consumer.blockId).push(traffic);
|
72
|
+
return traffic;
|
73
|
+
}
|
74
|
+
getTrafficForConnection(systemId, connectionId) {
|
75
|
+
return this._ensureConnection(systemId, connectionId);
|
76
|
+
}
|
77
|
+
getTrafficForSource(systemId, blockInstanceId) {
|
78
|
+
return this._ensureSource(systemId, blockInstanceId);
|
79
|
+
}
|
80
|
+
getTrafficForTarget(systemId, blockInstanceId) {
|
81
|
+
return this._ensureTarget(systemId, blockInstanceId);
|
82
|
+
}
|
83
|
+
}
|
84
|
+
class Traffic {
|
85
|
+
id;
|
86
|
+
connectionId;
|
87
|
+
consumerMethodId;
|
88
|
+
providerMethodId;
|
89
|
+
created;
|
90
|
+
request;
|
91
|
+
ended;
|
92
|
+
error;
|
93
|
+
response;
|
94
|
+
constructor(connection, request, consumerMethodId, providerMethodId) {
|
95
|
+
this.id = node_uuid_1.default.v4();
|
96
|
+
this.connectionId = NetworkManager.toConnectionId(connection);
|
97
|
+
this.consumerMethodId = consumerMethodId;
|
98
|
+
this.providerMethodId = providerMethodId;
|
99
|
+
this.request = request;
|
100
|
+
this.response = null;
|
101
|
+
this.error = null;
|
102
|
+
this.ended = null;
|
103
|
+
this.created = new Date().getTime();
|
104
|
+
}
|
105
|
+
asError(err) {
|
106
|
+
this.ended = new Date().getTime();
|
107
|
+
this.response = {
|
108
|
+
code: 0,
|
109
|
+
headers: {},
|
110
|
+
body: null,
|
111
|
+
};
|
112
|
+
this.error = err + '';
|
113
|
+
}
|
114
|
+
withResponse(response) {
|
115
|
+
this.ended = new Date().getTime();
|
116
|
+
this.response = response;
|
117
|
+
}
|
118
|
+
}
|
119
|
+
exports.networkManager = new NetworkManager();
|
@@ -0,0 +1,41 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright 2023 Kapeta Inc.
|
3
|
+
* SPDX-License-Identifier: BUSL-1.1
|
4
|
+
*/
|
5
|
+
import { DefinitionInfo } from '@kapeta/local-cluster-config';
|
6
|
+
import { ContainerInfo } from './containerManager';
|
7
|
+
import { AnyMap, EnvironmentType } from './types';
|
8
|
+
import { LocalInstance } from '@kapeta/schemas';
|
9
|
+
import { ResourceInfo } from '@kapeta/sdk-config';
|
10
|
+
declare class Operator {
|
11
|
+
private readonly _data;
|
12
|
+
constructor(data: DefinitionInfo);
|
13
|
+
getLocalData(): LocalInstance;
|
14
|
+
getDefinitionInfo(): DefinitionInfo;
|
15
|
+
getCredentials(): any;
|
16
|
+
}
|
17
|
+
declare class OperatorManager {
|
18
|
+
private _mountDir;
|
19
|
+
private operatorLock;
|
20
|
+
constructor();
|
21
|
+
_getMountPoint(operatorType: string, mountName: string): string;
|
22
|
+
/**
|
23
|
+
* Get operator definition for resource type
|
24
|
+
*/
|
25
|
+
getOperator(fullName: string, version: string): Promise<Operator>;
|
26
|
+
/**
|
27
|
+
* Get information about a specific consumed resource
|
28
|
+
*/
|
29
|
+
getConsumerResourceInfo(systemId: string, fromServiceId: string, resourceType: string, portType: string, name: string, environment?: EnvironmentType, ensureContainer?: boolean): Promise<ResourceInfo<any, any>>;
|
30
|
+
getOperatorPorts(systemId: string, kind: string, version: string): Promise<AnyMap>;
|
31
|
+
/**
|
32
|
+
* Ensure we have a running operator of given type
|
33
|
+
*
|
34
|
+
* @param systemId the plan ref
|
35
|
+
* @param kind the full name - e.g. myhandle/rabbitmq
|
36
|
+
* @param version the version of the operator
|
37
|
+
*/
|
38
|
+
ensureOperator(systemId: string, kind: string, version: string): Promise<ContainerInfo>;
|
39
|
+
}
|
40
|
+
export declare const operatorManager: OperatorManager;
|
41
|
+
export {};
|