mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-13 13:53:31 +01:00
List of Object Types in the Event Rule configuration is unreliable #10951
Closed
opened 2025-12-29 21:38:15 +01:00 by adam
·
16 comments
No Branch/Tag Specified
main
21102-fix-graphiql-explorer
update-changelog-comments-docs
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
type: bug
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/netbox#10951
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 @peteeckel on GitHub (Mar 26, 2025).
Deployment Type
Self-hosted
NetBox Version
v4.2.6
Python Version
3.11
Steps to Reproduce
netbox-bgpandnetbox-plugin-dnsconfiguration.pyfile, withnetbox_dnsfirst andnetbox_bgpsecond:Expected Behavior
Object types for NetBox DNS and NetBox BGP are selectable.
Observed Behavior
The models for the BGP plugin do not show up in the pulldown menu, the ones for DNS do:
@peteeckel commented on GitHub (Mar 26, 2025):
Order of Plugins in the Configuration
If you configure the plugins in reverse order, BGP shows up as well:
Verification of correct Registration
Regardless of which order is used, both plugins are registered with the
event_rulesfeature:NetBox Version
I could reproduce this with all NetBox 4.2 releases, but not with 4.1.11, where independently of the order of plugins in the configuration the object classes appear in the event rule object type dropdown. This also means that this is probably not a duplicate of #18428.
IMHO it's extremely likely not an issue with one of the plugins, but with NetBox itself.
@peteeckel commented on GitHub (Mar 26, 2025):
I started investigating this because of the NetBox DNS issue https://github.com/peteeckel/netbox-plugin-dns/issues/582.
@arthanson commented on GitHub (Mar 26, 2025):
@peteeckel can you please re-check the steps as I'm not seeing this behavior, I'm on v4.2.6. The two screenshots are without any changes or reloads and I'm seeing both plugins listed
@peteeckel commented on GitHub (Mar 26, 2025):
The steps are absolutely reproducible (I did it at least 10 times), but the behaviour itself may not be. If you look at the referenced NetBox DNS issue, the exact same thing happened but with the NetBox DNS objects appearing and disappearing depending on the order of configuration.
@peteeckel commented on GitHub (Mar 26, 2025):
@arthanson did you try swapping the plugins in the configuration? Maybe it has something to do with which one was added to the database first.
And yes, I find this highly obscure as well.
@peteeckel commented on GitHub (Mar 26, 2025):
It might even be the same thing @abhi1693 was seeing with 4.1.11 in #18428.
@peteeckel commented on GitHub (Mar 26, 2025):
I just made a new attempt with a completely fresh database. The rest just as described in the first comment. Versions are:
NetBox DNS installed first, then NetBox BGP.
As above: DNS shows up in the object list, BGP doesn't.
The same behaviour is not observed in the object list for Permissions:
@github-actions[bot] commented on GitHub (Apr 3, 2025):
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.
@Chluz commented on GitHub (Apr 4, 2025):
Hi, am facing the exact same issue on a docker install.
NetBox Version: NetBox Community v4.2.6-Docker-3.2.0
Python Version: 3.12.3
I have rechecked the steps, and can do a video if needed to clarify the problem.
I think thats the only think that was being asked to be checked again ?
@peteeckel commented on GitHub (Apr 8, 2025):
I found the time to investigate a bit deeper today.
First of all I patched
EventRuleFormto get rid of thewith_feature()method:The result is, not very surprisingly, that the problem goes away. So the issue lies with the method in combination with the
object_typesfield.However, the filter method is apparently working correctly when I try it manually:
Which made me wonder why the
with_feature("event_rules")condition does not work when the fields choices are initialised, but works perfectly later. And indeed: It's very likely a race condition, and that's why it's hard to reproduce.I just applied two patches to the NetBox code:
and
This adds simple log messages in two places: When the queryset for the
ContentTypeMultipleChoiceFieldin theEventRuleFormis initialised (this happens at NetBox startup) and when the features for the NetBox BGP models are registered.When I now restart NetBox, I get the following output in the log:
Apparently in many cases the queryset for the field is initialised before the features for the model are registered, so the
with_feature("event_rules")filter will not return the object types for the plugin when the field is initialised, although it does work later on.@peteeckel commented on GitHub (Apr 8, 2025):
It seems there is something in NetBox DNS causing this behaviour, but currently I still don't see what it is. There are two things I noticed:
Whether or not this race condition occurs seems to depend on whether NetBox DNS is loaded first or last. If I put
netbox_dnsat the last position in thePLUGINSlist, all theInitialising queryset ...messages occur at the end, after allRegistering featuresmessages are through.If NetBox DNS is installed and enabled, there are a lot more of the
Initialising queryset ...messages. So apparently something is causing the forms that contain theContentTypeMultipleChoiceFieldinstances to be loaded multiple times. They are, however, not used in NetBox DNS at all ... to be precise, there are 9 of them when NetBox DNS is not loaded and 49 if it is, so loading NetBox DNS seems to cause 40 extra initialisations of the field.From the log it seems that the instantiation occurs in 5 blocks of 8 fields, while the normal instantiation is 1 block with 9 fields. Whatever that means.
So the question seems to be: What causes
ContentTypeMultipleChoiceFieldandContentTypeChoiceFieldobjects to be instantiated?@peteeckel commented on GitHub (Apr 8, 2025):
Additional information: I can get almost the same behaviour without using NetBox DNS.
NetBox Secrets behaves almost the same, except that putting it last in the list doesn't help. And with NetBox Secrets, exactly like NetBox DNS, there are 40 additional instantiations of the "Object types" field.
Versions exactly like above, NetBox Secrets is at the latest release (2.2.0).
@kkthxbye-code commented on GitHub (Apr 9, 2025):
They are instantiated on load. I looked at the traceback for you. The following import in netbox-plugin-dns ultimately causes the EventRuleForm to be loaded.
be801463e9/netbox_dns/init.py#L106@peteeckel commented on GitHub (Apr 9, 2025):
Hi @kkthxbye-code, thanks. That was the missing piece.
I just removed the workaround from
ready()and added it tourls.py, and now the problem is solved for NetBox DNS at least. Will look at NetBox Secrets later on, as I suspect that there's a similar situation.@github-actions[bot] commented on GitHub (Apr 22, 2025):
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.
@jeremystretch commented on GitHub (Apr 22, 2025):
Closing this out as it appears to have been resolved.