mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-11 21:10:29 +01:00
DeviceType_Count on Manufacturer #10460
Closed
opened 2025-12-29 21:31:45 +01:00 by adam
·
8 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#10460
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 @ZionDials on GitHub (Nov 11, 2024).
Originally assigned to: @jeremystretch on GitHub.
Deployment Type
Self-hosted
Triage priority
I volunteer to perform this work (if approved)
NetBox Version
v4.1.6
Python Version
3.10
Steps to Reproduce
GET /api/dcim/device-types/
Note
"devicetype_count"is missing.Expected Behavior
The expected response, according to the OpenAPI specification for Netbox:
GET /api/dcim/device-types/
Observed Behavior
According to the OpenAPI specification BriefManufacturer has a required field of
"devicetype_count". However, when querying DeviceTypes and ModuleTypes, the field is not populated and causes SDKs using the OpenAPI generator, to fail.Go-Netbox Creating Manufacture errors out because of missing required property devicetype_count #165
@jeremystretch commented on GitHub (Nov 12, 2024):
The
devicetype_countfield is being omitted from the nested representation of manufacturers because the dynamic annotation logic does not recurse for nested serializers. (The field is populated as expected when querying the manufacturers endpoint with?brief=True.)While it's feasible to fix this by explicitly attaching the annotation to DeviceTypeViewSet, we should instead extend the dynamic logic to account for nested fields, as it's very likely there are similar instances in other nested serializers that also need to be addressed.
@jeremystretch commented on GitHub (Nov 12, 2024):
@ZionDials just realized that you volunteered for this. Assigning to you, thanks!
@jeremystretch commented on GitHub (Nov 19, 2024):
@ZionDials are you still planning to work on this?
@ZionDials commented on GitHub (Nov 20, 2024):
I've made several efforts to analyze the situation and identify a solution; however, I realize that I don't have the necessary expertise to resolve this issue effectively.
@arthanson commented on GitHub (Dec 3, 2024):
Updated
get_annotations_for_serializerwhich returns the correct annotations, but they aren't displayed.might need to add the annotation directly on the prefetch, along the lines of:
@Lucas-Eriksson commented on GitHub (Mar 21, 2025):
Hi there! I am not sure if I should be commenting on this thread but I am experiencing a similar issue and thought it better to comment on here rather than opening a new thread.
When calling GET /api/virtualization/virtual-machines/{id} the OpenAPI specification and the actual response body does not match.
The request returns a 'VirtualMachineWithConfigContext' but is missing the nested properties 'virtualmachine_count' and/or 'device_count' for some of its properties. In the picture below, I have highlighted the affected properties.
The objects of the actual response looks like this.
Am I correct in assuming the fix you are working on in https://github.com/netbox-community/netbox/pull/18583 will resolve this as well? I am on version 4.2.2 of Netbox.
@renatoalmeidaoliveira commented on GitHub (Mar 21, 2025):
After exploring this issue at #18583, I didn't find a proper solution for this issue, Here are my findings:
1 - There're some models' serializers that doesn't use brief_field in the nested fields, example, and the current implementation always use the brief_fields, code
2 - There're some models like
PowerPortthat defines aSerializerfield inside the nested fields, likedeviceandmodule_bay3 - Some of the nested
Serializerfields, have fields that requires annotationsChallenges:
When the nested
Serializerfield doesn't haveSerializerfields, adding aPrefetch(field_name, qs=model.objects.all().annotate(**nested_annotations))withnested_annotationsas a result ofget_annotations_for_serializerworks fine.In scenarios where the nested
SerializerhaveSerializerfields, that approach fails when executed in a recursive mode, that fails happens by returning an empty queryset, resulting in anot foundresult in the API, it seens that it happens when the prefetch array have aPrefetchalong with an inner nested field.@n-rodriguez commented on GitHub (Dec 16, 2025):
@jeremystretch Hi there! As explained in https://github.com/netbox-community/netbox/issues/20950#issuecomment-3633139839 I'm working on OpenApi generator for Crystal Lang (a typed compiled language, like Go, see: https://github.com/OpenAPITools/openapi-generator/pull/22545#issuecomment-3660407989) and got some issues like this one. I'm glad this one is fixed 👍 but maybe we should take a look on this cases : https://github.com/jbox-web/netbox-extractor/blob/master/vendor/netbox-client.4.4.8-patches/02-netbox_nillable.diff
As you can see in the patch, it's all about null values that appear when they shouldn't.
I wrote a small Ruby script (https://github.com/jbox-web/netbox-extractor/blob/master/extras/generate_test_api.rb) which generates Crystal code (https://github.com/jbox-web/netbox-extractor/blob/master/src/netbox_extractor/controllers/test_api.cr) that do a
GETon all_list()endpoints to check if the response is parsable.I've made a test with your demo app :
This endpoints are ok :
This ones are unknown because there are no entries :
This ones are failing (mostly) because of missing attributes :
Missing JSON attribute:Expected BeginObject but was NullExpected String but was Nulland could/should be fixed on Netbox side.
These errors :
Expected String but was BeginObjectCouldn't parse (Bool | Float32 | ...)are wrongly typed objects errors but this is a bug on our side.
Hope this helps! Thank you!