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
15.98k stars 2.56k forks source link

Viewing IP address error #7439

Closed ognjen011 closed 3 years ago

ognjen011 commented 3 years ago

NetBox version

v3.0.5

Python version

3.7

Steps to Reproduce

When i click under prefix to see the ip addresses i see the error. The smaller /31 or /30 seem fine but if i try larger prefix's i get an error.

<class 'AttributeError'>

'tuple' object has no attribute 'pk'

Python version: 3.7.5 NetBox version: 3.0.5

Expected Behavior

Expected behaviour would be to see IP address in the current prefix.

Observed Behavior

Error:

<class 'AttributeError'>

'tuple' object has no attribute 'pk'

Python version: 3.7.5 NetBox version: 3.0.5

nwhisper2014 commented 3 years ago

Same problem, Python 3.8 (Ubuntu 20.04)...

<class 'AttributeError'>

'tuple' object has no attribute 'pk'

Python version: 3.8.10
NetBox version: 3.0.5
thnow commented 3 years ago

I can also confirm it. CentOS Stream release 8

<class 'AttributeError'>

'tuple' object has no attribute 'pk'

Python version: 3.9.7
NetBox version: 3.0.5
jeremystretch commented 3 years ago

Thank you for opening a bug report. Unfortunately, the information you have provided is not sufficient for someone else to attempt to reproduce the reported behavior. Remember, each bug report must include detailed steps that someone else can follow on a clean, empty NetBox installation to reproduce the exact problem you're experiencing. These instructions should include the creation of any involved objects, any configuration changes, and complete accounting of the actions being taken. Also be sure that your report does not reference data on the public NetBox demo, as that is subject to change at any time by an outside party and cannot be relied upon for bug reports.

thnow commented 3 years ago

It is easy to reproduce: Use a Netbox 3.0.5 wich has some prefixes (maybe greater than /31 but I can't confirm it). Go to "IPAM" in the menu and there choose "Prefixes" Select one of the Prefixes image In the following windows klick on "IP Adresses"

image And you will retrieve the error: image

During writing this I observed that I seem to get the Error only on Networks greater /24. I could not observe the behavior on IPv6, but the biggest network I have there is /32.

benclaussen commented 3 years ago

I am experiencing something similar with a number of prefix IP listings (e.x. https://netbox.com/ipam/prefixes/254/ip-addresses/) after upgrading to 3.0.5 from 2.11.11 (upgraded this morning). The upgrade was as smooth as can be... but at least prefix IDs 251-260 give me this exact error. I can view individual IPs in the prefix, but not the IP address listing at the URL above. These prefixes are all /24.

image

With debug on: image

```Details Environment: Request Method: GET Request URL: https://netbox.org/ipam/prefixes/254/ip-addresses/ Django Version: 3.2.7 Python Version: 3.8.10 Installed Applications: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.humanize', 'corsheaders', 'debug_toolbar', 'graphiql_debug_toolbar', 'django_filters', 'django_tables2', 'django_prometheus', 'graphene_django', 'mptt', 'rest_framework', 'taggit', 'timezone_field', 'circuits', 'dcim', 'ipam', 'extras', 'tenancy', 'users', 'utilities', 'virtualization', 'django_rq', 'drf_yasg'] Installed Middleware: ['graphiql_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'] Template error: In template /opt/netbox/netbox/templates/utilities/obj_table.html, error at line 27 'tuple' object has no attribute 'pk' 17 : {% endif %} 18 : {% if bulk_delete_url and permissions.delete %} 19 : 22 : {% endif %} 23 :
24 :
25 : 26 : 29 :
30 :
31 : 32 : {% endif %} 33 : 34 :
35 : {% render_table table 'inc/table.html' %} 36 :
37 : Traceback (most recent call last): File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 829, in _resolve_lookup current = current[bit] During handling of the above exception ('IPAddressTable' object is not subscriptable), another exception occurred: File "/opt/netbox/venv/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/opt/netbox/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/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/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 69, in get return render(request, self.get_template_name(), { File "/opt/netbox/venv/lib/python3.8/site-packages/django/shortcuts.py", line 19, in render content = loader.render_to_string(template_name, context, request, using=using) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/loader.py", line 62, in render_to_string return template.render(context, request) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/backends/django.py", line 61, in render return self.template.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 170, in render return self._render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/test/utils.py", line 100, in instrumented_test_render return self.nodelist.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 938, in render bit = node.render_annotated(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 905, in render_annotated return self.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/loader_tags.py", line 150, in render return compiled_parent._render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/test/utils.py", line 100, in instrumented_test_render return self.nodelist.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 938, in render bit = node.render_annotated(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 905, in render_annotated return self.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/loader_tags.py", line 150, in render return compiled_parent._render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/test/utils.py", line 100, in instrumented_test_render return self.nodelist.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 938, in render bit = node.render_annotated(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 905, in render_annotated return self.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/loader_tags.py", line 150, in render return compiled_parent._render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/test/utils.py", line 100, in instrumented_test_render return self.nodelist.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 938, in render bit = node.render_annotated(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 905, in render_annotated return self.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/loader_tags.py", line 150, in render return compiled_parent._render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/test/utils.py", line 100, in instrumented_test_render return self.nodelist.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 938, in render bit = node.render_annotated(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 905, in render_annotated return self.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/loader_tags.py", line 62, in render result = block.nodelist.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 938, in render bit = node.render_annotated(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 905, in render_annotated return self.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/loader_tags.py", line 62, in render result = block.nodelist.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 938, in render bit = node.render_annotated(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 905, in render_annotated return self.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/loader_tags.py", line 62, in render result = block.nodelist.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 938, in render bit = node.render_annotated(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 905, in render_annotated return self.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/loader_tags.py", line 195, in render return template.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 172, in render return self._render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/test/utils.py", line 100, in instrumented_test_render return self.nodelist.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 938, in render bit = node.render_annotated(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 905, in render_annotated return self.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/defaulttags.py", line 312, in render return nodelist.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 938, in render bit = node.render_annotated(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 905, in render_annotated return self.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/defaulttags.py", line 312, in render return nodelist.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 938, in render bit = node.render_annotated(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 905, in render_annotated return self.render(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 988, in render output = self.filter_expression.resolve(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 671, in resolve obj = self.var.resolve(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 796, in resolve value = self._resolve_lookup(context) File "/opt/netbox/venv/lib/python3.8/site-packages/django/template/base.py", line 837, in _resolve_lookup current = getattr(current, bit) File "/opt/netbox/netbox/utilities/tables.py", line 131, in objects_count self._objects_count = sum(1 for obj in self.data if getattr(obj, 'pk')) File "/opt/netbox/netbox/utilities/tables.py", line 131, in self._objects_count = sum(1 for obj in self.data if getattr(obj, 'pk')) Exception Type: AttributeError at /ipam/prefixes/254/ip-addresses/ Exception Value: 'tuple' object has no attribute 'pk' ```
jeremystretch commented 3 years ago

Closing this in favor of #7446, which provides the necessary detail to reproduce the bug.