"""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