cable with multiple connections can't cross module front/rear ports. #7310

Closed
opened 2025-12-29 20:21:37 +01:00 by adam · 8 comments
Owner

Originally created by @ThomasADavis on GitHub (Dec 2, 2022).

Originally assigned to: @DanSheps on GitHub.

NetBox version

v3.3.9

Python version

3.9

Steps to Reproduce

We use a module fiber cassette system - these are cassettes you plug into 1u rack mount.

Trying to plug a MPO to LC breakout cable can cross these modules - the rear ports a single MPO and the front ports are 6 pairs of LC connectors. So the break out cable we use is a 1 MPO (ie, 100G qsfp) to 4 pair of LC's. This can cross between two modules.

  1. create a device. aka 'sw-test'

  2. add to this device a network interface. any type will do, except lag or virtual.

  3. create a module_type, with no components add.

  4. create a device to use as a patch panel.

  5. in that patch panel, create two module bays, 'C1' and 'C2'.

  6. populate the module bay with the above module type.

  7. for module C1 add rear port of 'MPO-1', positions of 6

  8. for module C2 add rear port of 'MPO-2', positions of 6

  9. for module C1, add front ports of 'LC-[1-6]', type 'LC', attached to rear-port MPO-1:[1-6]

  10. for module C2, add front ports of 'LC-[7-12]', type 'LC', attached to rear-port MPO-2:[1-6]

See attached screen shot for module/cassette/front/rear setup.
Screenshot_2022-12-01_15-02-22

  1. go to the test device you created.

  2. for the on the network interface, tell it you want to make a connection. Choose front port.

for the termination_b, choose LC-6 (associated with MPO-1) and LC-7 (associated with MPO-2)

Screenshot_2022-12-01_15-08-24

Get error message in browser.

Screenshot_2022-12-01_15-08-46

Stack dump from our test netbox instance, doing the same thing:

Traceback (most recent call last):
  File "/opt/netbox/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
  File "/opt/netbox/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/opt/netbox/venv/lib/python3.10/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/viewsets.py", line 125, in view
    return self.dispatch(request, *args, **kwargs)
  File "/opt/netbox/netbox/netbox/api/viewsets/__init__.py", line 118, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/views.py", line 509, in dispatch
    response = self.handle_exception(exc)
  File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/views.py", line 469, in handle_exception
    self.raise_uncaught_exception(exc)
  File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
    raise exc
  File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/views.py", line 506, in dispatch
    response = handler(request, *args, **kwargs)
  File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/mixins.py", line 19, in create
    self.perform_create(serializer)
  File "/opt/netbox/netbox/netbox/api/viewsets/__init__.py", line 157, in perform_create
    instance = serializer.save()
  File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py", line 212, in save
    self.instance = self.create(validated_data)
  File "/opt/netbox/netbox/netbox/api/serializers/features.py", line 56, in create
    instance = super().create(validated_data)
  File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py", line 962, in create
    instance = ModelClass._default_manager.create(**validated_data)
  File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/models/query.py", line 514, in create
    obj.save(force_insert=True, using=self.db)
  File "/opt/netbox/netbox/dcim/models/cables.py", line 207, in save
    trace_paths.send(Cable, instance=self, created=_created)
  File "/opt/netbox/venv/lib/python3.10/site-packages/django/dispatch/dispatcher.py", line 176, in send
    return [
  File "/opt/netbox/venv/lib/python3.10/site-packages/django/dispatch/dispatcher.py", line 177, in <listcomp>
    (receiver, receiver(signal=self, sender=sender, **named))
  File "/opt/netbox/netbox/dcim/signals.py", line 97, in update_connected_endpoints
    create_cablepath(nodes)
  File "/opt/netbox/netbox/dcim/utils.py", line 43, in create_cablepath
    cp = CablePath.from_origin(terminations)
  File "/opt/netbox/netbox/dcim/models/cables.py", line 543, in from_origin
    assert all(rp.positions == 1 for rp in rear_ports)
AssertionError

Expected Behavior

Can attach a breakout cable across modules/frontports

Observed Behavior

Internal Server Error: /api/dcim/cables/
Traceback (most recent call last):
  File "/opt/netbox/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
  File "/opt/netbox/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/opt/netbox/venv/lib/python3.10/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/viewsets.py", line 125, in view
    return self.dispatch(request, *args, **kwargs)
  File "/opt/netbox/netbox/netbox/api/viewsets/__init__.py", line 118, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/views.py", line 509, in dispatch
    response = self.handle_exception(exc)
  File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/views.py", line 469, in handle_exception
    self.raise_uncaught_exception(exc)
  File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
    raise exc
  File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/views.py", line 506, in dispatch
    response = handler(request, *args, **kwargs)
  File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/mixins.py", line 19, in create
    self.perform_create(serializer)
  File "/opt/netbox/netbox/netbox/api/viewsets/__init__.py", line 157, in perform_create
    instance = serializer.save()
  File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py", line 212, in save
    self.instance = self.create(validated_data)
  File "/opt/netbox/netbox/netbox/api/serializers/features.py", line 56, in create
    instance = super().create(validated_data)
  File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py", line 962, in create
    instance = ModelClass._default_manager.create(**validated_data)
  File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/models/query.py", line 514, in create
    obj.save(force_insert=True, using=self.db)
  File "/opt/netbox/netbox/dcim/models/cables.py", line 207, in save
    trace_paths.send(Cable, instance=self, created=_created)
  File "/opt/netbox/venv/lib/python3.10/site-packages/django/dispatch/dispatcher.py", line 176, in send
    return [
  File "/opt/netbox/venv/lib/python3.10/site-packages/django/dispatch/dispatcher.py", line 177, in <listcomp>
    (receiver, receiver(signal=self, sender=sender, **named))
  File "/opt/netbox/netbox/dcim/signals.py", line 97, in update_connected_endpoints
    create_cablepath(nodes)
  File "/opt/netbox/netbox/dcim/utils.py", line 43, in create_cablepath
    cp = CablePath.from_origin(terminations)
  File "/opt/netbox/netbox/dcim/models/cables.py", line 543, in from_origin
    assert all(rp.positions == 1 for rp in rear_ports)
AssertionError
Originally created by @ThomasADavis on GitHub (Dec 2, 2022). Originally assigned to: @DanSheps on GitHub. ### NetBox version v3.3.9 ### Python version 3.9 ### Steps to Reproduce We use a module fiber cassette system - these are cassettes you plug into 1u rack mount. Trying to plug a MPO to LC breakout cable can cross these modules - the rear ports a single MPO and the front ports are 6 pairs of LC connectors. So the break out cable we use is a 1 MPO (ie, 100G qsfp) to 4 pair of LC's. This can cross between two modules. 1) create a device. aka 'sw-test' 2) add to this device a network interface. any type will do, except lag or virtual. 3) create a module_type, with no components add. 3) create a device to use as a patch panel. 4) in that patch panel, create two module bays, 'C1' and 'C2'. 5) populate the module bay with the above module type. 6) for module C1 add rear port of 'MPO-1', positions of 6 7) for module C2 add rear port of 'MPO-2', positions of 6 8) for module C1, add front ports of 'LC-[1-6]', type 'LC', attached to rear-port MPO-1:[1-6] 9) for module C2, add front ports of 'LC-[7-12]', type 'LC', attached to rear-port MPO-2:[1-6] See attached screen shot for module/cassette/front/rear setup. ![Screenshot_2022-12-01_15-02-22](https://user-images.githubusercontent.com/12158973/205178475-755d4ec6-432e-4d87-a83a-8ef037e45422.png) 10) go to the test device you created. 11) for the on the network interface, tell it you want to make a connection. Choose front port. for the termination_b, choose LC-6 (associated with MPO-1) and LC-7 (associated with MPO-2) ![Screenshot_2022-12-01_15-08-24](https://user-images.githubusercontent.com/12158973/205178854-40de9bb8-a1f6-40a6-9809-3d75c134dc75.png) Get error message in browser. ![Screenshot_2022-12-01_15-08-46](https://user-images.githubusercontent.com/12158973/205178595-8e788963-1f9a-4710-ae43-4a3e002d3c3f.png) Stack dump from our test netbox instance, doing the same thing: ```Internal Server Error: /api/dcim/cables/ Traceback (most recent call last): File "/opt/netbox/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner response = get_response(request) File "/opt/netbox/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/opt/netbox/venv/lib/python3.10/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view return view_func(*args, **kwargs) File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/viewsets.py", line 125, in view return self.dispatch(request, *args, **kwargs) File "/opt/netbox/netbox/netbox/api/viewsets/__init__.py", line 118, in dispatch return super().dispatch(request, *args, **kwargs) File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/views.py", line 509, in dispatch response = self.handle_exception(exc) File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/views.py", line 469, in handle_exception self.raise_uncaught_exception(exc) File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception raise exc File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/views.py", line 506, in dispatch response = handler(request, *args, **kwargs) File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/mixins.py", line 19, in create self.perform_create(serializer) File "/opt/netbox/netbox/netbox/api/viewsets/__init__.py", line 157, in perform_create instance = serializer.save() File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py", line 212, in save self.instance = self.create(validated_data) File "/opt/netbox/netbox/netbox/api/serializers/features.py", line 56, in create instance = super().create(validated_data) File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py", line 962, in create instance = ModelClass._default_manager.create(**validated_data) File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/models/manager.py", line 85, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/models/query.py", line 514, in create obj.save(force_insert=True, using=self.db) File "/opt/netbox/netbox/dcim/models/cables.py", line 207, in save trace_paths.send(Cable, instance=self, created=_created) File "/opt/netbox/venv/lib/python3.10/site-packages/django/dispatch/dispatcher.py", line 176, in send return [ File "/opt/netbox/venv/lib/python3.10/site-packages/django/dispatch/dispatcher.py", line 177, in <listcomp> (receiver, receiver(signal=self, sender=sender, **named)) File "/opt/netbox/netbox/dcim/signals.py", line 97, in update_connected_endpoints create_cablepath(nodes) File "/opt/netbox/netbox/dcim/utils.py", line 43, in create_cablepath cp = CablePath.from_origin(terminations) File "/opt/netbox/netbox/dcim/models/cables.py", line 543, in from_origin assert all(rp.positions == 1 for rp in rear_ports) AssertionError ``` ### Expected Behavior Can attach a breakout cable across modules/frontports ### Observed Behavior ``` Internal Server Error: /api/dcim/cables/ Traceback (most recent call last): File "/opt/netbox/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner response = get_response(request) File "/opt/netbox/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/opt/netbox/venv/lib/python3.10/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view return view_func(*args, **kwargs) File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/viewsets.py", line 125, in view return self.dispatch(request, *args, **kwargs) File "/opt/netbox/netbox/netbox/api/viewsets/__init__.py", line 118, in dispatch return super().dispatch(request, *args, **kwargs) File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/views.py", line 509, in dispatch response = self.handle_exception(exc) File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/views.py", line 469, in handle_exception self.raise_uncaught_exception(exc) File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception raise exc File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/views.py", line 506, in dispatch response = handler(request, *args, **kwargs) File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/mixins.py", line 19, in create self.perform_create(serializer) File "/opt/netbox/netbox/netbox/api/viewsets/__init__.py", line 157, in perform_create instance = serializer.save() File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py", line 212, in save self.instance = self.create(validated_data) File "/opt/netbox/netbox/netbox/api/serializers/features.py", line 56, in create instance = super().create(validated_data) File "/opt/netbox/venv/lib/python3.10/site-packages/rest_framework/serializers.py", line 962, in create instance = ModelClass._default_manager.create(**validated_data) File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/models/manager.py", line 85, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) File "/opt/netbox/venv/lib/python3.10/site-packages/django/db/models/query.py", line 514, in create obj.save(force_insert=True, using=self.db) File "/opt/netbox/netbox/dcim/models/cables.py", line 207, in save trace_paths.send(Cable, instance=self, created=_created) File "/opt/netbox/venv/lib/python3.10/site-packages/django/dispatch/dispatcher.py", line 176, in send return [ File "/opt/netbox/venv/lib/python3.10/site-packages/django/dispatch/dispatcher.py", line 177, in <listcomp> (receiver, receiver(signal=self, sender=sender, **named)) File "/opt/netbox/netbox/dcim/signals.py", line 97, in update_connected_endpoints create_cablepath(nodes) File "/opt/netbox/netbox/dcim/utils.py", line 43, in create_cablepath cp = CablePath.from_origin(terminations) File "/opt/netbox/netbox/dcim/models/cables.py", line 543, in from_origin assert all(rp.positions == 1 for rp in rear_ports) AssertionError ```
adam added the type: bugstatus: acceptedtopic: cablingseverity: medium labels 2025-12-29 20:21:37 +01:00
adam closed this issue 2025-12-29 20:21:37 +01:00
Author
Owner

@jeremystretch commented on GitHub (Dec 2, 2022):

in demo.netbox.dev, do

Per the bug report template:

Additionally, do not rely on the demo instance for reproducing suspected bugs, as its data is prone to modification or deletion at any time.

Please review your post above to ensure that the reproduction steps are not dependent on any data in the demo instance.

@jeremystretch commented on GitHub (Dec 2, 2022): > in demo.netbox.dev, do Per the bug report template: > Additionally, **do not rely on the demo instance** for reproducing suspected bugs, as its data is prone to modification or deletion at any time. Please review your post above to ensure that the reproduction steps are not dependent on any data in the demo instance.
Author
Owner

@armanngu commented on GitHub (Dec 5, 2022):

I think I have the same or a similar bug.

Steps to Reproduce

a) create a device with interfaces
b) create a patch panel with front and back ports connected (1-1,2-2,etc)
c) connect interface to two front ports.
connect-to-front-port

Observed Behavior

Traceback (most recent call last):
File "/opt/netbox/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
File "/opt/netbox/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/opt/netbox/venv/lib/python3.10/site-packages/django/views/generic/base.py", line 84, in view
return self.dispatch(request, *args, **kwargs)
File "/opt/netbox/netbox/dcim/views.py", line 2786, in dispatch
return super().dispatch(request, *args, **kwargs)
File "/opt/netbox/netbox/netbox/views/generic/object_views.py", line 303, in dispatch
return super().dispatch(request, *args, **kwargs)
File "/opt/netbox/netbox/utilities/views.py", line 90, in dispatch
return super().dispatch(request, *args, **kwargs)
File "/opt/netbox/venv/lib/python3.10/site-packages/django/views/generic/base.py", line 119, in dispatch
return handler(request, *args, **kwargs)
File "/opt/netbox/netbox/netbox/views/generic/object_views.py", line 391, in post
obj = form.save()
File "/opt/netbox/venv/lib/python3.10/site-packages/django/forms/models.py", line 548, in save
self.instance.save()
File "/opt/netbox/netbox/dcim/models/cables.py", line 207, in save
trace_paths.send(Cable, instance=self, created=_created)
File "/opt/netbox/venv/lib/python3.10/site-packages/django/dispatch/dispatcher.py", line 176, in send
return [
File "/opt/netbox/venv/lib/python3.10/site-packages/django/dispatch/dispatcher.py", line 177, in
(receiver, receiver(signal=self, sender=sender, **named))
File "/opt/netbox/netbox/dcim/signals.py", line 97, in update_connected_endpoints
create_cablepath(nodes)
File "/opt/netbox/netbox/dcim/utils.py", line 43, in create_cablepath
cp = CablePath.from_origin(terminations)
File "/opt/netbox/netbox/dcim/models/cables.py", line 543, in from_origin
assert all(rp.positions == 1 for rp in rear_ports)

Exception Type: AssertionError at /dcim/cables/add/
Exception Value:

@armanngu commented on GitHub (Dec 5, 2022): I think I have the same or a similar bug. ### Steps to Reproduce a) create a device with interfaces b) create a patch panel with front and back ports connected (1-1,2-2,etc) c) connect interface to two front ports. ![connect-to-front-port](https://user-images.githubusercontent.com/79575668/205655994-2d420cb9-bc95-4f1c-9f1a-15bbe11e17e8.png) ### Observed Behavior Traceback (most recent call last): File "/opt/netbox/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner response = get_response(request) File "/opt/netbox/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/opt/netbox/venv/lib/python3.10/site-packages/django/views/generic/base.py", line 84, in view return self.dispatch(request, *args, **kwargs) File "/opt/netbox/netbox/dcim/views.py", line 2786, in dispatch return super().dispatch(request, *args, **kwargs) File "/opt/netbox/netbox/netbox/views/generic/object_views.py", line 303, in dispatch return super().dispatch(request, *args, **kwargs) File "/opt/netbox/netbox/utilities/views.py", line 90, in dispatch return super().dispatch(request, *args, **kwargs) File "/opt/netbox/venv/lib/python3.10/site-packages/django/views/generic/base.py", line 119, in dispatch return handler(request, *args, **kwargs) File "/opt/netbox/netbox/netbox/views/generic/object_views.py", line 391, in post obj = form.save() File "/opt/netbox/venv/lib/python3.10/site-packages/django/forms/models.py", line 548, in save self.instance.save() File "/opt/netbox/netbox/dcim/models/cables.py", line 207, in save trace_paths.send(Cable, instance=self, created=_created) File "/opt/netbox/venv/lib/python3.10/site-packages/django/dispatch/dispatcher.py", line 176, in send return [ File "/opt/netbox/venv/lib/python3.10/site-packages/django/dispatch/dispatcher.py", line 177, in <listcomp> (receiver, receiver(signal=self, sender=sender, **named)) File "/opt/netbox/netbox/dcim/signals.py", line 97, in update_connected_endpoints create_cablepath(nodes) File "/opt/netbox/netbox/dcim/utils.py", line 43, in create_cablepath cp = CablePath.from_origin(terminations) File "/opt/netbox/netbox/dcim/models/cables.py", line 543, in from_origin assert all(rp.positions == 1 for rp in rear_ports) Exception Type: AssertionError at /dcim/cables/add/ Exception Value:
Author
Owner

@ThomasADavis commented on GitHub (Dec 5, 2022):

I've removed all references to any devices/device_type/module types/modules in demo.netbox.dev.

@ThomasADavis commented on GitHub (Dec 5, 2022): I've removed all references to any devices/device_type/module types/modules in demo.netbox.dev.
Author
Owner

@jeremystretch commented on GitHub (Jan 11, 2023):

There are two issues here:

  1. The unhandled exception
  2. Lack of support for the condition that assert statement is checking for

IIRC, this specific condition was not possible to reach prior to the introduction of multi-termination cabling in v3.3, hence the lack of elegant validation, however it obviously did not get updated.

I presume we can resolve the exception itself fairly easily, however supporting traces that split across multiple multi-position rear ports may be difficult. There's also probably some overlap here with #10602; we should consider these in tandem.

@jeremystretch commented on GitHub (Jan 11, 2023): There are two issues here: 1. The unhandled exception 2. Lack of support for the condition that `assert` statement is checking for IIRC, this specific condition was not possible to reach prior to the introduction of multi-termination cabling in v3.3, hence the lack of elegant validation, however it obviously did not get updated. I presume we can resolve the exception itself fairly easily, however supporting traces that split across multiple multi-position rear ports may be difficult. There's also probably some overlap here with #10602; we should consider these in tandem.
Author
Owner

@craized commented on GitHub (Feb 4, 2023):

+1 for supporting this. My use case is different, but I am running into the same AssertError.
Situation is:
Connect a single interface to a MUX with separate TX/RX rear ports.
Breaking cable traces would be sad, but for me allowing the proper modeling of both directions of a span is first priority.

@craized commented on GitHub (Feb 4, 2023): +1 for supporting this. My use case is different, but I am running into the same AssertError. Situation is: Connect a single interface to a MUX with separate TX/RX rear ports. Breaking cable traces would be sad, but for me allowing the proper modeling of both directions of a span is first priority.
Author
Owner

@CADbloke commented on GitHub (Mar 27, 2023):

Related discussion: https://github.com/netbox-community/netbox/discussions/11158 in summary, modeling Lanes of QSFP-type connections across breakouts and keeping track of the individual data channels.

@CADbloke commented on GitHub (Mar 27, 2023): Related discussion: https://github.com/netbox-community/netbox/discussions/11158 in summary, modeling Lanes of QSFP-type connections across breakouts and keeping track of the individual data channels.
Author
Owner

@mblue-fasttrack commented on GitHub (Mar 28, 2023):

Issue only occurs when the cable is attached to an interface. Attaching a cable from front or rear ports to other multiple front ports linked to different, multi-position rear ports does not raise an exception.

@mblue-fasttrack commented on GitHub (Mar 28, 2023): Issue only occurs when the cable is attached to an interface. Attaching a cable from front or rear ports to other multiple front ports linked to different, multi-position rear ports does not raise an exception.
Author
Owner

@DanSheps commented on GitHub (Aug 1, 2023):

I am going to try and take this up by simply catching the exception. We can then discuss supported and unsupported topologies in a separate FR.

@DanSheps commented on GitHub (Aug 1, 2023): I am going to try and take this up by simply catching the exception. We can then discuss supported and unsupported topologies in a separate FR.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#7310