Enhance BaseDevice methods with detailed parsing documentation
- Updated the `vlans`, `interfaces`, and `system` methods in the `BaseDevice` class to include comprehensive docstrings outlining expected raw data structures and error handling. - Modified the `Interfaces` model in `contract.py` to allow optional fields for `ip_address` and `mask`, improving flexibility in interface definitions.
This commit is contained in:
@@ -25,13 +25,47 @@ class BaseDevice(ABC):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def vlans(self) -> list["Vlans"]: ...
|
def vlans(self) -> list["Vlans"]:
|
||||||
|
f"""
|
||||||
|
Parse VLAN configuration from self._raw['vlans'].
|
||||||
|
|
||||||
|
Expected raw structure:
|
||||||
|
[{"id": 10, "description": "MGMT"}, {"id": 15, "name": "SSH"}, ...]
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
list[Vlans]: список VLAN из секции vlans,
|
||||||
|
пустой список если секция отсутствует.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
ValueError: если _raw содержит некорректные данные.
|
||||||
|
"""
|
||||||
|
...
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def interfaces(self) -> list["Interfaces"]: ...
|
def interfaces(self) -> list["Interfaces"]:
|
||||||
|
f"""
|
||||||
|
Parse Interface configuration from self._raw['interfaces'].
|
||||||
|
|
||||||
|
Expected raw structure:
|
||||||
|
[{"name": "GEthernet1/0/1", "ip_address": "192.168.1.1", "mask": "24", "description": "IPBB interface"}]
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
ValueError: если _raw содержит некорректные данные.
|
||||||
|
"""
|
||||||
|
...
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def system(self) -> "System": ...
|
def system(self) -> "System":
|
||||||
|
"""
|
||||||
|
Parse System configuration from self._raw['system'].
|
||||||
|
|
||||||
|
Expected raw structure:
|
||||||
|
{"model":"RB951Ui-2nD", serial_number: "B88C0B31117B", "version": "7.12.1"}
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
ValueError: если _raw содержит некорректные данные.
|
||||||
|
"""
|
||||||
|
...
|
||||||
|
|
||||||
def _load_template(self):
|
def _load_template(self):
|
||||||
path = Path(__file__).parent / "template" / self.template
|
path = Path(__file__).parent / "template" / self.template
|
||||||
|
|||||||
@@ -3,8 +3,9 @@ from pydantic import BaseModel, Field
|
|||||||
|
|
||||||
|
|
||||||
class Interfaces(BaseModel):
|
class Interfaces(BaseModel):
|
||||||
ip_address: IPv4Address
|
name: str
|
||||||
mask: int
|
ip_address: IPv4Address | None = None
|
||||||
|
mask: int | None = None
|
||||||
description: str
|
description: str
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user