@kapeta/local-cluster-service 0.20.4 → 0.21.0
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/CHANGELOG.md +7 -0
- package/dist/cjs/src/assetManager.js +5 -6
- package/dist/cjs/src/clusterService.js +2 -2
- package/dist/cjs/src/codeGeneratorManager.js +2 -2
- package/dist/cjs/src/config/routes.js +13 -2
- package/dist/cjs/src/configManager.js +10 -10
- package/dist/cjs/src/definitionsManager.js +2 -3
- package/dist/cjs/src/instanceManager.js +18 -15
- package/dist/cjs/src/middleware/kapeta.js +3 -3
- package/dist/cjs/src/networkManager.js +6 -6
- package/dist/cjs/src/operatorManager.js +3 -3
- package/dist/cjs/src/repositoryManager.js +2 -2
- package/dist/cjs/src/serviceManager.d.ts +1 -0
- package/dist/cjs/src/serviceManager.js +9 -9
- package/dist/cjs/src/socketManager.js +3 -3
- package/dist/cjs/src/utils/BlockInstanceRunner.js +32 -14
- package/dist/cjs/src/utils/utils.d.ts +0 -1
- package/dist/cjs/src/utils/utils.js +1 -13
- package/dist/cjs/test/proxy/types/rest.test.js +16 -17
- package/dist/esm/src/assetManager.js +5 -6
- package/dist/esm/src/clusterService.js +2 -2
- package/dist/esm/src/codeGeneratorManager.js +2 -2
- package/dist/esm/src/config/routes.js +13 -2
- package/dist/esm/src/configManager.js +10 -10
- package/dist/esm/src/definitionsManager.js +2 -3
- package/dist/esm/src/instanceManager.js +18 -15
- package/dist/esm/src/middleware/kapeta.js +3 -3
- package/dist/esm/src/networkManager.js +6 -6
- package/dist/esm/src/operatorManager.js +3 -3
- package/dist/esm/src/repositoryManager.js +2 -2
- package/dist/esm/src/serviceManager.d.ts +1 -0
- package/dist/esm/src/serviceManager.js +9 -9
- package/dist/esm/src/socketManager.js +3 -3
- package/dist/esm/src/utils/BlockInstanceRunner.js +32 -14
- package/dist/esm/src/utils/utils.d.ts +0 -1
- package/dist/esm/src/utils/utils.js +1 -13
- package/dist/esm/test/proxy/types/rest.test.js +16 -17
- package/package.json +1 -1
- package/src/assetManager.ts +1 -2
- package/src/clusterService.ts +1 -1
- package/src/codeGeneratorManager.ts +1 -1
- package/src/config/routes.ts +17 -6
- package/src/configManager.ts +2 -2
- package/src/definitionsManager.ts +1 -2
- package/src/instanceManager.ts +8 -3
- package/src/middleware/kapeta.ts +1 -2
- package/src/networkManager.ts +1 -1
- package/src/operatorManager.ts +3 -3
- package/src/repositoryManager.ts +1 -1
- package/src/serviceManager.ts +2 -2
- package/src/socketManager.ts +1 -1
- package/src/utils/BlockInstanceRunner.ts +65 -30
- package/src/utils/utils.ts +0 -13
- package/test/proxy/types/rest.test.ts +22 -22
package/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
# [0.21.0](https://github.com/kapetacom/local-cluster-service/compare/v0.20.4...v0.21.0) (2023-09-17)
|
2
|
+
|
3
|
+
|
4
|
+
### Features
|
5
|
+
|
6
|
+
* Use default ports from block type providers ([#79](https://github.com/kapetacom/local-cluster-service/issues/79)) ([4633a7e](https://github.com/kapetacom/local-cluster-service/commit/4633a7ee4da92aeb3b43b5f93898d443f6de1f04))
|
7
|
+
|
1
8
|
## [0.20.4](https://github.com/kapetacom/local-cluster-service/compare/v0.20.3...v0.20.4) (2023-09-14)
|
2
9
|
|
3
10
|
|
@@ -13,7 +13,6 @@ const nodejs_utils_1 = require("@kapeta/nodejs-utils");
|
|
13
13
|
const repositoryManager_1 = require("./repositoryManager");
|
14
14
|
const nodejs_registry_utils_1 = require("@kapeta/nodejs-registry-utils");
|
15
15
|
const definitionsManager_1 = require("./definitionsManager");
|
16
|
-
const utils_1 = require("./utils/utils");
|
17
16
|
const taskManager_1 = require("./taskManager");
|
18
17
|
const cacheManager_1 = require("./cacheManager");
|
19
18
|
const node_uuid_1 = __importDefault(require("node-uuid"));
|
@@ -85,7 +84,7 @@ class AssetManager {
|
|
85
84
|
return instance;
|
86
85
|
}
|
87
86
|
async getAsset(ref, noCache = false, autoFetch = true) {
|
88
|
-
ref = (0,
|
87
|
+
ref = (0, nodejs_utils_1.normalizeKapetaUri)(ref);
|
89
88
|
const cacheKey = toKey(ref);
|
90
89
|
if (!noCache && cacheManager_1.cacheManager.has(cacheKey)) {
|
91
90
|
return cacheManager_1.cacheManager.get(cacheKey);
|
@@ -117,7 +116,7 @@ class AssetManager {
|
|
117
116
|
await fs_extra_1.default.writeFile(path, yaml_1.default.stringify(yaml));
|
118
117
|
const asset = await this.importFile(path);
|
119
118
|
asset.forEach((a) => {
|
120
|
-
const ref = (0,
|
119
|
+
const ref = (0, nodejs_utils_1.normalizeKapetaUri)(a.ref);
|
121
120
|
const key = toKey(ref);
|
122
121
|
cacheManager_1.cacheManager.set(key, a, CACHE_TTL);
|
123
122
|
});
|
@@ -128,7 +127,7 @@ class AssetManager {
|
|
128
127
|
return asset;
|
129
128
|
}
|
130
129
|
async updateAsset(ref, yaml, sourceOfChange = 'filesystem') {
|
131
|
-
ref = (0,
|
130
|
+
ref = (0, nodejs_utils_1.normalizeKapetaUri)(ref);
|
132
131
|
const asset = await this.getAsset(ref, true, false);
|
133
132
|
if (!asset) {
|
134
133
|
throw new Error('Attempted to update unknown asset: ' + ref);
|
@@ -157,7 +156,7 @@ class AssetManager {
|
|
157
156
|
const assetInfos = yaml_1.default.parseAllDocuments(content.toString()).map((doc) => doc.toJSON());
|
158
157
|
await nodejs_registry_utils_1.Actions.link(new progressListener_1.ProgressListener(), node_path_1.default.dirname(filePath));
|
159
158
|
const version = 'local';
|
160
|
-
const refs = assetInfos.map((assetInfo) => (0,
|
159
|
+
const refs = assetInfos.map((assetInfo) => (0, nodejs_utils_1.normalizeKapetaUri)(`kapeta://${assetInfo.metadata.name}:${version}`));
|
161
160
|
refs.forEach((ref) => {
|
162
161
|
const key = toKey(ref);
|
163
162
|
cacheManager_1.cacheManager.remove(key);
|
@@ -189,7 +188,7 @@ class AssetManager {
|
|
189
188
|
return await repositoryManager_1.repositoryManager.ensureAsset(uri.handle, uri.name, uri.version, false);
|
190
189
|
}
|
191
190
|
async maybeGenerateCode(ref, ymlPath, block) {
|
192
|
-
ref = (0,
|
191
|
+
ref = (0, nodejs_utils_1.normalizeKapetaUri)(ref);
|
193
192
|
if (await codeGeneratorManager_1.codeGeneratorManager.canGenerateCode(block)) {
|
194
193
|
const assetTitle = block.metadata.title ? block.metadata.title : (0, nodejs_utils_1.parseKapetaUri)(block.metadata.name).name;
|
195
194
|
const taskId = `codegen:${node_uuid_1.default.v4()}`;
|
@@ -1,7 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.clusterService = void 0;
|
4
|
-
const
|
4
|
+
const nodejs_utils_1 = require("@kapeta/nodejs-utils");
|
5
5
|
const net = require('net');
|
6
6
|
const DEFAULT_SERVER_PORT = 35100;
|
7
7
|
const DEFAULT_START_PORT = 40000;
|
@@ -109,7 +109,7 @@ class ClusterService {
|
|
109
109
|
* @return {string}
|
110
110
|
*/
|
111
111
|
getProxyPath(systemId, consumerInstanceId, consumerResourceName, portType) {
|
112
|
-
systemId = (0,
|
112
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
113
113
|
return `/proxy/${encodeURIComponent(systemId)}/${encodeURIComponent(consumerInstanceId)}/${encodeURIComponent(consumerResourceName)}/${encodeURIComponent(portType)}/`;
|
114
114
|
}
|
115
115
|
}
|
@@ -8,7 +8,7 @@ const path_1 = __importDefault(require("path"));
|
|
8
8
|
const codegen_1 = require("@kapeta/codegen");
|
9
9
|
const definitionsManager_1 = require("./definitionsManager");
|
10
10
|
const assetManager_1 = require("./assetManager");
|
11
|
-
const
|
11
|
+
const nodejs_utils_1 = require("@kapeta/nodejs-utils");
|
12
12
|
const repositoryManager_1 = require("./repositoryManager");
|
13
13
|
const TARGET_KIND = 'core/language-target';
|
14
14
|
const BLOCK_TYPE_KIND = 'core/block-type';
|
@@ -67,7 +67,7 @@ class CodeGeneratorManager {
|
|
67
67
|
//Not all block types have targets
|
68
68
|
return;
|
69
69
|
}
|
70
|
-
const targetRef = (0,
|
70
|
+
const targetRef = (0, nodejs_utils_1.normalizeKapetaUri)(yamlContent.spec.target?.kind);
|
71
71
|
// Automatically downloads target if not available
|
72
72
|
const targetAsset = await assetManager_1.assetManager.getAsset(targetRef);
|
73
73
|
if (!targetAsset) {
|
@@ -111,8 +111,19 @@ router.get('/identity', async (req, res) => {
|
|
111
111
|
* already called the endpoint the same port is returned.
|
112
112
|
*/
|
113
113
|
router.get('/provides/:type', async (req, res) => {
|
114
|
-
|
115
|
-
|
114
|
+
if (req.kapeta.environment === 'docker' && ['web', 'rest'].includes(req.params.type)) {
|
115
|
+
// Happens when starting a local container with no providers.
|
116
|
+
res.send('80');
|
117
|
+
return;
|
118
|
+
}
|
119
|
+
try {
|
120
|
+
const port = await serviceManager_1.serviceManager.ensureServicePort(req.kapeta.systemId, req.kapeta.instanceId, req.params.type);
|
121
|
+
res.send('' + port);
|
122
|
+
}
|
123
|
+
catch (err) {
|
124
|
+
console.warn('Failed to resolve service port: ' + req.params.type, err);
|
125
|
+
res.status(400).send({ error: err.message });
|
126
|
+
}
|
116
127
|
});
|
117
128
|
/**
|
118
129
|
* Used by services to get info for consumed operator resource.
|
@@ -12,19 +12,19 @@ class ConfigManager {
|
|
12
12
|
this._config = storageService_1.storageService.section('config');
|
13
13
|
}
|
14
14
|
_forSystem(systemId) {
|
15
|
-
systemId = (0,
|
15
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
16
16
|
if (!this._config[systemId]) {
|
17
17
|
this._config[systemId] = {};
|
18
18
|
}
|
19
19
|
return this._config[systemId];
|
20
20
|
}
|
21
21
|
setConfigForSystem(systemId, config) {
|
22
|
-
systemId = (0,
|
22
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
23
23
|
const systemConfig = config || {};
|
24
24
|
storageService_1.storageService.put('config', systemId, systemConfig);
|
25
25
|
}
|
26
26
|
getConfigForSystem(systemId) {
|
27
|
-
systemId = (0,
|
27
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
28
28
|
return this._forSystem(systemId);
|
29
29
|
}
|
30
30
|
async getConfigForBlockInstance(systemId, instanceId) {
|
@@ -37,13 +37,13 @@ class ConfigManager {
|
|
37
37
|
return (0, utils_1.getResolvedConfiguration)(blockAsset.data.spec.configuration, instanceConfig, blockInstance.defaultConfiguration);
|
38
38
|
}
|
39
39
|
setConfigForSection(systemId, sectionId, config) {
|
40
|
-
systemId = (0,
|
40
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
41
41
|
let systemConfig = this._forSystem(systemId);
|
42
42
|
systemConfig[sectionId] = config || {};
|
43
43
|
storageService_1.storageService.put('config', systemId, systemConfig);
|
44
44
|
}
|
45
45
|
getConfigForSection(systemId, sectionId) {
|
46
|
-
systemId = (0,
|
46
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
47
47
|
const systemConfig = this._forSystem(systemId);
|
48
48
|
if (!systemConfig[sectionId]) {
|
49
49
|
systemConfig[sectionId] = {};
|
@@ -67,9 +67,9 @@ class ConfigManager {
|
|
67
67
|
* @returns {Promise<{systemId:string,instanceId:string}>}
|
68
68
|
*/
|
69
69
|
async resolveIdentity(blockRef, systemId) {
|
70
|
-
blockRef = (0,
|
70
|
+
blockRef = (0, nodejs_utils_1.normalizeKapetaUri)(blockRef);
|
71
71
|
if (systemId) {
|
72
|
-
systemId = (0,
|
72
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
73
73
|
}
|
74
74
|
const planAssets = await assetManager_1.assetManager.getPlans();
|
75
75
|
const blockUri = (0, nodejs_utils_1.parseKapetaUri)(blockRef);
|
@@ -86,7 +86,7 @@ class ConfigManager {
|
|
86
86
|
const refUri = (0, nodejs_utils_1.parseKapetaUri)(blockInstance.block.ref);
|
87
87
|
if (refUri.equals(blockUri)) {
|
88
88
|
matchingIdentities.push({
|
89
|
-
systemId: (0,
|
89
|
+
systemId: (0, nodejs_utils_1.normalizeKapetaUri)(planAsset.ref),
|
90
90
|
instanceId: blockInstance.id,
|
91
91
|
});
|
92
92
|
}
|
@@ -107,8 +107,8 @@ class ConfigManager {
|
|
107
107
|
return matchingIdentities[0];
|
108
108
|
}
|
109
109
|
async verifyIdentity(blockRef, systemId, instanceId) {
|
110
|
-
blockRef = (0,
|
111
|
-
systemId = (0,
|
110
|
+
blockRef = (0, nodejs_utils_1.normalizeKapetaUri)(blockRef);
|
111
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
112
112
|
const planAssets = await assetManager_1.assetManager.getPlans();
|
113
113
|
const systemUri = systemId ? (0, nodejs_utils_1.parseKapetaUri)(systemId) : null;
|
114
114
|
const blockUri = (0, nodejs_utils_1.parseKapetaUri)(blockRef);
|
@@ -9,7 +9,6 @@ const nodejs_utils_1 = require("@kapeta/nodejs-utils");
|
|
9
9
|
const cacheManager_1 = require("./cacheManager");
|
10
10
|
const nodejs_api_client_1 = require("@kapeta/nodejs-api-client");
|
11
11
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
12
|
-
const utils_1 = require("./utils/utils");
|
13
12
|
const yaml_1 = __importDefault(require("yaml"));
|
14
13
|
const nodejs_registry_utils_1 = require("@kapeta/nodejs-registry-utils");
|
15
14
|
const progressListener_1 = require("./progressListener");
|
@@ -66,12 +65,12 @@ class DefinitionsManager {
|
|
66
65
|
const blockUri = (0, nodejs_utils_1.parseKapetaUri)(b.block.ref);
|
67
66
|
if (blockUri.version === 'local') {
|
68
67
|
blockRefs.add(blockUri.id);
|
69
|
-
b.block.ref = (0,
|
68
|
+
b.block.ref = (0, nodejs_utils_1.normalizeKapetaUri)(`${profile.handle}/${blockUri.name}:local`);
|
70
69
|
}
|
71
70
|
});
|
72
71
|
// Rewrite all blocks that are referenced by the sample plan
|
73
72
|
const rewrittenBlocks = Array.from(blockRefs)
|
74
|
-
.map((ref) => definitions.find((d) => (0,
|
73
|
+
.map((ref) => definitions.find((d) => (0, nodejs_utils_1.normalizeKapetaUri)(d.definition.metadata.name + ':' + d.version) === (0, nodejs_utils_1.normalizeKapetaUri)(ref)))
|
75
74
|
.filter((d) => d !== undefined)
|
76
75
|
.map((d) => applyHandleChange(d, profile.handle));
|
77
76
|
// Persist the rewritten assets
|
@@ -51,7 +51,7 @@ class InstanceManager {
|
|
51
51
|
if (!this._instances) {
|
52
52
|
return [];
|
53
53
|
}
|
54
|
-
systemId = (0,
|
54
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
55
55
|
const planInfo = await definitionsManager_1.definitionsManager.getDefinition(systemId);
|
56
56
|
if (!planInfo) {
|
57
57
|
return [];
|
@@ -64,11 +64,11 @@ class InstanceManager {
|
|
64
64
|
return this._instances.filter((instance) => instance.systemId === systemId && instanceIds.includes(instance.instanceId));
|
65
65
|
}
|
66
66
|
getInstance(systemId, instanceId) {
|
67
|
-
systemId = (0,
|
67
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
68
68
|
return this._instances.find((i) => i.systemId === systemId && i.instanceId === instanceId);
|
69
69
|
}
|
70
70
|
async exclusive(systemId, instanceId, fn) {
|
71
|
-
systemId = (0,
|
71
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
72
72
|
const key = `${systemId}/${instanceId}`;
|
73
73
|
//console.log(`Acquiring lock for ${key}`, this.instanceLocks.isBusy(key));
|
74
74
|
const result = await this.instanceLocks.acquire(key, fn);
|
@@ -105,9 +105,9 @@ class InstanceManager {
|
|
105
105
|
return [];
|
106
106
|
}
|
107
107
|
async saveInternalInstance(instance) {
|
108
|
-
instance.systemId = (0,
|
108
|
+
instance.systemId = (0, nodejs_utils_1.normalizeKapetaUri)(instance.systemId);
|
109
109
|
if (instance.ref) {
|
110
|
-
instance.ref = (0,
|
110
|
+
instance.ref = (0, nodejs_utils_1.normalizeKapetaUri)(instance.ref);
|
111
111
|
}
|
112
112
|
//Get target address
|
113
113
|
let address = await serviceManager_1.serviceManager.getProviderAddress(instance.systemId, instance.instanceId, instance.portType ?? DEFAULT_HEALTH_PORT_TYPE);
|
@@ -135,7 +135,7 @@ class InstanceManager {
|
|
135
135
|
*/
|
136
136
|
async registerInstanceFromSDK(systemId, instanceId, info) {
|
137
137
|
return this.exclusive(systemId, instanceId, async () => {
|
138
|
-
systemId = (0,
|
138
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
139
139
|
let instance = this.getInstance(systemId, instanceId);
|
140
140
|
//Get target address
|
141
141
|
const address = await serviceManager_1.serviceManager.getProviderAddress(systemId, instanceId, info.portType ?? DEFAULT_HEALTH_PORT_TYPE);
|
@@ -167,6 +167,9 @@ class InstanceManager {
|
|
167
167
|
if (healthUrl) {
|
168
168
|
instance.health = healthUrl;
|
169
169
|
}
|
170
|
+
if (info.portType) {
|
171
|
+
instance.portType = info.portType;
|
172
|
+
}
|
170
173
|
socketManager_1.socketManager.emitSystemEvent(systemId, socketManager_1.EVENT_STATUS_CHANGED, instance);
|
171
174
|
}
|
172
175
|
else {
|
@@ -202,7 +205,7 @@ class InstanceManager {
|
|
202
205
|
}
|
203
206
|
markAsStopped(systemId, instanceId) {
|
204
207
|
return this.exclusive(systemId, instanceId, async () => {
|
205
|
-
systemId = (0,
|
208
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
206
209
|
const instance = lodash_1.default.find(this._instances, { systemId, instanceId });
|
207
210
|
if (instance && instance.owner === types_1.InstanceOwner.EXTERNAL && instance.status !== types_1.InstanceStatus.STOPPED) {
|
208
211
|
instance.status = types_1.InstanceStatus.STOPPED;
|
@@ -214,7 +217,7 @@ class InstanceManager {
|
|
214
217
|
});
|
215
218
|
}
|
216
219
|
async startAllForPlan(systemId) {
|
217
|
-
systemId = (0,
|
220
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
218
221
|
const plan = await assetManager_1.assetManager.getPlan(systemId, true);
|
219
222
|
if (!plan) {
|
220
223
|
throw new Error(`Plan not found: ${systemId}`);
|
@@ -254,7 +257,7 @@ class InstanceManager {
|
|
254
257
|
}
|
255
258
|
async stopInner(systemId, instanceId, changeDesired = false) {
|
256
259
|
return this.exclusive(systemId, instanceId, async () => {
|
257
|
-
systemId = (0,
|
260
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
258
261
|
const instance = this.getInstance(systemId, instanceId);
|
259
262
|
if (!instance) {
|
260
263
|
return;
|
@@ -308,7 +311,7 @@ class InstanceManager {
|
|
308
311
|
});
|
309
312
|
}
|
310
313
|
stopAllForPlan(systemId) {
|
311
|
-
systemId = (0,
|
314
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
312
315
|
const instancesForPlan = this._instances.filter((instance) => instance.systemId === systemId);
|
313
316
|
return taskManager_1.taskManager.add(`plan:stop:${systemId}`, async () => {
|
314
317
|
return this.stopInstances(instancesForPlan);
|
@@ -318,9 +321,9 @@ class InstanceManager {
|
|
318
321
|
}
|
319
322
|
async start(systemId, instanceId) {
|
320
323
|
return this.exclusive(systemId, instanceId, async () => {
|
321
|
-
systemId = (0,
|
324
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
322
325
|
const blockInstance = await assetManager_1.assetManager.getBlockInstance(systemId, instanceId);
|
323
|
-
const blockRef = (0,
|
326
|
+
const blockRef = (0, nodejs_utils_1.normalizeKapetaUri)(blockInstance.block.ref);
|
324
327
|
const blockAsset = await assetManager_1.assetManager.getAsset(blockRef, true);
|
325
328
|
if (!blockAsset) {
|
326
329
|
throw new Error('Block not found: ' + blockRef);
|
@@ -436,7 +439,7 @@ class InstanceManager {
|
|
436
439
|
* We do it this way to not cause the user to wait for the instance to start again
|
437
440
|
*/
|
438
441
|
async prepareForRestart(systemId, instanceId) {
|
439
|
-
systemId = (0,
|
442
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
440
443
|
await this.stopInner(systemId, instanceId);
|
441
444
|
}
|
442
445
|
async stopAll() {
|
@@ -468,9 +471,9 @@ class InstanceManager {
|
|
468
471
|
if (!instance.systemId) {
|
469
472
|
return;
|
470
473
|
}
|
471
|
-
instance.systemId = (0,
|
474
|
+
instance.systemId = (0, nodejs_utils_1.normalizeKapetaUri)(instance.systemId);
|
472
475
|
if (instance.ref) {
|
473
|
-
instance.ref = (0,
|
476
|
+
instance.ref = (0, nodejs_utils_1.normalizeKapetaUri)(instance.ref);
|
474
477
|
}
|
475
478
|
if (instance.desiredStatus === types_1.DesiredInstanceStatus.RUN) {
|
476
479
|
// Check if the plan still exists and the instance is still in the plan
|
@@ -1,17 +1,17 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.kapetaHeaders = void 0;
|
4
|
-
const
|
4
|
+
const nodejs_utils_1 = require("@kapeta/nodejs-utils");
|
5
5
|
function kapetaHeaders(req, res, next) {
|
6
6
|
let blockRef = req.headers['x-kapeta-block'];
|
7
7
|
let systemId = req.headers['x-kapeta-system'];
|
8
8
|
let instanceId = req.headers['x-kapeta-instance'];
|
9
9
|
let environment = req.headers['x-kapeta-environment'];
|
10
10
|
if (blockRef) {
|
11
|
-
blockRef = (0,
|
11
|
+
blockRef = (0, nodejs_utils_1.normalizeKapetaUri)(blockRef);
|
12
12
|
}
|
13
13
|
if (systemId) {
|
14
|
-
systemId = (0,
|
14
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
15
15
|
}
|
16
16
|
req.kapeta = {
|
17
17
|
blockRef,
|
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
exports.networkManager = void 0;
|
7
7
|
const node_uuid_1 = __importDefault(require("node-uuid"));
|
8
|
-
const
|
8
|
+
const nodejs_utils_1 = require("@kapeta/nodejs-utils");
|
9
9
|
class NetworkManager {
|
10
10
|
_connections;
|
11
11
|
_sources;
|
@@ -24,7 +24,7 @@ class NetworkManager {
|
|
24
24
|
this._targets = {};
|
25
25
|
}
|
26
26
|
_ensureSystem(systemId) {
|
27
|
-
systemId = (0,
|
27
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
28
28
|
if (!this._connections[systemId]) {
|
29
29
|
this._connections[systemId] = {};
|
30
30
|
}
|
@@ -36,7 +36,7 @@ class NetworkManager {
|
|
36
36
|
}
|
37
37
|
}
|
38
38
|
_ensureConnection(systemId, connectionId) {
|
39
|
-
systemId = (0,
|
39
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
40
40
|
this._ensureSystem(systemId);
|
41
41
|
if (!this._connections[systemId][connectionId]) {
|
42
42
|
this._connections[systemId][connectionId] = [];
|
@@ -44,7 +44,7 @@ class NetworkManager {
|
|
44
44
|
return this._connections[systemId][connectionId];
|
45
45
|
}
|
46
46
|
_ensureSource(systemId, sourceBlockInstanceId) {
|
47
|
-
systemId = (0,
|
47
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
48
48
|
this._ensureSystem(systemId);
|
49
49
|
if (!this._sources[systemId][sourceBlockInstanceId]) {
|
50
50
|
this._sources[systemId][sourceBlockInstanceId] = [];
|
@@ -52,7 +52,7 @@ class NetworkManager {
|
|
52
52
|
return this._sources[systemId][sourceBlockInstanceId];
|
53
53
|
}
|
54
54
|
_ensureTarget(systemId, targetBlockInstanceId) {
|
55
|
-
systemId = (0,
|
55
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
56
56
|
this._ensureSystem(systemId);
|
57
57
|
if (!this._targets[systemId][targetBlockInstanceId]) {
|
58
58
|
this._targets[systemId][targetBlockInstanceId] = [];
|
@@ -60,7 +60,7 @@ class NetworkManager {
|
|
60
60
|
return this._targets[systemId][targetBlockInstanceId];
|
61
61
|
}
|
62
62
|
addRequest(systemId, connection, request, consumerMethodId, providerMethodId) {
|
63
|
-
systemId = (0,
|
63
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
64
64
|
const traffic = new Traffic(connection, request, consumerMethodId, providerMethodId);
|
65
65
|
this._ensureConnection(systemId, traffic.connectionId).push(traffic);
|
66
66
|
this._ensureSource(systemId, connection.provider.blockId).push(traffic);
|
@@ -6,13 +6,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.operatorManager = exports.KIND_OPERATOR = void 0;
|
7
7
|
const path_1 = __importDefault(require("path"));
|
8
8
|
const md5_1 = __importDefault(require("md5"));
|
9
|
-
const nodejs_utils_1 = require("@kapeta/nodejs-utils");
|
10
9
|
const serviceManager_1 = require("./serviceManager");
|
11
10
|
const storageService_1 = require("./storageService");
|
12
11
|
const containerManager_1 = require("./containerManager");
|
13
12
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
14
13
|
const definitionsManager_1 = require("./definitionsManager");
|
15
14
|
const utils_1 = require("./utils/utils");
|
15
|
+
const nodejs_utils_1 = require("@kapeta/nodejs-utils");
|
16
16
|
const lodash_1 = __importDefault(require("lodash"));
|
17
17
|
const async_lock_1 = __importDefault(require("async-lock"));
|
18
18
|
const taskManager_1 = require("./taskManager");
|
@@ -69,7 +69,7 @@ class OperatorManager {
|
|
69
69
|
* Get information about a specific consumed resource
|
70
70
|
*/
|
71
71
|
async getConsumerResourceInfo(systemId, fromServiceId, resourceType, portType, name, environment) {
|
72
|
-
systemId = (0,
|
72
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
73
73
|
const plans = await definitionsManager_1.definitionsManager.getDefinitions(KIND_PLAN);
|
74
74
|
const planUri = (0, nodejs_utils_1.parseKapetaUri)(systemId);
|
75
75
|
const currentPlan = plans.find((plan) => plan.definition.metadata.name === planUri.fullName && plan.version === planUri.version);
|
@@ -117,7 +117,7 @@ class OperatorManager {
|
|
117
117
|
* @return {Promise<ContainerInfo>}
|
118
118
|
*/
|
119
119
|
async ensureResource(systemId, resourceType, version) {
|
120
|
-
systemId = (0,
|
120
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
121
121
|
const key = `${systemId}#${resourceType}:${version}`;
|
122
122
|
return await this.operatorLock.acquire(key, async () => {
|
123
123
|
const operator = await this.getOperator(resourceType, version);
|
@@ -9,7 +9,7 @@ const socketManager_1 = require("./socketManager");
|
|
9
9
|
const nodejs_registry_utils_1 = require("@kapeta/nodejs-registry-utils");
|
10
10
|
const definitionsManager_1 = require("./definitionsManager");
|
11
11
|
const taskManager_1 = require("./taskManager");
|
12
|
-
const
|
12
|
+
const nodejs_utils_1 = require("@kapeta/nodejs-utils");
|
13
13
|
const progressListener_1 = require("./progressListener");
|
14
14
|
const RepositoryWatcher_1 = require("./RepositoryWatcher");
|
15
15
|
const cacheManager_1 = require("./cacheManager");
|
@@ -96,7 +96,7 @@ class RepositoryManager extends node_events_1.EventEmitter {
|
|
96
96
|
if (!ref) {
|
97
97
|
continue;
|
98
98
|
}
|
99
|
-
ref = (0,
|
99
|
+
ref = (0, nodejs_utils_1.normalizeKapetaUri)(ref);
|
100
100
|
if (await definitionsManager_1.definitionsManager.exists(ref)) {
|
101
101
|
continue;
|
102
102
|
}
|
@@ -3,12 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
4
|
};
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.serviceManager = void 0;
|
6
|
+
exports.serviceManager = exports.DEFAULT_PORT_TYPE = void 0;
|
7
7
|
const lodash_1 = __importDefault(require("lodash"));
|
8
8
|
const clusterService_1 = require("./clusterService");
|
9
9
|
const storageService_1 = require("./storageService");
|
10
|
-
const
|
11
|
-
|
10
|
+
const nodejs_utils_1 = require("@kapeta/nodejs-utils");
|
11
|
+
exports.DEFAULT_PORT_TYPE = 'rest';
|
12
12
|
class ServiceManager {
|
13
13
|
_systems;
|
14
14
|
constructor() {
|
@@ -42,7 +42,7 @@ class ServiceManager {
|
|
42
42
|
return `http://${host}:${port}/${path}`;
|
43
43
|
}
|
44
44
|
_ensureSystem(systemId) {
|
45
|
-
systemId = (0,
|
45
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
46
46
|
if (!this._systems[systemId]) {
|
47
47
|
this._systems[systemId] = {};
|
48
48
|
}
|
@@ -55,10 +55,10 @@ class ServiceManager {
|
|
55
55
|
}
|
56
56
|
return system[serviceId];
|
57
57
|
}
|
58
|
-
async ensureServicePort(systemId, blockInstanceId, portType = DEFAULT_PORT_TYPE) {
|
59
|
-
systemId = (0,
|
58
|
+
async ensureServicePort(systemId, blockInstanceId, portType = exports.DEFAULT_PORT_TYPE) {
|
59
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
60
60
|
if (!portType) {
|
61
|
-
portType = DEFAULT_PORT_TYPE;
|
61
|
+
portType = exports.DEFAULT_PORT_TYPE;
|
62
62
|
}
|
63
63
|
const service = this._ensureService(systemId, blockInstanceId);
|
64
64
|
if (!service[portType]) {
|
@@ -79,7 +79,7 @@ class ServiceManager {
|
|
79
79
|
*
|
80
80
|
*/
|
81
81
|
getConsumerAddress(systemId, consumerInstanceId, consumerResourceName, portType, environmentType) {
|
82
|
-
systemId = (0,
|
82
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
83
83
|
const port = clusterService_1.clusterService.getClusterServicePort();
|
84
84
|
const path = clusterService_1.clusterService.getProxyPath(systemId, consumerInstanceId, consumerResourceName, portType);
|
85
85
|
return this._forLocal(port, path, environmentType);
|
@@ -93,7 +93,7 @@ class ServiceManager {
|
|
93
93
|
*
|
94
94
|
*/
|
95
95
|
async getProviderAddress(systemId, providerInstanceId, portType) {
|
96
|
-
systemId = (0,
|
96
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
97
97
|
const port = await this.ensureServicePort(systemId, providerInstanceId, portType);
|
98
98
|
return this._forLocal(port);
|
99
99
|
}
|
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
exports.socketManager = exports.SocketManager = exports.EVENT_LOG = exports.EVENT_SYSTEM_LOG = exports.EVENT_INSTANCE_LOG = exports.EVENT_INSTANCE_EXITED = exports.EVENT_INSTANCE_CREATED = exports.EVENT_STATUS_CHANGED = void 0;
|
7
7
|
const lodash_1 = __importDefault(require("lodash"));
|
8
|
-
const
|
8
|
+
const nodejs_utils_1 = require("@kapeta/nodejs-utils");
|
9
9
|
const containerManager_1 = require("./containerManager");
|
10
10
|
exports.EVENT_STATUS_CHANGED = 'status-changed';
|
11
11
|
exports.EVENT_INSTANCE_CREATED = 'instance-created';
|
@@ -47,7 +47,7 @@ class SocketManager {
|
|
47
47
|
this.io.emit(type, payload);
|
48
48
|
}
|
49
49
|
emitSystemEvent(systemId, type, payload) {
|
50
|
-
systemId = (0,
|
50
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
51
51
|
try {
|
52
52
|
const contextId = `system-events/${encodeURIComponent(systemId)}`;
|
53
53
|
this.emit(contextId, type, payload);
|
@@ -57,7 +57,7 @@ class SocketManager {
|
|
57
57
|
}
|
58
58
|
}
|
59
59
|
emitInstanceLog(systemId, instanceId, payload) {
|
60
|
-
systemId = (0,
|
60
|
+
systemId = (0, nodejs_utils_1.normalizeKapetaUri)(systemId);
|
61
61
|
try {
|
62
62
|
this.emit(`instance-logs/${encodeURIComponent(systemId)}/${encodeURIComponent(instanceId)}`, exports.EVENT_INSTANCE_LOG, payload);
|
63
63
|
}
|