Fix Traefik router backend targets in generated diagrams

This commit is contained in:
beatz174-bit
2026-05-13 09:17:41 +10:00
parent 9d79f828e4
commit 7bc2729ef6
7 changed files with 3488 additions and 3236 deletions
+6 -4
View File
@@ -120,7 +120,7 @@ def generate_docker_traefik_dynu(compose: dict, out_dot: Path, out_svg: Path) ->
lines = [
"digraph DockerTraefikDynu {",
" graph [rankdir=LR, compound=true, splines=ortho, nodesep=0.5, ranksep=1.0, fontname=\"Helvetica\"];",
" graph [rankdir=LR, compound=true, splines=true, nodesep=0.5, ranksep=1.0, fontname=\"Helvetica\"];",
" node [fontname=\"Helvetica\", fontsize=10, style=\"rounded,filled\"];",
" edge [fontname=\"Helvetica\", fontsize=9];",
' "ext:dynu" [label="Dynu / Public DNS", shape=oval, fillcolor="#fde68a"];',
@@ -151,7 +151,9 @@ def generate_docker_traefik_dynu(compose: dict, out_dot: Path, out_svg: Path) ->
tls = labels.get(f"{router_prefix}{router}.tls", "false")
lines.append(f' "router:{router}" [label="router:{router}\\nentry:{entrypoints} tls:{tls}", shape=diamond, fillcolor="#fbcfe8"];')
lines.append(f' "svc:traefik" -> "router:{router}";')
lines.append(f' "router:{router}" -> "svc:{svc_name}" [label="service:{router_service}"];')
target_node = f"traefik-service:{router_service}"
lines.append(f' "{target_node}" [label="service:{router_service}", shape=component, fillcolor="#fecaca"];')
lines.append(f' "router:{router}" -> "{target_node}";')
for host in extract_hosts(rule):
clean = sanitize_domain(host, known_domains)
@@ -166,8 +168,8 @@ def generate_docker_traefik_dynu(compose: dict, out_dot: Path, out_svg: Path) ->
lb_services = sorted({k[len(service_prefix):].split(".", 1)[0] for k in labels if k.startswith(service_prefix)})
for lb in lb_services:
port = labels.get(f"{service_prefix}{lb}.loadbalancer.server.port", "")
lines.append(f' "lb:{svc_name}:{lb}" [label="lb:{lb}\\nport:{port}", shape=component, fillcolor="#fecaca"];')
lines.append(f' "lb:{svc_name}:{lb}" -> "svc:{svc_name}";')
lines.append(f' "traefik-service:{lb}" [label="service:{lb}\\nport:{port}", shape=component, fillcolor="#fecaca"];')
lines.append(f' "traefik-service:{lb}" -> "svc:{svc_name}";')
lines.append("}")
write_dot(out_dot, lines)