mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-12 05:20:31 +01:00
Can not rename device interface templates through API - module_type, name must make a unique set #9825
Closed
opened 2025-12-29 21:23:13 +01:00 by adam
·
9 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#9825
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 @rozgonik on GitHub (Jun 10, 2024).
Originally assigned to: @arthanson on GitHub.
Deployment Type
Self-hosted
NetBox Version
v4.0.5 - netbox-docker
Python Version
3.11
Steps to Reproduce
Netbox is running as a docker container with postgres12. The behaviour can be reproduced in the demo environment too.
Preparation:
asdandqwege1for the first device type with arbitrary parametersge2for the second device type with arbitrary parametersTry to rename the second interface template to
ge1through the API (I have used the swagger "Try it out" feature):curl -X 'PATCH' 'https://demo.netbox.dev/api/dcim/interface-templates/305/' [...] -d '{"name": "ge1"}'Expected Behavior
The interface template is successfully renamed, the PATCH call returning HTTP 200.
Observed Behavior
HTTP 400 returned with body:
@arthanson commented on GitHub (Jun 13, 2024):
@rozgonik can you please re-check the repo steps as it looks like it is working for me using the steps your provided.
@rozgonik commented on GitHub (Jun 17, 2024):
@arthanson I can repro it just fine, but here are the repro steps 100% through API (repro steps above are a mixed gui-api approach, maybe that was misleading, sorry for the confusion this may have caused):
(FTR: Also truncated the curl calls for the sake of clarity. The missing bits are the
accept,Content-TypeandX-CSRFTOKENheaders.)Make sure we have a known manufacturer (with slug
idk). (This step was absent above because I have used a manufacturer already available):curl -X 'POST' 'https://demo.netbox.dev/api/dcim/manufacturers/' [...] -d '{"name": "idk", "slug": "idk"}'Create 2 arbitrary device types with name
asdandqwe:curl -X 'POST' 'https://demo.netbox.dev/api/dcim/device-types/' [...] -d '{"manufacturer": {"slug": "idk"}, "model": "asd", "slug": "asd"}'curl -X 'POST' 'https://demo.netbox.dev/api/dcim/device-types/' [...] -d '{"manufacturer": {"slug": "idk"}, "model": "qwe", "slug": "qwe"}'Create an interface template
ge1for the first device type (asd) with arbitrary parameterscurl -X 'POST' 'https://demo.netbox.dev/api/dcim/interface-templates/' [...] -d '{"device_type": {"slug": "asd"}, "name": "ge1", "type": "virtual"}'Create an interface template
ge2for the second device type (qwe) with arbitrary parameterscurl -X 'POST' 'https://demo.netbox.dev/api/dcim/interface-templates/' [...] -d '{"device_type": {"slug": "qwe"}, "name": "ge2", "type": "virtual"}'Get the id of the second interface template (
ge2)Get it from the last curl call's output. In my case its
304.Try to rename the second interface template (
ge2) toge1through the API using the id from step 4 (please note the id usage on the end of the url):curl -X 'PATCH' 'https://demo.netbox.dev/api/dcim/interface-templates/304/' [...] -d '{"name": "ge1"}'@arthanson commented on GitHub (Jun 18, 2024):
@rozgonik I followed your steps but it is still working fine for me (tried against my local install) See commands / output below using your curl commands. For the step-4 my ID returned was 302 which I used.
@rozgonik commented on GitHub (Jun 19, 2024):
@arthanson I can still reproduce it on a fresh source install from the develop branch (commit
7a5e8a8).curl -X 'PATCH' 'http://127.0.0.1:8000/api/dcim/interface-templates/2/' -H "authorization: Token 426b45f17bd999bfe0abba46280c0bc195b1b353" -H 'accept: application/json' -H 'Content-Type: application/json' -d '{"name": "ge1"}'{"non_field_errors":["The fields module_type, name must make a unique set."]}Please make sure your dependencies are correctly installed as I found out that downgrading
djangorestframeworkto3.14.0from3.15.1makes the error go away.Update: It seems like
djangorestframeworkupdate happened in commit3be3bbe@rozgonik commented on GitHub (Jun 19, 2024):
I think this drf issue may be related: https://github.com/encode/django-rest-framework/issues/9410
@github-actions[bot] commented on GitHub (Jun 27, 2024):
This is a reminder that additional information is needed in order to further triage this issue. If the requested details are not provided, the issue will soon be closed automatically.
@github-actions[bot] commented on GitHub (Jul 6, 2024):
This issue is being closed as no further information has been provided. If you would like to revisit this topic, please first modify your original post to include all the requested detail, and then ask that the issue be reopened.
@rozgonik commented on GitHub (Jul 8, 2024):
Can someone please reopen it?
What details can I provide to help on reproducing this issue?
One clue, its important to use a Netbox installation corresponding to the official docs with all the correct requirement versions installed as stated above.
Also v4.0.6 is affected too.
@FrondorM commented on GitHub (Jul 19, 2024):
I can confirm that the issue is also still present in v4.0.7.
And it doesn't only apply to device interface templates, but also to device console port templates.
It seems the unique name check isn't done on the device itself as it should, but on the entire template database.
Edit: to be clear: I use the swagger "Try it out" feature