@kapeta/local-cluster-service 0.6.1 → 0.7.1

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.
Files changed (192) hide show
  1. package/.eslintrc.cjs +17 -0
  2. package/.github/workflows/main.yml +22 -22
  3. package/.prettierignore +4 -0
  4. package/.vscode/launch.json +2 -4
  5. package/CHANGELOG.md +14 -0
  6. package/definitions.d.ts +17 -35
  7. package/dist/cjs/index.d.ts +27 -0
  8. package/dist/cjs/index.js +126 -0
  9. package/dist/cjs/package.json +1 -0
  10. package/dist/cjs/src/assetManager.d.ts +31 -0
  11. package/dist/cjs/src/assetManager.js +153 -0
  12. package/dist/cjs/src/assets/routes.d.ts +3 -0
  13. package/dist/cjs/src/assets/routes.js +117 -0
  14. package/dist/cjs/src/clusterService.d.ts +40 -0
  15. package/dist/cjs/src/clusterService.js +114 -0
  16. package/dist/cjs/src/codeGeneratorManager.d.ts +8 -0
  17. package/dist/cjs/src/codeGeneratorManager.js +53 -0
  18. package/dist/cjs/src/config/routes.d.ts +3 -0
  19. package/dist/cjs/src/config/routes.js +126 -0
  20. package/dist/cjs/src/configManager.d.ts +36 -0
  21. package/dist/cjs/src/configManager.js +110 -0
  22. package/dist/cjs/src/containerManager.d.ts +89 -0
  23. package/dist/cjs/src/containerManager.js +365 -0
  24. package/dist/cjs/src/filesystem/routes.d.ts +3 -0
  25. package/dist/cjs/src/filesystem/routes.js +69 -0
  26. package/dist/cjs/src/filesystemManager.d.ts +15 -0
  27. package/dist/cjs/src/filesystemManager.js +87 -0
  28. package/dist/cjs/src/identities/routes.d.ts +3 -0
  29. package/dist/cjs/src/identities/routes.js +18 -0
  30. package/dist/cjs/src/instanceManager.d.ts +56 -0
  31. package/dist/cjs/src/instanceManager.js +424 -0
  32. package/dist/cjs/src/instances/routes.d.ts +3 -0
  33. package/dist/cjs/src/instances/routes.js +134 -0
  34. package/dist/cjs/src/middleware/cors.d.ts +2 -0
  35. package/dist/cjs/src/middleware/cors.js +10 -0
  36. package/dist/cjs/src/middleware/kapeta.d.ts +11 -0
  37. package/dist/cjs/src/middleware/kapeta.js +17 -0
  38. package/dist/cjs/src/middleware/stringBody.d.ts +5 -0
  39. package/dist/cjs/src/middleware/stringBody.js +14 -0
  40. package/dist/cjs/src/networkManager.d.ts +32 -0
  41. package/dist/cjs/src/networkManager.js +109 -0
  42. package/dist/cjs/src/operatorManager.d.ts +36 -0
  43. package/dist/cjs/src/operatorManager.js +165 -0
  44. package/dist/cjs/src/progressListener.d.ts +20 -0
  45. package/dist/cjs/src/progressListener.js +91 -0
  46. package/dist/cjs/src/providerManager.d.ts +9 -0
  47. package/dist/cjs/src/providerManager.js +51 -0
  48. package/dist/cjs/src/providers/routes.d.ts +3 -0
  49. package/dist/cjs/src/providers/routes.js +42 -0
  50. package/dist/cjs/src/proxy/routes.d.ts +3 -0
  51. package/dist/cjs/src/proxy/routes.js +111 -0
  52. package/dist/cjs/src/proxy/types/rest.d.ts +4 -0
  53. package/dist/cjs/src/proxy/types/rest.js +114 -0
  54. package/dist/cjs/src/proxy/types/web.d.ts +4 -0
  55. package/dist/cjs/src/proxy/types/web.js +53 -0
  56. package/dist/cjs/src/repositoryManager.d.ts +17 -0
  57. package/dist/cjs/src/repositoryManager.js +218 -0
  58. package/dist/cjs/src/serviceManager.d.ts +29 -0
  59. package/dist/cjs/src/serviceManager.js +99 -0
  60. package/dist/cjs/src/socketManager.d.ts +14 -0
  61. package/dist/cjs/src/socketManager.js +53 -0
  62. package/dist/cjs/src/storageService.d.ts +17 -0
  63. package/dist/cjs/src/storageService.js +74 -0
  64. package/dist/cjs/src/traffic/routes.d.ts +3 -0
  65. package/dist/cjs/src/traffic/routes.js +18 -0
  66. package/dist/cjs/src/types.d.ts +88 -0
  67. package/dist/cjs/src/types.js +2 -0
  68. package/dist/cjs/src/utils/BlockInstanceRunner.d.ts +29 -0
  69. package/dist/cjs/src/utils/BlockInstanceRunner.js +468 -0
  70. package/dist/cjs/src/utils/LogData.d.ts +19 -0
  71. package/dist/cjs/src/utils/LogData.js +43 -0
  72. package/dist/cjs/src/utils/pathTemplateParser.d.ts +26 -0
  73. package/dist/cjs/src/utils/pathTemplateParser.js +121 -0
  74. package/dist/cjs/src/utils/utils.d.ts +1 -0
  75. package/dist/cjs/src/utils/utils.js +18 -0
  76. package/dist/cjs/start.d.ts +1 -0
  77. package/dist/cjs/start.js +12 -0
  78. package/dist/esm/index.d.ts +27 -0
  79. package/dist/esm/index.js +121 -0
  80. package/dist/esm/package.json +1 -0
  81. package/dist/esm/src/assetManager.d.ts +31 -0
  82. package/{src → dist/esm/src}/assetManager.js +22 -60
  83. package/dist/esm/src/assets/routes.d.ts +3 -0
  84. package/{src → dist/esm/src}/assets/routes.js +21 -36
  85. package/dist/esm/src/clusterService.d.ts +40 -0
  86. package/{src → dist/esm/src}/clusterService.js +14 -37
  87. package/dist/esm/src/codeGeneratorManager.d.ts +8 -0
  88. package/{src → dist/esm/src}/codeGeneratorManager.js +15 -24
  89. package/dist/esm/src/config/routes.d.ts +3 -0
  90. package/{src → dist/esm/src}/config/routes.js +40 -89
  91. package/dist/esm/src/configManager.d.ts +36 -0
  92. package/{src → dist/esm/src}/configManager.js +11 -40
  93. package/dist/esm/src/containerManager.d.ts +89 -0
  94. package/{src → dist/esm/src}/containerManager.js +81 -182
  95. package/dist/esm/src/filesystem/routes.d.ts +3 -0
  96. package/dist/esm/src/filesystem/routes.js +64 -0
  97. package/dist/esm/src/filesystemManager.d.ts +15 -0
  98. package/{src → dist/esm/src}/filesystemManager.js +20 -28
  99. package/dist/esm/src/identities/routes.d.ts +3 -0
  100. package/dist/esm/src/identities/routes.js +13 -0
  101. package/dist/esm/src/instanceManager.d.ts +56 -0
  102. package/{src → dist/esm/src}/instanceManager.js +88 -179
  103. package/dist/esm/src/instances/routes.d.ts +3 -0
  104. package/{src → dist/esm/src}/instances/routes.js +31 -70
  105. package/dist/esm/src/middleware/cors.d.ts +2 -0
  106. package/{src → dist/esm/src}/middleware/cors.js +2 -3
  107. package/dist/esm/src/middleware/kapeta.d.ts +11 -0
  108. package/{src → dist/esm/src}/middleware/kapeta.js +3 -7
  109. package/dist/esm/src/middleware/stringBody.d.ts +5 -0
  110. package/{src → dist/esm/src}/middleware/stringBody.js +2 -3
  111. package/dist/esm/src/networkManager.d.ts +32 -0
  112. package/{src → dist/esm/src}/networkManager.js +16 -33
  113. package/dist/esm/src/operatorManager.d.ts +36 -0
  114. package/{src → dist/esm/src}/operatorManager.js +35 -91
  115. package/dist/esm/src/progressListener.d.ts +20 -0
  116. package/dist/esm/src/progressListener.js +88 -0
  117. package/dist/esm/src/providerManager.d.ts +9 -0
  118. package/dist/esm/src/providerManager.js +45 -0
  119. package/dist/esm/src/providers/routes.d.ts +3 -0
  120. package/{src → dist/esm/src}/providers/routes.js +10 -16
  121. package/dist/esm/src/proxy/routes.d.ts +3 -0
  122. package/dist/esm/src/proxy/routes.js +106 -0
  123. package/dist/esm/src/proxy/types/rest.d.ts +4 -0
  124. package/dist/esm/src/proxy/types/rest.js +107 -0
  125. package/dist/esm/src/proxy/types/web.d.ts +4 -0
  126. package/{src → dist/esm/src}/proxy/types/web.js +13 -35
  127. package/dist/esm/src/repositoryManager.d.ts +17 -0
  128. package/dist/esm/src/repositoryManager.js +212 -0
  129. package/dist/esm/src/serviceManager.d.ts +29 -0
  130. package/{src → dist/esm/src}/serviceManager.js +12 -42
  131. package/dist/esm/src/socketManager.d.ts +14 -0
  132. package/{src → dist/esm/src}/socketManager.js +19 -23
  133. package/dist/esm/src/storageService.d.ts +17 -0
  134. package/{src → dist/esm/src}/storageService.js +8 -27
  135. package/dist/esm/src/traffic/routes.d.ts +3 -0
  136. package/{src → dist/esm/src}/traffic/routes.js +4 -9
  137. package/dist/esm/src/types.d.ts +88 -0
  138. package/dist/esm/src/types.js +1 -0
  139. package/dist/esm/src/utils/BlockInstanceRunner.d.ts +29 -0
  140. package/{src → dist/esm/src}/utils/BlockInstanceRunner.js +137 -256
  141. package/dist/esm/src/utils/LogData.d.ts +19 -0
  142. package/{src → dist/esm/src}/utils/LogData.js +11 -22
  143. package/dist/esm/src/utils/pathTemplateParser.d.ts +26 -0
  144. package/{src → dist/esm/src}/utils/pathTemplateParser.js +21 -40
  145. package/dist/esm/src/utils/utils.d.ts +1 -0
  146. package/dist/esm/src/utils/utils.js +11 -0
  147. package/dist/esm/start.d.ts +1 -0
  148. package/dist/esm/start.js +7 -0
  149. package/index.ts +147 -0
  150. package/package.json +106 -74
  151. package/src/assetManager.ts +191 -0
  152. package/src/assets/routes.ts +132 -0
  153. package/src/clusterService.ts +134 -0
  154. package/src/codeGeneratorManager.ts +57 -0
  155. package/src/config/routes.ts +159 -0
  156. package/src/configManager.ts +148 -0
  157. package/src/containerManager.ts +466 -0
  158. package/src/filesystem/routes.ts +74 -0
  159. package/src/filesystemManager.ts +93 -0
  160. package/src/identities/routes.ts +20 -0
  161. package/src/instanceManager.ts +503 -0
  162. package/src/instances/routes.ts +164 -0
  163. package/src/middleware/cors.ts +9 -0
  164. package/src/middleware/kapeta.ts +27 -0
  165. package/src/middleware/stringBody.ts +16 -0
  166. package/src/networkManager.ts +137 -0
  167. package/src/operatorManager.ts +221 -0
  168. package/src/progressListener.ts +102 -0
  169. package/src/{providerManager.js → providerManager.ts} +15 -31
  170. package/src/providers/routes.ts +46 -0
  171. package/src/proxy/routes.ts +148 -0
  172. package/src/proxy/types/{rest.js → rest.ts} +30 -30
  173. package/src/proxy/types/web.ts +60 -0
  174. package/src/{repositoryManager.js → repositoryManager.ts} +49 -73
  175. package/src/serviceManager.ts +120 -0
  176. package/src/socketManager.ts +57 -0
  177. package/src/storageService.ts +88 -0
  178. package/src/traffic/routes.ts +18 -0
  179. package/src/types.ts +97 -0
  180. package/src/utils/BlockInstanceRunner.ts +555 -0
  181. package/src/utils/LogData.ts +47 -0
  182. package/src/utils/pathTemplateParser.ts +138 -0
  183. package/src/utils/utils.ts +12 -0
  184. package/start.ts +8 -0
  185. package/tsconfig.json +13 -0
  186. package/index.js +0 -127
  187. package/src/filesystem/routes.js +0 -74
  188. package/src/identities/routes.js +0 -19
  189. package/src/progressListener.js +0 -82
  190. package/src/proxy/routes.js +0 -126
  191. package/src/utils/utils.js +0 -13
  192. package/start.js +0 -7
@@ -1,168 +1,129 @@
1
- const Router = require('express-promise-router').default;
2
-
3
- const instanceManager = require('../instanceManager');
4
- const serviceManager = require('../serviceManager');
5
-
6
-
7
- const router = new Router();
8
- router.use('/', require('../middleware/cors'));
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
- } else if (req.kapeta.environment === 'process') {
115
+ }
116
+ else if (req.kapeta.environment === 'process') {
146
117
  instance.type = 'process';
147
118
  }
148
-
149
- await instanceManager.registerInstance(
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;
@@ -0,0 +1,2 @@
1
+ import { NextFunction, Request, Response } from 'express';
2
+ export declare function corsHandler(req: Request, res: Response, next: NextFunction): void;
@@ -1,7 +1,6 @@
1
- module.exports = function cors(req, res, next) {
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
+ }
@@ -0,0 +1,5 @@
1
+ import { NextFunction, Request, Response } from 'express';
2
+ export type StringBodyRequest = Request<any> & {
3
+ stringBody?: string;
4
+ };
5
+ export declare function stringBody(req: StringBodyRequest, res: Response, next: NextFunction): void;
@@ -1,5 +1,4 @@
1
- module.exports = function stringBody (req, res, next) {
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
- const uuid = require('node-uuid');
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 {};