feat: network topology diagram with Packet-Tracer-style symbols
- New section "Netzwerk-Topologie": one diagram per site built from NetBox cable paths (traced through patch panels), layered top-down by cabling (provider > firewall/router > core > access > endpoints), barycenter ordering, "2x" for parallel links, provider circuits as clouds and devices outside the scope dashed. Labels: management IP, model, ports. - New export format "draw.io": the topology as an editable .drawio file (one page per site, symbols embedded). - 14 built-in symbols drawn with Pillow; automatic mapping from role, model and manufacturer, passive gear (patch panels, PDUs, UPS) hidden. - New TopologySymbol model (migration 0002) with list/edit/delete UI, symbol gallery, custom icon upload and a "Topologie-Symbol" button on device type and device role pages. Bump version to 0.4.0 - requires "manage.py migrate". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -406,3 +406,18 @@ def licenses(scope, opts):
|
||||
if not found_source:
|
||||
return _empty(opts, blocks, "Kein Lizenz-Plugin installiert (z.B. netbox-lifecycle) – siehe README.")
|
||||
return blocks if len(blocks) > 1 else _empty(opts, blocks)
|
||||
|
||||
|
||||
@section("topology", "Netzwerk-Topologie", "Netzwerk", default=False, hint="Diagramm mit Symbolen, wie Packet Tracer")
|
||||
def topology(scope, opts):
|
||||
from .topology import build_graphs, render_png
|
||||
|
||||
blocks = [H(1, "Netzwerk-Topologie")]
|
||||
graphs = build_graphs(scope, opts)
|
||||
if not graphs:
|
||||
return _empty(opts, blocks, "Keine verkabelten Geräte gefunden.")
|
||||
ports = "ports" in (opts.get("topo_details") or [])
|
||||
for g in graphs:
|
||||
blocks.append(H(2, g.title))
|
||||
blocks.append(IMAGES([(None, "", render_png(g, show_ports=ports))], wide=True))
|
||||
return blocks
|
||||
|
||||
Reference in New Issue
Block a user