// CreateHPADialog.tsx — 创建 HPA 弹窗 // Logan.Li import { useState } from 'react'; import { Plus, Loader2 } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { kubernetesApi } from '@/api'; import { useToast } from '@/hooks/use-toast'; import { getErrorMessage } from '@/lib/utils'; import i18n from '@/i18n'; export interface CreateHPADialogProps { clusterCode: string; namespace: string; deploymentName: string; onCreated: () => void; } export function CreateHPADialog({ clusterCode, namespace, deploymentName, onCreated }: CreateHPADialogProps) { const { toast } = useToast(); const [open, setOpen] = useState(false); const [loading, setLoading] = useState(false); const [form, setForm] = useState({ name: '', minReplicas: 1, maxReplicas: 10, cpuPercent: 80, memPercent: 0, }); const handleCreate = async () => { if (!form.name.trim()) { toast({ title: i18n.t('k8s.misc.name'), variant: 'destructive' }); return; } setLoading(true); try { await kubernetesApi.createHPA(clusterCode, { name: form.name, namespace, targetKind: 'Deployment', targetName: deploymentName, minReplicas: form.minReplicas, maxReplicas: form.maxReplicas, cpuPercent: form.cpuPercent, memPercent: form.memPercent, }); toast({ title: i18n.t('k8s.misc.createSuccess1') }); setOpen(false); onCreated(); setForm({ name: '', minReplicas: 1, maxReplicas: 10, cpuPercent: 80, memPercent: 0 }); } catch (e: unknown) { toast({ title: i18n.t('k8s.misc.failed1'), description: getErrorMessage(e), variant: 'destructive' }); } finally { setLoading(false); } }; return ( <> {open && (
Deployment: {deploymentName} · 命名空间: {namespace}