mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-11 21:10:29 +01:00
Interface Physical Name vs Logical Name #3664
Closed
opened 2025-12-29 18:30:28 +01:00 by adam
·
10 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#3664
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 @jameno123 on GitHub (May 9, 2020).
Environment
Proposed Functionality
In linux servers in particular the interface names are usually something like "eth0" or "eno1" however on the back of the physical machine they are generally labeled something "1" or "Eth 2".
This request would be to add an extra "label" field that would tag the physical label in the "interface" view of devices. Currently we have to put names in like "eth0 (1)" which then breaks automation platforms because things like ansible are expecting "eth0" but a technician working on site needs to know port# "1". Sometimes the device names arnt always clear which port they map to such as systemds "enps0f0" and "enps0f1".
The physical interface is labeled "1"
The logical/OS-interface is named "eth0".
It would be nice to be able to represent these in two different fields in the UI so we can perform automation with OUT coding in complex logic like "eth0 (1)" or using things like string-splitting and regexes on the interface names.
I would expect that the "Physical label" should be OPTIONAL and hidden by default however display it in parenthesis in the interface fiew "eth0 (1)" or something.
Dell servers come with the onboard nics labeled "1,2,3,4" its nice to be able to capture that information which we currently cant do without putting it into description or interface name.
Use Case
Being able to display both physical ports and logical port numbers would allow for automation systems to work without requiring regexing of names. Onsite technicians would have additional details to ensure correct actions are performed and the correct ports are able to be more quickly identified during "racking and stacking" where things may not be fully labeled yet.
Database Changes
Likely an additional field in the interface model
External Dependencies
none
@kobayashi commented on GitHub (May 10, 2020):
This issue has been closed as it does not conform to one of the provided templates as required by the contributing guide. If you'd like to request that your issue be re-opened, please first update the content so that it matches the appropriate template (this may require rewriting your issue entirely).
@jameno123 commented on GitHub (May 10, 2020):
@kobayashi please consider re-opening or let me know if i need to create another. I did not see the issue template somehow. I clicked new issue and it dropped be directly to the form. Now I see its showing a list of templates. I would have used previously. I apologize.
@mrfroggg commented on GitHub (May 11, 2020):
Yes, I agree!
We have many automation that uses the physical name/position of a card (s4p1 (slot 4 port 1) instead of eth* names for a Linux server and it's how our datacenter teams are working when patching cables.
Since there is no Custom Field for interfaces to store this info, I would really like a physical name/position field!
Thanks!
@jeremystretch commented on GitHub (May 20, 2020):
This probably makes sense to add to other components as well. I can see a use case for power ports, for example, where the physical labeling differs from what e.g.
show chassisreports.@cpmills1975 commented on GitHub (Jun 9, 2020):
Is it too late to consider how the labels are represented on virtual chassis - particularly the master member. When adding member switches to a virtual chassis, I rename the interfaces to match their actual logical address, but having multiple 'Port 12's appear in the list of interfaces on the main chassis member won't be helpful. I could of course label the ports uniquely in the same way as I currently name them, but (I think) this breaks the use-case of labelling them with the physical 'port' number.
@jsenecal commented on GitHub (Jun 9, 2020):
@cpmills1975 what exactly did you have in mind?
Right now, the
labelis simply added to the API endpoints and represented in between "( )" next to itsnamein views when populated. Adding additional logic to the str() representation could lead to performance issues if we require to fetch additional objects.@cpmills1975 commented on GitHub (Jun 9, 2020):
I'm not sure and open to suggestions and I can't see how this is/will be rendered on screen as it stands. The label in () works well for a single device - taking a Juniper switch for example, ge-0/1/12 rendered as "ge-0/1/12 (Port 12)" makes perfect sense. But when I add multiple Juniper switches to a virtual chassis (and rename the ports) to e.g. ge-0/1/12 and ge-1/1/12, it seems counter intuitive to then have them rendered as "ge-0/1/12 (Port 12)" and "ge-1/1/12 (Port 12)" - both ports will be marked as "12" on the front of the device, but logically named differently.
I like the simplicity of labelling them as Port 12 as cable installers will not necessarily know they are part of a virtual chassis and will typically refer to the switch by the labels and stencilling on the front of it, perhaps by asset number in some circumstances. I am working on a script to import an Excel spreadsheet so allowing the installers just to put '12' in a column and match that to the label makes sense.
I'm wondering whether the rendering could be templated somehow? On an individual switch, "ge-0/1/12 (Port 12)" makes sense, but perhaps on a virtual chassis, "ge-0/1/12 (Member 0, Port 12)" or "ge-0/1/12 (#ASSETNO Port 12)" might make more sense. Templating it would allow different organisations to decide how they would like it shown. Perhaps not at all if it isn't relevant to their environment?
Perhaps I'm over complicating this and I should just label every port uniquely and regex match '12' to 'Member 0, Port 12' in my script?
@jsenecal commented on GitHub (Jun 10, 2020):
@cpmills1975 PR https://github.com/netbox-community/netbox/pull/4723 enables bulk creation of labels the same way one would do interface names. So whatever you do to "rename" your interfaces, you could do to the labels.
I believe using some form of templated rendition of the
labelor even the interfacenameitself when it's parent device is member of a cluster should be considered as a separate use-case/issue. (Your idea is one I've had myself but I don't believe it fits this issue's purpose)@jeremystretch commented on GitHub (Jun 10, 2020):
IMO we should include the
labelfield on DeviceBays as well.@jsenecal commented on GitHub (Jun 11, 2020):
@jeremystretch I did not think there would be a "logical" representation of a device bay, but then I realized that some blade server chassis have their own management interface, so I added this in
a37d06064a