63 lines
1.4 KiB
Python
63 lines
1.4 KiB
Python
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass
|
|
|
|
|
|
@dataclass
|
|
class IpEntry:
|
|
id: str
|
|
name: str
|
|
ip: str
|
|
cidr: int
|
|
device: str
|
|
enabled: bool
|
|
|
|
@classmethod
|
|
def from_dict(cls, data: dict) -> "IpEntry":
|
|
return cls(
|
|
id=str(data["id"]),
|
|
name=str(data["name"]),
|
|
ip=str(data["ip"]),
|
|
cidr=int(data["cidr"]),
|
|
device=str(data["device"]),
|
|
enabled=bool(data.get("enabled", False)),
|
|
)
|
|
|
|
def to_dict(self) -> dict:
|
|
return {
|
|
"id": self.id,
|
|
"name": self.name,
|
|
"ip": self.ip,
|
|
"cidr": self.cidr,
|
|
"device": self.device,
|
|
"enabled": self.enabled,
|
|
}
|
|
|
|
|
|
@dataclass
|
|
class EntryView:
|
|
id: str
|
|
name: str
|
|
ip: str
|
|
cidr: int
|
|
device: str
|
|
enabled: bool
|
|
effective_enabled: bool
|
|
used: bool
|
|
containers: list[str]
|
|
usage_known: bool
|
|
|
|
def to_dict(self) -> dict:
|
|
return {
|
|
"id": self.id,
|
|
"name": self.name,
|
|
"ip": self.ip,
|
|
"cidr": self.cidr,
|
|
"device": self.device,
|
|
"enabled": self.enabled,
|
|
"effective_enabled": self.effective_enabled,
|
|
"used": self.used,
|
|
"containers": self.containers,
|
|
"usage_known": self.usage_known,
|
|
}
|