37 lines
881 B
Python
37 lines
881 B
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from typing import Optional
|
|
|
|
from pydantic import BaseModel, Field, ConfigDict
|
|
|
|
|
|
class HostBase(BaseModel):
|
|
name: str = Field(..., min_length=1)
|
|
ip_address: str = Field(..., min_length=3)
|
|
ansible_group: Optional[str] = None
|
|
status: Optional[str] = Field(default="unknown")
|
|
reachable: Optional[bool] = False
|
|
last_seen: Optional[datetime] = None
|
|
|
|
|
|
class HostCreate(HostBase):
|
|
pass
|
|
|
|
|
|
class HostUpdate(BaseModel):
|
|
ansible_group: Optional[str] = None
|
|
status: Optional[str] = None
|
|
reachable: Optional[bool] = None
|
|
last_seen: Optional[datetime] = None
|
|
deleted_at: Optional[datetime] = None
|
|
|
|
|
|
class HostOut(HostBase):
|
|
id: str
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
deleted_at: Optional[datetime] = None
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|