@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.
- 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 +14 -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/dist/esm/src/config/routes.js +121 -0
- 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 +94 -175
- 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/config/routes.js +0 -160
- 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,49 +1,36 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
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 =
|
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 {};
|