Add capacity overview with host resource history
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
import type { CapacityCalibration, HostReadiness } from './hosts.js';
|
||||
|
||||
export type CapacityRange = '1h' | '24h' | '7d';
|
||||
export type CapacityGame = 'all' | 't5' | 't6';
|
||||
export interface CapacityQuery { range: CapacityRange; hostId: string | null; game: CapacityGame }
|
||||
export function parseCapacityQuery(params: URLSearchParams): CapacityQuery {
|
||||
const range = params.get('range');
|
||||
const game = params.get('game');
|
||||
return { range: range === '1h' || range === '7d' ? range : '24h',
|
||||
game: game === 't5' || game === 't6' ? game : 'all', hostId: params.get('host')?.trim().slice(0, 100) || null };
|
||||
}
|
||||
|
||||
export interface CapacityHistoryPoint {
|
||||
at: number;
|
||||
cpuCoresAvailable: number | null;
|
||||
memoryBytesAvailable: number | null;
|
||||
reportingHosts: number;
|
||||
expectedHosts: number;
|
||||
}
|
||||
export interface CapacityHistory {
|
||||
range: CapacityRange;
|
||||
startAt: number;
|
||||
endAt: number;
|
||||
bucketMs: number;
|
||||
points: CapacityHistoryPoint[];
|
||||
}
|
||||
export interface CapacityHost {
|
||||
id: string;
|
||||
name: string;
|
||||
readiness: HostReadiness;
|
||||
connected: boolean;
|
||||
updatedAt: string | null;
|
||||
eligible: boolean;
|
||||
games: ('t5' | 't6')[];
|
||||
reasons: string[];
|
||||
cpuCoresAvailable: number | null;
|
||||
memoryBytesAvailable: number | null;
|
||||
portsAvailable: number;
|
||||
totalPorts: number;
|
||||
estimatedServers: number | null;
|
||||
limits: { cpu: number | null; memory: number | null; ports: number };
|
||||
limitingResource: 'CPU' | 'Memory' | 'Ports' | null;
|
||||
calibration: CapacityCalibration;
|
||||
}
|
||||
export interface CapacityCurrent {
|
||||
updatedAt: string | null;
|
||||
summary: {
|
||||
estimatedServers: number | null;
|
||||
cpuCoresAvailable: number | null;
|
||||
memoryBytesAvailable: number | null;
|
||||
portsAvailable: number | null;
|
||||
eligibleHosts: number;
|
||||
totalHosts: number;
|
||||
startupSlots: number | null;
|
||||
startupLimit: number | null;
|
||||
activeStartups: number | null;
|
||||
queued: number | null;
|
||||
};
|
||||
hosts: CapacityHost[];
|
||||
hostOptions: { id: string; name: string }[];
|
||||
warnings: string[];
|
||||
}
|
||||
export interface CapacityData { query: CapacityQuery; current: CapacityCurrent; history: CapacityHistory }
|
||||
Reference in New Issue
Block a user