mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-11 21:10:29 +01:00
Representation of cable managers, blanks, etc. in racks #319
Closed
opened 2025-12-29 16:20:50 +01:00 by adam
·
24 comments
No Branch/Tag Specified
main
update-changelog-comments-docs
feature-removal-issue-type
20911-dropdown
20239-plugin-menu-classes-mutable-state
21097-graphql-id-lookups
feature
fix_module_substitution
20923-dcim-templates
20044-elevation-stuck-lightmode
feature-ip-prefix-link
v4.5-beta1-release
20068-import-moduletype-attrs
20766-fix-german-translation-code-literals
20378-del-script
7604-filter-modifiers-v3
circuit-swap
12318-case-insensitive-uniqueness
20637-improve-device-q-filter
20660-script-load
19724-graphql
20614-update-ruff
14884-script
02496-max-page
19720-macaddress-interface-generic-relation
19408-circuit-terminations-export-templates
20203-openapi-check
fix-19669-api-image-download
7604-filter-modifiers
19275-fixes-interface-bulk-edit
fix-17794-get_field_value_return_list
11507-show-aggregate-and-rir-on-api
9583-add_column_specific_search_field_to_tables
v4.5.0
v4.4.10
v4.4.9
v4.5.0-beta1
v4.4.8
v4.4.7
v4.4.6
v4.4.5
v4.4.4
v4.4.3
v4.4.2
v4.4.1
v4.4.0
v4.3.7
v4.4.0-beta1
v4.3.6
v4.3.5
v4.3.4
v4.3.3
v4.3.2
v4.3.1
v4.3.0
v4.2.9
v4.3.0-beta2
v4.2.8
v4.3.0-beta1
v4.2.7
v4.2.6
v4.2.5
v4.2.4
v4.2.3
v4.2.2
v4.2.1
v4.2.0
v4.1.11
v4.1.10
v4.1.9
v4.1.8
v4.2-beta1
v4.1.7
v4.1.6
v4.1.5
v4.1.4
v4.1.3
v4.1.2
v4.1.1
v4.1.0
v4.0.11
v4.0.10
v4.0.9
v4.1-beta1
v4.0.8
v4.0.7
v4.0.6
v4.0.5
v4.0.3
v4.0.2
v4.0.1
v4.0.0
v3.7.8
v3.7.7
v4.0-beta2
v3.7.6
v3.7.5
v4.0-beta1
v3.7.4
v3.7.3
v3.7.2
v3.7.1
v3.7.0
v3.6.9
v3.6.8
v3.6.7
v3.7-beta1
v3.6.6
v3.6.5
v3.6.4
v3.6.3
v3.6.2
v3.6.1
v3.6.0
v3.5.9
v3.6-beta2
v3.5.8
v3.6-beta1
v3.5.7
v3.5.6
v3.5.5
v3.5.4
v3.5.3
v3.5.2
v3.5.1
v3.5.0
v3.4.10
v3.4.9
v3.5-beta2
v3.4.8
v3.5-beta1
v3.4.7
v3.4.6
v3.4.5
v3.4.4
v3.4.3
v3.4.2
v3.4.1
v3.4.0
v3.3.10
v3.3.9
v3.4-beta1
v3.3.8
v3.3.7
v3.3.6
v3.3.5
v3.3.4
v3.3.3
v3.3.2
v3.3.1
v3.3.0
v3.2.9
v3.2.8
v3.3-beta2
v3.2.7
v3.3-beta1
v3.2.6
v3.2.5
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.2.0
v3.1.11
v3.1.10
v3.2-beta2
v3.1.9
v3.2-beta1
v3.1.8
v3.1.7
v3.1.6
v3.1.5
v3.1.4
v3.1.3
v3.1.2
v3.1.1
v3.1.0
v3.0.12
v3.0.11
v3.0.10
v3.1-beta1
v3.0.9
v3.0.8
v3.0.7
v3.0.6
v3.0.5
v3.0.4
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v2.11.12
v3.0-beta2
v2.11.11
v2.11.10
v3.0-beta1
v2.11.9
v2.11.8
v2.11.7
v2.11.6
v2.11.5
v2.11.4
v2.11.3
v2.11.2
v2.11.1
v2.11.0
v2.10.10
v2.10.9
v2.11-beta1
v2.10.8
v2.10.7
v2.10.6
v2.10.5
v2.10.4
v2.10.3
v2.10.2
v2.10.1
v2.10.0
v2.9.11
v2.10-beta2
v2.9.10
v2.10-beta1
v2.9.9
v2.9.8
v2.9.7
v2.9.6
v2.9.5
v2.9.4
v2.9.3
v2.9.2
v2.9.1
v2.9.0
v2.9-beta2
v2.8.9
v2.9-beta1
v2.8.8
v2.8.7
v2.8.6
v2.8.5
v2.8.4
v2.8.3
v2.8.2
v2.8.1
v2.8.0
v2.7.12
v2.7.11
v2.7.10
v2.7.9
v2.7.8
v2.7.7
v2.7.6
v2.7.5
v2.7.4
v2.7.3
v2.7.2
v2.7.1
v2.7.0
v2.6.12
v2.6.11
v2.6.10
v2.6.9
v2.7-beta1
Solcon-2020-01-06
v2.6.8
v2.6.7
v2.6.6
v2.6.5
v2.6.4
v2.6.3
v2.6.2
v2.6.1
v2.6.0
v2.5.13
v2.5.12
v2.6-beta1
v2.5.11
v2.5.10
v2.5.9
v2.5.8
v2.5.7
v2.5.6
v2.5.5
v2.5.4
v2.5.3
v2.5.2
v2.5.1
v2.5.0
v2.4.9
v2.5-beta2
v2.4.8
v2.5-beta1
v2.4.7
v2.4.6
v2.4.5
v2.4.4
v2.4.3
v2.4.2
v2.4.1
v2.4.0
v2.3.7
v2.4-beta1
v2.3.6
v2.3.5
v2.3.4
v2.3.3
v2.3.2
v2.3.1
v2.3.0
v2.2.10
v2.3-beta2
v2.2.9
v2.3-beta1
v2.2.8
v2.2.7
v2.2.6
v2.2.5
v2.2.4
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.6
v2.2-beta2
v2.1.5
v2.2-beta1
v2.1.4
v2.1.3
v2.1.2
v2.1.1
v2.1.0
v2.0.10
v2.1-beta1
v2.0.9
v2.0.8
v2.0.7
v2.0.6
v2.0.5
v2.0.4
v2.0.3
v2.0.2
v2.0.1
v2.0.0
v2.0-beta3
v1.9.6
v1.9.5
v2.0-beta2
v1.9.4-r1
v1.9.3
v2.0-beta1
v1.9.2
v1.9.1
v1.9.0-r1
v1.8.4
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.7.3
v1.7.2-r1
v1.7.1
v1.7.0
v1.6.3
v1.6.2-r1
v1.6.1-r1
1.6.1
v1.6.0
v1.5.2
v1.5.1
v1.5.0
v1.4.2
v1.4.1
v1.4.0
v1.3.2
v1.3.1
v1.3.0
v1.2.2
v1.2.1
v1.2.0
v1.1.0
v1.0.7-r1
v1.0.7
v1.0.6
v1.0.5
v1.0.4
v1.0.3-r1
v1.0.3
1.0.0
Labels
Clear labels
beta
breaking change
complexity: high
complexity: low
complexity: medium
needs milestone
netbox
pending closure
plugin candidate
pull-request
severity: high
severity: low
severity: medium
status: accepted
status: backlog
status: blocked
status: duplicate
status: needs owner
status: needs triage
status: revisions needed
status: under review
topic: GraphQL
topic: Internationalization
topic: OpenAPI
topic: UI/UX
topic: cabling
topic: event rules
topic: htmx navigation
topic: industrialization
topic: migrations
topic: plugins
topic: scripts
topic: templating
topic: testing
type: bug
type: deprecation
type: documentation
type: feature
type: housekeeping
type: translation
Mirrored from GitHub Pull Request
No Label
status: accepted
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/netbox#319
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @bsakdol on GitHub (Aug 3, 2016).
It seems like this may fall within the realm of #20 or it may be too much scope creep for that particular ticket...
It would be nice to be able to place objects in a rack, such as cable managers, blanks, shelves, etc. Currently, I am creating a device for a 2U Horizontal Cable Manager and setting it to offline. Unfortunately, this means there is a new device created for every single cable manager.
The other option is I have completely missed where to perform this task (v1.4.0) and it is already included in the feature set.
IMO this wouldn't need to be anything more than an object, with options for 'label', 'RU', and 'color'. Of course, we could also get as complicated as the imagination will allow, but it seems a bit unnecessary to make too much of it.
@aaronpetak commented on GitHub (Aug 3, 2016):
I agree, having the ability to add different sized cable managers to the rack will be a huge help (or other objects that don't need to be devices). Right now, some of my racks looks very empty and the percentage of rack space free reflects that. In reality, I have put cable managers above/below equipment so my usage is much higher.
@jeremystretch commented on GitHub (Aug 3, 2016):
As I see it we have two options. One option is to extend the Device model so that it can represent a "dumb" device without any console, power, or network components. This means suppressing every instance of several built-in fields (tenant, platform, serial, etc.).
The other option is to introduce a new model to represent rack "furniture." Like devices, instances of this model would consume rack space, but they would have only a
typefield indicating their basic function (cable manager, blank panel, etc.).The second option seems more appealing to me, but it does complicate the logic needed to determine rack utilization and to validate the installation of a device within a rack.
@NetBod commented on GitHub (Aug 3, 2016):
Option 2 sounds good to me, in the DC's I work in they fill any space U with blanking plates to improve air flow and cooling.
@bsakdol commented on GitHub (Aug 3, 2016):
I agree with option 2 as well. The blanking plates for airflow/cooling brings up an interesting point, though. Some of these physical objects should be factored into the rack utilization logic, while other objects should not. In the instance of a cable manager, this should be factored in because it is a permanent object (in a sense). In the instance of a blank panel, it should not be factored into utilization because it is merely a temporary object to be removed in place of a "device" or more permanent object.
Since I imagine this would complicate the rack utilization logic even further and defeating the purpose of being able to visualize an accurate count of free space in a rack, I would see two options:
1. We all blame me for bringing more complexity into this topic and agree it would be on the user to not insert objects that don't actually factor into rack utilization (i.e. don't create an object for a blank panel).
2. A checkbox or category (i.e. 'permanent' or 'temporary') is implemented and the rack utilization logic takes that into account on whether to factor the object in or not.
Personally, I am in favor of just leaving it up to the user (which begs the question of why I tempt fate by bringing up the other option as viable).
@csfreak commented on GitHub (Aug 3, 2016):
The concern I have with option two is that it might complicate #20. Certainly this needs to be considered in that light as it is not a far stretch in my mind from cable management to patch panel.
A second thought on that matter is making sure that such furniture can occupy zero u space, or any other subset of U that is supported in the future based on #51. If I am tracking all my cable management arms, would be nice to track my zero u ones for inventory purposes. (I. E. I bought 30 of product X, where did they all go?)
@bsakdol commented on GitHub (Aug 3, 2016):
While I see your argument for zero RU objects and knowing where something ends up, that would be a different topic, in my eyes, maybe in the form of an inventory management tracking feature that goes deeper than serialized gear. What I had hoped to accomplish by adding rack objects/rack furniture is a more accurate rack utilization metric, as seen on the Racks page, as well as a reflection on the visual display. These objects would not constitute free space in a rack, so they should not be calculated as such.
@Oorweeg commented on GitHub (Sep 28, 2016):
I think this feature is important for something was going to raise separately when I came across this thread, and that is rack-space reservations.
We need a way of showing rack-space as utilised and unavailable without actually having equipment installed and this seems to essentially be the same issue as the one raised for things like cable blanks in this thread.
So +1 on this feature being added :)
@puck commented on GitHub (Sep 28, 2016):
On the suggestion of having a simplified DeviceType that suppresses most of the fields, if that goes a head, please keep Tenant. If my tenants decide to have cable management rails, blanks or whatever else, I'll still charge them for the U's occupied.
@0racle commented on GitHub (Mar 31, 2017):
I came here to also request this feature. These 'furniture' items should be non-unique, ie. I want to be able to place multiple
shelforcable mgmtitems in a single rack without having to define unique names.With regards with rack utilisation, I'd be happy with these items counting towards utilisation, but if that is untenable for others, perhaps utilisation could show green bar for devices, and an additional bit of yellow (or grey or whatever) bar for the dumb/furniture items?
@ghost commented on GitHub (Aug 23, 2017):
In order to get some visual representation of structured cabling I'm currently using a unique reference (DC code - rack # - RU#) and tacking the destination on the end. I'd quite like a Cabling type of device that doesn't need a dedicated unique name (I'm already using unnamed devices for things like cable managed) but that can reference some connectivity details in the rack view - perhaps even if unnamed devices showed the Notes field in rack view instead of the device type?
(orange is fiber, yellow is copper)
@AnythingOverIP commented on GitHub (Oct 18, 2017):
As @bradical987 mentionned, It would be useful to have the notion of "usable v/s unusable" when dealing with accessories. Blank plates used for improving airflow are not represented currently in our rack elevations as they are technically not used, but when it's used for blocking access to a (or many) specific RU, or cannot be removed without some redesign (like Cable Management unit), we add it. In the current form, we had to create a generic device without connectivity, and label device uniquely although they are generic. The last part is what bugs us most...
@lampwins commented on GitHub (Oct 28, 2017):
I have started to work on this. Following with what @jeremystretch has said, the scope of this feature has been limited to rack furniture. Patch panels and the like will be covered in #20.
@paravoid commented on GitHub (Dec 15, 2017):
Any news here? Is #1657 something that has serious chances of getting merged? We're contemplating migrating a bunch of data to Netbox very soon now, and I was wondering if we could avoid doing a Device->Furniture migration later :)
@iDemonix commented on GitHub (Jan 22, 2018):
As above, any news on the PR? I'm currently migrating 5 data centres worth of rack diagrams in to NetBox and would love to be adding furniture rather than leaving gaps to do later? Thanks :)
@collin-clark commented on GitHub (Jan 22, 2018):
For patch panels, cable mgt, etc I created a generic device, e.g Panduit WMPH2E. I then add it to a rack, but I do not give it a name. I can then re-use the device over and over again (as long as you don't give it a name).
@lampwins commented on GitHub (Jan 22, 2018):
@paravoid @iDemonix #1657 is still open at this point, but @jeremystretch has indicated that may not be the way we want to go with this. Essentially #1657 implements a new model for Furniture, thus duplicating some of the rack logic. At this point, the only other viable solution I can think of is to suppress fields and logic on the existing Device model. IMHO I want to avoid this, but ultimately not my call. If anyone else any any ideas for a data model, I am willing to try implementing it.
ATM, @collin-clark's method is the method most people are using, including myself (short of just leaving furniture out). Whatever the implementation for this feature winds up being, that should allow for a straightforward (albeit manual) migration.
@lampwins commented on GitHub (Jan 22, 2018):
IMHO we just need to make the validation logic for rack installation abstract, as #20 is surly to also introduce at lease some of the same rack requirements as this feature.
@iDemonix commented on GitHub (Jan 22, 2018):
Ahh that's a shame, this one looked like it had promise. What is the method @CorinneLSmith is using?
@lampwins commented on GitHub (Jan 22, 2018):
Sorry, the name selector got me, that was @collin-clark
@lampwins commented on GitHub (May 24, 2018):
I was thinking about this some on a plane ride and believe we would greatly benefit from re-engineering the relationship between Device and Rack. Today, Device directly stores a foreign key to Rack and contains a U position within the rack. This leads to some fairly obtuse logic for calculating rack usage, and provisioning Rack Reservations to use a different flow than assigning a Device to a rack position.
The point is, the flow is tailored to Devices. The problem is, in order to accommodate this issue as well as #20, we (probably) need new models beyond Device. For this reason, I propose an intermediary model between a rack (position) and a rackable item (Device, Reservation, this FR, and any models needed for #20).
I propose a so-called
RackUnitmodel. This model will contain the FK to the Rack, bottom-most rack unit of that rack, and the U height of the item thisRackUnitrepresents within the rack. A rackable model (e.g. Device) will contain a FK (probably OneToOne in this case) to the RackUnit.This will allow us to move the utilization logic out of the Rack model while at the same time abstracting that logic from its dependence on specific models (Device). So we can do all of the caluculation based on the Rack Unit without caring what is actually racked.
I strongly feel re-engineering this relationship and the underlying logic will set us up for success down the road.
@deadflanders commented on GitHub (Jun 30, 2018):
I would like to see a "RackFurniture" option as well! Right now I'm just adding them as devices, but one problem I have is if I add two 1RU Cable Organizers, I can't give them both a name of "1RU Cable Organzier" because the name has to be unique in NetBox. AND if I don't enter a name, then NetBox shows the Device Role in the rack view. This isn't that great because I have a category called Furniture that I use for things like Cable Brush Strips, and Cable Organizers, etc.. But then in the rack view I just see Furniture listed for various items. Would be better if Device Type showed in rack view, instead of Device Role, or even better, if I could for Furniture the Device Name didn't need to be unique so that I could put in a name like Brush Strip.
@mrintegrity commented on GitHub (Sep 19, 2018):
Ability to mark a unit as unusable would be great, some of our racks have been so badly cabled that units are unavailable due to power / copper cables running inside the rail
@lampwins commented on GitHub (Nov 13, 2018):
NetBox v2.5.0 has made a significant change to the DeviceType model in that the boolean fields
is_network_device,is_console_server, andis_pduhave been removed. With this change, when a new DeviceType is created, it is instantiated with no expectation of what, if any components will be added to it. This means it is now possible to create true "empty" device types. This is semantically what we are trying to achieve with this FR. I argue that as of v.2.5.0, this FR has been fulfilled.I am open to ideas about UI enhancements related to furniture, but I feel those should be opened as new issues.
The open PR for this issue (#1657) would require totally rewriting at this point, but as I have just stated, I don't see much point in this.
cc: @jeremystretch
@jeremystretch commented on GitHub (Nov 13, 2018):
I suppose as of v2.5 there's really nothing preventing someone from creating a new DeviceType of the desired U height called "cable manager" and simply not assigning any components. Seems like that should be sufficient for most use cases. I didn't really intend to solve that problem but there you go.