"use client" import { Card, CardContent, CardHeader, CardTitle } from "./ui/card" import { Badge } from "./ui/badge" import { Progress } from "./ui/progress" import { Server, Play, Square, RotateCcw, Monitor, Cpu, MemoryStick } from "lucide-react" const virtualMachines = [ { id: 100, name: "web-server-01", type: "vm", status: "running", os: "Ubuntu 22.04", cpu: 4, memory: 8192, disk: 50, uptime: "15d 7h 23m", cpuUsage: 45, memoryUsage: 62, diskUsage: 78, }, { id: 101, name: "database-01", type: "vm", status: "running", os: "CentOS 8", cpu: 8, memory: 16384, disk: 100, uptime: "12d 3h 45m", cpuUsage: 78, memoryUsage: 85, diskUsage: 45, }, { id: 102, name: "backup-server", type: "vm", status: "stopped", os: "Debian 11", cpu: 2, memory: 4096, disk: 200, uptime: "0d 0h 0m", cpuUsage: 0, memoryUsage: 0, diskUsage: 23, }, { id: 103, name: "dev-environment", type: "vm", status: "running", os: "Ubuntu 20.04", cpu: 6, memory: 12288, disk: 75, uptime: "3d 12h 18m", cpuUsage: 32, memoryUsage: 58, diskUsage: 67, }, { id: 104, name: "monitoring-01", type: "vm", status: "running", os: "Alpine Linux", cpu: 2, memory: 2048, disk: 25, uptime: "8d 15h 32m", cpuUsage: 15, memoryUsage: 34, diskUsage: 42, }, { id: 105, name: "mail-server", type: "vm", status: "stopped", os: "Ubuntu 22.04", cpu: 4, memory: 8192, disk: 60, uptime: "0d 0h 0m", cpuUsage: 0, memoryUsage: 0, diskUsage: 56, }, { id: 200, name: "nginx-proxy", type: "lxc", status: "running", os: "Ubuntu 22.04 LXC", cpu: 1, memory: 512, disk: 8, uptime: "25d 14h 12m", cpuUsage: 8, memoryUsage: 45, diskUsage: 32, }, { id: 201, name: "redis-cache", type: "lxc", status: "running", os: "Alpine Linux LXC", cpu: 1, memory: 1024, disk: 4, uptime: "18d 6h 45m", cpuUsage: 12, memoryUsage: 38, diskUsage: 28, }, { id: 202, name: "log-collector", type: "lxc", status: "stopped", os: "Debian 11 LXC", cpu: 1, memory: 256, disk: 2, uptime: "0d 0h 0m", cpuUsage: 0, memoryUsage: 0, diskUsage: 15, }, ] export function VirtualMachines() { const runningVMs = virtualMachines.filter((vm) => vm.status === "running").length const stoppedVMs = virtualMachines.filter((vm) => vm.status === "stopped").length const runningLXC = virtualMachines.filter((vm) => vm.type === "lxc" && vm.status === "running").length const totalVMs = virtualMachines.filter((vm) => vm.type === "vm").length const totalLXC = virtualMachines.filter((vm) => vm.type === "lxc").length const totalCPU = virtualMachines.reduce((sum, vm) => sum + vm.cpu, 0) const totalMemory = virtualMachines.reduce((sum, vm) => sum + vm.memory, 0) const getStatusColor = (status: string) => { switch (status) { case "running": return "bg-green-500/10 text-green-500 border-green-500/20" case "stopped": return "bg-red-500/10 text-red-500 border-red-500/20" default: return "bg-yellow-500/10 text-yellow-500 border-yellow-500/20" } } const getStatusIcon = (status: string) => { switch (status) { case "running": return case "stopped": return default: return } } return (
{/* VM Overview Cards */}
Total VMs & LXC
{virtualMachines.length}
{runningVMs} VMs {runningLXC} LXC {stoppedVMs} Stopped

{totalVMs} VMs • {totalLXC} LXC

Total CPU Cores
{totalCPU}

Allocated across all VMs and LXC containers

Total Memory
{(totalMemory / 1024).toFixed(1)} GB

Allocated RAM across all VMs and LXC containers

Average Load
42%

Average resource utilization

{/* Virtual Machines List */} Virtual Machines & LXC Containers
{virtualMachines.map((vm) => (
{vm.name} {vm.type.toUpperCase()}
ID: {vm.id} • {vm.os}
{getStatusIcon(vm.status)} {vm.status.toUpperCase()}
Resources
CPU: {vm.cpu} cores
Memory: {(vm.memory / 1024).toFixed(1)} GB
Disk: {vm.disk} GB
CPU Usage
{vm.cpuUsage}%
Memory Usage
{vm.memoryUsage}%
Uptime
{vm.uptime}
Disk: {vm.diskUsage}% used
))}
) }