@kapeta/local-cluster-service 0.6.1 → 0.7.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/.eslintrc.cjs +17 -0
- package/.github/workflows/main.yml +22 -22
- package/.prettierignore +4 -0
- package/.vscode/launch.json +2 -4
- package/CHANGELOG.md +7 -0
- package/definitions.d.ts +17 -35
- package/dist/cjs/index.d.ts +27 -0
- package/dist/cjs/index.js +126 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/src/assetManager.d.ts +31 -0
- package/dist/cjs/src/assetManager.js +153 -0
- package/dist/cjs/src/assets/routes.d.ts +3 -0
- package/dist/cjs/src/assets/routes.js +117 -0
- package/dist/cjs/src/clusterService.d.ts +40 -0
- package/dist/cjs/src/clusterService.js +114 -0
- package/dist/cjs/src/codeGeneratorManager.d.ts +8 -0
- package/dist/cjs/src/codeGeneratorManager.js +53 -0
- package/dist/cjs/src/config/routes.d.ts +3 -0
- package/dist/cjs/src/config/routes.js +126 -0
- package/dist/cjs/src/configManager.d.ts +36 -0
- package/dist/cjs/src/configManager.js +110 -0
- package/dist/cjs/src/containerManager.d.ts +89 -0
- package/dist/cjs/src/containerManager.js +365 -0
- package/dist/cjs/src/filesystem/routes.d.ts +3 -0
- package/dist/cjs/src/filesystem/routes.js +69 -0
- package/dist/cjs/src/filesystemManager.d.ts +15 -0
- package/dist/cjs/src/filesystemManager.js +87 -0
- package/dist/cjs/src/identities/routes.d.ts +3 -0
- package/dist/cjs/src/identities/routes.js +18 -0
- package/dist/cjs/src/instanceManager.d.ts +56 -0
- package/dist/cjs/src/instanceManager.js +424 -0
- package/dist/cjs/src/instances/routes.d.ts +3 -0
- package/dist/cjs/src/instances/routes.js +134 -0
- package/dist/cjs/src/middleware/cors.d.ts +2 -0
- package/dist/cjs/src/middleware/cors.js +10 -0
- package/dist/cjs/src/middleware/kapeta.d.ts +11 -0
- package/dist/cjs/src/middleware/kapeta.js +17 -0
- package/dist/cjs/src/middleware/stringBody.d.ts +5 -0
- package/dist/cjs/src/middleware/stringBody.js +14 -0
- package/dist/cjs/src/networkManager.d.ts +32 -0
- package/dist/cjs/src/networkManager.js +109 -0
- package/dist/cjs/src/operatorManager.d.ts +36 -0
- package/dist/cjs/src/operatorManager.js +165 -0
- package/dist/cjs/src/progressListener.d.ts +20 -0
- package/dist/cjs/src/progressListener.js +91 -0
- package/dist/cjs/src/providerManager.d.ts +9 -0
- package/dist/cjs/src/providerManager.js +51 -0
- package/dist/cjs/src/providers/routes.d.ts +3 -0
- package/dist/cjs/src/providers/routes.js +42 -0
- package/dist/cjs/src/proxy/routes.d.ts +3 -0
- package/dist/cjs/src/proxy/routes.js +111 -0
- package/dist/cjs/src/proxy/types/rest.d.ts +4 -0
- package/dist/cjs/src/proxy/types/rest.js +114 -0
- package/dist/cjs/src/proxy/types/web.d.ts +4 -0
- package/dist/cjs/src/proxy/types/web.js +53 -0
- package/dist/cjs/src/repositoryManager.d.ts +17 -0
- package/dist/cjs/src/repositoryManager.js +215 -0
- package/dist/cjs/src/serviceManager.d.ts +29 -0
- package/dist/cjs/src/serviceManager.js +99 -0
- package/dist/cjs/src/socketManager.d.ts +14 -0
- package/dist/cjs/src/socketManager.js +53 -0
- package/dist/cjs/src/storageService.d.ts +17 -0
- package/dist/cjs/src/storageService.js +74 -0
- package/dist/cjs/src/traffic/routes.d.ts +3 -0
- package/dist/cjs/src/traffic/routes.js +18 -0
- package/dist/cjs/src/types.d.ts +88 -0
- package/dist/cjs/src/types.js +2 -0
- package/dist/cjs/src/utils/BlockInstanceRunner.d.ts +29 -0
- package/dist/cjs/src/utils/BlockInstanceRunner.js +468 -0
- package/dist/cjs/src/utils/LogData.d.ts +19 -0
- package/dist/cjs/src/utils/LogData.js +43 -0
- package/dist/cjs/src/utils/pathTemplateParser.d.ts +26 -0
- package/dist/cjs/src/utils/pathTemplateParser.js +121 -0
- package/dist/cjs/src/utils/utils.d.ts +1 -0
- package/dist/cjs/src/utils/utils.js +18 -0
- package/dist/cjs/start.d.ts +1 -0
- package/dist/cjs/start.js +12 -0
- package/dist/esm/index.d.ts +27 -0
- package/dist/esm/index.js +121 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/src/assetManager.d.ts +31 -0
- package/{src → dist/esm/src}/assetManager.js +22 -60
- package/dist/esm/src/assets/routes.d.ts +3 -0
- package/{src → dist/esm/src}/assets/routes.js +21 -36
- package/dist/esm/src/clusterService.d.ts +40 -0
- package/{src → dist/esm/src}/clusterService.js +14 -37
- package/dist/esm/src/codeGeneratorManager.d.ts +8 -0
- package/{src → dist/esm/src}/codeGeneratorManager.js +15 -24
- package/dist/esm/src/config/routes.d.ts +3 -0
- package/{src → dist/esm/src}/config/routes.js +40 -89
- package/dist/esm/src/configManager.d.ts +36 -0
- package/{src → dist/esm/src}/configManager.js +11 -40
- package/dist/esm/src/containerManager.d.ts +89 -0
- package/{src → dist/esm/src}/containerManager.js +81 -182
- package/dist/esm/src/filesystem/routes.d.ts +3 -0
- package/dist/esm/src/filesystem/routes.js +64 -0
- package/dist/esm/src/filesystemManager.d.ts +15 -0
- package/{src → dist/esm/src}/filesystemManager.js +20 -28
- package/dist/esm/src/identities/routes.d.ts +3 -0
- package/dist/esm/src/identities/routes.js +13 -0
- package/dist/esm/src/instanceManager.d.ts +56 -0
- package/{src → dist/esm/src}/instanceManager.js +88 -179
- package/dist/esm/src/instances/routes.d.ts +3 -0
- package/{src → dist/esm/src}/instances/routes.js +31 -70
- package/dist/esm/src/middleware/cors.d.ts +2 -0
- package/{src → dist/esm/src}/middleware/cors.js +2 -3
- package/dist/esm/src/middleware/kapeta.d.ts +11 -0
- package/{src → dist/esm/src}/middleware/kapeta.js +3 -7
- package/dist/esm/src/middleware/stringBody.d.ts +5 -0
- package/{src → dist/esm/src}/middleware/stringBody.js +2 -3
- package/dist/esm/src/networkManager.d.ts +32 -0
- package/{src → dist/esm/src}/networkManager.js +16 -33
- package/dist/esm/src/operatorManager.d.ts +36 -0
- package/{src → dist/esm/src}/operatorManager.js +35 -91
- package/dist/esm/src/progressListener.d.ts +20 -0
- package/dist/esm/src/progressListener.js +88 -0
- package/dist/esm/src/providerManager.d.ts +9 -0
- package/dist/esm/src/providerManager.js +45 -0
- package/dist/esm/src/providers/routes.d.ts +3 -0
- package/{src → dist/esm/src}/providers/routes.js +10 -16
- package/dist/esm/src/proxy/routes.d.ts +3 -0
- package/dist/esm/src/proxy/routes.js +106 -0
- package/dist/esm/src/proxy/types/rest.d.ts +4 -0
- package/dist/esm/src/proxy/types/rest.js +107 -0
- package/dist/esm/src/proxy/types/web.d.ts +4 -0
- package/{src → dist/esm/src}/proxy/types/web.js +13 -35
- package/dist/esm/src/repositoryManager.d.ts +17 -0
- package/dist/esm/src/repositoryManager.js +209 -0
- package/dist/esm/src/serviceManager.d.ts +29 -0
- package/{src → dist/esm/src}/serviceManager.js +12 -42
- package/dist/esm/src/socketManager.d.ts +14 -0
- package/{src → dist/esm/src}/socketManager.js +19 -23
- package/dist/esm/src/storageService.d.ts +17 -0
- package/{src → dist/esm/src}/storageService.js +8 -27
- package/dist/esm/src/traffic/routes.d.ts +3 -0
- package/{src → dist/esm/src}/traffic/routes.js +4 -9
- package/dist/esm/src/types.d.ts +88 -0
- package/dist/esm/src/types.js +1 -0
- package/dist/esm/src/utils/BlockInstanceRunner.d.ts +29 -0
- package/{src → dist/esm/src}/utils/BlockInstanceRunner.js +137 -256
- package/dist/esm/src/utils/LogData.d.ts +19 -0
- package/{src → dist/esm/src}/utils/LogData.js +11 -22
- package/dist/esm/src/utils/pathTemplateParser.d.ts +26 -0
- package/{src → dist/esm/src}/utils/pathTemplateParser.js +21 -40
- package/dist/esm/src/utils/utils.d.ts +1 -0
- package/dist/esm/src/utils/utils.js +11 -0
- package/dist/esm/start.d.ts +1 -0
- package/dist/esm/start.js +7 -0
- package/index.ts +147 -0
- package/package.json +106 -74
- package/src/assetManager.ts +191 -0
- package/src/assets/routes.ts +132 -0
- package/src/clusterService.ts +134 -0
- package/src/codeGeneratorManager.ts +57 -0
- package/src/config/routes.ts +159 -0
- package/src/configManager.ts +148 -0
- package/src/containerManager.ts +466 -0
- package/src/filesystem/routes.ts +74 -0
- package/src/filesystemManager.ts +93 -0
- package/src/identities/routes.ts +20 -0
- package/src/instanceManager.ts +503 -0
- package/src/instances/routes.ts +164 -0
- package/src/middleware/cors.ts +9 -0
- package/src/middleware/kapeta.ts +27 -0
- package/src/middleware/stringBody.ts +16 -0
- package/src/networkManager.ts +137 -0
- package/src/operatorManager.ts +221 -0
- package/src/progressListener.ts +102 -0
- package/src/{providerManager.js → providerManager.ts} +15 -31
- package/src/providers/routes.ts +46 -0
- package/src/proxy/routes.ts +148 -0
- package/src/proxy/types/{rest.js → rest.ts} +30 -30
- package/src/proxy/types/web.ts +60 -0
- package/src/{repositoryManager.js → repositoryManager.ts} +45 -73
- package/src/serviceManager.ts +120 -0
- package/src/socketManager.ts +57 -0
- package/src/storageService.ts +88 -0
- package/src/traffic/routes.ts +18 -0
- package/src/types.ts +97 -0
- package/src/utils/BlockInstanceRunner.ts +555 -0
- package/src/utils/LogData.ts +47 -0
- package/src/utils/pathTemplateParser.ts +138 -0
- package/src/utils/utils.ts +12 -0
- package/start.ts +8 -0
- package/tsconfig.json +13 -0
- package/index.js +0 -127
- package/src/filesystem/routes.js +0 -74
- package/src/identities/routes.js +0 -19
- package/src/progressListener.js +0 -82
- package/src/proxy/routes.js +0 -126
- package/src/utils/utils.js +0 -13
- package/start.js +0 -7
@@ -1,168 +1,129 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
const router =
|
8
|
-
router.use('/',
|
9
|
-
|
1
|
+
import Router from 'express-promise-router';
|
2
|
+
import { instanceManager } from '../instanceManager';
|
3
|
+
import { serviceManager } from '../serviceManager';
|
4
|
+
import { corsHandler } from '../middleware/cors';
|
5
|
+
import { kapetaHeaders } from '../middleware/kapeta';
|
6
|
+
import { stringBody } from '../middleware/stringBody';
|
7
|
+
const router = Router();
|
8
|
+
router.use('/', corsHandler);
|
9
|
+
router.use('/', kapetaHeaders);
|
10
10
|
/**
|
11
11
|
* Get all instances
|
12
12
|
*/
|
13
13
|
router.get('/', (req, res) => {
|
14
14
|
res.send(instanceManager.getInstances());
|
15
15
|
});
|
16
|
-
|
17
16
|
/**
|
18
17
|
* Get all instances
|
19
18
|
*/
|
20
19
|
router.get('/:systemId/instances', (req, res) => {
|
21
20
|
res.send(instanceManager.getInstancesForPlan(req.params.systemId));
|
22
21
|
});
|
23
|
-
|
24
22
|
/**
|
25
23
|
* Start all instances in a plan
|
26
24
|
*/
|
27
25
|
router.post('/:systemId/start', async (req, res) => {
|
28
26
|
const processes = await instanceManager.createProcessesForPlan(req.params.systemId);
|
29
|
-
|
30
27
|
res.status(202).send({
|
31
28
|
ok: true,
|
32
|
-
processes: processes.map(p => {
|
33
|
-
return {pid: p.pid, type: p.type};
|
34
|
-
})
|
29
|
+
processes: processes.map((p) => {
|
30
|
+
return { pid: p.pid, type: p.type };
|
31
|
+
}),
|
35
32
|
});
|
36
33
|
});
|
37
|
-
|
38
34
|
/**
|
39
35
|
* Stop all instances in plan
|
40
36
|
*/
|
41
37
|
router.post('/:systemId/stop', async (req, res) => {
|
42
38
|
await instanceManager.stopAllForPlan(req.params.systemId);
|
43
|
-
|
44
39
|
res.status(202).send({
|
45
|
-
ok: true
|
40
|
+
ok: true,
|
46
41
|
});
|
47
42
|
});
|
48
|
-
|
49
43
|
/**
|
50
44
|
* Start single instance in a plan
|
51
45
|
*/
|
52
46
|
router.post('/:systemId/:instanceId/start', async (req, res) => {
|
53
47
|
const process = await instanceManager.createProcess(req.params.systemId, req.params.instanceId);
|
54
|
-
|
55
48
|
res.status(202).send({
|
56
49
|
ok: true,
|
57
50
|
pid: process.pid,
|
58
|
-
type: process.type
|
51
|
+
type: process.type,
|
59
52
|
});
|
60
53
|
});
|
61
|
-
|
62
54
|
/**
|
63
55
|
* Stop single instance in a plan
|
64
56
|
*/
|
65
57
|
router.post('/:systemId/:instanceId/stop', async (req, res) => {
|
66
58
|
await instanceManager.stopProcess(req.params.systemId, req.params.instanceId);
|
67
|
-
|
68
|
-
res.status(202).send({ok: true});
|
59
|
+
res.status(202).send({ ok: true });
|
69
60
|
});
|
70
|
-
|
71
|
-
|
72
61
|
/**
|
73
62
|
* Get logs for instance in a plan
|
74
63
|
*/
|
75
64
|
router.get('/:systemId/:instanceId/logs', (req, res) => {
|
76
65
|
const processInfo = instanceManager.getProcessForInstance(req.params.systemId, req.params.instanceId);
|
77
66
|
if (!processInfo) {
|
78
|
-
res.status(404).send({ok: false});
|
67
|
+
res.status(404).send({ ok: false });
|
79
68
|
return;
|
80
69
|
}
|
81
|
-
|
82
70
|
res.status(202).send({
|
83
|
-
logs: processInfo.logs()
|
71
|
+
logs: processInfo.logs(),
|
84
72
|
});
|
85
73
|
});
|
86
|
-
|
87
|
-
|
88
74
|
/**
|
89
75
|
* Get public address for instance in a plan if available
|
90
76
|
*/
|
91
77
|
router.get('/:systemId/:instanceId/address/public', (req, res) => {
|
92
78
|
const instance = instanceManager.getInstance(req.params.systemId, req.params.instanceId);
|
93
79
|
if (!instance) {
|
94
|
-
res.status(404).send({ok: false});
|
80
|
+
res.status(404).send({ ok: false });
|
95
81
|
return;
|
96
82
|
}
|
97
|
-
|
98
83
|
if (!instance.address) {
|
99
|
-
res.status(400).send({error: `Instance does not have an address. Make sure it's running.`});
|
84
|
+
res.status(400).send({ error: `Instance does not have an address. Make sure it's running.` });
|
100
85
|
return;
|
101
86
|
}
|
102
|
-
|
103
87
|
res.status(200).send(instance.address);
|
104
88
|
});
|
105
|
-
|
106
89
|
/**
|
107
90
|
* Get public address for particular resource on instance in a plan if available
|
108
91
|
*/
|
109
92
|
router.get('/:systemId/:instanceId/provider/:portType/:resourceName/address/public', (req, res) => {
|
110
|
-
res.send(serviceManager.getConsumerAddress(
|
111
|
-
req.params.systemId,
|
112
|
-
req.params.instanceId,
|
113
|
-
req.params.resourceName,
|
114
|
-
req.params.portType,
|
115
|
-
req.headers['x-kapeta-environment'],
|
116
|
-
));
|
93
|
+
res.send(serviceManager.getConsumerAddress(req.params.systemId, req.params.instanceId, req.params.resourceName, req.params.portType, req.kapeta?.environment));
|
117
94
|
});
|
118
|
-
|
119
|
-
router.use('/', require('../middleware/stringBody'));
|
120
|
-
router.use('/', require('../middleware/kapeta'));
|
95
|
+
router.use('/', stringBody);
|
121
96
|
router.use('/', (req, res, next) => {
|
122
97
|
if (!req.kapeta.blockRef) {
|
123
|
-
res.status(400).send({error: 'Missing X-Kapeta-Block header.'});
|
98
|
+
res.status(400).send({ error: 'Missing X-Kapeta-Block header.' });
|
124
99
|
return;
|
125
100
|
}
|
126
101
|
next();
|
127
|
-
})
|
128
|
-
|
102
|
+
});
|
129
103
|
/**
|
130
104
|
* Updates the full configuration for a given service.
|
131
105
|
*/
|
132
106
|
router.put('/', async (req, res) => {
|
133
|
-
|
134
|
-
let instance = JSON.parse(req.stringBody);
|
107
|
+
let instance = req.stringBody ? JSON.parse(req.stringBody) : null;
|
135
108
|
if (req.kapeta.environment === 'docker') {
|
136
109
|
//A bit hacky but we want to avoid overwriting the docker PID with a process PID
|
137
|
-
const oldInstance = instanceManager.getInstance(
|
138
|
-
req.kapeta.systemId,
|
139
|
-
req.kapeta.instanceId
|
140
|
-
);
|
110
|
+
const oldInstance = instanceManager.getInstance(req.kapeta.systemId, req.kapeta.instanceId);
|
141
111
|
if (oldInstance) {
|
142
112
|
instance.pid = oldInstance.pid;
|
143
113
|
}
|
144
114
|
instance.type = 'docker';
|
145
|
-
}
|
115
|
+
}
|
116
|
+
else if (req.kapeta.environment === 'process') {
|
146
117
|
instance.type = 'process';
|
147
118
|
}
|
148
|
-
|
149
|
-
|
150
|
-
req.kapeta.systemId,
|
151
|
-
req.kapeta.instanceId,
|
152
|
-
instance
|
153
|
-
);
|
154
|
-
|
155
|
-
res.status(202).send({ok: true});
|
119
|
+
await instanceManager.registerInstance(req.kapeta.systemId, req.kapeta.instanceId, instance);
|
120
|
+
res.status(202).send({ ok: true });
|
156
121
|
});
|
157
|
-
|
158
122
|
/**
|
159
123
|
* Delete instance
|
160
124
|
*/
|
161
125
|
router.delete('/', async (req, res) => {
|
162
126
|
await instanceManager.setInstanceAsStopped(req.kapeta.systemId, req.kapeta.instanceId);
|
163
|
-
|
164
|
-
res.status(202).send({ok: true});
|
127
|
+
res.status(202).send({ ok: true });
|
165
128
|
});
|
166
|
-
|
167
|
-
|
168
|
-
module.exports = router;
|
129
|
+
export default router;
|
@@ -1,7 +1,6 @@
|
|
1
|
-
|
1
|
+
export function corsHandler(req, res, next) {
|
2
2
|
res.set('Access-Control-Allow-Origin', req.headers.origin);
|
3
3
|
res.set('Access-Control-Allow-Methods', 'GET, PUT, POST, DELETE, HEAD, PATCH');
|
4
4
|
res.set('Access-Control-Allow-Headers', '*');
|
5
|
-
|
6
5
|
next();
|
7
|
-
}
|
6
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { NextFunction, Request, Response } from 'express';
|
2
|
+
import { EnvironmentType } from '../types';
|
3
|
+
export interface KapetaRequest extends Request {
|
4
|
+
kapeta?: {
|
5
|
+
blockRef: string;
|
6
|
+
instanceId: string;
|
7
|
+
systemId: string;
|
8
|
+
environment?: EnvironmentType;
|
9
|
+
};
|
10
|
+
}
|
11
|
+
export declare function kapetaHeaders(req: KapetaRequest, res: Response, next: NextFunction): void;
|
@@ -1,17 +1,13 @@
|
|
1
|
-
|
2
|
-
module.exports = function kapeta(req, res, next) {
|
3
|
-
|
1
|
+
export function kapetaHeaders(req, res, next) {
|
4
2
|
let blockRef = req.headers['x-kapeta-block'];
|
5
3
|
let systemId = req.headers['x-kapeta-system'];
|
6
4
|
let instanceId = req.headers['x-kapeta-instance'];
|
7
5
|
let environment = req.headers['x-kapeta-environment'];
|
8
|
-
|
9
6
|
req.kapeta = {
|
10
7
|
blockRef,
|
11
8
|
instanceId,
|
12
9
|
systemId,
|
13
|
-
environment
|
10
|
+
environment: environment ? environment : undefined,
|
14
11
|
};
|
15
|
-
|
16
12
|
next();
|
17
|
-
}
|
13
|
+
}
|
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
export function stringBody(req, res, next) {
|
3
2
|
// push the data to body
|
4
3
|
const body = [];
|
5
4
|
req.on('data', (chunk) => {
|
@@ -8,4 +7,4 @@ module.exports = function stringBody (req, res, next) {
|
|
8
7
|
req.stringBody = Buffer.concat(body).toString();
|
9
8
|
next();
|
10
9
|
});
|
11
|
-
}
|
10
|
+
}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import { Connection, SimpleRequest, SimpleResponse } from './types';
|
2
|
+
declare class NetworkManager {
|
3
|
+
private _connections;
|
4
|
+
private _sources;
|
5
|
+
private _targets;
|
6
|
+
static toConnectionId(connection: Connection): string;
|
7
|
+
constructor();
|
8
|
+
_ensureSystem(systemId: string): void;
|
9
|
+
_ensureConnection(systemId: string, connectionId: string): Traffic[];
|
10
|
+
_ensureSource(systemId: string, sourceBlockInstanceId: string): Traffic[];
|
11
|
+
_ensureTarget(systemId: string, targetBlockInstanceId: string): Traffic[];
|
12
|
+
addRequest(systemId: string, connection: Connection, request: SimpleRequest, consumerMethodId?: string, providerMethodId?: string): Traffic;
|
13
|
+
getTrafficForConnection(systemId: string, connectionId: string): Traffic[];
|
14
|
+
getTrafficForSource(systemId: string, blockInstanceId: string): Traffic[];
|
15
|
+
getTrafficForTarget(systemId: string, blockInstanceId: string): Traffic[];
|
16
|
+
}
|
17
|
+
declare class Traffic {
|
18
|
+
readonly id: string;
|
19
|
+
readonly connectionId: string;
|
20
|
+
readonly consumerMethodId: string | undefined;
|
21
|
+
readonly providerMethodId: string | undefined;
|
22
|
+
readonly created: number;
|
23
|
+
readonly request: SimpleRequest;
|
24
|
+
ended: null | number;
|
25
|
+
error: null | string;
|
26
|
+
response: SimpleResponse | null;
|
27
|
+
constructor(connection: Connection, request: SimpleRequest, consumerMethodId?: string, providerMethodId?: string);
|
28
|
+
asError(err: any): void;
|
29
|
+
withResponse(response: SimpleResponse): void;
|
30
|
+
}
|
31
|
+
export declare const networkManager: NetworkManager;
|
32
|
+
export {};
|
@@ -1,93 +1,80 @@
|
|
1
|
-
|
1
|
+
import uuid from 'node-uuid';
|
2
2
|
class NetworkManager {
|
3
|
-
|
3
|
+
_connections;
|
4
|
+
_sources;
|
5
|
+
_targets;
|
4
6
|
static toConnectionId(connection) {
|
5
7
|
return [
|
6
8
|
connection.provider.blockId,
|
7
9
|
connection.provider.resourceName,
|
8
10
|
connection.consumer.blockId,
|
9
|
-
connection.consumer.resourceName
|
11
|
+
connection.consumer.resourceName,
|
10
12
|
].join('_');
|
11
13
|
}
|
12
|
-
|
13
14
|
constructor() {
|
14
15
|
this._connections = {};
|
15
16
|
this._sources = {};
|
16
17
|
this._targets = {};
|
17
18
|
}
|
18
|
-
|
19
19
|
_ensureSystem(systemId) {
|
20
20
|
if (!this._connections[systemId]) {
|
21
21
|
this._connections[systemId] = {};
|
22
22
|
}
|
23
|
-
|
24
23
|
if (!this._sources[systemId]) {
|
25
24
|
this._sources[systemId] = {};
|
26
25
|
}
|
27
|
-
|
28
26
|
if (!this._targets[systemId]) {
|
29
27
|
this._targets[systemId] = {};
|
30
28
|
}
|
31
29
|
}
|
32
|
-
|
33
30
|
_ensureConnection(systemId, connectionId) {
|
34
31
|
this._ensureSystem(systemId);
|
35
|
-
|
36
32
|
if (!this._connections[systemId][connectionId]) {
|
37
33
|
this._connections[systemId][connectionId] = [];
|
38
34
|
}
|
39
|
-
|
40
35
|
return this._connections[systemId][connectionId];
|
41
36
|
}
|
42
|
-
|
43
37
|
_ensureSource(systemId, sourceBlockInstanceId) {
|
44
38
|
this._ensureSystem(systemId);
|
45
|
-
|
46
39
|
if (!this._sources[systemId][sourceBlockInstanceId]) {
|
47
40
|
this._sources[systemId][sourceBlockInstanceId] = [];
|
48
41
|
}
|
49
|
-
|
50
42
|
return this._sources[systemId][sourceBlockInstanceId];
|
51
43
|
}
|
52
|
-
|
53
44
|
_ensureTarget(systemId, targetBlockInstanceId) {
|
54
45
|
this._ensureSystem(systemId);
|
55
|
-
|
56
46
|
if (!this._targets[systemId][targetBlockInstanceId]) {
|
57
47
|
this._targets[systemId][targetBlockInstanceId] = [];
|
58
48
|
}
|
59
|
-
|
60
49
|
return this._targets[systemId][targetBlockInstanceId];
|
61
50
|
}
|
62
|
-
|
63
51
|
addRequest(systemId, connection, request, consumerMethodId, providerMethodId) {
|
64
|
-
|
65
52
|
const traffic = new Traffic(connection, request, consumerMethodId, providerMethodId);
|
66
|
-
|
67
53
|
this._ensureConnection(systemId, traffic.connectionId).push(traffic);
|
68
54
|
this._ensureSource(systemId, connection.provider.blockId).push(traffic);
|
69
55
|
this._ensureTarget(systemId, connection.consumer.blockId).push(traffic);
|
70
|
-
|
71
56
|
return traffic;
|
72
57
|
}
|
73
|
-
|
74
58
|
getTrafficForConnection(systemId, connectionId) {
|
75
59
|
return this._ensureConnection(systemId, connectionId);
|
76
60
|
}
|
77
|
-
|
78
61
|
getTrafficForSource(systemId, blockInstanceId) {
|
79
|
-
|
80
62
|
return this._ensureSource(systemId, blockInstanceId);
|
81
63
|
}
|
82
|
-
|
83
64
|
getTrafficForTarget(systemId, blockInstanceId) {
|
84
65
|
return this._ensureTarget(systemId, blockInstanceId);
|
85
66
|
}
|
86
67
|
}
|
87
|
-
|
88
|
-
|
89
68
|
class Traffic {
|
90
|
-
|
69
|
+
id;
|
70
|
+
connectionId;
|
71
|
+
consumerMethodId;
|
72
|
+
providerMethodId;
|
73
|
+
created;
|
74
|
+
request;
|
75
|
+
ended;
|
76
|
+
error;
|
77
|
+
response;
|
91
78
|
constructor(connection, request, consumerMethodId, providerMethodId) {
|
92
79
|
this.id = uuid.v4();
|
93
80
|
this.connectionId = NetworkManager.toConnectionId(connection);
|
@@ -99,22 +86,18 @@ class Traffic {
|
|
99
86
|
this.ended = null;
|
100
87
|
this.created = new Date().getTime();
|
101
88
|
}
|
102
|
-
|
103
89
|
asError(err) {
|
104
90
|
this.ended = new Date().getTime();
|
105
91
|
this.response = {
|
106
92
|
code: 0,
|
107
93
|
headers: {},
|
108
|
-
body: null
|
94
|
+
body: null,
|
109
95
|
};
|
110
96
|
this.error = err + '';
|
111
97
|
}
|
112
|
-
|
113
98
|
withResponse(response) {
|
114
99
|
this.ended = new Date().getTime();
|
115
100
|
this.response = response;
|
116
101
|
}
|
117
|
-
|
118
102
|
}
|
119
|
-
|
120
|
-
module.exports = new NetworkManager();
|
103
|
+
export const networkManager = new NetworkManager();
|
@@ -0,0 +1,36 @@
|
|
1
|
+
import { ContainerInfo } from './containerManager';
|
2
|
+
import { EnvironmentType, OperatorInfo } from './types';
|
3
|
+
declare class Operator {
|
4
|
+
private _data;
|
5
|
+
constructor(data: any);
|
6
|
+
getData(): any;
|
7
|
+
getCredentials(): any;
|
8
|
+
}
|
9
|
+
declare class OperatorManager {
|
10
|
+
private _mountDir;
|
11
|
+
constructor();
|
12
|
+
_getMountPoint(operatorType: string, mountName: string): string;
|
13
|
+
/**
|
14
|
+
* Get operator definition for resource type
|
15
|
+
*
|
16
|
+
* @param {string} resourceType
|
17
|
+
* @param {string} version
|
18
|
+
* @return {Operator}
|
19
|
+
*/
|
20
|
+
getOperator(resourceType: string, version: string): Operator;
|
21
|
+
/**
|
22
|
+
* Get information about a specific consumed resource
|
23
|
+
*/
|
24
|
+
getConsumerResourceInfo(systemId: string, fromServiceId: string, resourceType: string, portType: string, name: string, environment?: EnvironmentType): Promise<OperatorInfo>;
|
25
|
+
/**
|
26
|
+
* Ensure we have a running operator of given type
|
27
|
+
*
|
28
|
+
* @param {string} systemId
|
29
|
+
* @param {string} resourceType
|
30
|
+
* @param {string} version
|
31
|
+
* @return {Promise<ContainerInfo>}
|
32
|
+
*/
|
33
|
+
ensureResource(systemId: string, resourceType: string, version: string): Promise<ContainerInfo>;
|
34
|
+
}
|
35
|
+
export declare const operatorManager: OperatorManager;
|
36
|
+
export {};
|