121 lines
2.2 KiB
TypeScript
121 lines
2.2 KiB
TypeScript
import { Metadata } from "../Metadata";
|
|
import { type HasMetadata } from "../repo/ResourceRepo";
|
|
import {State} from "~/classes/Threshold";
|
|
|
|
export class Node implements HasMetadata
|
|
{
|
|
constructor (
|
|
public metadata: Metadata,
|
|
public metrics: NodeMetrics,
|
|
public status: Status,
|
|
public spec: Spec
|
|
) { }
|
|
|
|
static cpuUsageFlag(usage: number): State
|
|
{
|
|
if(usage < 20)
|
|
{
|
|
return State.GREEN;
|
|
}
|
|
if(usage < 60)
|
|
{
|
|
return State.ORANGE;
|
|
}
|
|
return State.RED;
|
|
}
|
|
|
|
static memoryUsageFlag(usage: number)
|
|
{
|
|
if(usage < 30)
|
|
{
|
|
return State.GREEN;
|
|
}
|
|
if(usage < 75)
|
|
{
|
|
return State.ORANGE;
|
|
}
|
|
return State.RED;
|
|
}
|
|
|
|
static diskUsageFlag(usage: number)
|
|
{
|
|
if(usage < 30)
|
|
{
|
|
return State.GREEN;
|
|
}
|
|
if(usage < 70)
|
|
{
|
|
return State.ORANGE;
|
|
}
|
|
return State.RED;
|
|
}
|
|
|
|
static isReady(node: Node): boolean | undefined
|
|
{
|
|
const conditions = node.status.conditions;
|
|
if(conditions != undefined)
|
|
{
|
|
for(const condition of conditions)
|
|
{
|
|
if(condition.type === "Ready" && condition.status === "True")
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
return undefined;
|
|
}
|
|
}
|
|
|
|
class NodeMetrics
|
|
{
|
|
absoluteCpuUsage?: number;
|
|
relativeCpuUsage?: number;
|
|
totalCpu?: number;
|
|
absoluteMemory?: number;
|
|
relativeMemory?: number;
|
|
totalMemory?: number;
|
|
runningPods?: number;
|
|
relativeDiskUsage?: number;
|
|
totalDiskSpace?: number;
|
|
|
|
}
|
|
|
|
class Spec
|
|
{
|
|
constructor (
|
|
public taints?: Taint[]
|
|
) {}
|
|
}
|
|
|
|
class Status
|
|
{
|
|
constructor (
|
|
public nodeInfo: NodeInfo
|
|
) {}
|
|
|
|
conditions?: Condition[]
|
|
}
|
|
|
|
class Condition
|
|
{
|
|
type?: string;
|
|
status?: string;
|
|
}
|
|
|
|
class Taint
|
|
{
|
|
constructor (
|
|
public key: string,
|
|
public effect: string
|
|
) {}
|
|
}
|
|
|
|
class NodeInfo
|
|
{
|
|
constructor (
|
|
public osImage: string,
|
|
public kubeletVersion: string
|
|
) {}
|
|
} |