38 lines
798 B
Python
38 lines
798 B
Python
"""Device schemas"""
|
|
from pydantic import BaseModel, IPvAnyAddress
|
|
from datetime import datetime
|
|
from typing import Optional
|
|
from app.models.device import DeviceOSType
|
|
|
|
|
|
class DeviceBase(BaseModel):
|
|
"""Base device schema"""
|
|
hostname: str
|
|
ip_address: str
|
|
os_type: DeviceOSType = DeviceOSType.IOS
|
|
model: Optional[str] = None
|
|
ssh_username: Optional[str] = None
|
|
ssh_port: int = 22
|
|
is_active: bool = True
|
|
|
|
|
|
class DeviceCreate(DeviceBase):
|
|
"""Device creation schema"""
|
|
project_id: int
|
|
|
|
|
|
class DeviceUpdate(DeviceBase):
|
|
"""Device update schema"""
|
|
pass
|
|
|
|
|
|
class DeviceResponse(DeviceBase):
|
|
"""Device response schema"""
|
|
id: int
|
|
project_id: int
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|