aboutsummaryrefslogtreecommitdiffstats
path: root/api/app/models/device.py
blob: 95ed5257058de1bdad85a125c2740280ba79997c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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