From 31611cbbeb9067a9084fd182092c1d9fd4fcfe0a Mon Sep 17 00:00:00 2001 From: Dmitrii Gudov Date: Tue, 17 Mar 2026 02:12:57 +0300 Subject: [PATCH] add new example, rework yaml --- TODO | 3 +++ examples/3hosts/table.csv | 6 +++++ src/netdiag/output/file_convert.py | 37 +++++++++--------------------- 3 files changed, 20 insertions(+), 26 deletions(-) create mode 100644 TODO create mode 100644 examples/3hosts/table.csv diff --git a/TODO b/TODO new file mode 100644 index 0000000..e6ca00c --- /dev/null +++ b/TODO @@ -0,0 +1,3 @@ +- в данный момент маска никуда не прходит +- обработка виртуальных интерфейсов в yaml +- добавление bridge и vlan сущностей \ No newline at end of file diff --git a/examples/3hosts/table.csv b/examples/3hosts/table.csv new file mode 100644 index 0000000..8c71445 --- /dev/null +++ b/examples/3hosts/table.csv @@ -0,0 +1,6 @@ +Name,Role,Adapter,Interface,Network,Network IP,Mask,Device IP,Default Gateway +PC1,Host,Adapter1,uplink,main,10.0.12.0,/24,10.0.12.1,0.0.0.0 +PC1,Host,,lo,,127.0.0.0,/8,127.1.1.1, +PC2,Host,Adapter1,uplink,main,10.0.12.0,/24,10.0.12.2,0.0.0.0 +PC3,Host,Adapter1,uplink,main,10.0.12.0,/24,10.0.12.3,0.0.0.0 + diff --git a/src/netdiag/output/file_convert.py b/src/netdiag/output/file_convert.py index 20df0cf..0476fae 100644 --- a/src/netdiag/output/file_convert.py +++ b/src/netdiag/output/file_convert.py @@ -35,33 +35,18 @@ def make_yaml(topology: Topology, output_path: Path) -> None: data["nodes"] = [] for _, device in topology.devices.items(): - data["nodes"].append( - { - "role": device.role, - "name": device.name, - "interfaces": [ - { - interface_name: [ - { - "ip": ( - interface.ip_address - if interface.ip_address - else None - ), - "network": ( - interface.network if interface.network else None - ), - "gateway": ( - interface.default_gateway - if interface.default_gateway - else None - ), - } - ] - } - for interface_name, interface in device.interfaces.items() - ], + interfaces = dict() + for interface_name, interface in device.interfaces.items(): + interfaces[interface_name] = { + "ip": interface.ip_address if interface.ip_address else None, + "network": interface.network if interface.network else None, + "gateway": ( + interface.default_gateway if interface.default_gateway else None + ), } + + data["nodes"].append( + {"role": device.role, "name": device.name, "interfaces": interfaces} ) with open(str(output_path), "w", encoding="utf-8") as f: