Files
web/src/components/vps-resources.tsx
kieran fd1df3ce3d
Some checks failed
continuous-integration/drone/push Build is failing
fix: update to match new api models
2025-02-25 15:04:13 +00:00

33 lines
1.3 KiB
TypeScript

import { VmInstance, VmTemplate } from "../api";
import BytesSize from "./bytes";
export default function VpsResources({ vm }: { vm: VmInstance | VmTemplate }) {
const diskType = "template" in vm ? vm.template?.disk_type : vm.disk_type;
const region =
"region" in vm ? vm.region.name : vm.template?.region?.name;
const status = "status" in vm ? vm.status : undefined;
const template = "template" in vm ? vm.template : vm as VmTemplate;
return (
<>
<div className="text-xs text-neutral-400">
{template?.cpu} vCPU, <BytesSize value={template?.memory ?? 0} /> RAM,{" "}
<BytesSize value={template?.disk_size ?? 0} /> {diskType?.toUpperCase()},{" "}
{region && <>Location: {region}</>}
</div>
{status && status.state === "running" && (
<div className="text-sm text-neutral-200">
<div className="w-2 h-2 rounded-full bg-green-800 inline-block"></div>{" "}
{(100 * status.cpu_usage).toFixed(1)}% CPU,{" "}
{(100 * status.mem_usage).toFixed(0)}% RAM
</div>
)}
{status && status.state === "stopped" && (
<div className="text-sm text-neutral-200">
<div className="w-2 h-2 rounded-full bg-red-800 inline-block"></div>{" "}
Stopped
</div>
)}
</>
);
}