Racks Positioning How-To

This document explains how-to modelize in RacksDB the datacenter rooms with their empty racks at their exact position.

For learning purpose, consider this example datacenter room map with this overly uncommon racks layout:

Uncommon datacenter room map

First, the map indicates the room measures 10 meters in width and 8 meters in depth. This is modelized in RacksDB database like this:

datacenters:
- name: mydatacenter
  rooms:
  - name: myroom
    dimensions:
      depth: 8m
      width: 10m

The dimensions of the room are reported in the dimensions property of DatacenterRoom object, using ~dimension defined type.

In RacksDB database model, racks are grouped in rows. A row is basically an alignment of one or multiple racks. In this example, 4 rows can easily be identified:

Datacenter room map racks rows

  • The row R1, with 4 racks horizontally aligned.

  • The row R2, with 4 racks and doors oriented to the top on the room.

  • The row R3, with 6 racks slightly rotated.

  • The row R4, with 6 racks vertically aligned.

The reference point to control racks position is the top-left corner of the 1st rack in the row. The position of the racks row is then defined by the distance between this reference point and the top-left corner of the room.

The rotation angle is considered clockwise compared to an horizontal line. The unit is in degrees. The default rotation angle is 0, ie. the row is horizontal. A rotation of 90° or 270° represents a vertically aligned racks row.

For more determinism, the top-left corner is considered before the rotation of the row. This implies that, with some rotation angles, the reference point used for placing the rack rows might not necessarily be the exact top-left corner of the racks row on the resulting map.

By default, RacksDB arbitrary places the racks doors oriented to the bottom of the room. The rows must be marked as reversed to get the doors on the other side.

The orientation of the doors is considered before the rotation of the row. This implies that, with rotation angles between 90 and 270°, the doors are actually oriented to the bottom of the room without the row being reversed.

Consider the following measures for the example:

Racks rows positioning example

The reference point of row R4 is not the actual top-left corner in the room map. This is explained by the fact that the top-left corner is evaluated before the rotation of the row, as previously stated. With a rotation angle of 90°, the bottom-left corner becomes after the rotation the actual top-left corner in the map.

This whould result in the following rack rows definitions in RackDB database:

  • row R1:

    datacenters:
    - name: mydatacenter
      rooms:
      - name: myroom
        …
        rows:
        # Row R1 with 4 racks horizontally aligned (no rotation)
        - name: R1
          position:
            depth: 2m
            width: 1m
          racks:
          - name: R1-[01-04] # 4 racks
            type: standard
        …

    The distances between the reference point and the top-left corner of the room is reported in the position property of RacksRow object.

  • row R2:

        …
        # Row R2 with 4 racks and doors oriented to the top on the room.
        - name: R2
          reversed: true
          position:
            depth: 1.5m
            width: 6m
          racks:
          - name: R2-[01-04] # 4 racks
            type: standard
        …

    The row is marked as reversed, using the reversed boolean property RacksRow object, to orientate the rack doors to the top of the room.

  • row R3:

        …
        # Row R3 with 6 racks
        - name: R3
          position:
            depth: 4m
            width: 2m
            rotation: 30 # Slight rotation
          racks:
          - name: R3-[01-06] # 6 racks
            type: standard
        …

    This row has a set of 6 racks. The rotation is expressed in the optional rotation property of RacksRow object, with a value of 30° using the ~angle defined type.

  • row R4:

        …
        # Row R4 with 6 racks.
        - name: R4
          reversed: true # Get doors oriented to room's right wall
          position:
            depth: 3m
            width: 8m
            rotation: 90 # Vertical row
          racks:
          - name: R4-[01-04] # 4 racks
            type: standard

    This row has a rotation angle of 90° (ie. vertically aligned oriented to the bottom of the room). The row is marked as reversed to orientate the racks doors to the right side of the room.

Based on this rather uncommon example, you are probably now able to specify the positions of your racks in datacenter rooms in RacksDB!

Please file an issue on project code tracker if you feel the layout of your datacenter rooms and racks cannot be modelized in RacksDB, we would be happy to consider your specificities.
Show complete datacenter YAML example
datacenters:
- name: mydatacenter
  rooms:
  - name: myroom
    dimensions:
      depth: 8m
      width: 10m
    rows:
    # Row R1 with 4 racks horizontally aligned (no rotation)
    - name: R1
      position:
        depth: 2m
        width: 1m
      racks:
      - name: R1-[01-04] # 4 racks
        type: standard

    # Row R2 with 4 racks and doors oriented to the top on the room.
    - name: R2
      reversed: true
      position:
        depth: 1.5m
        width: 6m
      racks:
      - name: R2-[01-04] # 4 racks
        type: standard

    # Row R3 with 6 racks
    - name: R3
      position:
        depth: 4m
        width: 2m
        rotation: 30 # Slight rotation
      racks:
      - name: R3-[01-06] # 6 racks
        type: standard

    # Row R4 with 6 racks.
    - name: R4
      reversed: true # Get doors oriented to room's right wall
      position:
        depth: 3m
        width: 8m
        rotation: 90 # Vertical row
      racks:
      - name: R4-[01-04] # 4 racks
        type: standard