Issue with cables #5072

Closed
opened 2025-12-29 19:23:49 +01:00 by adam · 1 comment
Owner

Originally created by @dteknet on GitHub (Jul 19, 2021).

NetBox version

v2.11.9

Python version

3.7

Steps to Reproduce

  1. Create two switch devices (with at least 1 interface each) and one server device (with single interface)
  2. Create connection from switch 1 interface to servers' interface
  3. Disconnect cable created on step 2 from the switch side
  4. Create connection from switch 2 interface to server's interface (same interface that was used in step 2)

Expected Behavior

A new cable connection created

Observed Behavior

<class 'dcim.models.cables.Cable.DoesNotExist'>

Cable matching query does not exist.
Internal Server Error: /dcim/interfaces/2010/connect/interface/

DoesNotExist at /dcim/interfaces/2010/connect/interface/
Cable matching query does not exist.

Request Method: POST
Request URL: https://netbox/dcim/interfaces/2010/connect/interface/?return_url=/dcim/devices/682/interfaces/
Django Version: 3.2.5
Python Executable: /opt/netbox-2.11.9/venv/bin/python3.7
Python Version: 3.7.5
Python Path: ['/opt/netbox/netbox', '/opt/netbox-2.11.9', '/opt/netbox-2.11.9/venv/bin', '/usr/lib/python37.zip', '/usr/lib/python3.7', '/usr/lib/python3.7/lib-dynload', '/opt/netbox-2.11.9/venv/lib/python3.7/site-packages']
Server time: Mon, 19 Jul 2021 14:41:31 +0300 Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.humanize',
 'cacheops',
 'corsheaders',
 'debug_toolbar',
 'django_filters',
 'django_tables2',
 'django_prometheus',
 'mptt',
 'rest_framework',
 'taggit',
 'timezone_field',
 'circuits',
 'dcim',
 'ipam',
 'extras',
 'secrets',
 'tenancy',
 'users',
 'utilities',
 'virtualization',
 'django_rq',
 'drf_yasg']
Installed Middleware:
['debug_toolbar.middleware.DebugToolbarMiddleware',
 'django_prometheus.middleware.PrometheusBeforeMiddleware',
 'corsheaders.middleware.CorsMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.security.SecurityMiddleware',
 'netbox.middleware.ExceptionHandlingMiddleware',
 'netbox.middleware.RemoteUserMiddleware',
 'netbox.middleware.LoginRequiredMiddleware',
 'netbox.middleware.APIVersionMiddleware',
 'netbox.middleware.ObjectChangeMiddleware',
 'django_prometheus.middleware.PrometheusAfterMiddleware']


Traceback (most recent call last):
  File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/db/models/fields/related_descriptors.py", line 173, in __get__
    rel_obj = self.field.get_cached_value(instance)
  File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/db/models/fields/mixins.py", line 15, in get_cached_value
    return instance._state.fields_cache[cache_name]

During handling of the above exception ('cable'), another exception occurred:
  File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/opt/netbox-2.11.9/venv/lib/python3.7/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.9/venv/lib/python3.7/site-packages/django/views/generic/base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
  File "/opt/netbox/netbox/dcim/views.py", line 2431, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "/opt/netbox/netbox/netbox/views/generic.py", line 258, in dispatch
    return super().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.9/venv/lib/python3.7/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 284, in post
    if form.is_valid():
  File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/forms/forms.py", line 175, in is_valid
    return self.is_bound and not self.errors
  File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/forms/forms.py", line 170, in errors
    self.full_clean()
  File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/forms/forms.py", line 374, in full_clean
    self._post_clean()
  File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/forms/models.py", line 413, in _post_clean
    self.instance.full_clean(exclude=exclude, validate_unique=False)
  File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/db/models/base.py", line 1223, in full_clean
    self.clean()
  File "/opt/netbox/netbox/dcim/models/cables.py", line 260, in clean
    if self.termination_b.cable not in (None, self):
  File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/db/models/fields/related_descriptors.py", line 187, in __get__
    rel_obj = self.get_object(instance)
  File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/db/models/fields/related_descriptors.py", line 154, in get_object
    return qs.get(self.field.get_reverse_related_filter(instance))
  File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/cacheops/query.py", line 351, in get
    return qs._no_monkey.get(qs, *args, **kwargs)
  File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/db/models/query.py", line 437, in get
    self.model._meta.object_name

Exception Type: DoesNotExist at /dcim/interfaces/2010/connect/interface/
Exception Value: Cable matching query does not exist.

If you will select 'Cable peer' in the configuration options for interfaces view, you may see that after step 3, peer info is remain unchanged:
image

Originally created by @dteknet on GitHub (Jul 19, 2021). ### NetBox version v2.11.9 ### Python version 3.7 ### Steps to Reproduce 1. Create two switch devices (with at least 1 interface each) and one server device (with single interface) 2. Create connection from switch 1 interface to servers' interface 3. Disconnect cable created on step 2 from the switch side 4. Create connection from switch 2 interface to server's interface (same interface that was used in step 2) ### Expected Behavior A new cable connection created ### Observed Behavior ``` <class 'dcim.models.cables.Cable.DoesNotExist'> Cable matching query does not exist. ``` ``` Internal Server Error: /dcim/interfaces/2010/connect/interface/ DoesNotExist at /dcim/interfaces/2010/connect/interface/ Cable matching query does not exist. Request Method: POST Request URL: https://netbox/dcim/interfaces/2010/connect/interface/?return_url=/dcim/devices/682/interfaces/ Django Version: 3.2.5 Python Executable: /opt/netbox-2.11.9/venv/bin/python3.7 Python Version: 3.7.5 Python Path: ['/opt/netbox/netbox', '/opt/netbox-2.11.9', '/opt/netbox-2.11.9/venv/bin', '/usr/lib/python37.zip', '/usr/lib/python3.7', '/usr/lib/python3.7/lib-dynload', '/opt/netbox-2.11.9/venv/lib/python3.7/site-packages'] Server time: Mon, 19 Jul 2021 14:41:31 +0300 Installed Applications: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.humanize', 'cacheops', 'corsheaders', 'debug_toolbar', 'django_filters', 'django_tables2', 'django_prometheus', 'mptt', 'rest_framework', 'taggit', 'timezone_field', 'circuits', 'dcim', 'ipam', 'extras', 'secrets', 'tenancy', 'users', 'utilities', 'virtualization', 'django_rq', 'drf_yasg'] Installed Middleware: ['debug_toolbar.middleware.DebugToolbarMiddleware', 'django_prometheus.middleware.PrometheusBeforeMiddleware', 'corsheaders.middleware.CorsMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', 'netbox.middleware.ExceptionHandlingMiddleware', 'netbox.middleware.RemoteUserMiddleware', 'netbox.middleware.LoginRequiredMiddleware', 'netbox.middleware.APIVersionMiddleware', 'netbox.middleware.ObjectChangeMiddleware', 'django_prometheus.middleware.PrometheusAfterMiddleware'] Traceback (most recent call last): File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/db/models/fields/related_descriptors.py", line 173, in __get__ rel_obj = self.field.get_cached_value(instance) File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/db/models/fields/mixins.py", line 15, in get_cached_value return instance._state.fields_cache[cache_name] During handling of the above exception ('cable'), another exception occurred: File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/opt/netbox-2.11.9/venv/lib/python3.7/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.9/venv/lib/python3.7/site-packages/django/views/generic/base.py", line 70, in view return self.dispatch(request, *args, **kwargs) File "/opt/netbox/netbox/dcim/views.py", line 2431, in dispatch return super().dispatch(request, *args, **kwargs) File "/opt/netbox/netbox/netbox/views/generic.py", line 258, in dispatch return super().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.9/venv/lib/python3.7/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 284, in post if form.is_valid(): File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/forms/forms.py", line 175, in is_valid return self.is_bound and not self.errors File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/forms/forms.py", line 170, in errors self.full_clean() File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/forms/forms.py", line 374, in full_clean self._post_clean() File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/forms/models.py", line 413, in _post_clean self.instance.full_clean(exclude=exclude, validate_unique=False) File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/db/models/base.py", line 1223, in full_clean self.clean() File "/opt/netbox/netbox/dcim/models/cables.py", line 260, in clean if self.termination_b.cable not in (None, self): File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/db/models/fields/related_descriptors.py", line 187, in __get__ rel_obj = self.get_object(instance) File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/db/models/fields/related_descriptors.py", line 154, in get_object return qs.get(self.field.get_reverse_related_filter(instance)) File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/cacheops/query.py", line 351, in get return qs._no_monkey.get(qs, *args, **kwargs) File "/opt/netbox-2.11.9/venv/lib/python3.7/site-packages/django/db/models/query.py", line 437, in get self.model._meta.object_name Exception Type: DoesNotExist at /dcim/interfaces/2010/connect/interface/ Exception Value: Cable matching query does not exist. ``` If you will select 'Cable peer' in the configuration options for interfaces view, you may see that after step 3, peer info is remain unchanged: ![image](https://user-images.githubusercontent.com/65331309/126156105-801b3c91-1f89-4205-ab90-94032a0437ad.png)
adam added the type: bug label 2025-12-29 19:23:49 +01:00
adam closed this issue 2025-12-29 19:23:49 +01:00
Author
Owner

@jeremystretch commented on GitHub (Jul 19, 2021):

Pretty much the same issue as reported in #6747. Disabling caching by setting CACHE_TIMEOUT = 0 in configuration.py and restarting NetBox should fix it. (Queryset caching is being removed in NetBox v3.0 to resolve these issues.)

@jeremystretch commented on GitHub (Jul 19, 2021): Pretty much the same issue as reported in #6747. Disabling caching by setting `CACHE_TIMEOUT = 0` in configuration.py and restarting NetBox should fix it. (Queryset caching is being removed in NetBox v3.0 to resolve these issues.)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#5072