@kapeta/local-cluster-service 0.16.7 → 0.17.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 +20 -0
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/src/instanceManager.js +30 -0
- package/dist/cjs/src/socketManager.js +6 -0
- package/dist/cjs/src/utils/DefaultProviderInstaller.d.ts +11 -0
- package/dist/cjs/src/utils/DefaultProviderInstaller.js +129 -0
- package/dist/esm/index.js +64 -57
- package/dist/esm/src/RepositoryWatcher.js +40 -33
- package/dist/esm/src/api.js +14 -9
- package/dist/esm/src/assetManager.js +62 -56
- package/dist/esm/src/assets/routes.js +22 -17
- package/dist/esm/src/attachments/routes.js +14 -9
- package/dist/esm/src/cacheManager.js +13 -5
- package/dist/esm/src/clusterService.js +6 -3
- package/dist/esm/src/codeGeneratorManager.js +19 -13
- package/dist/esm/src/config/routes.js +30 -25
- package/dist/esm/src/configManager.js +29 -26
- package/dist/esm/src/containerManager.js +48 -39
- package/dist/esm/src/definitionsManager.js +15 -9
- package/dist/esm/src/filesystem/routes.js +21 -16
- package/dist/esm/src/filesystemManager.js +23 -17
- package/dist/esm/src/identities/routes.js +13 -8
- package/dist/esm/src/instanceManager.js +186 -149
- package/dist/esm/src/instances/routes.js +38 -33
- package/dist/esm/src/middleware/cors.js +5 -1
- package/dist/esm/src/middleware/kapeta.js +8 -4
- package/dist/esm/src/middleware/stringBody.js +5 -1
- package/dist/esm/src/networkManager.js +15 -9
- package/dist/esm/src/operatorManager.js +45 -39
- package/dist/esm/src/progressListener.js +16 -12
- package/dist/esm/src/providerManager.js +22 -16
- package/dist/esm/src/providers/routes.js +14 -9
- package/dist/esm/src/proxy/routes.js +26 -21
- package/dist/esm/src/proxy/types/rest.js +29 -22
- package/dist/esm/src/proxy/types/web.js +18 -11
- package/dist/esm/src/repositoryManager.js +28 -22
- package/dist/esm/src/serviceManager.js +25 -19
- package/dist/esm/src/socketManager.js +31 -18
- package/dist/esm/src/storageService.js +18 -12
- package/dist/esm/src/taskManager.js +12 -8
- package/dist/esm/src/tasks/routes.js +14 -9
- package/dist/esm/src/traffic/routes.js +12 -7
- package/dist/esm/src/types.js +11 -8
- package/dist/esm/src/utils/BlockInstanceRunner.js +57 -50
- package/dist/esm/src/utils/DefaultProviderInstaller.d.ts +11 -0
- package/dist/esm/src/utils/DefaultProviderInstaller.js +129 -0
- package/dist/esm/src/utils/LogData.js +5 -1
- package/dist/esm/src/utils/commandLineUtils.js +12 -7
- package/dist/esm/src/utils/pathTemplateParser.js +7 -2
- package/dist/esm/src/utils/utils.js +30 -17
- package/dist/esm/start.js +7 -2
- package/index.ts +3 -0
- package/package.json +10 -4
- package/src/instanceManager.ts +34 -8
- package/src/socketManager.ts +6 -0
- package/src/utils/DefaultProviderInstaller.ts +141 -0
- package/tsconfig.json +3 -2
@@ -1,15 +1,21 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.assetManager = void 0;
|
7
|
+
const node_path_1 = __importDefault(require("node:path"));
|
8
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
9
|
+
const yaml_1 = __importDefault(require("yaml"));
|
10
|
+
const codeGeneratorManager_1 = require("./codeGeneratorManager");
|
11
|
+
const progressListener_1 = require("./progressListener");
|
12
|
+
const nodejs_utils_1 = require("@kapeta/nodejs-utils");
|
13
|
+
const repositoryManager_1 = require("./repositoryManager");
|
14
|
+
const nodejs_registry_utils_1 = require("@kapeta/nodejs-registry-utils");
|
15
|
+
const definitionsManager_1 = require("./definitionsManager");
|
16
|
+
const utils_1 = require("./utils/utils");
|
17
|
+
const taskManager_1 = require("./taskManager");
|
18
|
+
const cacheManager_1 = require("./cacheManager");
|
13
19
|
const CACHE_TTL = 60 * 60 * 1000; // 1 hour
|
14
20
|
const toKey = (ref) => `assetManager:asset:${ref}`;
|
15
21
|
function enrichAsset(asset) {
|
@@ -44,7 +50,7 @@ class AssetManager {
|
|
44
50
|
*/
|
45
51
|
getAssets(assetKinds) {
|
46
52
|
if (!assetKinds) {
|
47
|
-
const blockTypeProviders = definitionsManager.getDefinitions([
|
53
|
+
const blockTypeProviders = definitionsManager_1.definitionsManager.getDefinitions([
|
48
54
|
'core/block-type',
|
49
55
|
'core/block-type-operator',
|
50
56
|
]);
|
@@ -53,7 +59,7 @@ class AssetManager {
|
|
53
59
|
});
|
54
60
|
assetKinds.push('core/plan');
|
55
61
|
}
|
56
|
-
const assets = definitionsManager.getDefinitions(assetKinds);
|
62
|
+
const assets = definitionsManager_1.definitionsManager.getDefinitions(assetKinds);
|
57
63
|
return assets.map(enrichAsset);
|
58
64
|
}
|
59
65
|
getPlans() {
|
@@ -67,51 +73,51 @@ class AssetManager {
|
|
67
73
|
return asset.data;
|
68
74
|
}
|
69
75
|
async getAsset(ref, noCache = false, autoFetch = true) {
|
70
|
-
ref = normalizeKapetaUri(ref);
|
76
|
+
ref = (0, utils_1.normalizeKapetaUri)(ref);
|
71
77
|
const cacheKey = toKey(ref);
|
72
|
-
if (!noCache && cacheManager.has(cacheKey)) {
|
73
|
-
return cacheManager.get(cacheKey);
|
78
|
+
if (!noCache && cacheManager_1.cacheManager.has(cacheKey)) {
|
79
|
+
return cacheManager_1.cacheManager.get(cacheKey);
|
74
80
|
}
|
75
|
-
const uri = parseKapetaUri(ref);
|
81
|
+
const uri = (0, nodejs_utils_1.parseKapetaUri)(ref);
|
76
82
|
if (autoFetch) {
|
77
|
-
await repositoryManager.ensureAsset(uri.handle, uri.name, uri.version, true);
|
83
|
+
await repositoryManager_1.repositoryManager.ensureAsset(uri.handle, uri.name, uri.version, true);
|
78
84
|
}
|
79
|
-
let asset = definitionsManager
|
85
|
+
let asset = definitionsManager_1.definitionsManager
|
80
86
|
.getDefinitions()
|
81
87
|
.map(enrichAsset)
|
82
|
-
.find((a) => parseKapetaUri(a.ref).equals(uri));
|
88
|
+
.find((a) => (0, nodejs_utils_1.parseKapetaUri)(a.ref).equals(uri));
|
83
89
|
if (autoFetch && !asset) {
|
84
90
|
throw new Error('Asset not found: ' + ref);
|
85
91
|
}
|
86
92
|
if (asset) {
|
87
|
-
cacheManager.set(cacheKey, asset, CACHE_TTL);
|
93
|
+
cacheManager_1.cacheManager.set(cacheKey, asset, CACHE_TTL);
|
88
94
|
}
|
89
95
|
return asset;
|
90
96
|
}
|
91
97
|
async createAsset(path, yaml, sourceOfChange = 'filesystem') {
|
92
|
-
if (await
|
98
|
+
if (await fs_extra_1.default.pathExists(path)) {
|
93
99
|
throw new Error('File already exists: ' + path);
|
94
100
|
}
|
95
|
-
const dirName =
|
96
|
-
if (!(await
|
97
|
-
await
|
101
|
+
const dirName = node_path_1.default.dirname(path);
|
102
|
+
if (!(await fs_extra_1.default.pathExists(dirName))) {
|
103
|
+
await fs_extra_1.default.mkdirp(dirName);
|
98
104
|
}
|
99
|
-
await repositoryManager.setSourceOfChangeFor(path, sourceOfChange);
|
100
|
-
await
|
105
|
+
await repositoryManager_1.repositoryManager.setSourceOfChangeFor(path, sourceOfChange);
|
106
|
+
await fs_extra_1.default.writeFile(path, yaml_1.default.stringify(yaml));
|
101
107
|
const asset = await this.importFile(path);
|
102
108
|
asset.forEach((a) => {
|
103
|
-
const ref = normalizeKapetaUri(a.ref);
|
109
|
+
const ref = (0, utils_1.normalizeKapetaUri)(a.ref);
|
104
110
|
const key = toKey(ref);
|
105
|
-
cacheManager.set(key, a, CACHE_TTL);
|
111
|
+
cacheManager_1.cacheManager.set(key, a, CACHE_TTL);
|
106
112
|
});
|
107
|
-
definitionsManager.clearCache();
|
113
|
+
definitionsManager_1.definitionsManager.clearCache();
|
108
114
|
console.log(`Created asset at: ${path}`);
|
109
115
|
const ref = `kapeta://${yaml.metadata.name}:local`;
|
110
116
|
this.maybeGenerateCode(ref, path, yaml);
|
111
117
|
return asset;
|
112
118
|
}
|
113
119
|
async updateAsset(ref, yaml, sourceOfChange = 'filesystem') {
|
114
|
-
ref = normalizeKapetaUri(ref);
|
120
|
+
ref = (0, utils_1.normalizeKapetaUri)(ref);
|
115
121
|
const asset = await this.getAsset(ref, true, false);
|
116
122
|
if (!asset) {
|
117
123
|
throw new Error('Attempted to update unknown asset: ' + ref);
|
@@ -122,30 +128,30 @@ class AssetManager {
|
|
122
128
|
if (!asset.ymlPath) {
|
123
129
|
throw new Error('Attempted to update corrupted asset: ' + ref);
|
124
130
|
}
|
125
|
-
await repositoryManager.setSourceOfChangeFor(asset.ymlPath, sourceOfChange);
|
126
|
-
await
|
131
|
+
await repositoryManager_1.repositoryManager.setSourceOfChangeFor(asset.ymlPath, sourceOfChange);
|
132
|
+
await fs_extra_1.default.writeFile(asset.ymlPath, yaml_1.default.stringify(yaml));
|
127
133
|
console.log(`Updated asset at: ${asset.ymlPath}`);
|
128
|
-
cacheManager.remove(toKey(ref));
|
129
|
-
definitionsManager.clearCache();
|
134
|
+
cacheManager_1.cacheManager.remove(toKey(ref));
|
135
|
+
definitionsManager_1.definitionsManager.clearCache();
|
130
136
|
this.maybeGenerateCode(asset.ref, asset.ymlPath, yaml);
|
131
137
|
}
|
132
138
|
async importFile(filePath) {
|
133
139
|
if (filePath.startsWith('file://')) {
|
134
140
|
filePath = filePath.substring('file://'.length);
|
135
141
|
}
|
136
|
-
if (!(await
|
142
|
+
if (!(await fs_extra_1.default.pathExists(filePath))) {
|
137
143
|
throw new Error('File not found: ' + filePath);
|
138
144
|
}
|
139
|
-
const content = await
|
140
|
-
const assetInfos =
|
141
|
-
await Actions.link(new ProgressListener(),
|
145
|
+
const content = await fs_extra_1.default.readFile(filePath);
|
146
|
+
const assetInfos = yaml_1.default.parseAllDocuments(content.toString()).map((doc) => doc.toJSON());
|
147
|
+
await nodejs_registry_utils_1.Actions.link(new progressListener_1.ProgressListener(), node_path_1.default.dirname(filePath));
|
142
148
|
const version = 'local';
|
143
|
-
const refs = assetInfos.map((assetInfo) => normalizeKapetaUri(`kapeta://${assetInfo.metadata.name}:${version}`));
|
149
|
+
const refs = assetInfos.map((assetInfo) => (0, utils_1.normalizeKapetaUri)(`kapeta://${assetInfo.metadata.name}:${version}`));
|
144
150
|
refs.forEach((ref) => {
|
145
151
|
const key = toKey(ref);
|
146
|
-
cacheManager.remove(key);
|
152
|
+
cacheManager_1.cacheManager.remove(key);
|
147
153
|
});
|
148
|
-
definitionsManager.clearCache();
|
154
|
+
definitionsManager_1.definitionsManager.clearCache();
|
149
155
|
return this.getAssets().filter((a) => refs.some((ref) => compareRefs(ref, a.ref)));
|
150
156
|
}
|
151
157
|
async unregisterAsset(ref) {
|
@@ -154,28 +160,28 @@ class AssetManager {
|
|
154
160
|
throw new Error('Asset does not exists: ' + ref);
|
155
161
|
}
|
156
162
|
const key = toKey(ref);
|
157
|
-
cacheManager.remove(key);
|
158
|
-
definitionsManager.clearCache();
|
159
|
-
await Actions.uninstall(new ProgressListener(), [asset.ref]);
|
163
|
+
cacheManager_1.cacheManager.remove(key);
|
164
|
+
definitionsManager_1.definitionsManager.clearCache();
|
165
|
+
await nodejs_registry_utils_1.Actions.uninstall(new progressListener_1.ProgressListener(), [asset.ref]);
|
160
166
|
}
|
161
167
|
async installAsset(ref) {
|
162
168
|
const asset = await this.getAsset(ref, true, false);
|
163
169
|
if (asset) {
|
164
170
|
throw new Error('Asset already installed: ' + ref);
|
165
171
|
}
|
166
|
-
const uri = parseKapetaUri(ref);
|
172
|
+
const uri = (0, nodejs_utils_1.parseKapetaUri)(ref);
|
167
173
|
console.log('Installing %s', ref);
|
168
174
|
const key = toKey(ref);
|
169
|
-
cacheManager.remove(key);
|
170
|
-
definitionsManager.clearCache();
|
171
|
-
return await repositoryManager.ensureAsset(uri.handle, uri.name, uri.version, false);
|
175
|
+
cacheManager_1.cacheManager.remove(key);
|
176
|
+
definitionsManager_1.definitionsManager.clearCache();
|
177
|
+
return await repositoryManager_1.repositoryManager.ensureAsset(uri.handle, uri.name, uri.version, false);
|
172
178
|
}
|
173
179
|
maybeGenerateCode(ref, ymlPath, block) {
|
174
|
-
ref = normalizeKapetaUri(ref);
|
175
|
-
if (codeGeneratorManager.canGenerateCode(block)) {
|
176
|
-
const assetTitle = block.metadata.title ? block.metadata.title : parseKapetaUri(block.metadata.name).name;
|
177
|
-
taskManager.add(`codegen:${ref}`, async () => {
|
178
|
-
await codeGeneratorManager.generate(ymlPath, block);
|
180
|
+
ref = (0, utils_1.normalizeKapetaUri)(ref);
|
181
|
+
if (codeGeneratorManager_1.codeGeneratorManager.canGenerateCode(block)) {
|
182
|
+
const assetTitle = block.metadata.title ? block.metadata.title : (0, nodejs_utils_1.parseKapetaUri)(block.metadata.name).name;
|
183
|
+
taskManager_1.taskManager.add(`codegen:${ref}`, async () => {
|
184
|
+
await codeGeneratorManager_1.codeGeneratorManager.generate(ymlPath, block);
|
179
185
|
}, {
|
180
186
|
name: `Generating code for ${assetTitle}`,
|
181
187
|
});
|
@@ -184,4 +190,4 @@ class AssetManager {
|
|
184
190
|
return false;
|
185
191
|
}
|
186
192
|
}
|
187
|
-
|
193
|
+
exports.assetManager = new AssetManager();
|
@@ -1,8 +1,13 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const express_promise_router_1 = __importDefault(require("express-promise-router"));
|
7
|
+
const yaml_1 = __importDefault(require("yaml"));
|
8
|
+
const assetManager_1 = require("../assetManager");
|
9
|
+
const cors_1 = require("../middleware/cors");
|
10
|
+
const stringBody_1 = require("../middleware/stringBody");
|
6
11
|
function parseBody(req) {
|
7
12
|
switch (req.headers['content-type']) {
|
8
13
|
case 'application/json':
|
@@ -14,17 +19,17 @@ function parseBody(req) {
|
|
14
19
|
case 'text/yaml':
|
15
20
|
case 'text/x-yaml':
|
16
21
|
default:
|
17
|
-
return
|
22
|
+
return yaml_1.default.parse(req.stringBody ?? '{}');
|
18
23
|
}
|
19
24
|
}
|
20
|
-
const router =
|
21
|
-
router.use('/', corsHandler);
|
22
|
-
router.use('/', stringBody);
|
25
|
+
const router = (0, express_promise_router_1.default)();
|
26
|
+
router.use('/', cors_1.corsHandler);
|
27
|
+
router.use('/', stringBody_1.stringBody);
|
23
28
|
/**
|
24
29
|
* Get all local assets available
|
25
30
|
*/
|
26
31
|
router.get('/', (req, res) => {
|
27
|
-
res.send(assetManager.getAssets([]));
|
32
|
+
res.send(assetManager_1.assetManager.getAssets([]));
|
28
33
|
});
|
29
34
|
/**
|
30
35
|
* Get single asset
|
@@ -36,7 +41,7 @@ router.get('/read', async (req, res) => {
|
|
36
41
|
}
|
37
42
|
const ensure = req.query.ensure !== 'false';
|
38
43
|
try {
|
39
|
-
const asset = await assetManager.getAsset(req.query.ref, true, ensure);
|
44
|
+
const asset = await assetManager_1.assetManager.getAsset(req.query.ref, true, ensure);
|
40
45
|
if (asset) {
|
41
46
|
res.send(asset);
|
42
47
|
}
|
@@ -58,7 +63,7 @@ router.post('/create', async (req, res) => {
|
|
58
63
|
}
|
59
64
|
const content = parseBody(req);
|
60
65
|
try {
|
61
|
-
const assets = await assetManager.createAsset(req.query.path, content, 'user');
|
66
|
+
const assets = await assetManager_1.assetManager.createAsset(req.query.path, content, 'user');
|
62
67
|
res.status(200).send(assets);
|
63
68
|
}
|
64
69
|
catch (err) {
|
@@ -76,7 +81,7 @@ router.put('/update', async (req, res) => {
|
|
76
81
|
}
|
77
82
|
const content = parseBody(req);
|
78
83
|
try {
|
79
|
-
await assetManager.updateAsset(req.query.ref, content, 'user');
|
84
|
+
await assetManager_1.assetManager.updateAsset(req.query.ref, content, 'user');
|
80
85
|
res.sendStatus(204);
|
81
86
|
}
|
82
87
|
catch (err) {
|
@@ -93,7 +98,7 @@ router.delete('/', async (req, res) => {
|
|
93
98
|
return;
|
94
99
|
}
|
95
100
|
try {
|
96
|
-
await assetManager.unregisterAsset(req.query.ref);
|
101
|
+
await assetManager_1.assetManager.unregisterAsset(req.query.ref);
|
97
102
|
res.status(204).send();
|
98
103
|
}
|
99
104
|
catch (err) {
|
@@ -109,7 +114,7 @@ router.put('/import', async (req, res) => {
|
|
109
114
|
return;
|
110
115
|
}
|
111
116
|
try {
|
112
|
-
const assets = await assetManager.importFile(req.query.ref);
|
117
|
+
const assets = await assetManager_1.assetManager.importFile(req.query.ref);
|
113
118
|
res.status(200).send(assets);
|
114
119
|
}
|
115
120
|
catch (err) {
|
@@ -122,7 +127,7 @@ router.put('/install', async (req, res) => {
|
|
122
127
|
return;
|
123
128
|
}
|
124
129
|
try {
|
125
|
-
const tasks = await assetManager.installAsset(req.query.ref);
|
130
|
+
const tasks = await assetManager_1.assetManager.installAsset(req.query.ref);
|
126
131
|
const taskIds = tasks?.map((t) => t.id) ?? [];
|
127
132
|
res.status(200).send(taskIds);
|
128
133
|
}
|
@@ -130,4 +135,4 @@ router.put('/install', async (req, res) => {
|
|
130
135
|
res.status(400).send({ error: err.message });
|
131
136
|
}
|
132
137
|
});
|
133
|
-
|
138
|
+
exports.default = router;
|
@@ -1,15 +1,20 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
const
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const express_promise_router_1 = __importDefault(require("express-promise-router"));
|
7
|
+
const nodejs_api_client_1 = require("@kapeta/nodejs-api-client");
|
8
|
+
const cors_1 = require("../middleware/cors");
|
9
|
+
const storageService_1 = require("../storageService");
|
10
|
+
const router = (0, express_promise_router_1.default)();
|
11
|
+
const api = new nodejs_api_client_1.KapetaAPI();
|
7
12
|
const DEFAULT_REGISTRY_BASE = 'https://registry.kapeta.com';
|
8
13
|
function getBaseUrl() {
|
9
|
-
const endpoint = storageService.get('endpoints', 'registry', DEFAULT_REGISTRY_BASE);
|
14
|
+
const endpoint = storageService_1.storageService.get('endpoints', 'registry', DEFAULT_REGISTRY_BASE);
|
10
15
|
return `${endpoint}/v1/registry`;
|
11
16
|
}
|
12
|
-
router.use('/', corsHandler);
|
17
|
+
router.use('/', cors_1.corsHandler);
|
13
18
|
router.put('/:handle/:name', async (req, res) => {
|
14
19
|
if (!api.hasToken()) {
|
15
20
|
res.status(401).send({
|
@@ -60,4 +65,4 @@ router.put('/:handle/:name', async (req, res) => {
|
|
60
65
|
res.status(e.status ?? 500).send(e);
|
61
66
|
}
|
62
67
|
});
|
63
|
-
|
68
|
+
exports.default = router;
|
@@ -1,7 +1,13 @@
|
|
1
|
-
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.doCached = exports.cacheManager = exports.CacheManager = void 0;
|
7
|
+
const node_cache_1 = __importDefault(require("node-cache"));
|
2
8
|
const DEFAULT_CACHE_TTL = 60 * 1000; // 1 min
|
3
|
-
|
4
|
-
cache = new
|
9
|
+
class CacheManager {
|
10
|
+
cache = new node_cache_1.default();
|
5
11
|
flush() {
|
6
12
|
this.cache.flushAll();
|
7
13
|
}
|
@@ -35,5 +41,7 @@ export class CacheManager {
|
|
35
41
|
}
|
36
42
|
}
|
37
43
|
}
|
38
|
-
|
39
|
-
|
44
|
+
exports.CacheManager = CacheManager;
|
45
|
+
exports.cacheManager = new CacheManager();
|
46
|
+
const doCached = (key, getter, ttl = DEFAULT_CACHE_TTL) => exports.cacheManager.doCached(key, getter, ttl);
|
47
|
+
exports.doCached = doCached;
|
@@ -1,4 +1,7 @@
|
|
1
|
-
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.clusterService = void 0;
|
4
|
+
const utils_1 = require("./utils/utils");
|
2
5
|
const net = require('net');
|
3
6
|
const DEFAULT_SERVER_PORT = 35100;
|
4
7
|
const DEFAULT_START_PORT = 40000;
|
@@ -106,8 +109,8 @@ class ClusterService {
|
|
106
109
|
* @return {string}
|
107
110
|
*/
|
108
111
|
getProxyPath(systemId, consumerInstanceId, consumerResourceName, portType) {
|
109
|
-
systemId = normalizeKapetaUri(systemId);
|
112
|
+
systemId = (0, utils_1.normalizeKapetaUri)(systemId);
|
110
113
|
return `/proxy/${encodeURIComponent(systemId)}/${encodeURIComponent(consumerInstanceId)}/${encodeURIComponent(consumerResourceName)}/${encodeURIComponent(portType)}/`;
|
111
114
|
}
|
112
115
|
}
|
113
|
-
|
116
|
+
exports.clusterService = new ClusterService();
|
@@ -1,21 +1,27 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.codeGeneratorManager = void 0;
|
7
|
+
const path_1 = __importDefault(require("path"));
|
8
|
+
const codegen_1 = require("@kapeta/codegen");
|
9
|
+
const definitionsManager_1 = require("./definitionsManager");
|
4
10
|
const TARGET_KIND = 'core/language-target';
|
5
11
|
const BLOCK_TYPE_KIND = 'core/block-type';
|
6
12
|
class CodeGeneratorManager {
|
7
13
|
async reload() {
|
8
|
-
|
9
|
-
const languageTargets = definitionsManager.getDefinitions(TARGET_KIND);
|
14
|
+
codegen_1.registry.reset();
|
15
|
+
const languageTargets = definitionsManager_1.definitionsManager.getDefinitions(TARGET_KIND);
|
10
16
|
for (const languageTarget of languageTargets) {
|
11
17
|
const key = `${languageTarget.definition.metadata.name}:${languageTarget.version}`;
|
12
18
|
try {
|
13
19
|
const target = require(languageTarget.path);
|
14
20
|
if (target.default) {
|
15
|
-
|
21
|
+
codegen_1.registry.register(key, target.default);
|
16
22
|
}
|
17
23
|
else {
|
18
|
-
|
24
|
+
codegen_1.registry.register(key, target);
|
19
25
|
}
|
20
26
|
}
|
21
27
|
catch (e) {
|
@@ -28,20 +34,20 @@ class CodeGeneratorManager {
|
|
28
34
|
//Not all block types have targets
|
29
35
|
return false;
|
30
36
|
}
|
31
|
-
const blockTypes = definitionsManager.getDefinitions(BLOCK_TYPE_KIND);
|
37
|
+
const blockTypes = definitionsManager_1.definitionsManager.getDefinitions(BLOCK_TYPE_KIND);
|
32
38
|
const blockTypeKinds = blockTypes.map((blockType) => blockType.definition.metadata.name.toLowerCase() + ':' + blockType.version);
|
33
39
|
return !!(yamlContent && yamlContent.kind && blockTypeKinds.indexOf(yamlContent.kind.toLowerCase()) > -1);
|
34
40
|
}
|
35
41
|
async generate(yamlFile, yamlContent) {
|
36
|
-
const baseDir =
|
42
|
+
const baseDir = path_1.default.dirname(yamlFile);
|
37
43
|
console.log('Generating code for path: %s', baseDir);
|
38
|
-
const codeGenerator = new BlockCodeGenerator(yamlContent);
|
44
|
+
const codeGenerator = new codegen_1.BlockCodeGenerator(yamlContent);
|
39
45
|
const output = await codeGenerator.generate();
|
40
|
-
const writer = new CodeWriter(baseDir, {});
|
46
|
+
const writer = new codegen_1.CodeWriter(baseDir, {});
|
41
47
|
const assets = writer.write(output);
|
42
48
|
await codeGenerator.postprocess(baseDir, assets);
|
43
49
|
console.log('Code generated for path: %s', baseDir);
|
44
50
|
}
|
45
51
|
}
|
46
|
-
|
47
|
-
codeGeneratorManager.reload();
|
52
|
+
exports.codeGeneratorManager = new CodeGeneratorManager();
|
53
|
+
exports.codeGeneratorManager.reload();
|
@@ -1,23 +1,28 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
const
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
const express_promise_router_1 = __importDefault(require("express-promise-router"));
|
7
|
+
const configManager_1 = require("../configManager");
|
8
|
+
const serviceManager_1 = require("../serviceManager");
|
9
|
+
const operatorManager_1 = require("../operatorManager");
|
10
|
+
const instanceManager_1 = require("../instanceManager");
|
11
|
+
const cors_1 = require("../middleware/cors");
|
12
|
+
const kapeta_1 = require("../middleware/kapeta");
|
13
|
+
const stringBody_1 = require("../middleware/stringBody");
|
14
|
+
const router = (0, express_promise_router_1.default)();
|
10
15
|
const SYSTEM_ID = '$plan';
|
11
|
-
router.use('/', corsHandler);
|
12
|
-
router.use('/', kapetaHeaders);
|
13
|
-
router.use('/', stringBody);
|
16
|
+
router.use('/', cors_1.corsHandler);
|
17
|
+
router.use('/', kapeta_1.kapetaHeaders);
|
18
|
+
router.use('/', stringBody_1.stringBody);
|
14
19
|
/**
|
15
20
|
* Returns the full configuration for a given service.
|
16
21
|
*/
|
17
22
|
router.get('/instance', (req, res) => {
|
18
23
|
const config = req.kapeta.instanceId
|
19
|
-
? configManager.getConfigForSection(req.kapeta.systemId, req.kapeta.instanceId)
|
20
|
-
: configManager.getConfigForSystem(req.kapeta.systemId);
|
24
|
+
? configManager_1.configManager.getConfigForSection(req.kapeta.systemId, req.kapeta.instanceId)
|
25
|
+
: configManager_1.configManager.getConfigForSystem(req.kapeta.systemId);
|
21
26
|
res.send(config);
|
22
27
|
});
|
23
28
|
/**
|
@@ -30,12 +35,12 @@ router.put('/instance', async (req, res) => {
|
|
30
35
|
config = {};
|
31
36
|
}
|
32
37
|
if (req.kapeta.instanceId) {
|
33
|
-
configManager.setConfigForSection(req.kapeta.systemId, req.kapeta.instanceId, config);
|
38
|
+
configManager_1.configManager.setConfigForSection(req.kapeta.systemId, req.kapeta.instanceId, config);
|
34
39
|
//Restart the instance if it is running after config change
|
35
|
-
await instanceManager.prepareForRestart(req.kapeta.systemId, req.kapeta.instanceId);
|
40
|
+
await instanceManager_1.instanceManager.prepareForRestart(req.kapeta.systemId, req.kapeta.instanceId);
|
36
41
|
}
|
37
42
|
else {
|
38
|
-
configManager.setConfigForSystem(req.kapeta.systemId, config);
|
43
|
+
configManager_1.configManager.setConfigForSystem(req.kapeta.systemId, config);
|
39
44
|
}
|
40
45
|
}
|
41
46
|
catch (err) {
|
@@ -49,7 +54,7 @@ router.put('/instance', async (req, res) => {
|
|
49
54
|
* Returns the full configuration for a plan
|
50
55
|
*/
|
51
56
|
router.get('/system', (req, res) => {
|
52
|
-
const config = configManager.getConfigForSection(req.kapeta.systemId, SYSTEM_ID);
|
57
|
+
const config = configManager_1.configManager.getConfigForSection(req.kapeta.systemId, SYSTEM_ID);
|
53
58
|
res.send(config);
|
54
59
|
});
|
55
60
|
/**
|
@@ -60,7 +65,7 @@ router.put('/system', (req, res) => {
|
|
60
65
|
if (!config) {
|
61
66
|
config = {};
|
62
67
|
}
|
63
|
-
configManager.setConfigForSection(req.kapeta.systemId, SYSTEM_ID, config);
|
68
|
+
configManager_1.configManager.setConfigForSection(req.kapeta.systemId, SYSTEM_ID, config);
|
64
69
|
res.status(202).send({ ok: true });
|
65
70
|
});
|
66
71
|
/**
|
@@ -77,12 +82,12 @@ router.get('/identity', async (req, res) => {
|
|
77
82
|
}
|
78
83
|
try {
|
79
84
|
if (!identity.systemId || !identity.instanceId) {
|
80
|
-
const { systemId, instanceId } = await configManager.resolveIdentity(req.kapeta.blockRef, identity.systemId);
|
85
|
+
const { systemId, instanceId } = await configManager_1.configManager.resolveIdentity(req.kapeta.blockRef, identity.systemId);
|
81
86
|
identity.systemId = systemId;
|
82
87
|
identity.instanceId = instanceId;
|
83
88
|
}
|
84
89
|
else {
|
85
|
-
await configManager.verifyIdentity(req.kapeta.blockRef, identity.systemId, identity.instanceId);
|
90
|
+
await configManager_1.configManager.verifyIdentity(req.kapeta.blockRef, identity.systemId, identity.instanceId);
|
86
91
|
}
|
87
92
|
res.send(identity);
|
88
93
|
}
|
@@ -97,7 +102,7 @@ router.get('/identity', async (req, res) => {
|
|
97
102
|
*/
|
98
103
|
router.get('/provides/:type', async (req, res) => {
|
99
104
|
//Get service port
|
100
|
-
res.send('' + (await serviceManager.ensureServicePort(req.kapeta.systemId, req.kapeta.instanceId, req.params.type)));
|
105
|
+
res.send('' + (await serviceManager_1.serviceManager.ensureServicePort(req.kapeta.systemId, req.kapeta.instanceId, req.params.type)));
|
101
106
|
});
|
102
107
|
/**
|
103
108
|
* Used by services to get info for consumed operator resource.
|
@@ -106,7 +111,7 @@ router.get('/provides/:type', async (req, res) => {
|
|
106
111
|
* assign port numbers to it etc.
|
107
112
|
*/
|
108
113
|
router.get('/consumes/resource/:resourceType/:portType/:name', async (req, res) => {
|
109
|
-
const operatorInfo = await operatorManager.getConsumerResourceInfo(req.kapeta.systemId, req.kapeta.instanceId, req.params.resourceType, req.params.portType, req.params.name, req.kapeta.environment);
|
114
|
+
const operatorInfo = await operatorManager_1.operatorManager.getConsumerResourceInfo(req.kapeta.systemId, req.kapeta.instanceId, req.params.resourceType, req.params.portType, req.params.name, req.kapeta.environment);
|
110
115
|
res.send(operatorInfo);
|
111
116
|
});
|
112
117
|
/**
|
@@ -116,6 +121,6 @@ router.get('/consumes/resource/:resourceType/:portType/:name', async (req, res)
|
|
116
121
|
* to handle clients for services that hasn't started yet.
|
117
122
|
*/
|
118
123
|
router.get('/consumes/:resourceName/:type', (req, res) => {
|
119
|
-
res.send(serviceManager.getConsumerAddress(req.kapeta.systemId, req.kapeta.instanceId, req.params.resourceName, req.params.type, req.kapeta.environment));
|
124
|
+
res.send(serviceManager_1.serviceManager.getConsumerAddress(req.kapeta.systemId, req.kapeta.instanceId, req.params.resourceName, req.params.type, req.kapeta.environment));
|
120
125
|
});
|
121
|
-
|
126
|
+
exports.default = router;
|