import AppLayout from '@/Layouts/AppLayout';
import { Head, useForm, router } from '@inertiajs/react';
import { useState } from 'react';
import { motion } from 'framer-motion';
import { Server, CheckCircle, XCircle, Loader2 } from 'lucide-react';
import { GlassCard } from '@/Components/ui/GlassCard';
import { Button } from '@/Components/ui/Button';
import { cn } from '@/lib/utils';
const TYPES = [
{ value: 'vcenter', label: 'VMware vCenter', port: 443 },
{ value: 'esxi', label: 'VMware ESXi', port: 443 },
{ value: 'proxmox', label: 'Proxmox VE', port: 8006 },
{ value: 'hyper-v', label: 'Hyper-V', port: 5985 },
{ value: 'xen', label: 'XenServer', port: 443 },
{ value: 'kvm', label: 'KVM/QEMU', port: 22 },
];
function Field({ label, error, children }) {
return (
{children}
{error &&
{error}
}
);
}
function Input({ className, ...props }) {
return (
);
}
export default function HypervisorCreate() {
const { data, setData, post, processing, errors } = useForm({
name: '', type: 'vcenter', host: '', port: 443,
username: '', password: '', ssl_verify: true, datacenter: '',
});
const [testResult, setTestResult] = useState(null);
const [testing, setTesting] = useState(false);
const handleTypeChange = (type) => {
const t = TYPES.find(t => t.value === type);
setData(d => ({ ...d, type, port: t?.port ?? 443 }));
};
const testConn = async () => {
setTesting(true);
setTestResult(null);
try {
const res = await fetch('/hypervisors/test-temp', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': document.querySelector('meta[name=csrf-token]').content },
body: JSON.stringify(data),
});
const json = await res.json();
setTestResult(json);
} catch (e) {
setTestResult({ success: false, message: 'Connection failed: ' + e.message });
} finally {
setTesting(false);
}
};
return (
Add Hypervisor
Connect a new virtualization platform
);
}