mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-11 21:10:29 +01:00
Console ports and Power Ports created by scripts ( objects.bulk_create(items) ) do not show in Web UI #11639
Closed
opened 2025-12-29 21:47:56 +01:00 by adam
·
6 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
No Label
netbox
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/netbox#11639
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 @JCrabtree911 on GitHub (Sep 19, 2025).
NetBox Edition
NetBox Community
NetBox Version
v4.4.1
Python Version
3.11
Steps to Reproduce
Expected Behavior
Interfaces and ports should show up in the Web UI regardless of how they were created.
Observed Behavior
Those interfaces do not appear in the Web UI (https://mydcim/dcim/devices/) - They appear in the REST API, and when you manually navigate to the relevant path - for example /dcim/devices//console-ports/ or /dcim/devices//power-ports/
These properties, visible in the REST API, are not correctly updated when the corresponding interface / port types are created with objects.bulk_create()
console_port_count
console_server_port_count
power_port_count
power_outlet_count
interface_count
front_port_count
rear_port_count
device_bay_count
module_bay_count
inventory_item_count
@jnovinger commented on GitHub (Sep 19, 2025):
@JCrabtree911 , thank you for opening a bug report. Unfortunately, the information you have provided is not sufficient for someone else to attempt to reproduce the reported behavior. Remember, each bug report must include detailed steps that someone else can follow on a clean, empty NetBox installation to reproduce the exact problem you're experiencing. These instructions should include the creation of any involved objects, any configuration changes, and complete accounting of the actions being taken. Also be sure that your report does not reference data on the public NetBox demo, as that is subject to change at any time by an outside party and cannot be relied upon for bug reports.
@JCrabtree911 commented on GitHub (Sep 19, 2025):
Here's at least three other bug reports which document the same erroneous behavior.
https://github.com/netbox-community/netbox/issues/17980
https://github.com/netbox-community/netbox/issues/19637
https://github.com/netbox-community/netbox/issues/13937
This has been reported over several years and has yet to be fixed. I saw one that referred to running calculate_cached_counts which doesn't seem to appear anywhere in the NetBox documentation. Suffice it say, this is a known bug that keeps getting reported because it has not yet been fixed. bulk_create should either be fixed to provide the expected behavior, or be removed completely to stop people from corrupting their data.
@jnovinger commented on GitHub (Sep 19, 2025):
@JCrabtree911 , thanks for linking those other bug reports.
As you have obviously noticed, all of those issues were closed as they did not actually represent any bug in NetBox. The issue with
bulk_create()lies in a technical limitation with Django, the web framework that NetBox is built with, but is explicitly not a bug in NetBox. If you would like to work with the Django team to resolve that, you are more than welcome. However, sincebulk_createis not something that NetBox provides, we cannot and will not be removing it.If you would like to continue the discussion about this particular issue, you must provide more details. Otherwise I will quote Jeremy's response from one of the issues you linked:
If you can provide details that point to a reproducible bug in NetBox's custom script implementation, then we are more than willing to look in to it. If you are unable or unwilling to provide the required details, this issue will be closed or converted to a discussion for you.
@JCrabtree911 commented on GitHub (Sep 19, 2025):
This is a problem with NetBox.
It was caused by the script distributed by the NetBox-Community project here https://github.com/netbox-community/customizations/blob/master/scripts/add_device_type_components.py (Updated now, it seems) You should either work around it in NetBox (like, automatically recalculate obviously wrong negative counts) or provide some mitigation for the damage it causes. (like a mechanism to force recalculation of all or selected counts on all or selected devices) Additionally, the Customizations -> Scripts section should detect for and warn about bulk_create when the end user uploads scripts.
@jnovinger commented on GitHub (Sep 19, 2025):
No, it is not, as has been explained multiple times.
Since you clearly feel strongly about this, you are welcome to fork NetBox to implement and maintain this change.
I think you're referring to the
scriptsdirectory of the netbox-community/customizations repository here, but I could be wrong. If so, then I suggest you follow up with that project to pursue this idea.I have made it clear that issues resulting from the use of
bulk_create()in custom scripts are not NetBox bugs. In order to be as explicit as possible, the use ofbulk_create()in custom scripts is not and will not be supported.You have been asked twice to provide more details to help us understand if there is a bug in the NetBox custom script implementation. Since you have chosen to not do that, I am closing this issue as not planned.
@JCrabtree911 commented on GitHub (Sep 19, 2025):
Regardless of which dev team is responsible for the underlying bug, users will see impossible (negative) port or interface counts, or not see interfaces that actually exist, and they will blame NetBox.
No I'm talking about this built-in part of NetBox /dcim/extras/scripts/ where the user can actually upload scripts into their instance of NetBox. If this is such a serious problem (it is), users should be blocked from uploading scripts that call bulk_create()
Let's try addressing this a different way, the symptom is that any of these counts can, for any reason, become different from the number of actual ports or interfaces to which they correspond.
console_port_count
console_server_port_count
power_port_count
power_outlet_count
interface_count
front_port_count
rear_port_count
device_bay_count
module_bay_count
inventory_item_count
Additionally, in the instance where the *_count is zero for a given device, but there are actually interfaces or ports, those interfaces or ports will not be displayed on the /devices// page for that device.
The problem is that NetBox provides no apparent way to detect this mismatch, and no apparent way to correct these counts short of simply deleting the device (and all its child devices and cables) and recreating it.