Appearance
Complete examples
Each example below is a whole file: paste it into the DSL editor to see it in every view. All of them are checked against the app's parser when the docs are built.
The demo design used in the guide's screenshots is a fourth example: one rack with a breakout leaf switch, bonded servers, two PDUs and every power cord.
A rack with a server, a switch and a PDU
One rack of compute and one of network gear: a full-form server with a bonded NIC and redundant power inlets, a templated leaf switch, a templated PDU, two power cords and a fiber link with its parts and serial numbers.
xml
<Catalog>
<Switch id="leaf-sw" model="SN5600" manufacturer="NVIDIA" rackUnits="1">
<PortGroup label="ports" portCount="64" speed="800G" connector="OSFP"
layout={{ x: 0, y: 0, cols: 32, groupSize: 8, rows: 2, w: 380, h: 40 }} />
<PortGroup label="mgmt" portCount="1" speed="1G" connector="RJ45"
layout={{ x: 398, y: 20, cols: 1 }} />
</Switch>
<PDU id="pdumh30hv" model="PDUMH30HV" manufacturer="Tripp Lite" rackUnits="2"
phase="single" voltage="208/230V" amperage="30" deratedAmperage="24"
capacityKw="5.5" inputConnector="L6-30P" cordLength="12 ft. (3.66 m)"
metering="local">
<Phase label="bank1" outletCount="8" receptacle="C13" breaker="20"
layout={{ x: 24, y: 16, cols: 8, groupSize: 4 }} />
<Phase label="bank2" outletCount="8" receptacle="C13" breaker="20"
layout={{ x: 24, y: 60, cols: 8, groupSize: 4 }} />
<Phase label="high" outletCount="2" receptacle="C19"
layout={{ x: 300, y: 16, cols: 2 }} />
<Nic label="mgmt" portCount="1" speed="1G" connector="RJ45"
layout={{ x: 390, y: 60, cols: 1 }} />
</PDU>
</Catalog>
<Topology view="rack-elevation">
<Rack label="CR01" units="48" />
<Rack label="NR01" units="48" row="2" />
<Server label="node-001" position={{ x: 100, y: 100 }} labels="rack-cr01,gpu"
rackId="CR01" rackElevation="1" rackUnits="10">
<Nic label="eth0">
<Port label="p0" speed="100G" connector="QSFP28" />
<Port label="p1" speed="100G" connector="QSFP28" />
</Nic>
<Inlet label="PSU1" count="2" connector="C14" watts="1600" />
<Bond label="bond0" mode="lacp" ports="eth0/p0,eth0/p1" />
</Server>
<Switch label="leaf-01" template="leaf-sw" rackId="NR01" rackElevation="1" />
<PDU label="pdu-a" template="pdumh30hv" rackId="CR01" rackElevation="47" />
<PowerCable from="pdu-a/bank1/p0" to="node-001/PSU1/p0" length="1.8 m" />
<PowerCable from="pdu-a/bank2/p0" to="node-001/PSU1/p1" length="1.8 m" />
<Cable from="node-001/eth0/p0" to="leaf-01/ports/p0" material="fiber" mode="active" speed="100G">
<Transceiver model="MMA1L10-CR" manufacturer="NVIDIA" connector="QSFP28" speed="100G" modulation="4x25Gb/s NRZ" serialnumber="MT2447FT12457" />
<Fiber model="MFP7E30-N005" manufacturer="NVIDIA" length="5m" connector="MPO12 APC to MPO12 APC" />
<Transceiver model="MMA1L10-CR" manufacturer="NVIDIA" connector="QSFP28" speed="100G" modulation="4x25Gb/s NRZ" serialnumber="MT2447NS07871" />
</Cable>
</Topology>Breakout cables, negotiated speed and link state
A switch whose 400G ports break out into two 200G lanes, each lane cabled to a server port with a catalog cable. One lane trained at 100G, one is down. One port is split from its template with a <Breakout> override.
xml
<Catalog>
<Switch id="sn4700" model="SN4700" manufacturer="NVIDIA" rackUnits="1">
<PortGroup label="links" portCount="32" speed="400G" connector="QSFP-DD" breakout="2"
portPrefix="swp" portStart="1"
layout={{ x: 12, y: 0, cols: 16, groupSize: 4, rows: 2 }} />
</Switch>
<Nic id="e810-2p" model="E810-CQDA2" manufacturer="Intel"
portCount="2" speed="100G" connector="QSFP28" />
<Server id="r760" model="PowerEdge R760" manufacturer="Dell" rackUnits="2">
<Nic label="e810" template="e810-2p" portCount="2" speed="100G" connector="QSFP28"
layout={{ x: 20, y: 10, cols: 2 }} />
<Inlet label="PSU1" model="PWS-2K05A-1R" count="1" connector="C14" watts="1400" />
<Inlet label="PSU2" model="PWS-2K05A-1R" count="1" connector="C14" watts="1400" />
</Server>
<Cable id="dac-400g-2x200g-3m" model="400G to 2x200G DAC 3m" manufacturer="FS"
speed="400G" connector="QSFP-DD" material="copper" mode="passive">
<Transceiver model="Q2DD-400G-A" manufacturer="FS" connector="QSFP-DD" speed="400G" />
<Copper model="Q2DD-400G-PC03" manufacturer="FS" length="3m" modulation="4x100Gb/s PAM4" />
<Transceiver model="Q56-200G-B0" manufacturer="FS" connector="QSFP56" speed="200G" />
<Transceiver model="Q56-200G-B1" manufacturer="FS" connector="QSFP56" speed="200G" />
</Cable>
</Catalog>
<Topology view="switch-port-mapping">
<Rack label="R1" units="42" />
<Switch label="leaf-01" template="sn4700" rackId="R1" rackElevation="40"
position={{ x: 20, y: 20 }} labels="fabric-a">
<Breakout port="links/swp32" channels="none" />
</Switch>
<Server label="node-1" template="r760" rackId="R1" rackElevation="1"
position={{ x: 20, y: 260 }} labels="compute">
<Bond label="bond0" mode="active-backup" ports="e810/p0,e810/p1" />
<Inlet label="PSU1" serialnumber="P2K05AB12345" />
</Server>
<Cable from="leaf-01/links/swp1:0" to="node-1/e810/p0" template="dac-400g-2x200g-3m"
negotiatedSpeed="100G" link="up" labels="fabric-a" />
<Cable from="leaf-01/links/swp1:1" to="node-1/e810/p1" template="dac-400g-2x200g-3m"
link="down" labels="fabric-a" />
</Topology>Everything written out in full
No templates: a switch with OS-style port names and a hand-split port, a server whose power supplies have mixed inlets, and a PDU whose outlets are listed one by one.
xml
<Catalog>
<Transceiver id="qsfp28-sr4" model="MMA1B00-C100D" manufacturer="NVIDIA" formFactor="QSFP28" />
</Catalog>
<Topology view="power-budget">
<Rack label="R1" units="42" />
<Switch label="mgmt-sw" rackId="R1" rackElevation="42">
<PortGroup label="ports">
<Port label="Eth1/1" speed="100G" connector="QSFP28" breakout="4" />
<Port label="Eth1/2" speed="100G" connector="QSFP28" />
</PortGroup>
<Inlet label="PSU1" count="2" connector="C14" watts="350" />
</Switch>
<Server label="storage-01" rackId="R1" rackElevation="10" rackUnits="2" labels="storage">
<Nic label="eth0" side="back" layout={{ x: 20, y: 10, cols: 2 }}>
<Port label="p0" speed="25G" connector="SFP28" />
<Port label="p1" speed="25G" connector="SFP28" />
</Nic>
<Inlet label="PSU1" captive="true" cordLength="1.8 m" watts="750">
<Port label="left" connector="C14" />
<Port label="right" connector="C20" />
</Inlet>
</Server>
<PDU label="pdu-b" rackId="R1" rackElevation="1" phase="single" voltage="208V"
amperage="30" inputConnector="L6-30P" metering="network" outletSwitching="true">
<Phase label="bank1" breaker="20">
<Outlet label="o0" receptacle="C13" />
<Outlet label="o1" receptacle="C13" />
<Outlet label="o2" receptacle="C19" />
</Phase>
<Nic label="mon">
<Port label="p0" speed="1G" connector="RJ45" />
</Nic>
</PDU>
<PowerCable from="pdu-b/bank1/o0" to="storage-01/PSU1/left" length="1 m" labels="feed-b" />
<PowerCable from="pdu-b/bank1/o2" to="storage-01/PSU1/right" length="1 m" labels="feed-b" />
<PowerCable from="pdu-b/bank1/o1" to="mgmt-sw/PSU1/p0" length="2 m" labels="feed-b" />
<Cable from="mgmt-sw/ports/Eth1/1:0" to="storage-01/eth0/p0" material="copper" mode="passive" speed="25G" />
</Topology>