Files
network-diagrams-tool/src/make_res.py
T
2025-12-01 02:19:22 +03:00

82 lines
1.8 KiB
Python

from check_correct import check_correct
from parse import parse_csv_to_structure
import sys
from structures import Host, Wire, Interface
import yaml
"""
meta:
id: "lab-02-basic-utils"
name: "Basic Network Utilities & Traffic Monitoring"
description: "Two hosts connected directly to each other."
links:
- endpoints: ["PC1", "PC2"]
nodes:
- name: PC1
role: host
interfaces:
- ip: "10.0.12.1/24"
- name: PC2
role: host
interfaces:
- ip: "10.0.12.2/24"
"""
def make_res(data, name):
res = {
"meta": {
"id": name,
"name": name,
},
"links": [],
"nodes": [],
}
host_int = {}
for key, value in data.items():
if value.get("type") == "host":
value["name"] = key
host = Host(value)
node_entry = {
"name": host.name,
"role": "host",
"interfaces": [
{"ip": Interface(data[iface]).ip_address}
for iface in host.interfaces
],
}
res["nodes"].append(node_entry)
host_int[host.interfaces[0]] = host.name
for key, value in data.items():
if value.get("type") == "wire":
wire = Wire(value)
link_entry = {
"endpoints": [
host_int[wire.endpoints[0]],
host_int[wire.endpoints[1]],
]
}
res["links"].append(link_entry)
return res
if __name__ == "__main__":
data = parse_csv_to_structure(sys.argv[1])
print(data)
if check_correct(data):
print("Data is correct.")
res = make_res(data, sys.argv[1])
print(res)
with open("output.yaml", "w") as f:
yaml.dump(res, f)