======================================================================
ERROR: test_create_400_existed_vlan (netbox_virtual_circuit_plugin.tests.test_api.VirtualCircuitEndpointTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/netbox-virtual-circuit-plugin/netbox_virtual_circuit_plugin/tests/test_api.py", line 159, in test_create_400_existed_vlan
response = self.client.post(self.url, data, format='json')
File "/usr/local/lib/python3.7/site-packages/rest_framework/test.py", line 294, in post
path, data=data, format=format, content_type=content_type, **extra)
File "/usr/local/lib/python3.7/site-packages/rest_framework/test.py", line 207, in post
return self.generic('POST', path, data, content_type, **extra)
File "/usr/local/lib/python3.7/site-packages/rest_framework/test.py", line 232, in generic
method, path, data, content_type, secure, **extra)
File "/usr/local/lib/python3.7/site-packages/django/test/client.py", line 421, in generic
return self.request(**r)
File "/usr/local/lib/python3.7/site-packages/rest_framework/test.py", line 283, in request
return super().request(**kwargs)
File "/usr/local/lib/python3.7/site-packages/rest_framework/test.py", line 235, in request
request = super().request(**kwargs)
File "/usr/local/lib/python3.7/site-packages/django/test/client.py", line 496, in request
raise exc_value
File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/opt/netbox/netbox/extras/middleware.py", line 126, in __call__
enqueue_webhooks(instance, request.user, request.id, action)
File "/opt/netbox/netbox/extras/webhooks.py", line 34, in enqueue_webhooks
if obj_type not in webhook_models:
TypeError: argument of type 'QuerySet' is not iterable
In the server's log, it returns a 400 request, which is expected, though right after that, it errors out the 500 request, which is issued initially by postgres.
netbox_1 | [09/Jun/2020 17:00:15] "POST /api/plugins/virtual-circuit/virtual-circuits/ HTTP/1.1" 400 78
postgres_1 | 2020-06-09 17:00:29.471 UTC [107] ERROR: duplicate key value violates unique constraint "netbox_virtual_circuit_plugin_virtualcircuitvlan_vlan_id_key"
postgres_1 | 2020-06-09 17:00:29.471 UTC [107] DETAIL: Key (vlan_id)=(1) already exists.
postgres_1 | 2020-06-09 17:00:29.471 UTC [107] STATEMENT: INSERT INTO "netbox_virtual_circuit_plugin_virtualcircuitvlan" ("virtual_circuit_id", "vlan_id") VALUES (103, 1) RETURNING "netbox_virtual_circuit_plugin_virtualcircuitvlan"."id"
netbox_1 | Internal Server Error: /api/plugins/virtual-circuit/virtual-circuits/
netbox_1 | Traceback (most recent call last):
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/db/backends/utils.py", line 86, in _execute
netbox_1 | return self.cursor.execute(sql, params)
netbox_1 | psycopg2.errors.UniqueViolation: duplicate key value violates unique constraint "netbox_virtual_circuit_plugin_virtualcircuitvlan_vlan_id_key"
netbox_1 | DETAIL: Key (vlan_id)=(1) already exists.
netbox_1 | The above exception was the direct cause of the following exception:
netbox_1 |
netbox_1 | Traceback (most recent call last):
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
netbox_1 | response = get_response(request)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
netbox_1 | response = self.process_exception_by_middleware(e, request)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
netbox_1 | response = wrapped_callback(request, *callback_args, **callback_kwargs)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
netbox_1 | return view_func(*args, **kwargs)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/rest_framework/viewsets.py", line 114, in view
netbox_1 | return self.dispatch(request, *args, **kwargs)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/rest_framework/views.py", line 505, in dispatch
netbox_1 | response = self.handle_exception(exc)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/rest_framework/views.py", line 465, in handle_exception
netbox_1 | self.raise_uncaught_exception(exc)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/rest_framework/views.py", line 476, in raise_uncaught_exception
netbox_1 | raise exc
netbox_1 | File "/usr/local/lib/python3.7/site-packages/rest_framework/views.py", line 502, in dispatch
netbox_1 | response = handler(request, *args, **kwargs)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/rest_framework/mixins.py", line 19, in create
netbox_1 | self.perform_create(serializer)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/rest_framework/mixins.py", line 24, in perform_create
netbox_1 | serializer.save()
netbox_1 | File "/usr/local/lib/python3.7/site-packages/rest_framework/serializers.py", line 212, in save
netbox_1 | self.instance = self.create(validated_data)
netbox_1 | File "/netbox-virtual-circuit-plugin/netbox_virtual_circuit_plugin/api/serializers.py", line 24, in create
netbox_1 | VirtualCircuitVLAN.objects.create(virtual_circuit=virtual_circuit, **vlan)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/db/models/manager.py", line 82, in manager_method
netbox_1 | return getattr(self.get_queryset(), name)(*args, **kwargs)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/db/models/query.py", line 433, in create
netbox_1 | obj.save(force_insert=True, using=self.db)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/db/models/base.py", line 746, in save
netbox_1 | force_update=force_update, update_fields=update_fields)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/db/models/base.py", line 784, in save_base
netbox_1 | force_update, using, update_fields,
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/db/models/base.py", line 887, in _save_table
netbox_1 | results = self._do_insert(cls._base_manager, using, fields, returning_fields, raw)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/db/models/base.py", line 926, in _do_insert
netbox_1 | using=using, raw=raw,
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/db/models/manager.py", line 82, in manager_method
netbox_1 | return getattr(self.get_queryset(), name)(*args, **kwargs)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/db/models/query.py", line 1204, in _insert
netbox_1 | return query.get_compiler(using=using).execute_sql(returning_fields)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 1391, in execute_sql
netbox_1 | cursor.execute(sql, params)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/db/backends/utils.py", line 100, in execute
netbox_1 | return super().execute(sql, params)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/cacheops/transaction.py", line 99, in execute
netbox_1 | result = self._no_monkey.execute(self, sql, params)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/db/backends/utils.py", line 68, in execute
netbox_1 | return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/db/backends/utils.py", line 77, in _execute_with_wrappers
netbox_1 | return executor(sql, params, many, context)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/db/backends/utils.py", line 86, in _execute
netbox_1 | return self.cursor.execute(sql, params)
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/db/utils.py", line 90, in __exit__
netbox_1 | raise dj_exc_value.with_traceback(traceback) from exc_value
netbox_1 | File "/usr/local/lib/python3.7/site-packages/django/db/backends/utils.py", line 86, in _execute
netbox_1 | return self.cursor.execute(sql, params)
netbox_1 | django.db.utils.IntegrityError: duplicate key value violates unique constraint "netbox_virtual_circuit_plugin_virtualcircuitvlan_vlan_id_key"
netbox_1 | DETAIL: Key (vlan_id)=(1) already exists.
netbox_1 |
netbox_1 | [09/Jun/2020 17:00:29] "POST /api/plugins/virtual-circuit/virtual-circuits/ HTTP/1.1" 500 25295
It seems like the 400 request is there. It should be returned right away so that the database does not get written and errored out a 500.