Refactor BaseDevice and Interfaces models for improved validation and structure

- Introduced `_declared_sections` in `BaseDevice` to track declared template groups.
- Enhanced `_validate_contract` method to conditionally validate VLANs based on declared sections.
- Updated docstrings in `BaseDevice` and `Interfaces` models for clarity on expected structures.
- Refactored `Interfaces` and `Vlans` models to improve field definitions and aliases.
- Commented out unused `vlans` method in `Keenetic` model for future reference.
This commit is contained in:
IluaAir
2026-02-22 15:52:45 +03:00
parent 3635a07b27
commit 753268a381
3 changed files with 55 additions and 34 deletions

View File

@@ -2,27 +2,41 @@ from ipaddress import IPv4Address
from pydantic import BaseModel, ConfigDict, Field
class Interfaces(BaseModel):
name: str
ip_address: IPv4Address | None = None
mask: int | None = None
description: str | None = None
class Base(BaseModel):
model_config = ConfigDict(populate_by_name=True)
class System(BaseModel):
"""
Requred
"""
model: str
serial_number: str
version: str
class Vlans(BaseModel):
model_config = ConfigDict(populate_by_name=True)
class Interfaces(Base):
"""
Requred
"""
vlan_id: int
name: str = Field(alias="interface")
ip_address: IPv4Address | None = None
mask: int | None = None
description: str | None = None
class Vlans(Base):
"""
Optional
"""
vlan_id: int = Field(alias="id")
name: str | None = Field(default=None, alias="description")
class Device(BaseModel):
system: System
interfaces: list[Interfaces] = []
interfaces: list[Interfaces]
vlans: list[Vlans] = []