@kapeta/local-cluster-service 0.6.0 → 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.
Files changed (193) 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 +215 -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/dist/esm/src/config/routes.js +121 -0
  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 +94 -175
  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 +209 -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} +45 -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/config/routes.js +0 -160
  188. package/src/filesystem/routes.js +0 -74
  189. package/src/identities/routes.js +0 -19
  190. package/src/progressListener.js +0 -82
  191. package/src/proxy/routes.js +0 -126
  192. package/src/utils/utils.js +0 -13
  193. package/start.js +0 -7
@@ -1,49 +1,36 @@
1
- const _ = require('lodash');
2
- const storageService = require('./storageService');
3
- const assetManager = require('./assetManager');
4
- const {parseKapetaUri} = require("@kapeta/nodejs-utils");
5
-
1
+ import { storageService } from './storageService';
2
+ import { assetManager } from './assetManager';
3
+ import { parseKapetaUri } from '@kapeta/nodejs-utils';
6
4
  class ConfigManager {
7
-
5
+ _config;
8
6
  constructor() {
9
7
  this._config = storageService.section('config');
10
8
  }
11
-
12
9
  _forSystem(systemId) {
13
10
  if (!this._config[systemId]) {
14
11
  this._config[systemId] = {};
15
12
  }
16
-
17
13
  return this._config[systemId];
18
14
  }
19
-
20
15
  setConfigForSystem(systemId, config) {
21
16
  const systemConfig = config || {};
22
-
23
17
  storageService.put('config', systemId, systemConfig);
24
18
  }
25
-
26
19
  getConfigForSystem(systemId) {
27
20
  return this._forSystem(systemId);
28
21
  }
29
-
30
22
  setConfigForSection(systemId, sectionId, config) {
31
23
  let systemConfig = this._forSystem(systemId);
32
24
  systemConfig[sectionId] = config || {};
33
-
34
25
  storageService.put('config', systemId, systemConfig);
35
26
  }
36
-
37
27
  getConfigForSection(systemId, sectionId) {
38
28
  const systemConfig = this._forSystem(systemId);
39
-
40
29
  if (!systemConfig[sectionId]) {
41
30
  systemConfig[sectionId] = {};
42
31
  }
43
-
44
32
  return systemConfig[sectionId];
45
33
  }
46
-
47
34
  /**
48
35
  * Try to identify the plan and instance in a plan automatically based on the block reference
49
36
  *
@@ -62,75 +49,59 @@ class ConfigManager {
62
49
  */
63
50
  async resolveIdentity(blockRef, systemId) {
64
51
  const planAssets = assetManager.getPlans();
65
-
66
52
  const blockUri = parseKapetaUri(blockRef);
67
-
68
53
  let matchingIdentities = [];
69
54
  planAssets.forEach((planAsset) => {
70
55
  if (systemId && planAsset.ref !== systemId) {
71
56
  //Skip plans that do not match systemid if provided
72
57
  return;
73
58
  }
74
-
75
59
  if (!planAsset.data.spec.blocks) {
76
60
  return;
77
61
  }
78
-
79
62
  planAsset.data.spec.blocks.forEach((blockInstance) => {
80
63
  const refUri = parseKapetaUri(blockInstance.block.ref);
81
64
  if (refUri.equals(blockUri)) {
82
65
  matchingIdentities.push({
83
66
  systemId: planAsset.ref,
84
- instanceId: blockInstance.id
67
+ instanceId: blockInstance.id,
85
68
  });
86
69
  }
87
70
  });
88
71
  });
89
-
90
72
  if (matchingIdentities.length === 0) {
91
73
  if (systemId) {
92
- throw new Error(`No uses of block "${blockRef}" was found in plan: "${systemId}"`)
74
+ throw new Error(`No uses of block "${blockRef}" was found in plan: "${systemId}"`);
93
75
  }
94
-
95
76
  throw new Error(`No uses of block "${blockRef}" was found in any known plan`);
96
77
  }
97
-
98
78
  if (matchingIdentities.length > 1) {
99
79
  if (systemId) {
100
- throw new Error(`Multiple uses of block "${blockRef}" was found in plan: "${systemId}". Please specify which instance in the plan you wish to run.`)
80
+ throw new Error(`Multiple uses of block "${blockRef}" was found in plan: "${systemId}". Please specify which instance in the plan you wish to run.`);
101
81
  }
102
-
103
82
  throw new Error(`Multiple uses of block "${blockRef}" was found in 1 or more plan. Please specify which instance in which plan you wish to run.`);
104
83
  }
105
-
106
-
107
84
  return matchingIdentities[0];
108
85
  }
109
-
110
86
  async verifyIdentity(blockRef, systemId, instanceId) {
111
- const planAssets = await assetManager.getPlans();
87
+ const planAssets = assetManager.getPlans();
112
88
  const systemUri = systemId ? parseKapetaUri(systemId) : null;
113
89
  const blockUri = parseKapetaUri(blockRef);
114
90
  let found = false;
115
91
  planAssets.forEach((planAsset) => {
116
- if (systemUri &&
117
- !parseKapetaUri(planAsset.ref).equals(systemUri)) {
92
+ if (systemUri && !parseKapetaUri(planAsset.ref).equals(systemUri)) {
118
93
  //Skip plans that do not match systemid if provided
119
94
  return;
120
95
  }
121
-
122
96
  planAsset.data.spec.blocks.forEach((blockInstance) => {
123
- if (blockInstance.id === instanceId &&
124
- parseKapetaUri(blockInstance.block.ref).equals(blockUri)) {
97
+ if (blockInstance.id === instanceId && parseKapetaUri(blockInstance.block.ref).equals(blockUri)) {
125
98
  found = true;
126
99
  }
127
100
  });
128
101
  });
129
-
130
102
  if (!found) {
131
103
  throw new Error(`Block "${blockRef}" was not found in plan: "${systemId}" using instance id ${instanceId}. Please verify that the provided information is accurate.`);
132
104
  }
133
105
  }
134
106
  }
135
-
136
- module.exports = new ConfigManager();
107
+ export const configManager = new ConfigManager();
@@ -0,0 +1,89 @@
1
+ import { Docker } from 'node-docker-api';
2
+ import { Container } from 'node-docker-api/lib/container';
3
+ type StringMap = {
4
+ [key: string]: string;
5
+ };
6
+ export type PortMap = {
7
+ [key: string]: {
8
+ containerPort: string;
9
+ protocol: string;
10
+ hostPort: string;
11
+ };
12
+ };
13
+ export interface DockerMounts {
14
+ Target: string;
15
+ Source: string;
16
+ Type: string;
17
+ ReadOnly: boolean;
18
+ Consistency: string;
19
+ }
20
+ interface Health {
21
+ cmd: string;
22
+ interval?: number;
23
+ timeout?: number;
24
+ retries?: number;
25
+ }
26
+ declare class ContainerManager {
27
+ private _docker;
28
+ private _alive;
29
+ private _mountDir;
30
+ constructor();
31
+ initialize(): Promise<void>;
32
+ isAlive(): boolean;
33
+ getMountPoint(kind: string, mountName: string): string;
34
+ createMounts(kind: string, mountOpts: StringMap): StringMap;
35
+ ping(): Promise<void>;
36
+ docker(): Docker;
37
+ getContainerByName(containerName: string): Promise<Container | undefined>;
38
+ pull(image: string, cacheForMS?: number): Promise<void>;
39
+ toDockerMounts(mounts: StringMap): DockerMounts[];
40
+ toDockerHealth(health: Health): {
41
+ Test: string[];
42
+ Interval: number;
43
+ Timeout: number;
44
+ Retries: number;
45
+ };
46
+ run(image: string, name: string, opts: {
47
+ ports: {};
48
+ mounts: {};
49
+ env: {};
50
+ cmd: string;
51
+ health: Health;
52
+ }): Promise<ContainerInfo>;
53
+ startContainer(opts: any): Promise<Container>;
54
+ waitForReady(container: Container, attempt?: number): Promise<void>;
55
+ waitForHealthy(container: Container, attempt?: number): Promise<void>;
56
+ _isReady(container: Container): Promise<any>;
57
+ _isHealthy(container: Container): Promise<boolean>;
58
+ /**
59
+ *
60
+ * @param name
61
+ * @return {Promise<ContainerInfo>}
62
+ */
63
+ get(name: string): Promise<ContainerInfo | null>;
64
+ }
65
+ export declare class ContainerInfo {
66
+ private readonly _container;
67
+ /**
68
+ *
69
+ * @param {Container} dockerContainer
70
+ */
71
+ constructor(dockerContainer: Container);
72
+ get native(): Container;
73
+ isRunning(): Promise<any>;
74
+ start(): Promise<void>;
75
+ restart(): Promise<void>;
76
+ stop(): Promise<void>;
77
+ remove(opts?: {
78
+ force?: boolean;
79
+ }): Promise<void>;
80
+ getPort(type: string): Promise<{
81
+ containerPort: string;
82
+ protocol: string;
83
+ hostPort: string;
84
+ } | null>;
85
+ getStatus(): Promise<any>;
86
+ getPorts(): Promise<PortMap | false>;
87
+ }
88
+ export declare const containerManager: ContainerManager;
89
+ export {};