diff --git a/images/Makefile b/images/Makefile
new file mode 100644
index 0000000..f6e210e
--- /dev/null
+++ b/images/Makefile
@@ -0,0 +1,12 @@
+
+all:
+
+%.tmp.dot: %.tt pve_network_templates.tt
+ tpage $*.tt >$*.tmp.dot
+
+%.svg: %.tmp.dot
+ dot $*.tmp.dot -T svg -o $*.svg
+
+
+clean:
+ rm -f *.tmp.dot
diff --git a/images/pve_network_templates.tt b/images/pve_network_templates.tt
new file mode 100644
index 0000000..bf2ef89
--- /dev/null
+++ b/images/pve_network_templates.tt
@@ -0,0 +1,56 @@
+[% BLOCK switch_ports %]
+
+
+ |
+ [% FOREACH p IN draw_ports %]
+ [% p %] |
+ |
+ [% END %]
+ |
+
+
+[% END %]
+
+[% MACRO switch BLOCK %]
+[% id %] [
+ shape=plaintext
+ label=<
+
+ [% IF top_ports %]
+ [% PROCESS switch_ports draw_ports=top_ports %] |
+ [% END %]
+
+ | [% title %] | |
+ [% IF subtitle %]
+ | [% subtitle %] | |
+ [% END %]
+ |
+ [% IF ports %]
+ [% PROCESS switch_ports draw_ports=ports %] |
+ [% END %]
+
>
+
+ ]
+[% END %]
+
+[% MACRO server BLOCK %]
+[% id %] [
+ shape=plaintext
+ label=<
+
+ [% IF top_ports %]
+ [% PROCESS switch_ports draw_ports=top_ports %] |
+ [% END %]
+
+ [% title %] |
+ [% IF subtitle %]
+ [% subtitle %] |
+ [% END %]
+ |
+ [% IF ports %]
+ [% PROCESS switch_ports draw_ports=ports %] |
+ [% END %]
+
>
+
+ ]
+[% END %]
diff --git a/images/simple-clos-network.tt b/images/simple-clos-network.tt
new file mode 100644
index 0000000..5b551bc
--- /dev/null
+++ b/images/simple-clos-network.tt
@@ -0,0 +1,98 @@
+[% PROCESS pve_network_templates.tt %]
+
+graph clos_network {
+ splines=line
+ node [shape=record];
+ edge [];
+
+ [% switch(
+ id="spine01",
+ title="Spine01 65021",
+ subtitle="10.0.0.21/32",
+ top_ports='',
+ ports=[1,2,3,4])
+ %]
+
+ [% switch(
+ id="spine02"
+ title="Spine02 65022"
+ subtitle="10.0.0.22/32"
+ top_ports=''
+ ports=[1,2,3,4])
+ %]
+
+ [% switch(
+ id="leaf01"
+ title="Leaf01 65011"
+ subtitle="10.0.0.11/32"
+ top_ports=[51,52]
+ ports=[1])
+ %]
+
+ [% switch(
+ id="leaf02"
+ title="Leaf02 65012"
+ subtitle="10.0.0.12/32"
+ top_ports=[51,52]
+ ports=[1])
+ %]
+
+ [% switch(
+ id="leaf03"
+ title="Leaf03 65013"
+ subtitle="10.0.0.13/32"
+ top_ports=[51,52]
+ ports=[1])
+ %]
+
+ [% switch(
+ id="leaf04"
+ title="Leaf04 65014"
+ subtitle="10.0.0.14/32"
+ top_ports=[51,52]
+ ports=[1])
+ %]
+
+ spine01:1 -- leaf01:51
+ spine01:2 -- leaf02:51
+ spine01:3 -- leaf03:51
+ spine01:4 -- leaf04:51
+
+ spine02:1 -- leaf01:52
+ spine02:2 -- leaf02:52
+ spine02:3 -- leaf03:52
+ spine02:4 -- leaf04:52
+
+ [% server(
+ id="server01"
+ title="server01"
+ top_ports='eth1'
+ ports='')
+ %]
+
+ [% server(
+ id="server02"
+ title="server02"
+ top_ports='eth1'
+ ports='')
+ %]
+
+ [% server(
+ id="server03"
+ title="server03"
+ top_ports='eth1'
+ ports='')
+ %]
+
+ [% server(
+ id="server04"
+ title="server04"
+ top_ports='eth1'
+ ports='')
+ %]
+
+ leaf01:1 -- server01:eth1
+ leaf02:1 -- server02:eth1
+ leaf03:1 -- server03:eth1
+ leaf04:1 -- server04:eth1
+}