plugin-cluster-manager 1.0.13 → 1.1.5

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 (74) hide show
  1. package/dist/client/index.js +10 -1
  2. package/dist/externalVersion.js +9 -0
  3. package/dist/index.js +9 -0
  4. package/dist/server/actions/acl-cache.js +9 -0
  5. package/dist/server/actions/cache-monitor.js +9 -0
  6. package/dist/server/actions/cluster-nodes.js +9 -0
  7. package/dist/server/actions/event-queue-monitor.js +9 -0
  8. package/dist/server/actions/lock-monitor.js +9 -0
  9. package/dist/server/actions/orchestrator.d.ts +5 -0
  10. package/dist/server/actions/orchestrator.js +28 -0
  11. package/dist/server/actions/package-manager.js +9 -0
  12. package/dist/server/actions/redis-monitor.js +9 -0
  13. package/dist/server/actions/tasks.js +9 -0
  14. package/dist/server/actions/workflow-executions.js +9 -0
  15. package/dist/server/adapters/redis-lock-adapter.js +9 -0
  16. package/dist/server/adapters/redis-node-registry.js +9 -0
  17. package/dist/server/adapters/redis-pubsub-adapter.js +9 -0
  18. package/dist/server/collections/app.d.ts +8 -0
  19. package/dist/server/collections/app.js +38 -0
  20. package/dist/server/collections/cluster-manager-acl-cache.d.ts +22 -0
  21. package/dist/server/collections/cluster-manager-acl-cache.js +44 -0
  22. package/dist/server/collections/cluster-manager-cache-mgr.d.ts +22 -0
  23. package/dist/server/collections/cluster-manager-cache-mgr.js +44 -0
  24. package/dist/server/collections/cluster-manager-cluster.d.ts +22 -0
  25. package/dist/server/collections/cluster-manager-cluster.js +44 -0
  26. package/dist/server/collections/cluster-manager-lock.d.ts +22 -0
  27. package/dist/server/collections/cluster-manager-lock.js +44 -0
  28. package/dist/server/collections/cluster-manager-queue.d.ts +22 -0
  29. package/dist/server/collections/cluster-manager-queue.js +44 -0
  30. package/dist/server/collections/cluster-manager-redis.d.ts +22 -0
  31. package/dist/server/collections/cluster-manager-redis.js +44 -0
  32. package/dist/server/collections/cluster-manager-workflow.d.ts +22 -0
  33. package/dist/server/collections/cluster-manager-workflow.js +44 -0
  34. package/dist/server/collections/cluster-manager.d.ts +22 -0
  35. package/dist/server/collections/cluster-manager.js +44 -0
  36. package/dist/server/collections/orchestrator-settings.js +9 -0
  37. package/dist/server/collections/orchestrator-stacks.js +9 -0
  38. package/dist/server/collections/worker-orchestrator.d.ts +22 -0
  39. package/dist/server/collections/worker-orchestrator.js +44 -0
  40. package/dist/server/collections/worker-packages-configs.js +9 -0
  41. package/dist/server/collections/worker-packages.d.ts +22 -0
  42. package/dist/server/collections/worker-packages.js +44 -0
  43. package/dist/server/index.js +9 -0
  44. package/dist/server/orchestrator/PackageManager.js +10 -1
  45. package/dist/server/orchestrator/docker-adapter.d.ts +4 -0
  46. package/dist/server/orchestrator/docker-adapter.js +28 -6
  47. package/dist/server/orchestrator/index.js +9 -0
  48. package/dist/server/orchestrator/k8s-adapter.js +9 -0
  49. package/dist/server/orchestrator/leader-election.js +9 -0
  50. package/dist/server/orchestrator/types.d.ts +5 -0
  51. package/dist/server/orchestrator/types.js +9 -0
  52. package/dist/server/plugin.js +10 -1
  53. package/dist/server/utils/node.js +9 -0
  54. package/dist/server/utils/redis.js +9 -0
  55. package/dist/shared/packages.js +9 -0
  56. package/package.json +1 -1
  57. package/src/client/ContainerOrchestrator.tsx +38 -3
  58. package/src/client/PackageInstaller.tsx +1 -1
  59. package/src/server/actions/orchestrator.ts +20 -0
  60. package/src/server/collections/app.ts +7 -0
  61. package/src/server/collections/cluster-manager-acl-cache.ts +23 -0
  62. package/src/server/collections/cluster-manager-cache-mgr.ts +23 -0
  63. package/src/server/collections/cluster-manager-cluster.ts +23 -0
  64. package/src/server/collections/cluster-manager-lock.ts +23 -0
  65. package/src/server/collections/cluster-manager-queue.ts +23 -0
  66. package/src/server/collections/cluster-manager-redis.ts +23 -0
  67. package/src/server/collections/cluster-manager-workflow.ts +23 -0
  68. package/src/server/collections/cluster-manager.ts +23 -0
  69. package/src/server/collections/worker-orchestrator.ts +23 -0
  70. package/src/server/collections/worker-packages.ts +23 -0
  71. package/src/server/orchestrator/PackageManager.ts +2 -2
  72. package/src/server/orchestrator/docker-adapter.ts +25 -9
  73. package/src/server/orchestrator/types.ts +3 -0
  74. package/src/server/plugin.ts +1 -1
@@ -0,0 +1,44 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
10
+ var __defProp = Object.defineProperty;
11
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
+ var __getOwnPropNames = Object.getOwnPropertyNames;
13
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
14
+ var __export = (target, all) => {
15
+ for (var name in all)
16
+ __defProp(target, name, { get: all[name], enumerable: true });
17
+ };
18
+ var __copyProps = (to, from, except, desc) => {
19
+ if (from && typeof from === "object" || typeof from === "function") {
20
+ for (let key of __getOwnPropNames(from))
21
+ if (!__hasOwnProp.call(to, key) && key !== except)
22
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
23
+ }
24
+ return to;
25
+ };
26
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
27
+ var cluster_manager_redis_exports = {};
28
+ __export(cluster_manager_redis_exports, {
29
+ default: () => cluster_manager_redis_default
30
+ });
31
+ module.exports = __toCommonJS(cluster_manager_redis_exports);
32
+ var cluster_manager_redis_default = {
33
+ name: "clusterManagerRedis",
34
+ dumpRules: "skip",
35
+ autoGenId: true,
36
+ createdAt: false,
37
+ updatedAt: false,
38
+ fields: [
39
+ {
40
+ name: "name",
41
+ type: "string"
42
+ }
43
+ ]
44
+ };
@@ -0,0 +1,22 @@
1
+ /**
2
+ * DUMMY COLLECTION
3
+ * This collection is created to prevent NocoBase workflow/ACL from throwing the error:
4
+ * '[Workflow pre-action]: collection "clusterManagerWorkflow" not found'
5
+ *
6
+ * Since 'clusterManagerWorkflow' is registered as a resourcer in plugin.ts, NocoBase
7
+ * implicitly looks for a collection with the same name.
8
+ * We set dumpRules: 'skip' and avoid timestamps to ensure this collection
9
+ * is completely ignored during backups/migrations and doesn't pollute the actual DB.
10
+ */
11
+ declare const _default: {
12
+ name: string;
13
+ dumpRules: string;
14
+ autoGenId: boolean;
15
+ createdAt: boolean;
16
+ updatedAt: boolean;
17
+ fields: {
18
+ name: string;
19
+ type: string;
20
+ }[];
21
+ };
22
+ export default _default;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
10
+ var __defProp = Object.defineProperty;
11
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
+ var __getOwnPropNames = Object.getOwnPropertyNames;
13
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
14
+ var __export = (target, all) => {
15
+ for (var name in all)
16
+ __defProp(target, name, { get: all[name], enumerable: true });
17
+ };
18
+ var __copyProps = (to, from, except, desc) => {
19
+ if (from && typeof from === "object" || typeof from === "function") {
20
+ for (let key of __getOwnPropNames(from))
21
+ if (!__hasOwnProp.call(to, key) && key !== except)
22
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
23
+ }
24
+ return to;
25
+ };
26
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
27
+ var cluster_manager_workflow_exports = {};
28
+ __export(cluster_manager_workflow_exports, {
29
+ default: () => cluster_manager_workflow_default
30
+ });
31
+ module.exports = __toCommonJS(cluster_manager_workflow_exports);
32
+ var cluster_manager_workflow_default = {
33
+ name: "clusterManagerWorkflow",
34
+ dumpRules: "skip",
35
+ autoGenId: true,
36
+ createdAt: false,
37
+ updatedAt: false,
38
+ fields: [
39
+ {
40
+ name: "name",
41
+ type: "string"
42
+ }
43
+ ]
44
+ };
@@ -0,0 +1,22 @@
1
+ /**
2
+ * DUMMY COLLECTION
3
+ * This collection is created to prevent NocoBase workflow/ACL from throwing the error:
4
+ * '[Workflow pre-action]: collection "clusterManager" not found'
5
+ *
6
+ * Since 'clusterManager' is registered as a resourcer in plugin.ts, NocoBase
7
+ * implicitly looks for a collection with the same name.
8
+ * We set dumpRules: 'skip' and avoid timestamps to ensure this collection
9
+ * is completely ignored during backups/migrations and doesn't pollute the actual DB.
10
+ */
11
+ declare const _default: {
12
+ name: string;
13
+ dumpRules: string;
14
+ autoGenId: boolean;
15
+ createdAt: boolean;
16
+ updatedAt: boolean;
17
+ fields: {
18
+ name: string;
19
+ type: string;
20
+ }[];
21
+ };
22
+ export default _default;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
10
+ var __defProp = Object.defineProperty;
11
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
+ var __getOwnPropNames = Object.getOwnPropertyNames;
13
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
14
+ var __export = (target, all) => {
15
+ for (var name in all)
16
+ __defProp(target, name, { get: all[name], enumerable: true });
17
+ };
18
+ var __copyProps = (to, from, except, desc) => {
19
+ if (from && typeof from === "object" || typeof from === "function") {
20
+ for (let key of __getOwnPropNames(from))
21
+ if (!__hasOwnProp.call(to, key) && key !== except)
22
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
23
+ }
24
+ return to;
25
+ };
26
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
27
+ var cluster_manager_exports = {};
28
+ __export(cluster_manager_exports, {
29
+ default: () => cluster_manager_default
30
+ });
31
+ module.exports = __toCommonJS(cluster_manager_exports);
32
+ var cluster_manager_default = {
33
+ name: "clusterManager",
34
+ dumpRules: "skip",
35
+ autoGenId: true,
36
+ createdAt: false,
37
+ updatedAt: false,
38
+ fields: [
39
+ {
40
+ name: "name",
41
+ type: "string"
42
+ }
43
+ ]
44
+ };
@@ -1,3 +1,12 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
1
10
  var __defProp = Object.defineProperty;
2
11
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
12
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,3 +1,12 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
1
10
  var __defProp = Object.defineProperty;
2
11
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
12
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * DUMMY COLLECTION
3
+ * This collection is created to prevent NocoBase workflow/ACL from throwing the error:
4
+ * '[Workflow pre-action]: collection "workerOrchestrator" not found'
5
+ *
6
+ * Since 'workerOrchestrator' is registered as a resourcer in plugin.ts, NocoBase
7
+ * implicitly looks for a collection with the same name.
8
+ * We set dumpRules: 'skip' and avoid timestamps to ensure this collection
9
+ * is completely ignored during backups/migrations and doesn't pollute the actual DB.
10
+ */
11
+ declare const _default: {
12
+ name: string;
13
+ dumpRules: string;
14
+ autoGenId: boolean;
15
+ createdAt: boolean;
16
+ updatedAt: boolean;
17
+ fields: {
18
+ name: string;
19
+ type: string;
20
+ }[];
21
+ };
22
+ export default _default;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
10
+ var __defProp = Object.defineProperty;
11
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
+ var __getOwnPropNames = Object.getOwnPropertyNames;
13
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
14
+ var __export = (target, all) => {
15
+ for (var name in all)
16
+ __defProp(target, name, { get: all[name], enumerable: true });
17
+ };
18
+ var __copyProps = (to, from, except, desc) => {
19
+ if (from && typeof from === "object" || typeof from === "function") {
20
+ for (let key of __getOwnPropNames(from))
21
+ if (!__hasOwnProp.call(to, key) && key !== except)
22
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
23
+ }
24
+ return to;
25
+ };
26
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
27
+ var worker_orchestrator_exports = {};
28
+ __export(worker_orchestrator_exports, {
29
+ default: () => worker_orchestrator_default
30
+ });
31
+ module.exports = __toCommonJS(worker_orchestrator_exports);
32
+ var worker_orchestrator_default = {
33
+ name: "workerOrchestrator",
34
+ dumpRules: "skip",
35
+ autoGenId: true,
36
+ createdAt: false,
37
+ updatedAt: false,
38
+ fields: [
39
+ {
40
+ name: "name",
41
+ type: "string"
42
+ }
43
+ ]
44
+ };
@@ -1,3 +1,12 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
1
10
  var __defProp = Object.defineProperty;
2
11
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
12
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * DUMMY COLLECTION
3
+ * This collection is created to prevent NocoBase workflow/ACL from throwing the error:
4
+ * '[Workflow pre-action]: collection "workerPackages" not found'
5
+ *
6
+ * Since 'workerPackages' is registered as a resourcer in plugin.ts, NocoBase
7
+ * implicitly looks for a collection with the same name.
8
+ * We set dumpRules: 'skip' and avoid timestamps to ensure this collection
9
+ * is completely ignored during backups/migrations and doesn't pollute the actual DB.
10
+ */
11
+ declare const _default: {
12
+ name: string;
13
+ dumpRules: string;
14
+ autoGenId: boolean;
15
+ createdAt: boolean;
16
+ updatedAt: boolean;
17
+ fields: {
18
+ name: string;
19
+ type: string;
20
+ }[];
21
+ };
22
+ export default _default;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
10
+ var __defProp = Object.defineProperty;
11
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
+ var __getOwnPropNames = Object.getOwnPropertyNames;
13
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
14
+ var __export = (target, all) => {
15
+ for (var name in all)
16
+ __defProp(target, name, { get: all[name], enumerable: true });
17
+ };
18
+ var __copyProps = (to, from, except, desc) => {
19
+ if (from && typeof from === "object" || typeof from === "function") {
20
+ for (let key of __getOwnPropNames(from))
21
+ if (!__hasOwnProp.call(to, key) && key !== except)
22
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
23
+ }
24
+ return to;
25
+ };
26
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
27
+ var worker_packages_exports = {};
28
+ __export(worker_packages_exports, {
29
+ default: () => worker_packages_default
30
+ });
31
+ module.exports = __toCommonJS(worker_packages_exports);
32
+ var worker_packages_default = {
33
+ name: "workerPackages",
34
+ dumpRules: "skip",
35
+ autoGenId: true,
36
+ createdAt: false,
37
+ updatedAt: false,
38
+ fields: [
39
+ {
40
+ name: "name",
41
+ type: "string"
42
+ }
43
+ ]
44
+ };
@@ -1,3 +1,12 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
1
10
  var __create = Object.create;
2
11
  var __defProp = Object.defineProperty;
3
12
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -1,3 +1,12 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
1
10
  var __create = Object.create;
2
11
  var __defProp = Object.defineProperty;
3
12
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -34,7 +43,7 @@ var import_child_process = require("child_process");
34
43
  var import_redis = require("../utils/redis");
35
44
  var import_fs = require("fs");
36
45
  var import_path = __toESM(require("path"));
37
- const SAFE_PKG_RE = /^[a-zA-Z0-9_\-\.@\/]+$/;
46
+ const SAFE_PKG_RE = /^[a-zA-Z0-9_\-\.@\/\[\]]+$/;
38
47
  const INSTALL_CHANNEL = "cluster-manager.install-packages";
39
48
  function sanitizePkg(name) {
40
49
  if (typeof name !== "string") {
@@ -27,6 +27,10 @@ export declare class DockerAdapter implements IOrchestratorAdapter {
27
27
  removeContainer(containerId: string): Promise<void>;
28
28
  getStats(containerId: string): Promise<ContainerStats>;
29
29
  getLogs(containerId: string, tail?: number): Promise<string>;
30
+ listNetworks(): Promise<{
31
+ id: string;
32
+ name: string;
33
+ }[]>;
30
34
  private mapState;
31
35
  private buildEnvArray;
32
36
  private buildLabelFilters;
@@ -1,3 +1,12 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
1
10
  var __defProp = Object.defineProperty;
2
11
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
12
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -111,10 +120,10 @@ class DockerAdapter {
111
120
  const myContainerId = os.hostname();
112
121
  const myContainer = this.docker.getContainer(myContainerId);
113
122
  const myInfo = await myContainer.inspect();
114
- if (!targetNetworkMode && targetNetworks.length === 0) {
115
- if ((_a = myInfo == null ? void 0 : myInfo.NetworkSettings) == null ? void 0 : _a.Networks) {
116
- targetNetworks = Object.keys(myInfo.NetworkSettings.Networks);
117
- }
123
+ if ((_a = myInfo == null ? void 0 : myInfo.NetworkSettings) == null ? void 0 : _a.Networks) {
124
+ const inheritedNetworks = Object.keys(myInfo.NetworkSettings.Networks);
125
+ targetNetworks = Array.from(/* @__PURE__ */ new Set([...inheritedNetworks, ...targetNetworks]));
126
+ console.log("[DockerAdapter] Inherited networks:", targetNetworks);
118
127
  }
119
128
  if ((_b = myInfo == null ? void 0 : myInfo.Config) == null ? void 0 : _b.Env) {
120
129
  const envDict = {};
@@ -132,6 +141,11 @@ class DockerAdapter {
132
141
  targetVolumes = Array.from(/* @__PURE__ */ new Set([...inheritedBinds, ...targetVolumes]));
133
142
  }
134
143
  } catch (e) {
144
+ console.error("[DockerAdapter] Failed to inherit container config:", e.message);
145
+ }
146
+ const hasLoggerBase = targetEnvVars.some((e) => e.startsWith("LOGGER_BASE_PATH="));
147
+ if (!hasLoggerBase) {
148
+ targetEnvVars.push(`LOGGER_BASE_PATH=/app/nocobase/storage/logs/${stack.name}`);
135
149
  }
136
150
  for (let i = 0; i < diff; i++) {
137
151
  const suffix = `${Date.now()}-${Math.random().toString(36).substring(2, 6)}`;
@@ -163,8 +177,9 @@ class DockerAdapter {
163
177
  }
164
178
  createOpts.HostConfig.SecurityOpt = ["no-new-privileges:true"];
165
179
  const container = await this.docker.createContainer(createOpts);
166
- if (!targetNetworkMode && targetNetworks.length > 1) {
167
- for (let i2 = 1; i2 < targetNetworks.length; i2++) {
180
+ if (targetNetworks.length > 0) {
181
+ const startIndex = targetNetworkMode ? 0 : 1;
182
+ for (let i2 = startIndex; i2 < targetNetworks.length; i2++) {
168
183
  try {
169
184
  const net = this.docker.getNetwork(targetNetworks[i2]);
170
185
  await net.connect({ Container: container.id });
@@ -245,6 +260,13 @@ class DockerAdapter {
245
260
  });
246
261
  return this.demuxDockerLogs(logBuffer);
247
262
  }
263
+ async listNetworks() {
264
+ const networks = await this.docker.listNetworks();
265
+ return networks.map((n) => ({
266
+ id: n.Id,
267
+ name: n.Name
268
+ }));
269
+ }
248
270
  // ─── Private helpers ───
249
271
  mapState(state) {
250
272
  switch (state) {
@@ -1,3 +1,12 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
1
10
  var __defProp = Object.defineProperty;
2
11
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
12
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,3 +1,12 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
1
10
  var __defProp = Object.defineProperty;
2
11
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
12
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,3 +1,12 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
1
10
  var __create = Object.create;
2
11
  var __defProp = Object.defineProperty;
3
12
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -76,4 +76,9 @@ export interface IOrchestratorAdapter {
76
76
  getStats(containerId: string): Promise<ContainerStats>;
77
77
  /** Get tail logs from a container */
78
78
  getLogs(containerId: string, tail?: number): Promise<string>;
79
+ /** List available networks (if supported by adapter) */
80
+ listNetworks?(): Promise<{
81
+ id: string;
82
+ name: string;
83
+ }[]>;
79
84
  }
@@ -1,3 +1,12 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
1
10
  var __defProp = Object.defineProperty;
2
11
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
12
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,3 +1,12 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
1
10
  var __create = Object.create;
2
11
  var __defProp = Object.defineProperty;
3
12
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -58,7 +67,7 @@ class PluginClusterManagerServer extends import_server.Plugin {
58
67
  orchestrator = null;
59
68
  leaderElection = null;
60
69
  async beforeLoad() {
61
- this.db.import({ directory: import_path.default.resolve(__dirname, "collections") });
70
+ await this.db.import({ directory: import_path.default.resolve(__dirname, "collections") });
62
71
  }
63
72
  async load() {
64
73
  this.nodeRegistry = new import_redis_node_registry.RedisNodeRegistry(this.app);
@@ -1,3 +1,12 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
1
10
  var __create = Object.create;
2
11
  var __defProp = Object.defineProperty;
3
12
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -1,3 +1,12 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
1
10
  var __defProp = Object.defineProperty;
2
11
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
12
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,3 +1,12 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
1
10
  var __defProp = Object.defineProperty;
2
11
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
12
  var __getOwnPropNames = Object.getOwnPropertyNames;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "displayName": "Cluster Manager",
4
4
  "displayName.zh-CN": "Cluster Manager",
5
5
  "description": "Cluster node tracking, task orchestration, worker management, and package distribution",
6
- "version": "1.0.13",
6
+ "version": "1.1.5",
7
7
  "license": "Apache-2.0",
8
8
  "main": "./dist/server/index.js",
9
9
  "keywords": ["Monitoring", "DevOps"],