2026-01-25 18:01:48 +01:00

51 lines
1.4 KiB
Python

"""Push request/response schemas"""
from pydantic import BaseModel
from datetime import datetime
from typing import Optional
from app.models.push_log import PushStatus
class PushRequest(BaseModel):
"""
Request to push configuration to device via SSH.
CRITICAL: Includes optional SSH credentials (only use in-memory).
"""
configuration_id: int
device_id: int
# Optional SSH credentials (if not stored in device model)
ssh_username: Optional[str] = None
ssh_password: Optional[str] = None # Must be provided at push time, never stored
# Safety
dry_run: bool = False # Generate only, don't push
save_running_config: bool = True # Backup before push
confirmed: bool = False # Explicit confirmation
class PushResponse(BaseModel):
"""Response after push attempt"""
push_log_id: int
status: PushStatus
success: bool
message: str
device_output: Optional[str] = None
error_message: Optional[str] = None
class PushLogResponse(BaseModel):
"""Push log response (audit trail)"""
id: int
device_id: int
configuration_id: int
status: PushStatus
commands_sent: str
device_output: Optional[str] = None
error_message: Optional[str] = None
was_rolled_back: bool
pushed_by: Optional[str] = None
created_at: datetime
class Config:
from_attributes = True