import React, { useState } from "react"; import { SSHAgentForm } from "../modules/agent/ui/SSHAgentForm"; import { FiPlusCircle, FiSend } from "react-icons/fi"; interface SSHAgentConfig { user: string; ip: string; authMethod: string; sshKey?: string; password?: string; extraFields: { key: string; value: string }[]; deployType: string; } const createEmptyAgentConfig = (): SSHAgentConfig => ({ user: "", ip: "", authMethod: "key", sshKey: "", password: "", extraFields: [], deployType: "docker", }); export const AddAgentsPage: React.FC = () => { const [agents, setAgents] = useState([ createEmptyAgentConfig(), ]); const [isSubmitting, setIsSubmitting] = useState(false); const [submitMessage, setSubmitMessage] = useState(null); const [submitError, setSubmitError] = useState(null); const handleAgentChange = (index: number, config: SSHAgentConfig) => { const newAgents = [...agents]; newAgents[index] = config; setAgents(newAgents); }; const handleAgentRemove = (index: number) => { const newAgents = agents.filter((_, i) => i !== index); setAgents(newAgents); }; const handleAddAgent = () => { setAgents([...agents, createEmptyAgentConfig()]); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); // Валидация const isValid = agents.every((agent) => { if (!agent.user || !agent.ip) return false; if (agent.authMethod === "key" && !agent.sshKey) return false; if (agent.authMethod === "password" && !agent.password) return false; return true; }); if (!isValid) { setSubmitError("Пожалуйста, заполните все обязательные поля"); return; } setIsSubmitting(true); setSubmitMessage(null); setSubmitError(null); try { // TODO: Реальный API вызов для развертывания агентов console.log("Deploying agents:", agents); // Имитация задержки API await new Promise((resolve) => setTimeout(resolve, 1500)); setSubmitMessage( `Успешно отправлено ${agents.length} сервер(ов) на развертывание`, ); setAgents([createEmptyAgentConfig()]); } catch (error) { setSubmitError("Ошибка при развертывании на серверах"); } finally { setIsSubmitting(false); } }; return (
{/* Header */}

Развертывание агентов по SSH

Настройте SSH-серверы и разверните агенты

{/* Agent Forms */}
{agents.map((agent, index) => ( 1} /> ))}
{/* Add Agent Button */} {/* Messages */} {submitMessage && (
{submitMessage}
)} {submitError && (
{submitError}
)} {/* Submit Button */}
); };