Multiple interfaces connected to a circuit termination #3595

Closed
opened 2025-12-29 18:30:03 +01:00 by adam · 1 comment
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: featurestatus: under review labels 2025-12-29 18:30:03 +01:00
adam closed this issue 2025-12-29 18:30:03 +01:00
Author
Owner

@steffann commented on GitHub (Apr 21, 2020):

GitHub is broken

@steffann commented on GitHub (Apr 21, 2020): GitHub is broken
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#3595