import React, { useState } from "react"; import { SSHAgentForm } from "../modules/agent/ui/SSHAgentForm"; import { agentApiService } from "../modules/agent/api/agent.api.service"; 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 { // Получаем текущих агентов для проверки подключения const currentAgents = await agentApiService.getAgents(); console.log("Current agents:", currentAgents); // TODO: Реальный API вызов для развертывания агентов // Пока выводим список подключенных агентов setSubmitMessage( `Успешно подключено ${currentAgents.length} агент(ов). Серверы: ${agents.length}`, ); setAgents([createEmptyAgentConfig()]); } catch (error) { setSubmitError( error instanceof Error ? error.message : "Ошибка при подключении к серверам", ); } finally { setIsSubmitting(false); } }; return (
{/* Header */}

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

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

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