netbox icon indicating copy to clipboard operation
netbox copied to clipboard

NoneType AttributeError when Bulk Renaming Nameless Devices

Open stuntguy3000 opened this issue 2 years ago • 5 comments

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

stuntguy3000 avatar Oct 16 '23 05:10 stuntguy3000

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 avatar Oct 17 '23 16:10 jeremystretch

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.

jeremystretch avatar Nov 01 '23 20:11 jeremystretch

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

stuntguy3000 avatar Nov 02 '23 00:11 stuntguy3000

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

Renaming them all to the same name?

jeremystretch avatar Nov 02 '23 14:11 jeremystretch

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.

stuntguy3000 avatar Nov 02 '23 22:11 stuntguy3000

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 avatar May 29 '24 20:05 DanSheps

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

  • We can permit devices to be renamed with RegEx, provided the RegEx forms a unique name or otherwise passes the uniqueness check
  • The RegEx must specify only the start ^ and end $ regex and nothing else (regex would be ^$)

DanSheps avatar Jul 24 '24 01:07 DanSheps