"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
{totalVMs} VMs • {totalLXC} LXC
Allocated across all VMs and LXC containers
Allocated RAM across all VMs and LXC containers
Average resource utilization