71 lines
1.4 KiB
TypeScript
71 lines
1.4 KiB
TypeScript
|
import * as plugins from '../plugins.js';
|
||
|
|
||
|
export interface IClusterNodeMetrics {
|
||
|
cpuUsagePercent: number;
|
||
|
memoryUsedMB: number;
|
||
|
memoryAvailableMB: number;
|
||
|
diskUsedGB: number;
|
||
|
diskAvailableGB: number;
|
||
|
containerCount: number;
|
||
|
timestamp: number;
|
||
|
}
|
||
|
|
||
|
export interface IClusterNode {
|
||
|
id: string;
|
||
|
data: {
|
||
|
/**
|
||
|
* Reference to the cluster this node belongs to
|
||
|
*/
|
||
|
clusterId: string;
|
||
|
|
||
|
/**
|
||
|
* Reference to the physical server (if applicable)
|
||
|
*/
|
||
|
baremetalId?: string;
|
||
|
|
||
|
/**
|
||
|
* Type of node
|
||
|
*/
|
||
|
nodeType: 'baremetal' | 'vm' | 'container';
|
||
|
|
||
|
/**
|
||
|
* Current status of the node
|
||
|
*/
|
||
|
status: 'initializing' | 'online' | 'offline' | 'maintenance';
|
||
|
|
||
|
/**
|
||
|
* Role of the node in the cluster
|
||
|
*/
|
||
|
role: 'master' | 'worker';
|
||
|
|
||
|
/**
|
||
|
* Timestamp when node joined the cluster
|
||
|
*/
|
||
|
joinedAt: number;
|
||
|
|
||
|
/**
|
||
|
* Last health check timestamp
|
||
|
*/
|
||
|
lastHealthCheck: number;
|
||
|
|
||
|
/**
|
||
|
* Current metrics for the node
|
||
|
*/
|
||
|
metrics?: IClusterNodeMetrics;
|
||
|
|
||
|
/**
|
||
|
* Docker swarm node ID if part of swarm
|
||
|
*/
|
||
|
swarmNodeId?: string;
|
||
|
|
||
|
/**
|
||
|
* SSH keys deployed to this node
|
||
|
*/
|
||
|
sshKeys: plugins.tsclass.network.ISshKey[];
|
||
|
|
||
|
/**
|
||
|
* Debian packages installed on this node
|
||
|
*/
|
||
|
requiredDebianPackages: string[];
|
||
|
};
|
||
|
}
|