netbox-community / netbox

The premier source of truth powering network automation. Open source under Apache 2. Public demo: https://demo.netbox.dev
http://netboxlabs.com/oss/netbox/
Apache License 2.0
15.72k stars 2.53k forks source link

Unable to Add Devices to Device Bays #7194

Closed IBuildRobots closed 2 years ago

IBuildRobots commented 3 years ago

NetBox version

v3.0.1

Python version

3.7

Steps to Reproduce

  1. Create a new parent device of any size. Ex: I created a "4RU shelf" that was full depth.
  2. Create a new child object. Ex: I created a Synology NAS
  3. Edit the parent device and select "Add Components/Device Bays"
  4. Create at least one Bay.
  5. Attempt to Edit the Device Bay and add the child object. Result: No child objects are listed. Searches also do not work.

Expected Behavior

Child devices should appear and should be able to be selected/added to the parent device.

Observed Behavior

No devices showed up to be added to the parent device.

IBuildRobots commented 3 years ago

Correction on the python version. The container is using 3.9.5 from the https://github.com/ninech/netbox-docker.git repo.

jeremystretch commented 3 years ago
  1. Create a new child object. Ex: I created a Synology NAS

Did you set the subdevice role of this device type to child?

Also, this isn't typically how one would use device bays. A shelf doesn't have discrete bays into which child devices can be installed. The recommended approach would be to attach the NAS to the rack as an "unracked" device, meaning it has no specific position/face assigned.

IBuildRobots commented 3 years ago

I did set the subdevice role as a child.

I understand that one wouldn't logically create a shelf as a parent and a SAN as a child. It's normally used for something like a modular device such as a Cisco router with modules or a Dell M1000E chassis with blades in it, although that scenario wouldn't work either with what I was seeing as the problem. Basically, the software isn't populating the list of child objects available when you try to add them to a parent object.

So, the Synology NAS that I'm using (DS418) only occupies 1/2 a rack wide and not even half of the rack deep from front to back. I'd have to make some type of chassis assembly to install them into (the parent), which is effectively what I was using the shelf for so that I could stack them next to each other (or at the same RU). I've done this successfully with version 2.5.2 of the product in the past.

I've attached images to show that I have correctly configured the components.

Rack Diagram with shelf in place Rack Front and back

Parent shelf Dell 4RU shelf

Child Synology NAS's DS418 Child

4U Shelf with 2 vacant bays 4RU shelf bays

No child objects available to add no children

I hope this helps explain things better. If there's something I missed, please let me know.

Wayne

fjasboka commented 3 years ago

Is the childe device placed in the rack? I recreated your setup and was not able to add the child device to an bay before I had assigned it to the rack.

IBuildRobots commented 3 years ago

I did as you said and yes, it can be done in that manner. But, does that really make any sense to have to do it that way? So, you are telling me that I have to go to each device that is installed in another component in a rack and assign it to the rack and then I can assign it to the main component in the rack. It is not a logical assignment method.

There are many, many order of operations issues I have with NetBox and this is just another one of them. If this is going to be a solid solution, there should never be an order of operations precedence like this. ie: Let's say that I start to create a Dell R650 server (Device Type) but get in there and realize that I haven't created the manufacturer of Dell first, there should be a + button there to add that manufacturer to the database without needing to exit from the action I'm performing. Look at any modern application like a Fortinet firewall rule and you'll see those types of abilities. If you were to create these types of methods, you'd be well on your way to competing with enterprise type systems.

I get it. NetBox is open source, but it'll always remain low on the tiers if developers think like they're bottom tier.

ziggekatten commented 3 years ago

I think it makes perfect sense. In our case with thousands of devices, not having this filtering would be a mess.

Yes, it is open source, and that is not a limitation, rather it means that anyone can contribute with use cases, and if you like even code.

I suggest that you raise feature requests for your use cases, as that is what drives Netbox forward.

jeremystretch commented 2 years ago

But, does that really make any sense to have to do it that way?

Yes, for actual child devices it makes perfect sense. But as I mentioned above, that's not what you need. The device you're modeling isn't installed within a parent device; it's just a free-standing device situated on a shelf. You shouldn't be using device bays at all.

Closing this out as it's not a bug.