plugin-cluster-manager 1.1.10 → 1.1.13
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/client-v2.d.ts +2 -0
- package/client-v2.js +1 -0
- package/client.js +1 -0
- package/dist/client/index.js +1 -1
- package/dist/client-v2/914.5dc1105cf3ada6a6.js +10 -0
- package/dist/client-v2/index.js +10 -0
- package/dist/externalVersion.js +6 -5
- package/dist/locale/en-US.json +138 -28
- package/dist/locale/vi-VN.json +139 -28
- package/dist/locale/zh-CN.json +140 -28
- package/dist/server/actions/cache-monitor.js +301 -0
- package/dist/server/actions/cluster-nodes.js +391 -11
- package/dist/server/actions/doctor.js +1246 -0
- package/dist/server/actions/orchestrator.js +37 -0
- package/dist/server/actions/queue-mappings.js +107 -0
- package/dist/server/collections/cluster-manager-doctor-runs.js +52 -0
- package/dist/server/collections/cluster-manager-doctor.js +44 -0
- package/dist/server/collections/worker-queue-mappings.js +106 -0
- package/dist/server/hooks/cacheInvalidationHooks.js +81 -0
- package/dist/server/middlewares/listMetaCacheMiddleware.js +79 -0
- package/dist/server/orchestrator/PackageManager.js +21 -24
- package/dist/server/orchestrator/docker-adapter.js +49 -27
- package/dist/server/plugin.js +71 -16
- package/dist/server/queue-scanner.js +141 -0
- package/dist/server/utils/node.js +30 -2
- package/dist/server/utils/versionManager.js +91 -0
- package/package.json +9 -5
- package/server.js +1 -0
- package/src/client/AclCacheManager.tsx +292 -287
- package/src/client/CacheMonitor.tsx +166 -179
- package/src/client/ClusterManagerLayout.tsx +54 -42
- package/src/client/ClusterNodes.tsx +698 -418
- package/src/client/ContainerOrchestrator.tsx +184 -102
- package/src/client/Doctor.tsx +559 -0
- package/src/client/NginxCacheManager.tsx +415 -0
- package/src/client/PluginOperations.tsx +234 -234
- package/src/client/QueueAssignment.tsx +355 -0
- package/src/client/TaskManager.tsx +194 -187
- package/src/client/WorkflowExecutions.tsx +243 -238
- package/src/client/index.tsx +22 -14
- package/src/client/utils/clientSafeCache.ts +41 -0
- package/src/client/utils/requestDedupInterceptor.ts +213 -0
- package/src/client-v2/plugin.tsx +24 -0
- package/src/locale/en-US.json +138 -28
- package/src/locale/vi-VN.json +139 -28
- package/src/locale/zh-CN.json +140 -28
- package/src/server/__tests__/doctor.test.ts +53 -0
- package/src/server/actions/acl-cache.ts +272 -272
- package/src/server/actions/cache-monitor.ts +453 -116
- package/src/server/actions/cluster-nodes.ts +878 -378
- package/src/server/actions/doctor.ts +1536 -0
- package/src/server/actions/orchestrator.ts +54 -2
- package/src/server/actions/queue-mappings.ts +94 -0
- package/src/server/collections/cluster-manager-doctor-runs.ts +23 -0
- package/src/server/collections/cluster-manager-doctor.ts +19 -0
- package/src/server/collections/worker-queue-mappings.ts +85 -0
- package/src/server/hooks/cacheInvalidationHooks.ts +58 -0
- package/src/server/middlewares/listMetaCacheMiddleware.ts +55 -0
- package/src/server/orchestrator/PackageManager.ts +20 -24
- package/src/server/orchestrator/docker-adapter.ts +74 -37
- package/src/server/plugin.ts +347 -270
- package/src/server/queue-scanner.ts +154 -0
- package/src/server/utils/node.ts +48 -0
- package/src/server/utils/versionManager.ts +69 -0
- package/dist/client/AclCacheManager.d.ts +0 -2
- package/dist/client/CacheMonitor.d.ts +0 -2
- package/dist/client/ClusterManagerLayout.d.ts +0 -2
- package/dist/client/ClusterNodes.d.ts +0 -2
- package/dist/client/ContainerOrchestrator.d.ts +0 -2
- package/dist/client/EventQueueMonitor.d.ts +0 -2
- package/dist/client/LockMonitor.d.ts +0 -2
- package/dist/client/PackageInstaller.d.ts +0 -2
- package/dist/client/PluginOperations.d.ts +0 -2
- package/dist/client/RedisMonitor.d.ts +0 -2
- package/dist/client/TaskManager.d.ts +0 -2
- package/dist/client/WorkflowExecutions.d.ts +0 -2
- package/dist/client/index.d.ts +0 -5
- package/dist/client/utils.d.ts +0 -12
- package/dist/index.d.ts +0 -2
- package/dist/server/actions/acl-cache.d.ts +0 -53
- package/dist/server/actions/cache-monitor.d.ts +0 -23
- package/dist/server/actions/cluster-nodes.d.ts +0 -49
- package/dist/server/actions/event-queue-monitor.d.ts +0 -13
- package/dist/server/actions/lock-monitor.d.ts +0 -19
- package/dist/server/actions/orchestrator.d.ts +0 -58
- package/dist/server/actions/package-manager.d.ts +0 -6
- package/dist/server/actions/plugin-operations.d.ts +0 -6
- package/dist/server/actions/redis-monitor.d.ts +0 -12
- package/dist/server/actions/tasks.d.ts +0 -7
- package/dist/server/actions/workflow-executions.d.ts +0 -7
- package/dist/server/adapters/redis-lock-adapter.d.ts +0 -15
- package/dist/server/adapters/redis-node-registry.d.ts +0 -12
- package/dist/server/adapters/redis-pubsub-adapter.d.ts +0 -16
- package/dist/server/collections/app.d.ts +0 -8
- package/dist/server/collections/cluster-manager-acl-cache.d.ts +0 -22
- package/dist/server/collections/cluster-manager-cache-mgr.d.ts +0 -22
- package/dist/server/collections/cluster-manager-cluster.d.ts +0 -22
- package/dist/server/collections/cluster-manager-lock.d.ts +0 -22
- package/dist/server/collections/cluster-manager-plugins.d.ts +0 -18
- package/dist/server/collections/cluster-manager-queue.d.ts +0 -22
- package/dist/server/collections/cluster-manager-redis.d.ts +0 -22
- package/dist/server/collections/cluster-manager-workflow.d.ts +0 -22
- package/dist/server/collections/cluster-manager.d.ts +0 -22
- package/dist/server/collections/orchestrator-settings.d.ts +0 -59
- package/dist/server/collections/orchestrator-stacks.d.ts +0 -102
- package/dist/server/collections/worker-orchestrator.d.ts +0 -22
- package/dist/server/collections/worker-packages-configs.d.ts +0 -3
- package/dist/server/collections/worker-packages.d.ts +0 -22
- package/dist/server/orchestrator/PackageManager.d.ts +0 -39
- package/dist/server/orchestrator/docker-adapter.d.ts +0 -41
- package/dist/server/orchestrator/index.d.ts +0 -4
- package/dist/server/orchestrator/k8s-adapter.d.ts +0 -50
- package/dist/server/orchestrator/leader-election.d.ts +0 -48
- package/dist/server/orchestrator/types.d.ts +0 -84
- package/dist/server/plugin.d.ts +0 -26
- package/dist/server/utils/node.d.ts +0 -6
- package/dist/server/utils/redis.d.ts +0 -29
- package/dist/shared/packages.d.ts +0 -23
- /package/{dist/server/index.d.ts → src/client-v2/index.tsx} +0 -0
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Orchestrator Adapter Interface
|
|
3
|
-
*
|
|
4
|
-
* Abstraction layer for container runtimes (Docker, K8s, Swarm).
|
|
5
|
-
* Each adapter implements this interface so the plugin logic is runtime-agnostic.
|
|
6
|
-
*/
|
|
7
|
-
export interface ContainerInfo {
|
|
8
|
-
id: string;
|
|
9
|
-
name: string;
|
|
10
|
-
status: 'running' | 'stopped' | 'pending' | 'error' | 'creating' | 'exited';
|
|
11
|
-
image: string;
|
|
12
|
-
createdAt: Date;
|
|
13
|
-
cpu?: number;
|
|
14
|
-
memory?: number;
|
|
15
|
-
labels?: Record<string, string>;
|
|
16
|
-
}
|
|
17
|
-
export interface ScaleResult {
|
|
18
|
-
previousReplicas: number;
|
|
19
|
-
currentReplicas: number;
|
|
20
|
-
containersCreated?: string[];
|
|
21
|
-
containersRemoved?: string[];
|
|
22
|
-
}
|
|
23
|
-
export interface ContainerStats {
|
|
24
|
-
cpu: number;
|
|
25
|
-
memory: number;
|
|
26
|
-
memoryLimit: number;
|
|
27
|
-
networkRx: number;
|
|
28
|
-
networkTx: number;
|
|
29
|
-
}
|
|
30
|
-
export interface StackConfig {
|
|
31
|
-
id?: number;
|
|
32
|
-
name: string;
|
|
33
|
-
adapter: 'docker' | 'kubernetes';
|
|
34
|
-
image: string;
|
|
35
|
-
command?: string;
|
|
36
|
-
envVars?: Record<string, string>;
|
|
37
|
-
volumes?: string[];
|
|
38
|
-
networks?: string[];
|
|
39
|
-
resourceLimits?: {
|
|
40
|
-
memory?: string;
|
|
41
|
-
cpu?: string;
|
|
42
|
-
};
|
|
43
|
-
replicas: number;
|
|
44
|
-
desiredReplicas: number;
|
|
45
|
-
enabled: boolean;
|
|
46
|
-
namespace?: string;
|
|
47
|
-
deploymentName?: string;
|
|
48
|
-
serviceAccountName?: string;
|
|
49
|
-
imagePullPolicy?: string;
|
|
50
|
-
k8sContainerName?: string;
|
|
51
|
-
k8sEnv?: Record<string, any>[];
|
|
52
|
-
k8sEnvFrom?: Record<string, any>[];
|
|
53
|
-
k8sVolumeMounts?: Record<string, any>[];
|
|
54
|
-
k8sVolumes?: Record<string, any>[];
|
|
55
|
-
networkMode?: string;
|
|
56
|
-
restartPolicy?: string;
|
|
57
|
-
}
|
|
58
|
-
export interface IOrchestratorAdapter {
|
|
59
|
-
/** Human-readable adapter name */
|
|
60
|
-
readonly name: string;
|
|
61
|
-
/** Test connectivity to the runtime */
|
|
62
|
-
ping(): Promise<boolean>;
|
|
63
|
-
/** List containers managed by a stack */
|
|
64
|
-
listContainers(stack: StackConfig): Promise<ContainerInfo[]>;
|
|
65
|
-
/** Verify that a runtime container/pod belongs to the requested stack */
|
|
66
|
-
assertManagedByStack(stack: StackConfig, containerId: string): Promise<void>;
|
|
67
|
-
/** Scale stack to N replicas */
|
|
68
|
-
scale(stack: StackConfig, replicas: number): Promise<ScaleResult>;
|
|
69
|
-
/** Start a stopped container */
|
|
70
|
-
startContainer(containerId: string): Promise<void>;
|
|
71
|
-
/** Gracefully stop a running container */
|
|
72
|
-
stopContainer(containerId: string, timeoutSecs?: number): Promise<void>;
|
|
73
|
-
/** Remove/delete a container (force) */
|
|
74
|
-
removeContainer(containerId: string): Promise<void>;
|
|
75
|
-
/** Get real-time resource stats for a container */
|
|
76
|
-
getStats(containerId: string): Promise<ContainerStats>;
|
|
77
|
-
/** Get tail logs from a container */
|
|
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
|
-
}[]>;
|
|
84
|
-
}
|
package/dist/server/plugin.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Plugin } from '@nocobase/server';
|
|
2
|
-
import { RedisNodeRegistry } from './adapters/redis-node-registry';
|
|
3
|
-
import type { IOrchestratorAdapter } from './orchestrator/types';
|
|
4
|
-
import { LeaderElection } from './orchestrator/leader-election';
|
|
5
|
-
export declare class PluginClusterManagerServer extends Plugin {
|
|
6
|
-
nodeRegistry: RedisNodeRegistry;
|
|
7
|
-
orchestrator: IOrchestratorAdapter | null;
|
|
8
|
-
leaderElection: LeaderElection | null;
|
|
9
|
-
beforeLoad(): Promise<void>;
|
|
10
|
-
load(): Promise<void>;
|
|
11
|
-
private registerPubSubAdapter;
|
|
12
|
-
/**
|
|
13
|
-
* Initialize the Container Orchestrator subsystem.
|
|
14
|
-
* Config is loaded from DB (orchestratorSettings collection) first,
|
|
15
|
-
* then falls back to ORCHESTRATOR_ADAPTER env var.
|
|
16
|
-
* This allows manual configuration via the NocoBase admin UI.
|
|
17
|
-
*/
|
|
18
|
-
private initOrchestrator;
|
|
19
|
-
/**
|
|
20
|
-
* Connect (or reconnect) the orchestrator adapter based on settings.
|
|
21
|
-
* Can be called at startup or when user saves new settings via UI.
|
|
22
|
-
*/
|
|
23
|
-
connectAdapter(settings: any): Promise<boolean>;
|
|
24
|
-
private isWorkerOnlyNode;
|
|
25
|
-
}
|
|
26
|
-
export default PluginClusterManagerServer;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generate a universally unique identifier for this specific Node.js process.
|
|
3
|
-
* Combines app name, worker mode, hostname, port, and PID to ensure uniqueness
|
|
4
|
-
* even when multiple workers run on the exact same host.
|
|
5
|
-
*/
|
|
6
|
-
export declare function getLocalNodeId(app: any): string;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { Context } from '@nocobase/actions';
|
|
2
|
-
export declare function getRedisClient(app?: any): any;
|
|
3
|
-
/**
|
|
4
|
-
* Get the shared Redis connection from the app's connection manager.
|
|
5
|
-
* Returns undefined if Redis is not configured.
|
|
6
|
-
*/
|
|
7
|
-
export declare function getRedis(ctx: Context): any;
|
|
8
|
-
/**
|
|
9
|
-
* Get Redis connection or throw 503 if not available.
|
|
10
|
-
*/
|
|
11
|
-
export declare function getRedisOrThrow(ctx: Context): any;
|
|
12
|
-
/**
|
|
13
|
-
* Scan Redis keys using SCAN (cursor-based) instead of the blocking KEYS command.
|
|
14
|
-
* Safe for production use — never blocks the Redis event loop.
|
|
15
|
-
*
|
|
16
|
-
* @param redis - Redis client instance
|
|
17
|
-
* @param pattern - Glob pattern to match keys (e.g. "acl:can:*")
|
|
18
|
-
* @param batchSize - Number of keys to scan per iteration (default 200)
|
|
19
|
-
*/
|
|
20
|
-
export declare function scanKeys(redis: any, pattern: string, batchSize?: number): Promise<string[]>;
|
|
21
|
-
/**
|
|
22
|
-
* Delete keys in chunked batches to avoid exceeding Redis command argument limits.
|
|
23
|
-
*
|
|
24
|
-
* @param redis - Redis client instance
|
|
25
|
-
* @param keys - Array of keys to delete
|
|
26
|
-
* @param chunkSize - Max keys per DEL command (default 500)
|
|
27
|
-
* @returns Total number of keys deleted
|
|
28
|
-
*/
|
|
29
|
-
export declare function deleteKeysChunked(redis: any, keys: string[], chunkSize?: number): Promise<number>;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export declare const DEFAULT_WORKER_PACKAGES: {
|
|
2
|
-
apt: string[];
|
|
3
|
-
python: string[];
|
|
4
|
-
npm: string[];
|
|
5
|
-
};
|
|
6
|
-
export interface WorkerPackageMap {
|
|
7
|
-
apt?: string[];
|
|
8
|
-
npm?: string[];
|
|
9
|
-
python?: string[];
|
|
10
|
-
}
|
|
11
|
-
export interface CustomPackageMap {
|
|
12
|
-
python?: string[];
|
|
13
|
-
node?: string[];
|
|
14
|
-
npm?: string[];
|
|
15
|
-
}
|
|
16
|
-
export declare function normalizePackages(packages?: Array<string | undefined>): string[];
|
|
17
|
-
export declare function parsePackageText(value: unknown, fallback?: string[]): string[];
|
|
18
|
-
export declare function formatPackageText(packages?: string[]): string;
|
|
19
|
-
export declare function packagesFromConfig(config: {
|
|
20
|
-
aptPackages?: unknown;
|
|
21
|
-
pythonPackages?: unknown;
|
|
22
|
-
npmPackages?: unknown;
|
|
23
|
-
}): WorkerPackageMap;
|
|
File without changes
|