netbox-community / netbox

The premier source of truth powering network automation. Open source under Apache 2. Try NetBox Cloud free: https://netboxlabs.com/free-netbox-cloud/
http://netboxlabs.com/oss/netbox/
Apache License 2.0
15.8k stars 2.54k forks source link

Support half-height rack units #51

Closed troxil closed 2 years ago

troxil commented 8 years ago

Adding new device with 1.5U will fail due to rounding up or down.

Technically this isn't a big deal, because I'd generally round up.

Example: Palo Alto Firewall - PA3060 - Data Sheet: https://www.paloaltonetworks.com/apps/pan/public/downloadResource?pagePath=/content/pan/en_US/resources/datasheets/pa-3000-series-specsheet

ryanmerolle commented 8 years ago

There are even some devices that do not take the entire RU's slot from left to right. Cisco ASA 5505s for example. I have seen some colos with multiples of these devices sitting in the same RU slot. Does it make sense to include a way to assign fractions of a normal rack width?

I could even see this sort of fractional width be useful for patch panels. This may add too much complexity and could even be modeled by adding ports to a patch panel as you add new patch panel models.

I'm not demanding any of this, just talking out the use cases so we do not propose solutions that prevent future flexibility.

candlerb commented 8 years ago

I'd like to expand this use case a bit.

Rack rails have 3 holes per 1U. I have unfortunately to work with data centres where:

  1. things are not mounted on 1U boundaries, but using the other holes;
  2. some servers are slightly bigger than 4U and therefore a gap is required between them (in this case the ones I'm thinking of are mounted on 5U boundaries, but just under 1U is wasted)

It would be helpful to accurately capture what is there: even if it isn't pretty :-)

Good enough for me would be units of 1/3U for equipment height and rack position.

However for flexibility I think it would be sensible to allow tenths of a U. I could then describe my server as 4.1U (which is pretty accurate) and users could choose rack positions like N.0, N.3 and N.7 when mounting on the odd holes.

As regarding equipment mounted side-by-side:

I also have to deal with some equipment like Mac Minis sitting on shelves. These can currently be recorded as "not racked", and we can make a shelf object which takes 1U, but that's not ideal.

A possible approach would be to allow multiple equipment items to share the same U of rack space (if explicitly requested), assuming we need to model the shelf itself.

But otherwise, if each piece of equipment could have its own X/Y position and width/height (again, maybe in units of 0.1U) then the rack display would be reasonably accurate, and this would also cover the side-by-side equipment case as well as ad-hoc shelf layouts. Arguably getting too close to a drawing package :-(

As I understand it, the width of equipment in a 19" rack, excluding ears, is very close to 10U. So being able to specify the width of equipment in units of 0.1U, with a default of 10.0U, would be straightforward. When placing an item, if its width is less than 10.0U then you'd also specify its horizontal position. Since you can have two Mac Minis on the same shelf in front and behind each other, you'd still need to allow overlap.

It's possibly not worth modelling the Z axis explicitly. However I do have cases where there is equipment mounted both front and back (which is of course supported by Netbox). Recording the actual depth of equipment would allow a useful side view to be generated.

ddryden commented 8 years ago

I'd really like to see an option to have more then one server side by side in 1U. We have quite a few of these 8 servers in 4U chassis: Supermicro FatTwin

ltning commented 6 years ago

Rack shelves are often 1/3 U, and we use them to support equipment that is not, or only poorly, rack-mountable. Not sure how to handle these without fraction support (or 1/3 units).

SA0TAY commented 6 years ago

It's pretty common for PDUs to take 1.5 U, is it not?

girlpunk commented 6 years ago

Never seen a 1.5U PDU, but I've got a lot of shelves that take up 1/3 of a U.

@ddryden Would it not be better to have the chassis as a full width/height parent device, and each of the blades as a child in it?

candlerb commented 6 years ago

Making the rack position and device height be decimal (instead of integer) values seems like a simple and general solution.

The main issue I see is in the user interface for selecting the rack position, where currently the U positions are selected from a drop-down list. Would people be happy just to enter a number?

girlpunk commented 6 years ago

@candlerb Would that also deal with non-rack mounted devices (e.g. a tower server or NAS) on a shelf in a cab?

candlerb commented 6 years ago

No, I was only talking about vertical positioning, and things which are odd vertical sizes like 1.5U

Things on shelves don't really work unless you can have overlapping allocations, because multiple devices can sit beside each other on a shelf, and also behind/in front of each other. The current data model isn't going to cope with that without adding X/Y/Z positioning.

I suppose you could make a shelf with 12U of space above it into a 12U "chassis", and put devices "inside" it as child devices. That's pretty horrible though.

ltning commented 6 years ago

Somewhat related - what about equipment mounted back-to-back?

candlerb commented 6 years ago

Somewhat related - what about equipment mounted back-to-back?

How do you mean, apart from what Netbox already does? It supports items which are front-mounted and back-mounted, which either take the full depth or can be mounted back-to-back.

samschmitt22 commented 3 years ago

This would be great as we have a lot of devices that sit side by side on a shelf within 1U. Not sure how to map them otherwise without making a bunch of Dummy chasis

ndom91 commented 3 years ago

I think this was meant more half height devices, like for the 3.5U Juniper MX104, not devices which are half width.

Half width is an odd one, but could maybe be solved by a similar boolean like netbox already has for half-depth / full-depth.

thefreakquency commented 3 years ago

Half width can be solved by the Device bay capability. Create a 1U shelf device type with 2 bays, and assign 2x child devices to that shelf. +1 for the MX104 at 3.5U. When I have only one in the rack it's fine, I'm loosing half rack space anyway. but when you have 2, you cant model that 7U space utilization properly. :(

yarnocobussen commented 3 years ago

@thefreakquency That documents devices in a way that doesn't represent reality, which is undesirable.

thefreakquency commented 3 years ago

@yarnocobussen Please explain what and why it doesn't represent reality...

samschmitt22 commented 3 years ago

The only issue are devices that could either be stand alone or a child. IE we have some devices that are a half U wide that come with rack mounts to mount one in a U, but you can also mount two of them in one U.

thefreakquency commented 3 years ago

The way I see it is to have a Device type for that node (Let's call it Model_X) as a parent with a device bay. Should you need to add a second unit in the same U, have another Device Type called Model_X_2ndUnit, and add it as a child device of the first one. Both will be independently modeled as 2 devices as (for cabling, power, etc), except for the rack space image. Anyway, this is off topic as the current issue is related to half-height rack units. If you require Half-width rack unit, please refer to #2467 or https://netbox.readthedocs.io/en/stable/core-functionality/devices/#device-bays

networkhorse commented 3 years ago

We have the largest deployment of Adtran SDX 6320 OLTs in the world and those are annoyingly also 1.5U. At the moment, until Netbox is able to support 1.5U, we're actually just making our racks larger within Netbox, making our devices 2U, and will later have a script automate the repositioning when it'll work.

I think this would be incredibly useful to have since then we'll know for sure the RUs in which our equipment rests.