| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- # app/schemas/docker_remote.py
- from typing import Optional, Dict, Any, List
- from pydantic import BaseModel, Field
- class RemoteServerConfig(BaseModel):
- """远程服务器连接配置"""
- host: str = Field(..., description="服务器地址")
- port: int = Field(22, description="SSH端口")
- username: str = Field("root", description="SSH用户名")
- password: Optional[str] = Field(None, description="SSH密码")
- key_file: Optional[str] = Field(None, description="SSH私钥文件路径")
- project_path: str = Field("/root/troov-asyncio", description="项目路径")
- class DockerContainerStatus(BaseModel):
- """Docker容器状态"""
- name: str
- status: str
- image: str
- class DockerStatusOut(BaseModel):
- """Docker状态输出"""
- containers: Dict[str, DockerContainerStatus]
- class DockerActionRequest(RemoteServerConfig):
- """Docker容器操作请求"""
- container_name: str
- class DockerLogsRequest(RemoteServerConfig):
- """查看Docker日志请求"""
- container_name: str
- lines: int = Field(100, description="显示行数")
- follow: bool = Field(False, description="是否实时跟踪")
- class DockerLogsOut(BaseModel):
- """Docker日志输出"""
- logs: str
- class ConfigReadOut(BaseModel):
- """配置文件读取输出"""
- config: Dict[str, Any]
- class ConfigReadRequest(RemoteServerConfig):
- """配置文件读取请求"""
- config_file: str = Field(..., description="配置文件路径(相对于项目根目录)")
- class ConfigUpdateRequest(RemoteServerConfig):
- """配置文件更新请求"""
- config_file: str = Field(..., description="配置文件路径")
- key_path: str = Field(..., description="键路径,如 lockV1.sessionLimit")
- value: Any = Field(..., description="新值")
- class LogReadRequest(RemoteServerConfig):
- """日志读取请求"""
- log_file: str = Field(..., description="日志文件名或路径")
- lines: int = Field(100, description="行数")
- from_head: bool = Field(False, description="从开头读取")
- full: bool = Field(False, description="读取整个文件")
- class LogReadOut(BaseModel):
- """日志读取输出"""
- content: str
- class LogListOut(BaseModel):
- """日志列表输出"""
- log_files: List[str]
- class ServerConfigItem(BaseModel):
- """预配置服务器项"""
- id: str
- name: str
- host: str
- class ServerListOut(BaseModel):
- """预配置服务器列表输出"""
- servers: List[ServerConfigItem]
- class RemoteActionRequest(BaseModel):
- """基于服务器ID的远程操作请求"""
- server_id: str
- project_path: Optional[str] = Field(None, description="项目路径(如果不传则使用数据库默认路径)")
- container_name: Optional[str] = None
- services: Optional[List[str]] = None
- config_file: Optional[str] = None
- key_path: Optional[str] = None
- value: Any = None
- log_file: Optional[str] = None
- lines: int = 100
- from_head: bool = False
- full: bool = False
|