Multiple interfaces connected to a single circuit termination #3594

Closed
opened 2025-12-29 18:30:02 +01:00 by adam · 4 comments
Owner

Originally created by @steffann on GitHub (Apr 21, 2020).

Environment

  • Python version: 3.8
  • NetBox version: 2.8

Proposed Functionality

The current implementation cannot handle the following situation:

       +--------------+
INT1 ----- FP1        |
       |         RP ----- CT --- Circuit
INT2 ----- FP2        |
       +--------------+

WhereINT is an interface, FP is a front port, RP is a rear port and CT is a circuit termination.

Such a situation can occur for example when modelling a DWDM multiplexer connected to a leased line, when creating all the cabling on one end of the circuit before connecting anything to the other side of the circuit.

When creating the setup shown above both INT1 and INT2 will consider CT their connected endpoint. In the current implementation this is not allowed (_connected_circuittermination is a OneToOneField(CircuitTermination) on the interface, and connected_endpoint is a OneToOneField(Interface) on the circuit termination).

There are two possible ways to deal with this that I can see:

  1. Allow the CT to be considered a valid connected endpoint for multiple interfaces> This would mean: change the _connected_circuittermination on the interface to a ForeignKey with a related_name of connected_endpoints and remove the connected_endpoint field from the circuit. Adapting the UI and API to match.
  2. Don't allow this, and check if there is a multiplexer in the path that would allow connecting multiple interfaces to the same CT. If that is the case, don't store the CT as the connected endpoint. This would require no changes to the UI and API.

Which choice is the best? Discuss…

Use Case

Choice 1 would be useful in cases where having multiple interfaces connected to the same CT is the final goal. For example when buying a service from an ISP that involves multiple wavelengths for different services. I know of cases where the ISP provides plain internet on one wavelength and private interconnects on others, so plausible scenario.

Choice 2 would be fine if we don't need to support such wavelength services. In that case there will be a corresponding multiplexer on the other side of the circuit, and the connected endpoint of the interface will be filled when something is connected at the other end.

Database Changes

When choosing option 1: changing a one-to-one relationship into a one-to-many.

External Dependencies

None

Originally created by @steffann on GitHub (Apr 21, 2020). ### Environment * Python version: 3.8 * NetBox version: 2.8 ### Proposed Functionality The current implementation cannot handle the following situation: ``` +--------------+ INT1 ----- FP1 | | RP ----- CT --- Circuit INT2 ----- FP2 | +--------------+ ``` WhereINT is an interface, FP is a front port, RP is a rear port and CT is a circuit termination. Such a situation can occur for example when modelling a DWDM multiplexer connected to a leased line, when creating all the cabling on one end of the circuit before connecting anything to the other side of the circuit. When creating the setup shown above both INT1 and INT2 will consider CT their connected endpoint. In the current implementation this is not allowed (`_connected_circuittermination` is a `OneToOneField(CircuitTermination)` on the interface, and `connected_endpoint` is a `OneToOneField(Interface)` on the circuit termination). There are two possible ways to deal with this that I can see: 1. Allow the CT to be considered a valid connected endpoint for multiple interfaces> This would mean: change the `_connected_circuittermination` on the interface to a `ForeignKey` with a `related_name` of `connected_endpoints` and remove the `connected_endpoint` field from the circuit. Adapting the UI and API to match. 2. Don't allow this, and check if there is a multiplexer in the path that would allow connecting multiple interfaces to the same CT. If that is the case, don't store the CT as the connected endpoint. This would require no changes to the UI and API. Which choice is the best? Discuss… ### Use Case Choice 1 would be useful in cases where having multiple interfaces connected to the same CT is the final goal. For example when buying a service from an ISP that involves multiple wavelengths for different services. I know of cases where the ISP provides plain internet on one wavelength and private interconnects on others, so plausible scenario. Choice 2 would be fine if we don't need to support such wavelength services. In that case there will be a corresponding multiplexer on the other side of the circuit, and the connected endpoint of the interface will be filled when something is connected at the other end. ### Database Changes When choosing option 1: changing a one-to-one relationship into a one-to-many. ### External Dependencies None
adam added the type: feature label 2025-12-29 18:30:02 +01:00
adam closed this issue 2025-12-29 18:30:03 +01:00
Author
Owner

@iunderwood commented on GitHub (May 14, 2020):

Additional use case: using single strands in a fiber, e.g. BiDi optics.

Without being too familiar the backend of the system, perhaps allow a circuit to be flexibly usable as a cable connecting rear ports.

@iunderwood commented on GitHub (May 14, 2020): Additional use case: using single strands in a fiber, e.g. BiDi optics. Without being too familiar the backend of the system, perhaps allow a circuit to be flexibly usable as a cable connecting rear ports.
Author
Owner

@semaja2 commented on GitHub (Jun 18, 2020):

I have a need for this as well in regards to leased dark fibre circuits and using BiDi modules

@semaja2 commented on GitHub (Jun 18, 2020): I have a need for this as well in regards to leased dark fibre circuits and using BiDi modules
Author
Owner

@jeremystretch commented on GitHub (Jul 24, 2020):

Blocked by #4900

@jeremystretch commented on GitHub (Jul 24, 2020): Blocked by #4900
Author
Owner

@jeremystretch commented on GitHub (Oct 15, 2020):

This is addressed by #4900 and will be allowed beginning with NetBox v2.10.

@jeremystretch commented on GitHub (Oct 15, 2020): This is addressed by #4900 and will be allowed beginning with NetBox v2.10.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#3594