Skip to content

Topology: racks and devices ​

The <Topology> block is what is installed: racks, the devices in them, and the cables between them.

Rack ​

xml
<Rack label="CR01" units="48" />
<Rack label="NR01" units="48" row="2" />
AttributeRequiredDefaultValid values / description
labelyesUnique rack label. Devices reference it with rackId
unitsno36Whole number: rack height in U
rowno1Whole number: which row the rack is drawn in, in Rack Elevation

Devices ​

<Server>, <Switch> and <PDU> take the same attributes. A device is written in one of two forms.

Template form — the structure comes from a catalog template:

xml
<Switch label="leaf-01" template="sn5600" rackId="NR01" rackElevation="1"
        labels="fabric-a,leaf" />

Full form — NICs and ports written out inline:

xml
<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>
AttributeRequiredDefaultValid values / description
labelyesUnique device label. The first part of every port path
templatenoId of a catalog device template
positionnoplaced automatically{{ x: N, y: N }}: where the card sits in Port Mapping
labelsnoComma-separated filter tags — e.g. rack-a,gpu
rackUnitsno1Whole number: height in U
rackIdnoLabel of the <Rack> it is mounted in
rackElevationnoWhole number: the lowest unit it occupies, counting from 1 at the bottom
cardWidthnoAlways 424 card units (440 mm); other values are rescaled on load
cardHeightnoCard height in pixels in Port Mapping

A <PDU> also takes the PDU electrical spec. A templated PDU inherits it from its template field by field, as it inherits its outlets.

Children of a templated device ​

A device written with template="..." gets its ports from the template, but may still carry things that belong to this one installed unit:

ChildPurpose
<Bond>How this device's ports are teamed
<Breakout>Split one switch port differently from the template (<Switch> only)
<Inlet label serialnumber>Record the serial number of an installed power supply
xml
<Server label="srv-01" template="r760" rackId="CR01" rackElevation="5">
  <Bond label="bond0" mode="lacp" ports="eth0/p0,eth0/p1" />
  <Inlet label="PSU1" serialnumber="P2K05AB12345" />
  <Inlet label="PSU2" serialnumber="P2K05AB12346" />
</Server>

Children of a full-form device ​

DevicePort containersOther children
<Server><Nic><Inlet>, <Bond>
<Switch><PortGroup> or <Nic><Inlet>, <Bond>
<PDU><Phase> (outlet banks), <Nic> (monitor port)—

See Topology: ports, inlets, bonds.

Labels and the label filter ​

Every label used in the topology appears as a button in the label filter at the top of each view's right side bar, all selected by default. A device is shown when at least one of its labels is selected; a device without labels is shown while Unlabeled is selected. Devices filtered out are greyed and hatched in Rack Elevation, Port Mapping and Power Budget, hidden in Fabric Topology, and not counted in the BOM. The filter is view state and is not written to the file.

Cables and power cords have labels too. Fabric Topology adds a Fabric labels group for network cables, and Power Budget a Power grid group for power cords. The device group and the cable group combine: a cable is kept when it passes the cable group and, if the device group is narrowed, a device at one of its ends passes it. The lanes of one breakout port are one physical cable, so their labels count together.