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
16.36k stars 2.6k forks source link

NoneType AttributeError when Bulk Renaming Nameless Devices #14044

Open stuntguy3000 opened 1 year ago

stuntguy3000 commented 1 year ago

NetBox version

3.6.3

Python version

3.8

Steps to Reproduce

  1. Create devices without a name
  2. Select and Bulk Rename those devices
  3. Disable Regex
  4. Attempt a rename operation

Of note, I am also unable to rename nameless devices with Regex on, but no error is observed.

Expected Behavior

The renaming of bulk devices operation should be successful.

Observed Behavior

<class 'AttributeError'>

'NoneType' object has no attribute 'replace'

Python version: 3.8.10
NetBox version: 3.6.3
Plugins: 
  netbox_demo: 0.3.1
jeremystretch commented 1 year ago

The error is caused by this line, which assumes the device name will be a string (as opposed to None):

https://github.com/netbox-community/netbox/blob/51ef4fb920acd689755af6ea9f7765b341ebfcec/netbox/netbox/views/generic/bulk_views.py#L699

jeremystretch commented 1 year ago

Select and Bulk Rename those devices

I'm not clear on what behavior you expect. The bulk rename function requires a "find" value, which cannot match a null name.

@arthanson's PR #14065 will effectively ignore unnamed devices, avoiding the exception. The only way I see to enable renaming unnamed devices would be to blindly apply the "replace" value, which seems very dangerous.

stuntguy3000 commented 1 year ago

I'm not clear on what behavior you expect.

The behavior I'm expecting is to be able to bulk rename unnamed devices.

Perhaps an extension to this form is suitable, e.g. a checkbox to force-match against unnamed devices

jeremystretch commented 1 year ago

The behavior I'm expecting is to be able to bulk rename unnamed devices.

Renaming them all to the same name?

stuntguy3000 commented 1 year ago

Renaming them all to the same name?

In this instance yes - the use case was a stack of devices were created as placeholders to fill out a rack diagram. Think things like Cable Organizer Trays or Patch Panels, they don't need unique names.

DanSheps commented 6 months ago

The only way I see to enable renaming unnamed devices would be to blindly apply the "replace" value, which seems very dangerous.

I don't think our data model will allow this, as name would not be unique.

DanSheps commented 4 months ago

I believe this was discussed during a maintainers meeting, the consensus is this: