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.03k stars 2.57k forks source link

KeyError: 'csv' on device import #6939

Closed pobk closed 3 years ago

pobk commented 3 years ago

NetBox version

v2.11.10

Python version

3.8

Steps to Reproduce

  1. Create Roles, manufacturers, type and sites and tenant

  2. Open device import view. paste the following:

    name,status,tenant,role,manufacturer,type,site
    idrac-hostname-01,Active,Some Team,Lights out management,Dell,iDRAC,Equinix LD5
  3. Submit pasted content

This occurs if using the pasted content or uploaded file. I have tested importing other objects and this works with something simple such as tags, for example.

Expected Behavior

Devices should be correctly imported

Observed Behavior

The following exception is raised:


Internal Server Error: /dcim/devices/import/
Traceback (most recent call last):
  File "/opt/netbox-2.11.10/venv/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/opt/netbox-2.11.10/venv/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/opt/netbox-2.11.10/venv/lib/python3.8/site-packages/django/views/generic/base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
  File "/opt/netbox/netbox/utilities/views.py", line 93, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "/opt/netbox-2.11.10/venv/lib/python3.8/site-packages/django/views/generic/base.py", line 98, in dispatch
    return handler(request, *args, **kwargs)
  File "/opt/netbox/netbox/netbox/views/generic.py", line 713, in post
    if form.is_valid():
  File "/opt/netbox-2.11.10/venv/lib/python3.8/site-packages/django/forms/forms.py", line 175, in is_valid
    return self.is_bound and not self.errors
  File "/opt/netbox-2.11.10/venv/lib/python3.8/site-packages/django/forms/forms.py", line 170, in errors
    self.full_clean()
  File "/opt/netbox-2.11.10/venv/lib/python3.8/site-packages/django/forms/forms.py", line 373, in full_clean
    self._clean_form()
  File "/opt/netbox-2.11.10/venv/lib/python3.8/site-packages/django/forms/forms.py", line 400, in _clean_form
    cleaned_data = self.clean()
  File "/opt/netbox/netbox/netbox/views/generic.py", line 678, in clean
    csv_rows = self.cleaned_data['csv'][1]
KeyError: 'csv'```
pobk commented 3 years ago

Oh bugger... ignore me...

I made the mistake of using the exported file thinking I could just use the same headings to subsequently import new devices.

However, that's a bit of a bug. I'll submit something differently.

jeremystretch commented 3 years ago

FYI the KeyError exception has been fixed under #6910 for the upcoming release.