diff options
Diffstat (limited to 'api/app/models/device.py')
-rw-r--r-- | api/app/models/device.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/api/app/models/device.py b/api/app/models/device.py new file mode 100644 index 0000000..95ed525 --- /dev/null +++ b/api/app/models/device.py @@ -0,0 +1,47 @@ +from pydantic import BaseModel +import ipaddress + + +class Placement(BaseModel): + x: int + y: int + height: int + width: int + + +class PublicDevice(BaseModel): + distro_name: str | None = None + tags: list[str] = [] + placement: Placement | None = None + + +class PublicDevices(BaseModel): + switches: dict[str, PublicDevice] + time: int | None = None + hash: str | None = None + + +class DeviceInterface(BaseModel): + name: str + descr: str + type: str + + +class DeviceManagement(BaseModel): + sysname: str = "e1-1" + serial: str | None = None + platform: str | None = None + mgmt_v4_addr: ipaddress.IPv4Address | None = None + mgmt_v6_addr: ipaddress.IPv6Address | None = None + mgmt_vlan: str | None = None + traffic_vlan: str | None = None + last_updated: str | None = None + distro_name: str | None = None + distro_phy_port: str | None = None + # interfaces: dict[str, DeviceInterface] + + +class DevicesManagement(BaseModel): + switches: dict[str, DeviceManagement] + time: int | None = None + hash: str | None = None |