mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-11 21:10:29 +01:00
Deleting a connected port, interface or other connection on a device should not be possible if there's a connected cable #4333
Closed
opened 2025-12-29 18:34:51 +01:00 by adam
·
19 comments
No Branch/Tag Specified
main
update-changelog-comments-docs
feature-removal-issue-type
20911-dropdown
20239-plugin-menu-classes-mutable-state
21097-graphql-id-lookups
feature
fix_module_substitution
20923-dcim-templates
20044-elevation-stuck-lightmode
feature-ip-prefix-link
v4.5-beta1-release
20068-import-moduletype-attrs
20766-fix-german-translation-code-literals
20378-del-script
7604-filter-modifiers-v3
circuit-swap
12318-case-insensitive-uniqueness
20637-improve-device-q-filter
20660-script-load
19724-graphql
20614-update-ruff
14884-script
02496-max-page
19720-macaddress-interface-generic-relation
19408-circuit-terminations-export-templates
20203-openapi-check
fix-19669-api-image-download
7604-filter-modifiers
19275-fixes-interface-bulk-edit
fix-17794-get_field_value_return_list
11507-show-aggregate-and-rir-on-api
9583-add_column_specific_search_field_to_tables
v4.5.0
v4.4.10
v4.4.9
v4.5.0-beta1
v4.4.8
v4.4.7
v4.4.6
v4.4.5
v4.4.4
v4.4.3
v4.4.2
v4.4.1
v4.4.0
v4.3.7
v4.4.0-beta1
v4.3.6
v4.3.5
v4.3.4
v4.3.3
v4.3.2
v4.3.1
v4.3.0
v4.2.9
v4.3.0-beta2
v4.2.8
v4.3.0-beta1
v4.2.7
v4.2.6
v4.2.5
v4.2.4
v4.2.3
v4.2.2
v4.2.1
v4.2.0
v4.1.11
v4.1.10
v4.1.9
v4.1.8
v4.2-beta1
v4.1.7
v4.1.6
v4.1.5
v4.1.4
v4.1.3
v4.1.2
v4.1.1
v4.1.0
v4.0.11
v4.0.10
v4.0.9
v4.1-beta1
v4.0.8
v4.0.7
v4.0.6
v4.0.5
v4.0.3
v4.0.2
v4.0.1
v4.0.0
v3.7.8
v3.7.7
v4.0-beta2
v3.7.6
v3.7.5
v4.0-beta1
v3.7.4
v3.7.3
v3.7.2
v3.7.1
v3.7.0
v3.6.9
v3.6.8
v3.6.7
v3.7-beta1
v3.6.6
v3.6.5
v3.6.4
v3.6.3
v3.6.2
v3.6.1
v3.6.0
v3.5.9
v3.6-beta2
v3.5.8
v3.6-beta1
v3.5.7
v3.5.6
v3.5.5
v3.5.4
v3.5.3
v3.5.2
v3.5.1
v3.5.0
v3.4.10
v3.4.9
v3.5-beta2
v3.4.8
v3.5-beta1
v3.4.7
v3.4.6
v3.4.5
v3.4.4
v3.4.3
v3.4.2
v3.4.1
v3.4.0
v3.3.10
v3.3.9
v3.4-beta1
v3.3.8
v3.3.7
v3.3.6
v3.3.5
v3.3.4
v3.3.3
v3.3.2
v3.3.1
v3.3.0
v3.2.9
v3.2.8
v3.3-beta2
v3.2.7
v3.3-beta1
v3.2.6
v3.2.5
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.2.0
v3.1.11
v3.1.10
v3.2-beta2
v3.1.9
v3.2-beta1
v3.1.8
v3.1.7
v3.1.6
v3.1.5
v3.1.4
v3.1.3
v3.1.2
v3.1.1
v3.1.0
v3.0.12
v3.0.11
v3.0.10
v3.1-beta1
v3.0.9
v3.0.8
v3.0.7
v3.0.6
v3.0.5
v3.0.4
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v2.11.12
v3.0-beta2
v2.11.11
v2.11.10
v3.0-beta1
v2.11.9
v2.11.8
v2.11.7
v2.11.6
v2.11.5
v2.11.4
v2.11.3
v2.11.2
v2.11.1
v2.11.0
v2.10.10
v2.10.9
v2.11-beta1
v2.10.8
v2.10.7
v2.10.6
v2.10.5
v2.10.4
v2.10.3
v2.10.2
v2.10.1
v2.10.0
v2.9.11
v2.10-beta2
v2.9.10
v2.10-beta1
v2.9.9
v2.9.8
v2.9.7
v2.9.6
v2.9.5
v2.9.4
v2.9.3
v2.9.2
v2.9.1
v2.9.0
v2.9-beta2
v2.8.9
v2.9-beta1
v2.8.8
v2.8.7
v2.8.6
v2.8.5
v2.8.4
v2.8.3
v2.8.2
v2.8.1
v2.8.0
v2.7.12
v2.7.11
v2.7.10
v2.7.9
v2.7.8
v2.7.7
v2.7.6
v2.7.5
v2.7.4
v2.7.3
v2.7.2
v2.7.1
v2.7.0
v2.6.12
v2.6.11
v2.6.10
v2.6.9
v2.7-beta1
Solcon-2020-01-06
v2.6.8
v2.6.7
v2.6.6
v2.6.5
v2.6.4
v2.6.3
v2.6.2
v2.6.1
v2.6.0
v2.5.13
v2.5.12
v2.6-beta1
v2.5.11
v2.5.10
v2.5.9
v2.5.8
v2.5.7
v2.5.6
v2.5.5
v2.5.4
v2.5.3
v2.5.2
v2.5.1
v2.5.0
v2.4.9
v2.5-beta2
v2.4.8
v2.5-beta1
v2.4.7
v2.4.6
v2.4.5
v2.4.4
v2.4.3
v2.4.2
v2.4.1
v2.4.0
v2.3.7
v2.4-beta1
v2.3.6
v2.3.5
v2.3.4
v2.3.3
v2.3.2
v2.3.1
v2.3.0
v2.2.10
v2.3-beta2
v2.2.9
v2.3-beta1
v2.2.8
v2.2.7
v2.2.6
v2.2.5
v2.2.4
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.6
v2.2-beta2
v2.1.5
v2.2-beta1
v2.1.4
v2.1.3
v2.1.2
v2.1.1
v2.1.0
v2.0.10
v2.1-beta1
v2.0.9
v2.0.8
v2.0.7
v2.0.6
v2.0.5
v2.0.4
v2.0.3
v2.0.2
v2.0.1
v2.0.0
v2.0-beta3
v1.9.6
v1.9.5
v2.0-beta2
v1.9.4-r1
v1.9.3
v2.0-beta1
v1.9.2
v1.9.1
v1.9.0-r1
v1.8.4
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.7.3
v1.7.2-r1
v1.7.1
v1.7.0
v1.6.3
v1.6.2-r1
v1.6.1-r1
1.6.1
v1.6.0
v1.5.2
v1.5.1
v1.5.0
v1.4.2
v1.4.1
v1.4.0
v1.3.2
v1.3.1
v1.3.0
v1.2.2
v1.2.1
v1.2.0
v1.1.0
v1.0.7-r1
v1.0.7
v1.0.6
v1.0.5
v1.0.4
v1.0.3-r1
v1.0.3
1.0.0
Labels
Clear labels
beta
breaking change
complexity: high
complexity: low
complexity: medium
needs milestone
netbox
pending closure
plugin candidate
pull-request
severity: high
severity: low
severity: medium
status: accepted
status: backlog
status: blocked
status: duplicate
status: needs owner
status: needs triage
status: revisions needed
status: under review
topic: GraphQL
topic: Internationalization
topic: OpenAPI
topic: UI/UX
topic: cabling
topic: event rules
topic: htmx navigation
topic: industrialization
topic: migrations
topic: plugins
topic: scripts
topic: templating
topic: testing
type: bug
type: deprecation
type: documentation
type: feature
type: housekeeping
type: translation
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/netbox#4333
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @pobk on GitHub (Dec 4, 2020).
Environment
Proposed Functionality
Amend the deletion process for interfaces, and ports that prevents deletion of the interface/port if the port is bound.
The current "Disconnect" button and "Delete" button currently display the same UI with little variance, however, the delete button can be infinitely more destructive.
It should not be possible to delete a rear-port which is bound to front-ports that are bound to cables.
Use Case
The current UI allows for the following scenario:
This behaviour is not intuitive at present. The deletion button and disconnect button are pictographs and fairly close proximity to each other.
Furthermore the difference between the confirmation dialogue for deleting a cable and deleting a port is virtually identical aside from "Cable" or "Port". This can be missed during the mass-update/deletion process.
The use case should be as follows:
This should be expanded to include any interface, console port, power port or connection on a device. If it's connected to "something" then NetBox should either make it very obvious what other things will be affected or refuse to delete the object?
Database Changes
No database changes required.
External Dependencies
No external dependencies
@jeremystretch commented on GitHub (Dec 4, 2020):
This is the intended behavior. If you'd like to propose changing this behavior, please rewrite or resbumit your issue as a feature request citing your specific use case.
@pobk commented on GitHub (Dec 5, 2020):
Revised to feature request.
@Infiniverse commented on GitHub (Dec 5, 2020):
Should this be expanded to, deleting any port or interface should not be possible if there is a cable connected to it?
@pobk commented on GitHub (Dec 5, 2020):
Agreed. Have updated FR to include this on any connection made to a device, interface, ports, console, power etc...
@jeremystretch commented on GitHub (Dec 8, 2020):
This will need to be addressed by the community, as I suspect there's a good number of people who rely on the current behavior.
@pobk commented on GitHub (Dec 15, 2020):
I think the sticking point of this issue is that the confirmation page for deleting cables and a connections, look virtually identical.
Delete cable confirmation: https://pasteboard.co/JF3FFNT.png
Delete port confirmation: https://pasteboard.co/JF3G0OW.png
There's nothing immediately obvious in the UI to indicate that deletion of the port will also delete, ports, cables and interfaces and more possibly, in future. It's a lot more destructive.
I suspect the better option would be an alternative delete confirmation page, that way you're not breaking the work-flow, just reformatting it a little bit?
@TheTrafficNetwork commented on GitHub (Dec 15, 2020):
From my perspective, removing the cable before removing a port/interface/etc seems logical. If I were wanting to remove a module from a switch, I would in the majority of cases remove all of the cables first. I do not have anything that would break from this change so my views may be different than much more developed power users.
@stale[bot] commented on GitHub (Jan 30, 2021):
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. Please see our contributing guide.
@pobk commented on GitHub (Feb 9, 2021):
So how does one get more input from the community on this to establish more of a consensus?
@pobk commented on GitHub (Mar 17, 2021):
Is there no more appetite for discussion here?
Is it worth putting together a PR for this?
@xkilian commented on GitHub (Mar 17, 2021):
I agree with the proposed changes.
As for NOT permitting the deletion of a port, I am more in agreement than disagreement. I think other power users should provide feedback to see if after a warning it should be allowed anyway.
Our current cabling management system REQUIRES that a cable be disconnected before removing a port.. Especially because a "connexion" is not just a single cable but may be formed of a number of cables spanning multiple rooms or sites and care must be taking to decomission paths and/or single connexions depending on the use-case. (Removal, move, reconfiguration, etc.)
@xkilian commented on GitHub (Mar 17, 2021):
I think a PR should be prepared for this, are you proposing to do the work? I any case, the current way of doing things is dangerous.
As Netbox matures, it is issues like these that are valuable to improve workflow quality. Small things, but important things.
Same as looking at it from a task based perspective:
Take the TOP THREE tasks someone does in a day in Netbox and evaluate what can be improved:
Based on the evaluation, improving important use-cases will provide high value for the most users. :-)
@DanSheps commented on GitHub (Mar 17, 2021):
Here is my take on this:
It might be better to instead of making any sweeping changes to the current functionality, change the delete pages for every device to provide a list of "impacted" additional models. For example, if you are deleting a rear port, it should simply state:
"You are deleting this port. By deleting this port, the following will be deleted as well: <insert list>"
@jeremystretch commented on GitHub (Mar 17, 2021):
Per the contributing guide, please don't open a PR for an issue before it has been accepted.
@xkilian commented on GitHub (Mar 17, 2021):
Oups, yes of course, this should be an accepted issue before submitting an PR.
@pobk commented on GitHub (Apr 21, 2021):
This is the approach I was thinking of taking... Rather than simply looking like every other delete page in NetBox, adjust the delete template to communicate the complexity of the deletion... What else is going to be nuked. The sentiment being: if we communicate the changes to be made is a different way, someone might stop and identify the change as something they don't want to do.
The danger of the current generic approach, is that it looks like every other delete page, and users should strongly be urged to look at what they're deleting when it comes to read-ports, since it deletes more than is immediately obvious.
@pobk commented on GitHub (Apr 21, 2021):
@jeremystretch should I adjust the FR in line with current discussion... Re-define it as a change to templates rather than change to process?
Would that be more palatable?
@github-actions[bot] commented on GitHub (Jun 21, 2021):
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. Please see our contributing guide.
@github-actions[bot] commented on GitHub (Jul 21, 2021):
This issue has been automatically closed due to lack of activity. In an effort to reduce noise, please do not comment any further. Note that the core maintainers may elect to reopen this issue at a later date if deemed necessary.