Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multiple interfaces connected to a single circuit termination #4519

Closed
steffann opened this issue Apr 21, 2020 · 4 comments
Closed

Multiple interfaces connected to a single circuit termination #4519

steffann opened this issue Apr 21, 2020 · 4 comments
Labels
type: feature Introduction of new functionality to the application

Comments

@steffann
Copy link
Contributor

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

@steffann steffann added status: under review Further discussion is needed to determine this issue's scope and/or implementation type: feature Introduction of new functionality to the application labels Apr 21, 2020
@iunderwood
Copy link

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.

@semaja2
Copy link

semaja2 commented Jun 18, 2020

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

@jeremystretch jeremystretch added status: blocked Another issue or external requirement is preventing implementation and removed status: under review Further discussion is needed to determine this issue's scope and/or implementation labels Jul 24, 2020
@jeremystretch
Copy link
Member

Blocked by #4900

@jeremystretch
Copy link
Member

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

@jeremystretch jeremystretch removed the status: blocked Another issue or external requirement is preventing implementation label Oct 15, 2020
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jan 14, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
type: feature Introduction of new functionality to the application
Projects
None yet
Development

No branches or pull requests

4 participants