mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-11 21:10:29 +01:00
NAPALM require a primary IP although there is code to use the device name #5567
Closed
opened 2025-12-29 19:29:29 +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#5567
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 @AlbanBedel on GitHub (Oct 27, 2021).
NetBox version
v3.0.8
Python version
3.9
Steps to Reproduce
Expected Behavior
Observed Behavior
@AlbanBedel commented on GitHub (Oct 27, 2021):
Using hostname for NAPALM was added in
7788bf3cebut some merge mishap at22ee6703arendered it useless, the template part was then broken inde65ffb9. I have a pull request ready that just wait for this bug report to be reviewed.@DanSheps commented on GitHub (Oct 28, 2021):
@AlbanBedel I will assign you this on the following Caveat:
@AlbanBedel commented on GitHub (Oct 29, 2021):
My current solution is to just remove the check for the primary IP in the template because:
primary_ip or nameintoactive and primary_ip and napalm_driverwould lead to an unreadable monsterNow we are talking about fixing an obvious regression that render NAPALM useless for some user. I'm a bit surprised that some look and feel question for a corner case is deemed more important than the functionality itself.
Sadly, as I know nothing of danjgo, or the internals of netbox, fulfilling the additional requirement of actually resolving the hostname from the template is beyond the time I can allocate to this task right now.
@jeremystretch commented on GitHub (Oct 29, 2021):
Reclassifying this as a feature request, as the current limitation was intentional.
@AlbanBedel commented on GitHub (Nov 2, 2021):
Reverting
7788bf3was intentional?@jeremystretch commented on GitHub (Nov 2, 2021):
Apparently.
@DanSheps commented on GitHub (Nov 2, 2021):
Not sure why you think this is reverted, the logic is still present.
@kkthxbye-code commented on GitHub (Nov 2, 2021):
@jeremystretch @DanSheps - I think you are misunderstanding him, and that he is correct.
The current code:
61b61b1bc0/netbox/dcim/api/views.py (L411-L436)As you can see, the codepath in the else from L422 is dead code because the check for device.primary_ip was added back at some point (L412-413). device.primary_ip can never be falsy at that point, as it's already checked and thrown if falsy. If this was really intended, the dead code should be removed.
What's weird is that I can't find a diff for a commit where the code in L412-413 was added back, at least not from github when viewing the file history. Seems to indicate that he could be right that it's a merge mishap.
@jeremystretch commented on GitHub (Nov 2, 2021):
This is tagged as "needs owner" for whoever would like to dig further into it and propose a specific change.
@AlbanBedel commented on GitHub (Nov 4, 2021):
@kkthxbye-code yes it is a merge mishap, I spent a whole evening tracking it down to
22ee670where you can see that one parent bring7788bf3, so this branch doesn't have the early check, and the other parent commit do.I proposed a specific change in my first comment, but @DanSheps added some requirement that are going beyond just fixing the broken merge.
@DanSheps commented on GitHub (Nov 4, 2021):
You could do a nested if or set some control variables to properly check using and/or
Obviously, you would have to craft a filter for the template engine to resolve the dns name, but that shouldn't be too bad (literally just what is in the code with a try/catch statement)
@kkthxbye-code commented on GitHub (Nov 5, 2021):
Doing a DNS lookup before rendering the page is not ideal in my opinion. Page render is blocked until a response has been received.
Can't we just fail in the napalm API call if the hostname doesn't resolve, the logic is already there? Why do we have to check in the template? If the host on the IP doesn't response the API call fails as well, that isn't checked in the template.
@DanSheps commented on GitHub (Nov 5, 2021):
To be clear, the original request is #4831
Tabs are there but are un-usable. This gives false assumptions to a user that they might work.
My opinion is this:
Now, I get the use case, however I think this is still wrong. Just because you don't use IPAM in NetBox doesn't mean you shouldn't at least have the primary IP documented in NetBox.
Just my 2c
@AlbanBedel commented on GitHub (Nov 5, 2021):
They would only be visible after you configure a platform with a NAPALM driver and set this platform on the device. Once that is configured I don't see what case is left were you wouldn't want the tabs to be visible.
My use case is a network that use DHCP, so there is no fixed IP that can be documented.
@DanSheps commented on GitHub (Nov 8, 2021):
Platforms are not specific per device. You are asking to infer the napalminess of a device from the platform. The platform model is to give a hint about the operating system of a device (Can be as simple as
Cisco IOSor as complex asCisco IOS-XE Catalyst 9300 17.03.03or more). The reason the napalm driver is there is because the napalm driver is generally common for a given operating system.I think a better approach, may be to allow a new field for a device's management interfaces that defines whether the device's management IP is DHCP or not. If that is the case, then perhaps show the tabs and allow napalm lookups by hostname.
@AlbanBedel commented on GitHub (Nov 8, 2021):
So currently the "napalminess" is inferred from "has a platform with NAPALM driver and an IP", I don't think that making this logic even more complex is a good idea. If what you want is to be able to disable NAPALM on selected devices why not just add a device field to disable NAPALM?
@DanSheps commented on GitHub (Nov 8, 2021):
My main point is that this seems very much an edge case (Since it was removed in the 2.9 issue, you appear to be the only one to request it added back), and it should be functionality that one would opt into per device (or globally perhaps), not opt out of per device.
@github-actions[bot] commented on GitHub (Jan 8, 2022):
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 (Feb 7, 2022):
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.