mirror of
https://github.com/netbox-community/netbox.git
synced 2026-04-06 00:32:08 +02:00
Enable plugins to register custom model features #1430
Closed
opened 2026-04-06 01:21:05 +02:00 by MrUnknownDE
·
0 comments
No Branch/Tag Specified
main
21455-sql-indexes-audit
21357-register-model-actions
feature
20924-plugin-ui-components
21766-improve-test-coverage-for-sortable-table-columns
21157-export-template-public-models
21025-pre-render-config-contexts
21364-swagger
feature-ip-prefix-link
20911-dropdown-3
fix_module_substitution
21160-filterset
20911-dropdown-2
20044-elevation-stuck-lightmode
7604-filter-modifiers-v3
20660-script-load
19724-graphql
14884-script
19720-macaddress-interface-generic-relation
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.7
v4.5.6
v4.5.5
v4.5.4
v4.5.3
v4.5.2
v4.5.1
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
beta
beta
beta
breaking change
breaking change
breaking change
breaking change
breaking change
breaking change
breaking change
breaking change
breaking change
breaking change
breaking change
complexity: high
complexity: high
complexity: high
complexity: high
complexity: high
complexity: high
complexity: high
complexity: high
complexity: high
complexity: high
complexity: high
complexity: high
complexity: high
complexity: high
complexity: high
complexity: high
complexity: high
complexity: high
complexity: high
complexity: high
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: low
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
netbox
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
pending closure
plugin candidate
plugin candidate
plugin candidate
severity: high
severity: high
severity: high
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: low
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
severity: medium
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: backlog
status: blocked
status: blocked
status: blocked
status: blocked
status: blocked
status: blocked
status: blocked
status: blocked
status: declined
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: duplicate
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs owner
status: needs triage
status: needs triage
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: revisions needed
status: under review
status: under review
status: under review
status: under review
status: under review
status: under review
status: under review
status: under review
status: under review
status: under review
status: under review
status: under review
status: under review
status: under review
status: under review
status: under review
status: under review
status: under review
topic: GraphQL
topic: GraphQL
topic: GraphQL
topic: GraphQL
topic: GraphQL
topic: GraphQL
topic: GraphQL
topic: GraphQL
topic: GraphQL
topic: GraphQL
topic: OpenAPI
topic: UI/UX
topic: UI/UX
topic: cabling
topic: cabling
topic: cabling
topic: cabling
topic: custom scripts
topic: custom scripts
topic: custom scripts
topic: custom scripts
topic: custom scripts
topic: custom scripts
topic: migrations
topic: plugins
topic: plugins
topic: testing
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: bug
type: deprecation
type: deprecation
type: deprecation
type: deprecation
type: deprecation
type: deprecation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: documentation
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: housekeeping
type: performance
type: performance
type: performance
type: performance
type: performance
type: performance
type: performance
type: performance
type: performance
type: performance
type: performance
type: performance
type: performance
type: performance
type: performance
type: performance
type: performance
type: performance
type: performance
type: performance
type: performance
type: performance
type: performance
type: performance
type: performance
type: removal
type: removal
type: translation
No Label
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
complexity: medium
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
status: accepted
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
type: feature
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
MrUnknownDE
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github/netbox#1430
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 @jeremystretch on 8/19/2025
NetBox version
v4.4.0-beta1
Feature type
New functionality
Proposed functionality
NetBox support various model features such as tags, custom fields, change logging, etc. which enhance the application's functionality on a per-model basis. These features are enabled for models by inheriting a designated mixin class: For example, tagging is enabled for all models which inherit the
netbox.models.features.TagsMixinclass. These feature-to-class mappings are defined statically in theFEATURES_MAPconstant:This static mapping can be replaced with a dynamic registration system which can be employed by both core NetBox apps and plugins to register model features. For example, the tagging feature mentioned above would be registered like this:
This approach allows for complex logic within the litmus function bound to the declared feature, however in many cases it could be simplified to a lambda invoking
issubclass()directly:The result is that
registry['model_features']will now hold a mapping of feature names to evaluation functions, rather than to mixin classes.Use case
This approach provides two benefits over the current implementation:
For example, the netbox-branching plugin would register
branchingas a model feature, using a function it provides to determine eligibility on a per-model basis.While this has previously been possible by modifying the
model_featuresregistry directly, FR #19924 in NetBox v4.4 now records model features on ObjectType records in the database, so registry hacking is no longer feasible.Database changes
N/A
External dependencies
N/A