@kapeta/local-cluster-service 0.16.8 → 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.
Files changed (56) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/cjs/index.js +2 -0
  3. package/dist/cjs/src/socketManager.js +6 -0
  4. package/dist/cjs/src/utils/DefaultProviderInstaller.d.ts +11 -0
  5. package/dist/cjs/src/utils/DefaultProviderInstaller.js +129 -0
  6. package/dist/esm/index.js +64 -57
  7. package/dist/esm/src/RepositoryWatcher.js +40 -33
  8. package/dist/esm/src/api.js +14 -9
  9. package/dist/esm/src/assetManager.js +62 -56
  10. package/dist/esm/src/assets/routes.js +22 -17
  11. package/dist/esm/src/attachments/routes.js +14 -9
  12. package/dist/esm/src/cacheManager.js +13 -5
  13. package/dist/esm/src/clusterService.js +6 -3
  14. package/dist/esm/src/codeGeneratorManager.js +19 -13
  15. package/dist/esm/src/config/routes.js +30 -25
  16. package/dist/esm/src/configManager.js +29 -26
  17. package/dist/esm/src/containerManager.js +48 -39
  18. package/dist/esm/src/definitionsManager.js +15 -9
  19. package/dist/esm/src/filesystem/routes.js +21 -16
  20. package/dist/esm/src/filesystemManager.js +23 -17
  21. package/dist/esm/src/identities/routes.js +13 -8
  22. package/dist/esm/src/instanceManager.js +163 -156
  23. package/dist/esm/src/instances/routes.js +38 -33
  24. package/dist/esm/src/middleware/cors.js +5 -1
  25. package/dist/esm/src/middleware/kapeta.js +8 -4
  26. package/dist/esm/src/middleware/stringBody.js +5 -1
  27. package/dist/esm/src/networkManager.js +15 -9
  28. package/dist/esm/src/operatorManager.js +45 -39
  29. package/dist/esm/src/progressListener.js +16 -12
  30. package/dist/esm/src/providerManager.js +22 -16
  31. package/dist/esm/src/providers/routes.js +14 -9
  32. package/dist/esm/src/proxy/routes.js +26 -21
  33. package/dist/esm/src/proxy/types/rest.js +29 -22
  34. package/dist/esm/src/proxy/types/web.js +18 -11
  35. package/dist/esm/src/repositoryManager.js +28 -22
  36. package/dist/esm/src/serviceManager.js +25 -19
  37. package/dist/esm/src/socketManager.js +31 -18
  38. package/dist/esm/src/storageService.js +18 -12
  39. package/dist/esm/src/taskManager.js +12 -8
  40. package/dist/esm/src/tasks/routes.js +14 -9
  41. package/dist/esm/src/traffic/routes.js +12 -7
  42. package/dist/esm/src/types.js +11 -8
  43. package/dist/esm/src/utils/BlockInstanceRunner.js +57 -50
  44. package/dist/esm/src/utils/DefaultProviderInstaller.d.ts +11 -0
  45. package/dist/esm/src/utils/DefaultProviderInstaller.js +129 -0
  46. package/dist/esm/src/utils/LogData.js +5 -1
  47. package/dist/esm/src/utils/commandLineUtils.js +12 -7
  48. package/dist/esm/src/utils/pathTemplateParser.js +7 -2
  49. package/dist/esm/src/utils/utils.js +30 -17
  50. package/dist/esm/start.js +7 -2
  51. package/index.ts +3 -0
  52. package/package.json +10 -4
  53. package/src/instanceManager.ts +1 -1
  54. package/src/socketManager.ts +6 -0
  55. package/src/utils/DefaultProviderInstaller.ts +141 -0
  56. package/tsconfig.json +3 -2
@@ -1,37 +1,42 @@
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
- import { DesiredInstanceStatus, InstanceOwner, InstanceType } from '../types';
8
- import { Task } from '../taskManager';
9
- const router = Router();
10
- router.use('/', corsHandler);
11
- router.use('/', kapetaHeaders);
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 instanceManager_1 = require("../instanceManager");
8
+ const serviceManager_1 = require("../serviceManager");
9
+ const cors_1 = require("../middleware/cors");
10
+ const kapeta_1 = require("../middleware/kapeta");
11
+ const stringBody_1 = require("../middleware/stringBody");
12
+ const types_1 = require("../types");
13
+ const taskManager_1 = require("../taskManager");
14
+ const router = (0, express_promise_router_1.default)();
15
+ router.use('/', cors_1.corsHandler);
16
+ router.use('/', kapeta_1.kapetaHeaders);
12
17
  /**
13
18
  * Get all instances
14
19
  */
15
20
  router.get('/', (req, res) => {
16
- res.send(instanceManager.getInstances());
21
+ res.send(instanceManager_1.instanceManager.getInstances());
17
22
  });
18
23
  /**
19
24
  * Get all instances
20
25
  */
21
26
  router.get('/:systemId/instances', (req, res) => {
22
- res.send(instanceManager.getInstancesForPlan(req.params.systemId));
27
+ res.send(instanceManager_1.instanceManager.getInstancesForPlan(req.params.systemId));
23
28
  });
24
29
  /**
25
30
  * Get single instance in a plan
26
31
  */
27
32
  router.get('/:systemId/instances/:instanceId', (req, res) => {
28
- res.send(instanceManager.getInstance(req.params.systemId, req.params.instanceId));
33
+ res.send(instanceManager_1.instanceManager.getInstance(req.params.systemId, req.params.instanceId));
29
34
  });
30
35
  /**
31
36
  * Start all instances in a plan
32
37
  */
33
38
  router.post('/:systemId/start', async (req, res) => {
34
- const task = await instanceManager.startAllForPlan(req.params.systemId);
39
+ const task = await instanceManager_1.instanceManager.startAllForPlan(req.params.systemId);
35
40
  res.status(202).send({
36
41
  ok: true,
37
42
  taskId: task.id,
@@ -41,7 +46,7 @@ router.post('/:systemId/start', async (req, res) => {
41
46
  * Stop all instances in plan
42
47
  */
43
48
  router.post('/:systemId/stop', async (req, res) => {
44
- const task = instanceManager.stopAllForPlan(req.params.systemId);
49
+ const task = instanceManager_1.instanceManager.stopAllForPlan(req.params.systemId);
45
50
  res.status(202).send({
46
51
  ok: true,
47
52
  taskId: task.id,
@@ -51,8 +56,8 @@ router.post('/:systemId/stop', async (req, res) => {
51
56
  * Start single instance in a plan
52
57
  */
53
58
  router.post('/:systemId/:instanceId/start', async (req, res) => {
54
- const result = await instanceManager.start(req.params.systemId, req.params.instanceId);
55
- if (result instanceof Task) {
59
+ const result = await instanceManager_1.instanceManager.start(req.params.systemId, req.params.instanceId);
60
+ if (result instanceof taskManager_1.Task) {
56
61
  res.status(202).send({
57
62
  ok: true,
58
63
  taskId: result.id,
@@ -70,20 +75,20 @@ router.post('/:systemId/:instanceId/start', async (req, res) => {
70
75
  * Stop single instance in a plan
71
76
  */
72
77
  router.post('/:systemId/:instanceId/stop', async (req, res) => {
73
- await instanceManager.stop(req.params.systemId, req.params.instanceId);
78
+ await instanceManager_1.instanceManager.stop(req.params.systemId, req.params.instanceId);
74
79
  res.status(202).send({ ok: true });
75
80
  });
76
81
  /**
77
82
  * Get logs for instance in a plan
78
83
  */
79
84
  router.get('/:systemId/:instanceId/logs', async (req, res) => {
80
- const instanceInfo = instanceManager.getInstance(req.params.systemId, req.params.instanceId);
85
+ const instanceInfo = instanceManager_1.instanceManager.getInstance(req.params.systemId, req.params.instanceId);
81
86
  if (!instanceInfo) {
82
87
  res.status(404).send({ ok: false });
83
88
  return;
84
89
  }
85
90
  try {
86
- const logs = await instanceManager.getLogs(req.params.systemId, req.params.instanceId);
91
+ const logs = await instanceManager_1.instanceManager.getLogs(req.params.systemId, req.params.instanceId);
87
92
  res.status(200).send({
88
93
  logs,
89
94
  });
@@ -96,7 +101,7 @@ router.get('/:systemId/:instanceId/logs', async (req, res) => {
96
101
  * Get public address for instance in a plan if available
97
102
  */
98
103
  router.get('/:systemId/:instanceId/address/public', (req, res) => {
99
- const instance = instanceManager.getInstance(req.params.systemId, req.params.instanceId);
104
+ const instance = instanceManager_1.instanceManager.getInstance(req.params.systemId, req.params.instanceId);
100
105
  if (!instance) {
101
106
  res.status(404).send({ ok: false });
102
107
  return;
@@ -111,9 +116,9 @@ router.get('/:systemId/:instanceId/address/public', (req, res) => {
111
116
  * Get public address for particular resource on instance in a plan if available
112
117
  */
113
118
  router.get('/:systemId/:instanceId/provider/:portType/:resourceName/address/public', (req, res) => {
114
- res.send(serviceManager.getConsumerAddress(req.params.systemId, req.params.instanceId, req.params.resourceName, req.params.portType, req.kapeta?.environment));
119
+ res.send(serviceManager_1.serviceManager.getConsumerAddress(req.params.systemId, req.params.instanceId, req.params.resourceName, req.params.portType, req.kapeta?.environment));
115
120
  });
116
- router.use('/', stringBody);
121
+ router.use('/', stringBody_1.stringBody);
117
122
  router.use('/', (req, res, next) => {
118
123
  if (!req.kapeta.blockRef) {
119
124
  res.status(400).send({ error: 'Missing X-Kapeta-Block header.' });
@@ -128,22 +133,22 @@ router.put('/', async (req, res) => {
128
133
  let instance = req.stringBody ? JSON.parse(req.stringBody) : null;
129
134
  if (req.kapeta.environment === 'docker') {
130
135
  //A bit hacky but we want to avoid overwriting the docker PID with a process PID
131
- const oldInstance = instanceManager.getInstance(req.kapeta.systemId, req.kapeta.instanceId);
136
+ const oldInstance = instanceManager_1.instanceManager.getInstance(req.kapeta.systemId, req.kapeta.instanceId);
132
137
  if (oldInstance) {
133
138
  instance.pid = oldInstance.pid;
134
139
  instance.desiredStatus = oldInstance.desiredStatus;
135
140
  }
136
- instance.type = InstanceType.DOCKER;
137
- instance.owner = InstanceOwner.INTERNAL;
141
+ instance.type = types_1.InstanceType.DOCKER;
142
+ instance.owner = types_1.InstanceOwner.INTERNAL;
138
143
  }
139
144
  else {
140
145
  // Coming from user starting the instance outside of kapeta
141
- instance.type = InstanceType.LOCAL;
142
- instance.owner = InstanceOwner.EXTERNAL;
143
- instance.desiredStatus = DesiredInstanceStatus.EXTERNAL;
146
+ instance.type = types_1.InstanceType.LOCAL;
147
+ instance.owner = types_1.InstanceOwner.EXTERNAL;
148
+ instance.desiredStatus = types_1.DesiredInstanceStatus.EXTERNAL;
144
149
  }
145
150
  try {
146
- await instanceManager.registerInstanceFromSDK(req.kapeta.systemId, req.kapeta.instanceId, instance);
151
+ await instanceManager_1.instanceManager.registerInstanceFromSDK(req.kapeta.systemId, req.kapeta.instanceId, instance);
147
152
  res.status(202).send({ ok: true });
148
153
  }
149
154
  catch (e) {
@@ -154,7 +159,7 @@ router.put('/', async (req, res) => {
154
159
  * Delete instance
155
160
  */
156
161
  router.delete('/', async (req, res) => {
157
- await instanceManager.markAsStopped(req.kapeta.systemId, req.kapeta.instanceId);
162
+ await instanceManager_1.instanceManager.markAsStopped(req.kapeta.systemId, req.kapeta.instanceId);
158
163
  res.status(202).send({ ok: true });
159
164
  });
160
- export default router;
165
+ exports.default = router;
@@ -1,6 +1,10 @@
1
- export function corsHandler(req, res, next) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.corsHandler = void 0;
4
+ function corsHandler(req, res, next) {
2
5
  res.set('Access-Control-Allow-Origin', req.headers.origin);
3
6
  res.set('Access-Control-Allow-Methods', 'GET, PUT, POST, DELETE, HEAD, PATCH');
4
7
  res.set('Access-Control-Allow-Headers', '*');
5
8
  next();
6
9
  }
10
+ exports.corsHandler = corsHandler;
@@ -1,14 +1,17 @@
1
- import { normalizeKapetaUri } from '../utils/utils';
2
- export function kapetaHeaders(req, res, next) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.kapetaHeaders = void 0;
4
+ const utils_1 = require("../utils/utils");
5
+ function kapetaHeaders(req, res, next) {
3
6
  let blockRef = req.headers['x-kapeta-block'];
4
7
  let systemId = req.headers['x-kapeta-system'];
5
8
  let instanceId = req.headers['x-kapeta-instance'];
6
9
  let environment = req.headers['x-kapeta-environment'];
7
10
  if (blockRef) {
8
- blockRef = normalizeKapetaUri(blockRef);
11
+ blockRef = (0, utils_1.normalizeKapetaUri)(blockRef);
9
12
  }
10
13
  if (systemId) {
11
- systemId = normalizeKapetaUri(systemId);
14
+ systemId = (0, utils_1.normalizeKapetaUri)(systemId);
12
15
  }
13
16
  req.kapeta = {
14
17
  blockRef,
@@ -18,3 +21,4 @@ export function kapetaHeaders(req, res, next) {
18
21
  };
19
22
  next();
20
23
  }
24
+ exports.kapetaHeaders = kapetaHeaders;
@@ -1,4 +1,7 @@
1
- export function stringBody(req, res, next) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stringBody = void 0;
4
+ function stringBody(req, res, next) {
2
5
  // push the data to body
3
6
  const body = [];
4
7
  req.on('data', (chunk) => {
@@ -8,3 +11,4 @@ export function stringBody(req, res, next) {
8
11
  next();
9
12
  });
10
13
  }
14
+ exports.stringBody = stringBody;
@@ -1,5 +1,11 @@
1
- import uuid from 'node-uuid';
2
- import { normalizeKapetaUri } from './utils/utils';
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.networkManager = void 0;
7
+ const node_uuid_1 = __importDefault(require("node-uuid"));
8
+ const utils_1 = require("./utils/utils");
3
9
  class NetworkManager {
4
10
  _connections;
5
11
  _sources;
@@ -18,7 +24,7 @@ class NetworkManager {
18
24
  this._targets = {};
19
25
  }
20
26
  _ensureSystem(systemId) {
21
- systemId = normalizeKapetaUri(systemId);
27
+ systemId = (0, utils_1.normalizeKapetaUri)(systemId);
22
28
  if (!this._connections[systemId]) {
23
29
  this._connections[systemId] = {};
24
30
  }
@@ -30,7 +36,7 @@ class NetworkManager {
30
36
  }
31
37
  }
32
38
  _ensureConnection(systemId, connectionId) {
33
- systemId = normalizeKapetaUri(systemId);
39
+ systemId = (0, utils_1.normalizeKapetaUri)(systemId);
34
40
  this._ensureSystem(systemId);
35
41
  if (!this._connections[systemId][connectionId]) {
36
42
  this._connections[systemId][connectionId] = [];
@@ -38,7 +44,7 @@ class NetworkManager {
38
44
  return this._connections[systemId][connectionId];
39
45
  }
40
46
  _ensureSource(systemId, sourceBlockInstanceId) {
41
- systemId = normalizeKapetaUri(systemId);
47
+ systemId = (0, utils_1.normalizeKapetaUri)(systemId);
42
48
  this._ensureSystem(systemId);
43
49
  if (!this._sources[systemId][sourceBlockInstanceId]) {
44
50
  this._sources[systemId][sourceBlockInstanceId] = [];
@@ -46,7 +52,7 @@ class NetworkManager {
46
52
  return this._sources[systemId][sourceBlockInstanceId];
47
53
  }
48
54
  _ensureTarget(systemId, targetBlockInstanceId) {
49
- systemId = normalizeKapetaUri(systemId);
55
+ systemId = (0, utils_1.normalizeKapetaUri)(systemId);
50
56
  this._ensureSystem(systemId);
51
57
  if (!this._targets[systemId][targetBlockInstanceId]) {
52
58
  this._targets[systemId][targetBlockInstanceId] = [];
@@ -54,7 +60,7 @@ class NetworkManager {
54
60
  return this._targets[systemId][targetBlockInstanceId];
55
61
  }
56
62
  addRequest(systemId, connection, request, consumerMethodId, providerMethodId) {
57
- systemId = normalizeKapetaUri(systemId);
63
+ systemId = (0, utils_1.normalizeKapetaUri)(systemId);
58
64
  const traffic = new Traffic(connection, request, consumerMethodId, providerMethodId);
59
65
  this._ensureConnection(systemId, traffic.connectionId).push(traffic);
60
66
  this._ensureSource(systemId, connection.provider.blockId).push(traffic);
@@ -82,7 +88,7 @@ class Traffic {
82
88
  error;
83
89
  response;
84
90
  constructor(connection, request, consumerMethodId, providerMethodId) {
85
- this.id = uuid.v4();
91
+ this.id = node_uuid_1.default.v4();
86
92
  this.connectionId = NetworkManager.toConnectionId(connection);
87
93
  this.consumerMethodId = consumerMethodId;
88
94
  this.providerMethodId = providerMethodId;
@@ -106,4 +112,4 @@ class Traffic {
106
112
  this.response = response;
107
113
  }
108
114
  }
109
- export const networkManager = new NetworkManager();
115
+ exports.networkManager = new NetworkManager();
@@ -1,16 +1,22 @@
1
- import Path from 'path';
2
- import md5 from 'md5';
3
- import { parseKapetaUri } from '@kapeta/nodejs-utils';
4
- import { serviceManager } from './serviceManager';
5
- import { storageService } from './storageService';
6
- import { CONTAINER_LABEL_PORT_PREFIX, ContainerInfo, containerManager } from './containerManager';
7
- import FSExtra from 'fs-extra';
8
- import { definitionsManager } from './definitionsManager';
9
- import { getBindHost, normalizeKapetaUri } from './utils/utils';
10
- import _ from 'lodash';
11
- import AsyncLock from 'async-lock';
12
- import { taskManager } from './taskManager';
13
- export const KIND_OPERATOR = 'core/resource-type-operator';
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.operatorManager = exports.KIND_OPERATOR = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const md5_1 = __importDefault(require("md5"));
9
+ const nodejs_utils_1 = require("@kapeta/nodejs-utils");
10
+ const serviceManager_1 = require("./serviceManager");
11
+ const storageService_1 = require("./storageService");
12
+ const containerManager_1 = require("./containerManager");
13
+ const fs_extra_1 = __importDefault(require("fs-extra"));
14
+ const definitionsManager_1 = require("./definitionsManager");
15
+ const utils_1 = require("./utils/utils");
16
+ const lodash_1 = __importDefault(require("lodash"));
17
+ const async_lock_1 = __importDefault(require("async-lock"));
18
+ const taskManager_1 = require("./taskManager");
19
+ exports.KIND_OPERATOR = 'core/resource-type-operator';
14
20
  class Operator {
15
21
  _data;
16
22
  constructor(data) {
@@ -28,13 +34,13 @@ class Operator {
28
34
  }
29
35
  class OperatorManager {
30
36
  _mountDir;
31
- operatorLock = new AsyncLock();
37
+ operatorLock = new async_lock_1.default();
32
38
  constructor() {
33
- this._mountDir = Path.join(storageService.getKapetaBasedir(), 'mounts');
34
- FSExtra.mkdirpSync(this._mountDir);
39
+ this._mountDir = path_1.default.join(storageService_1.storageService.getKapetaBasedir(), 'mounts');
40
+ fs_extra_1.default.mkdirpSync(this._mountDir);
35
41
  }
36
42
  _getMountPoint(operatorType, mountName) {
37
- return Path.join(this._mountDir, operatorType, mountName);
43
+ return path_1.default.join(this._mountDir, operatorType, mountName);
38
44
  }
39
45
  /**
40
46
  * Get operator definition for resource type
@@ -44,7 +50,7 @@ class OperatorManager {
44
50
  * @return {Operator}
45
51
  */
46
52
  getOperator(resourceType, version) {
47
- const operators = definitionsManager.getDefinitions(KIND_OPERATOR);
53
+ const operators = definitionsManager_1.definitionsManager.getDefinitions(exports.KIND_OPERATOR);
48
54
  const operator = operators.find((operator) => operator.definition &&
49
55
  operator.definition.metadata &&
50
56
  operator.definition.metadata.name &&
@@ -62,9 +68,9 @@ class OperatorManager {
62
68
  * Get information about a specific consumed resource
63
69
  */
64
70
  async getConsumerResourceInfo(systemId, fromServiceId, resourceType, portType, name, environment) {
65
- systemId = normalizeKapetaUri(systemId);
66
- const plans = definitionsManager.getDefinitions('core/plan');
67
- const planUri = parseKapetaUri(systemId);
71
+ systemId = (0, utils_1.normalizeKapetaUri)(systemId);
72
+ const plans = definitionsManager_1.definitionsManager.getDefinitions('core/plan');
73
+ const planUri = (0, nodejs_utils_1.parseKapetaUri)(systemId);
68
74
  const currentPlan = plans.find((plan) => plan.definition.metadata.name === planUri.fullName && plan.version === planUri.version);
69
75
  if (!currentPlan) {
70
76
  throw new Error(`Unknown plan: ${systemId}`);
@@ -73,8 +79,8 @@ class OperatorManager {
73
79
  if (!currentInstance) {
74
80
  throw new Error(`Unknown instance: ${fromServiceId} in plan ${systemId}`);
75
81
  }
76
- const blockUri = parseKapetaUri(currentInstance.block.ref);
77
- const blockDefinition = definitionsManager
82
+ const blockUri = (0, nodejs_utils_1.parseKapetaUri)(currentInstance.block.ref);
83
+ const blockDefinition = definitionsManager_1.definitionsManager
78
84
  .getDefinitions()
79
85
  .find((definition) => definition.version === blockUri.version && definition.definition.metadata.name === blockUri.fullName);
80
86
  if (!blockDefinition) {
@@ -84,7 +90,7 @@ class OperatorManager {
84
90
  if (!blockResource) {
85
91
  throw new Error(`Unknown resource: ${name} in block ${currentInstance.block.ref} in plan ${systemId}`);
86
92
  }
87
- const kindUri = parseKapetaUri(blockResource.kind);
93
+ const kindUri = (0, nodejs_utils_1.parseKapetaUri)(blockResource.kind);
88
94
  const operator = this.getOperator(resourceType, kindUri.version);
89
95
  const credentials = operator.getCredentials();
90
96
  const container = await this.ensureResource(systemId, resourceType, kindUri.version);
@@ -113,7 +119,7 @@ class OperatorManager {
113
119
  * @return {Promise<ContainerInfo>}
114
120
  */
115
121
  async ensureResource(systemId, resourceType, version) {
116
- systemId = normalizeKapetaUri(systemId);
122
+ systemId = (0, utils_1.normalizeKapetaUri)(systemId);
117
123
  const key = `${systemId}#${resourceType}:${version}`;
118
124
  return await this.operatorLock.acquire(key, async () => {
119
125
  const operator = this.getOperator(resourceType, version);
@@ -124,7 +130,7 @@ class OperatorManager {
124
130
  for (let i = 0; i < portTypes.length; i++) {
125
131
  const portType = portTypes[i];
126
132
  let containerPortInfo = operatorData.ports[portType];
127
- const hostPort = await serviceManager.ensureServicePort(systemId, resourceType, portType);
133
+ const hostPort = await serviceManager_1.serviceManager.ensureServicePort(systemId, resourceType, portType);
128
134
  if (typeof containerPortInfo === 'number' || typeof containerPortInfo === 'string') {
129
135
  containerPortInfo = { port: containerPortInfo, type: 'tcp' };
130
136
  }
@@ -137,18 +143,18 @@ class OperatorManager {
137
143
  hostPort,
138
144
  };
139
145
  }
140
- const mounts = await containerManager.createMounts(systemId, resourceType, operatorData.mounts);
146
+ const mounts = await containerManager_1.containerManager.createMounts(systemId, resourceType, operatorData.mounts);
141
147
  const nameParts = [systemId, resourceType.toLowerCase(), version];
142
- const containerName = `kapeta-resource-${md5(nameParts.join('_'))}`;
148
+ const containerName = `kapeta-resource-${(0, md5_1.default)(nameParts.join('_'))}`;
143
149
  const PortBindings = {};
144
150
  const Env = [];
145
151
  const Labels = {
146
152
  kapeta: 'true',
147
153
  };
148
154
  const operatorMetadata = operator.getDefinitionInfo().definition.metadata;
149
- const bindHost = getBindHost();
155
+ const bindHost = (0, utils_1.getBindHost)();
150
156
  const ExposedPorts = {};
151
- _.forEach(ports, (portInfo, containerPort) => {
157
+ lodash_1.default.forEach(ports, (portInfo, containerPort) => {
152
158
  ExposedPorts['' + containerPort] = {};
153
159
  PortBindings['' + containerPort] = [
154
160
  {
@@ -156,18 +162,18 @@ class OperatorManager {
156
162
  HostIp: bindHost,
157
163
  },
158
164
  ];
159
- Labels[CONTAINER_LABEL_PORT_PREFIX + portInfo.hostPort] = portInfo.type;
165
+ Labels[containerManager_1.CONTAINER_LABEL_PORT_PREFIX + portInfo.hostPort] = portInfo.type;
160
166
  });
161
- const Mounts = containerManager.toDockerMounts(mounts);
162
- _.forEach(operatorData.env, (value, name) => {
167
+ const Mounts = containerManager_1.containerManager.toDockerMounts(mounts);
168
+ lodash_1.default.forEach(operatorData.env, (value, name) => {
163
169
  Env.push(name + '=' + value);
164
170
  });
165
- const task = taskManager.add(`operator:ensure:${key}`, async () => {
171
+ const task = taskManager_1.taskManager.add(`operator:ensure:${key}`, async () => {
166
172
  let HealthCheck = undefined;
167
173
  if (operatorData.health) {
168
- HealthCheck = containerManager.toDockerHealth(operatorData.health);
174
+ HealthCheck = containerManager_1.containerManager.toDockerHealth(operatorData.health);
169
175
  }
170
- const container = await containerManager.ensureContainer({
176
+ const container = await containerManager_1.containerManager.ensureContainer({
171
177
  name: containerName,
172
178
  Image: operatorData.image,
173
179
  Hostname: containerName + '.kapeta',
@@ -181,8 +187,8 @@ class OperatorManager {
181
187
  Mounts,
182
188
  },
183
189
  });
184
- await containerManager.waitForReady(container);
185
- return new ContainerInfo(container);
190
+ await containerManager_1.containerManager.waitForReady(container);
191
+ return new containerManager_1.ContainerInfo(container);
186
192
  }, {
187
193
  name: `Ensuring ${operatorMetadata.title ?? operatorMetadata.name}`,
188
194
  systemId,
@@ -191,4 +197,4 @@ class OperatorManager {
191
197
  });
192
198
  }
193
199
  }
194
- export const operatorManager = new OperatorManager();
200
+ exports.operatorManager = new OperatorManager();
@@ -1,7 +1,10 @@
1
- import { spawn } from '@kapeta/nodejs-process';
2
- import { socketManager } from './socketManager';
3
- import { format } from 'node:util';
4
- export class ProgressListener {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProgressListener = void 0;
4
+ const nodejs_process_1 = require("@kapeta/nodejs-process");
5
+ const socketManager_1 = require("./socketManager");
6
+ const node_util_1 = require("node:util");
7
+ class ProgressListener {
5
8
  systemId;
6
9
  instanceId;
7
10
  constructor(systemId, instanceId) {
@@ -15,21 +18,21 @@ export class ProgressListener {
15
18
  time: Date.now(),
16
19
  };
17
20
  if (this.systemId && this.instanceId) {
18
- socketManager.emitInstanceLog(this.systemId, this.instanceId, logEntry);
21
+ socketManager_1.socketManager.emitInstanceLog(this.systemId, this.instanceId, logEntry);
19
22
  return;
20
23
  }
21
24
  if (this.systemId) {
22
- socketManager.emitSystemLog(this.systemId, logEntry);
25
+ socketManager_1.socketManager.emitSystemLog(this.systemId, logEntry);
23
26
  return;
24
27
  }
25
- socketManager.emitGlobalLog(logEntry);
28
+ socketManager_1.socketManager.emitGlobalLog(logEntry);
26
29
  }
27
30
  run(command, directory) {
28
31
  this.info(`Running command "${command}"`);
29
32
  return new Promise(async (resolve, reject) => {
30
33
  try {
31
34
  const chunks = [];
32
- const child = spawn(command, [], {
35
+ const child = (0, nodejs_process_1.spawn)(command, [], {
33
36
  cwd: directory ? directory : process.cwd(),
34
37
  shell: true,
35
38
  });
@@ -89,26 +92,27 @@ export class ProgressListener {
89
92
  }
90
93
  error(msg, ...args) {
91
94
  this.emitLog({
92
- message: format(msg, args),
95
+ message: (0, node_util_1.format)(msg, args),
93
96
  level: 'ERROR',
94
97
  });
95
98
  }
96
99
  warn(msg, ...args) {
97
100
  this.emitLog({
98
- message: format(msg, args),
101
+ message: (0, node_util_1.format)(msg, args),
99
102
  level: 'WARN',
100
103
  });
101
104
  }
102
105
  info(msg, ...args) {
103
106
  this.emitLog({
104
- message: format(msg, args),
107
+ message: (0, node_util_1.format)(msg, args),
105
108
  level: 'INFO',
106
109
  });
107
110
  }
108
111
  debug(msg, ...args) {
109
112
  this.emitLog({
110
- message: format(msg, args),
113
+ message: (0, node_util_1.format)(msg, args),
111
114
  level: 'DEBUG',
112
115
  });
113
116
  }
114
117
  }
118
+ exports.ProgressListener = ProgressListener;
@@ -1,30 +1,36 @@
1
- import Path from 'path';
2
- import FSExtra from 'fs-extra';
3
- import { definitionsManager } from './definitionsManager';
4
- import { cacheManager } from './cacheManager';
5
- import request from 'request';
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.providerManager = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_extra_1 = __importDefault(require("fs-extra"));
9
+ const definitionsManager_1 = require("./definitionsManager");
10
+ const cacheManager_1 = require("./cacheManager");
11
+ const request_1 = __importDefault(require("request"));
6
12
  const PROVIDER_FILE_BASE = 'https://providers.kapeta.com/files';
7
13
  class ProviderManager {
8
14
  getWebProviders() {
9
- return definitionsManager.getProviderDefinitions().filter((providerDefinition) => providerDefinition.hasWeb);
15
+ return definitionsManager_1.definitionsManager.getProviderDefinitions().filter((providerDefinition) => providerDefinition.hasWeb);
10
16
  }
11
17
  async getProviderWebJS(handle, name, version, sourceMap = false) {
12
18
  const fullName = `${handle}/${name}`;
13
19
  const id = `${handle}/${name}/${version}/web.js${sourceMap ? '.map' : ''}`;
14
20
  const cacheKey = `provider:web:${id}`;
15
- const file = cacheManager.get(cacheKey);
16
- if (file && (await FSExtra.pathExists(file))) {
17
- return FSExtra.readFile(file, 'utf8');
21
+ const file = cacheManager_1.cacheManager.get(cacheKey);
22
+ if (file && (await fs_extra_1.default.pathExists(file))) {
23
+ return fs_extra_1.default.readFile(file, 'utf8');
18
24
  }
19
25
  const installedProvider = this.getWebProviders().find((providerDefinition) => {
20
26
  return providerDefinition.definition.metadata.name === fullName && providerDefinition.version === version;
21
27
  });
22
28
  if (installedProvider) {
23
29
  //Check locally installed providers
24
- const path = Path.join(installedProvider.path, 'web', handle, `${name}.js${sourceMap ? '.map' : ''}`);
25
- if (await FSExtra.pathExists(path)) {
26
- cacheManager.set(cacheKey, path, 24 * 60 * 60 * 1000);
27
- return FSExtra.readFile(path);
30
+ const path = path_1.default.join(installedProvider.path, 'web', handle, `${name}.js${sourceMap ? '.map' : ''}`);
31
+ if (await fs_extra_1.default.pathExists(path)) {
32
+ cacheManager_1.cacheManager.set(cacheKey, path, 24 * 60 * 60 * 1000);
33
+ return fs_extra_1.default.readFile(path);
28
34
  }
29
35
  }
30
36
  if (version === 'local') {
@@ -33,7 +39,7 @@ class ProviderManager {
33
39
  const url = `${PROVIDER_FILE_BASE}/${id}`;
34
40
  return new Promise((resolve, reject) => {
35
41
  console.log('Loading provider from %s', url);
36
- request.get(url, (error, response, body) => {
42
+ request_1.default.get(url, (error, response, body) => {
37
43
  if (error) {
38
44
  reject(error);
39
45
  return;
@@ -51,7 +57,7 @@ class ProviderManager {
51
57
  });
52
58
  }
53
59
  }
54
- const providerDefinitions = definitionsManager.getProviderDefinitions();
60
+ const providerDefinitions = definitionsManager_1.definitionsManager.getProviderDefinitions();
55
61
  if (providerDefinitions.length > 0) {
56
62
  console.log('## Loaded the following providers ##');
57
63
  providerDefinitions.forEach((providerDefinition) => {
@@ -63,4 +69,4 @@ if (providerDefinitions.length > 0) {
63
69
  else {
64
70
  console.log('## No providers found ##');
65
71
  }
66
- export const providerManager = new ProviderManager();
72
+ exports.providerManager = new ProviderManager();