add examples, convert models

This commit is contained in:
2026-03-10 03:32:51 +03:00
parent 324524c66a
commit a7d5c0617d
6 changed files with 54 additions and 13 deletions
+2
View File
@@ -5,6 +5,8 @@ from typing import Any, Dict, List, Optional
class Interface:
name: str
adapter: Optional[str]
master_interface: Optional[str]
ip_address: Optional[str]
network: Optional[str]
default_gateway: Optional[str]
+26 -12
View File
@@ -15,6 +15,8 @@ from . import RawDevices
name_matching = {
"DEVICE_TYPE": "Role",
"DEVICE_NAME": "Name",
"ADAPTER": "Adapter",
"MASTER": "Master Interface",
"INTERFACE_NAME": "Interface",
"NETWORK_NAME": "Network",
"VLAN": "VLAN",
@@ -30,6 +32,10 @@ name_matching = {
}
def _get_from_field(fields: dict, field_name: str) -> str:
return fields.get(name_matching[field_name], "").strip()
def parse_devices(raw_devices: list[RawDevices]) -> list[Device]:
devices = []
@@ -73,22 +79,30 @@ def add_interfaces(devices: list[Device], raw_devices: list[RawDevices]) -> None
f"Device with name '{device_name}' not found for interface parsing"
)
interface = Interface(
name=raw_device.fields.get(name_matching["INTERFACE_NAME"], "").strip(),
ip_address=raw_device.fields.get(name_matching["IP_ADDRESS"], "").strip(),
network=raw_device.fields.get(name_matching["NETWORK_NAME"], "").strip(),
default_gateway=raw_device.fields.get(
name_matching["DEFAULT_GATEWAY"], ""
).strip(),
)
if not raw_device.fields.get(name_matching["ADAPTER"], "").strip():
interface = VirtualInterface(
name=_get_from_field(raw_device.fields, "INTERFACE_NAME"),
master_interface=_get_from_field(raw_device.fields, "MASTER"),
ip_address=_get_from_field(raw_device.fields, "IP_ADDRESS"),
network=_get_from_field(raw_device.fields, "NETWORK_NAME"),
default_gateway=_get_from_field(raw_device.fields, "DEFAULT_GATEWAY"),
)
else:
interface = Interface(
name=_get_from_field(raw_device.fields, "INTERFACE_NAME"),
adapter=_get_from_field(raw_device.fields, "ADAPTER"),
master_interface=_get_from_field(raw_device.fields, "MASTER"),
ip_address=_get_from_field(raw_device.fields, "IP_ADDRESS"),
network=_get_from_field(raw_device.fields, "NETWORK_NAME"),
default_gateway=_get_from_field(raw_device.fields, "DEFAULT_GATEWAY"),
)
device.add_interface(interface)
return
def parse_networks(
devices: list[Device], raw_devices: list[RawDevices]
) -> list[Network]:
def parse_networks(raw_devices: list[RawDevices]) -> list[Network]:
networks = []
for raw_device in raw_devices:
@@ -146,7 +160,7 @@ def convert_raw_topology(raw_devices: list[RawDevices]) -> Topology:
topology.add_device(device)
logging.info(f"Parsing networks from raw devices")
networks = parse_networks(devices, raw_devices)
networks = parse_networks(raw_devices)
assign_interfaces_to_networks(networks, devices)
for network in networks: