mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-11 21:10:29 +01:00
Add an interfaces list view #2925
Closed
opened 2025-12-29 18:23:31 +01:00 by adam
·
21 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#2925
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 @darcynz on GitHub (Oct 3, 2019).
Originally assigned to: @DanSheps on GitHub.
Environment
Proposed Functionality
Add a GUI page for interfaces -> https://netbox/api/dcim/interfaces/. Filtering by site/region and tags would allow easier management of interfaces.
Export template functionality would also add.
Use Case
Enable holistic management of interfaces.
We would use this for our Switch port register (currently done in a spreadsheet to keep track of allocated interfaces in the datacenter).
In general Netbox would be ideal for holistic management of interfaces, making it easy to view them and. It can also be leveraged by adding metadata via tags. Eg monitoring groups.
Noted this was raised before ( https://github.com/netbox-community/netbox/issues/291) but wanted to show the relevance with our use case.
Database Changes
None that I'm aware off
External Dependencies
None that I'm aware off
@jeremystretch commented on GitHub (Oct 7, 2019):
I don't think it would make sense to do this for only interfaces and not for the six other types of device components (console ports, power ports, etc.).
@wols commented on GitHub (Oct 7, 2019):
I could export all interface descriptions (before the connection) to fill device configuration templates.
@darcynz commented on GitHub (Oct 10, 2019):
I agree. I can see benefits seeing the the other components holistically eg one use case could be to find devices with only one power port that need another. It would also enable each component type as a source of truth domain, as users able to see the items holistically easily and any mistakes / omissions. Currently this is done via reports.
Perhaps a multi discipline components page could work. The main difficulty would be filtering, I suppose component specific tags could be listed under their own headings. A check box filter could be used to hide/add component types.
Curious to see community thoughts on this...
@darcynz commented on GitHub (Oct 22, 2019):
We've managed to make a work around via a recent post (Thanks Jeremy!!) that enables exporting associated interfaces via the device model.
Would still be great to see interfaces via the GUI but this helps provide the overview we wanted.
In case any one else is looking to do the same, below is the adjusted the template to give a report like format:
@candlerb commented on GitHub (Oct 28, 2019):
Adding an explicit 'interfaces' view opens the door to importing interfaces as CSV, which was requested as #822 (and #1492 for virtual machines)
@candlerb commented on GitHub (Nov 7, 2019):
Just found another use case for this: I wanted to view which MAC addresses I have stored in Netbox.
@candlerb commented on GitHub (Nov 7, 2019):
The example export above doesn't work with virtualmachines.
The admin interface does let you create an export template for
dcim > interfaces, so I made this:However, the GUI doesn't appear to have anywhere to run it :-(
If I manually create the URL
/dcim/interfaces/?export=fooI get a 404. As was recently mentioned elsewhere, I don't think the API allows you to run an export either.Workaround is to use nbshell:
@darcynz commented on GitHub (Nov 7, 2019):
Thanks Brian! Forgot about VM's, That export will be handy!
@hellerve commented on GitHub (Nov 15, 2019):
We have a working version of interface lists (including filters and so on) in our fork of NetBox.
Did we agree on only doing this for interfaces for now instead of other device components? If so, I’d happily provide the code that we have. If not this should also not be a big problem for us to implement!
EDIT: Oh, I see @DanSheps already volunteered to work on this. Sorry about that!
@DanSheps commented on GitHub (Nov 15, 2019):
I think we should definitely do all views.
@TheRealBecks commented on GitHub (Nov 15, 2019):
@hellerve @DanSheps Maybe working together could lead into a faster result?
@steffann commented on GitHub (Nov 21, 2019):
Looks good! I did notice that for interfaces the "Device" column is empty when an interface belongs to a VM. Might be useful to change that column to "Device/VM".
@steffann commented on GitHub (Nov 21, 2019):
Also: while playing with it I found the order of the columns a bit confusing. I would suggest the following order (basically moving Device to the front):
@candlerb commented on GitHub (Nov 21, 2019):
I would like to see MAC Address in a column, if only to be able to spot interfaces that haven't had MAC address recorded.
(Aside: it seems that connection status as an attribute of the interface is weird. It means it could be Planned at one end and Active at the other. Would it be better as an attribute of the cable?)
@darcynz commented on GitHub (Nov 21, 2019):
My initial thought was that the interface list would be similar to what you see on a device (name, description, mtu, mode, cable, connection etc) but that would be too verbose.
Could interface description fit? At a glance this could be quite important as often it shows purpose of the interface.
Also perhaps showing interface 'enabled' could quite helpful.
@steffann commented on GitHub (Nov 21, 2019):
The attribute on the interface is basically a cache. It's set when any cable in the path is changed, and its value is based on the status of all the cables on the path. It will only show as connected if all cables are connected and there is a remote endpoint. So not as useless as it seems :)
@candlerb commented on GitHub (Nov 21, 2019):
I think description should be included. This would be consistent with
/ipam/ipaddressesand/ipam/prefixeswhich also include description./dcim/devicesdoesn't - but devices and VMs have "comments" rather than "description".If screen estate is a problem, then one option would be switchable views:
@candlerb commented on GitHub (Nov 21, 2019):
Oh, and it would be great to see tags. However the other list views don't show tags either, so I guess that should be left out purely for consistency :-(
@DanSheps commented on GitHub (Nov 25, 2019):
I am trying to keep the view very generic at this point in time. In the future we can look at expanding the columns.
This is going to be beyond the scope of the current issue. This would have to wait, most likely for a major UI revamp.
This is going to maintain consistency with other list views more or less.
@jeremystretch commented on GitHub (Nov 25, 2019):
Regarding tags: I agree that it would nice to include them, but right now we're constrained by the use of HTML tables for most object lists. Ideally, tags should appear below the standard fields to ensure they don't force excessive wrapping of other fields. This would be best approached by converting to a more flexible rendering mechanism, but obviously that won't be trivial as it likely entails ditching django-tables2.
@DanSheps commented on GitHub (Nov 25, 2019):
For everything except for interfaces and device bays, the following columns are used:
'pk', 'device', 'name', 'type', 'description', 'cable'For interfaces:
'pk', 'parent', 'name', 'type', 'description', 'cable'For device bays:
'pk', 'name', 'device', 'installed_device'Ports are ordered by either device or parent