Releases: netbox-community/netbox
v4.3.0-beta2 - 2025-04-23
Caution
This is a beta release of NetBox intended for testing and evaluation. Do not use this software in production. Also be aware that no upgrade path is provided to future releases.
Bug Fixes (From beta1)
- #19213 - Fix rendering of dropdown selection form fields
- #19224 - Fix GraphQL API support for custom field choices
- #19225 - Restore missing GraphQL API filters
- #19263 - Render action buttons only if the record model matches the table model
- #19264 - Support table configs on child object list views
- #19266 - Fix copy-to-clipboard button for IP addresses
v4.2.8 - 2025-04-22
Enhancements
- #17136 - Introduce the
--readonly
flag on upgrade script - #17908 - Add trace buttons to terminations under cable view
- #18879 - Enable filtering prefixes by group of assigned VLAN
- #18976 - Include FHRP group name on interface lists
- #18978 - Add 802.1Q mode to interface filter form
- #19038 - Show count of related VLAN groups under cluster view
- #19040 - Add "copy to clipboard" button for rendered config
- #19056 - Enable filtering devices by location slug
- #19196 - Add filtering by VLAN translation policy to interface filter forms
Bug Fixes
- #18500 -
prepare_cloned_fields()
should validate cloning support on model - #18669 - Ensure default custom field values are respected when creating objects via the REST API
- #18881 - Include missing related object counts under certain views
- #18955 - Omit "clear" button on required choice fields
- #18959 - Preserve ordering of terminations in cable traces
- #18961 - Virtual chassis form should exclude members of other VCs when adding members
- #19166 - Fix custom field choices bulk import support for
base_choices
- #19189 - The
load_yaml()
convenience method on BaseScript should use SafeLoader - #19195 - Language cookie should respect
SESSION_COOKIE_SECURE
value - #19230 - Allow label reuse when creating multiple components from a pattern
- #19268 - Restore editing conflict protection for several object forms
v4.3.0-beta1 - 2025-04-14
Caution
This is a beta release of NetBox intended for testing and evaluation. Do not use this software in production. Also be aware that no upgrade path is provided to future releases.
Breaking Changes
- The GraphQL API Now uses an advanced syntax for filtering, to enable e.g. logical AND/OR filtering and custom field lookups.
- PostgreSQL 13 is no longer supported. NetBox v4.3 requires PostgreSQL 14.0 or later.
- The
ALLOW_TOKEN_RETRIEVAL
configuration parameter now defaults to False. - The
device
andvirtual_machine
foreign keys on the Service model have been replaced with a genericparent
relationship to support the assignment of services to FHRP groups as well. - The
group
foreign key on the Contact model has been replaced with a many-to-manygroups
field. - PluginTemplateExtension no longer supports registration via the singular
model
attribute (usemodels
instead). - The legacy staged changes functionality has been removed.
New Features
Module Type Profiles & Custom Attributes (#19002)
The new module type profile model enables users to declare custom profiles for module types, with the ability to define custom attributes for each profile according to its functional role. For example, a CPU module type might declare architecture and clock speed attributes; a hard disk profile might declare attributes for type and speed.
Attributes can be declared on each profile using JSON schema, which allows for attributes to be declared as strings (text), integers, decimals, booleans, or choice fields. Profile attributes render as individual form fields when modifying a module type. Several profiles have been included by default to serve as examples, however these may be modified or removed.
Reusable Table Configurations (#14591)
After modifying the displayed columns and/or ordering for a specific object table in the user interface, users now have the option to save that configuration so that it can be reused in the future. Similar to saved filters, table configs can be shared with other users to easily replicate table layouts crafted to serve specific use cases.
Option to Treat IP Ranges as Fully Populated (#9763)
A new mark_populated
boolean field has been added to the IPRange model. If set to true, NetBox will consider the IP range to be fully populated, and will not permit the creation of individual IP addresses within the range. For example, you might defer the management of an IP range to an external DHCP server, and wish for NetBox to treat the range as a opaque monolithic block for planning and allocation purposes.
Hierarchical Device Roles (#18245)
Device roles can now be arranged hierarchically, with one role optionally serving as a parent to one or more child roles. For example, you might wish to create a generic "Server" role for devices with "Application Server" and "Database Server" roles beneath it. A device could then be assigned to any of these three roles.
Periodic Synchronization of Data Sources (#18287)
Data sources can now be configured to synchronize automatically at a specified interval, as indicated by the new sync_interval
field. No additional system configuration is necessary to support this functionality; background jobs will be scheduled automatically by the RQ worker process.
Proxy Routing (#18627)
User can now declare one or more proxy routers via the PROXY_ROUTERS
configuration parameter to control the use of specific proxy servers for various outbound connections. For example, it is now possible to configure NetBox to use different proxies based on the type of outbound traffic or its destination.
Enhancements
- #7598 - Adopt advanced query filtering in GraphQL API to support filtering by custom fields
- #8423 - Enable assigning services to FHRP groups
- #15842 - Introduce the
LOGIN_FORM_HIDDEN
configuration parameter - #16224 - Implement pagination support for the GraphQL API
- #17170 - Enable the assignment of a contact to multiple contact groups
- #17443 - Add a
file_name
field to the export template model - #17602 - Add a
comments
field to all nested group models (Region, SiteGroup, Location, ContactGroup, TenantGroup, and WirelessLANGroup) - #17608 - Add a
status
field to the L2VPN model - #17653 - Enable declaring Jinja environment parameters on export templates (similar to config templates)
- #17793 - Introduce a REST API endpoint for tagged objects (
/api/extras/tagged-objects/
) - #17841 - Add a
weight
field to the Tag model to influence ordering - #18296 - Add a
tenant
field to the VLAN group model - #18352 - Add a
status
field to the power outlet model - #18417 - Add an
outer_height
field to the rack & rack type models - #18535 - The presence of incompatible plugins will no longer prevent NetBox from starting
- #18780 - Introduce
DATABASES
andDATABASE_ROUTERS
configuration parameters to enable defining connections to external databases (e.g. for plugins) - #18783 - Enable filtering all applicable models by tag ID
- #18785 - Enable custom choices for rack, device, and module airflow
Plugins
- #16630 - Plugins can now inject content within the HTML
<head>
block via the newplugin_head()
method on PluginTemplateExtension - #17424 - Extend ViewTab with a
visible
argument to control tab rendering - #17857 - Added a
release_track
attribute to PluginConfig - #18305 - Introduce plugin support for ContactsMixin
- #19073 - Allow installed plugins to be omitted from the plugins list
Other Changes
- #18071 - Removed legacy staged changed functionality in favor of the netbox-branching plugin
- #18072 - Drop support for the singular
model
attribute on PluginTemplateExtension (usemodels
instead) - #18191 - Remove redundant PostgreSQL indexes
- #18236 - Upgrade the HTMX library to v2.0
- #18540 - Operational plugins are now recorded in the application registry
- #18623 - Upgrade the Tabler CSS theme to v1.0
- #18743 - Upgrade Django to v5.2
- #18751 - Change the default value for
ALLOW_TOKEN_RETRIEVAL
to False - #18808 - Squashed migration dependencies have been altered to rectify an issue with Django's
sqlmigrate
management command - #18820 - PostgreSQL 13 is no longer supported
- #19004 - The use of inventory items has been deprecated in favor of modules. Inventory items and roles may be removed in a future NetBox release.
v4.2.7 - 2025-04-10
Enhancements
- #16144 - Add support for plugin models to GetReturnURLMixin
- #18138 - Enable filtering of ObjectVar and MultiObjectVar input selections for custom fields
- #18656 - Enable FHRP group assignment when bulk importing IP addresses
- #18980 - Optimize bulk updates of custom field values when custom fields are added/removed
- #19018 - Add MoCA interface type
Bug Fixes
- #18553 - Avoid clearing site of assigned virtual machines when editing a cluster
- #18738 - Respect declared ordering of custom scripts within a module
- #18895 - Fix GraphQL support for interfaces which terminate virtual circuits
- #18904 - Add missing tags column to config contexts table
- #18964 - Fix "select all" behavior on object lists
- #18965 - "Run script" button should respect default commit toggle for custom scripts
- #18991 - Fix cable path tracing for pass-through ports in REST API
- #18999 - Fix filtering of inventory items with no manufacturer in GraphQL API
- #19021 - Preserve JSONField stylign when
help_text
is passed - #19023 -
get_field_value()
should honor null values on bound form fields - #19030 - Prevent pagination buttons from overlapping bulk action buttons on object lists
- #19041 - Fix
IndexError
exception when creating multiple front ports with a label - #19092 - Fix clearing of scope field when bulk editing prefixes
- #19122 - Fix styling of server error page
v4.2.6 - 2025-03-21
Enhancements
- #17503 - Add rack title above rack on rack detail view
- #17686 - Add config option for disk space divisor
- #18579 - Update filtersets and filter forms to include contact filters where missing
- #18744 - Ensure contact link in tables is hyperlinked
- #18816 - Add FC/UPC, FC/APC and FC/PC port types
- #18880 - Delay enqueuing background tasks until DB transaction is committed to avoid race condition
- #18939 - Support site group search for ASNs
Bug Fixes
- #18409 - Eliminate N+1 issue by adding generic prefetch operation to Interface API endpoint
- #18557 - Update JSONField to enclose bare string values in quotes
- #18582 - Fix prefix bulk import with associated VLAN and conflicting VLAN IDs
- #18742 - Ensure location list and detail views show related VLAN group information
- #18782 - Ensure misconfigured object list widgets on the dashboard now degrade gracefully
- #18833 - Fix inventory item bulk edit to ensure that component name and type are both validated Ensure
- #18838 - Ensure that local context data correctly rejects falsy values
- #18845 - Restore default sort behavior of name column on devices list view
- #18863 - Exempt MPTT-based models from ordering fix introduced in #18279
- #18869 - Ensure numeric conversion helper always return a clean decimal value
- #18872 - Ensure that
kind
is a required field when making journal entries - #18884 - Ensure tag deserialization is handled correctly
- #18887 - Allow VM interface objects to be set on prefix object-type custom field
- #18926 - Fix icon displayed for GitHub authentication on login page
- #18928 - Support cascading deletions when cleaning up expired changelog records
- #18933 - Allow filtering VLAN groups by associated site groups
- #18944 - Ensure clearing "Widget type" field when adding widgets to dashboard does not cause a "ValueError: Unregistered widget class" error
- #18949 - Add missing contacts property to GraphQL types where the associated model has a connection to a contact
v4.2.5 - 2025-03-06
Enhancements
- #17357 - Use VirtualChassis name as fallback for unnamed devices
- #17542 - Add contact assignments to VPN tunnels
- #17944 - Allow script inputs to be filtered on ObjectVar and MultiObjectVar selections
- #18024 - Add permalink URL pattern to match a custom script by module and class name
- #18141 - Support "Quick Add" for plugins
- #18403 - Improve performance of job list views
- #18693 - Support setting VLAN translation on bulk edit of interfaces
- #18772 - Add "type" filter for virtual circuits
- #18774 - Add tooltip preview of tag descriptions when hovering over tags
Bug Fixes
- #15016 - Prevent AssertionError when adding multiple devices "mid-span" in a cable trace
- #15924 - Prevent setting tagged VLANs on interfaces with mode: tagged-all
- #17488 - Ensure VLANGroup.vid_ranges shows up in API results
- #17796 - Fix IndexError on "Create & Add Another" operation on custom field choices
- #17709 - Allow primary key for nested models in OpenAPI request schemas
- #18605 - Limit VLAN selection dropdown to choices appropriate to site
- #18722 - Improve UI feedback on failed script execution
- #18729 - Fix unpredictable ordering on querysets with annotations/groupings
- #18753 - Prevent webhooks from being triggered on a script dry-run
- #18758 - Fix FieldError when sorting by account count field in providers list
- #18768 - Fix removing a secondary MAC address from an interface
v4.2.4 - 2025-02-21
Enhancements
- #17309 - Omit empty counts in related object tables
- #18277 - Improve multi-table inheritance in serialization of change-logged models
- #18286 - Add more job duration choices
- #18357 - Display author name in plugin list for locally installed plugins
- #18408 - Add Paused status for virtual machines
- #18584 - Add rack type column to manufacturer list
Bug Fixes
- #17436 - Fix {module} replacement in module bays
- #18013 - Limit object type to selected object in change log filter
- #18241 - Default logging level of custom scripts changed to INFO
- #18247 - Fix visibility of disabled cable paths in dark mode
- #18480 - Clean data passed to script in runscript command
- #18555 - Add default get_absolute_url method to plugin models
- #18585 - Fix filtering circuits by location
- #18593 - Fix "Create & Add Another" IP Address workflow
- #18594 - Enable sorting by ASN count on site and provider lists
- #18619 - Ensure shift-click selection selects only visible list items
- #18674 - Preserve form values when selecting speed on circuit termination
v4.2.3 - 2025-02-04
Enhancements
- #18518 - Add a "hostname"
<meta>
tag to the page header
Bug Fixes
- #18497 - Fix unhandled
FieldDoesNotExist
exception when search results include virtual circuit - #18433 - Fix MAC address not shown as "primary for interface" in MAC address detail view
- #18154 - Allow anonymous users to change default table preferences
- #18515 - Fix Django
collectstatic
management command in debug mode with Redis not running - #18456 - Avoid duplicate MAC Address column in interface tables
- #18447 - Fix
FieldError
exception when sorting interface tables on MAC Address columns - #18438 - Improve performance in IPAM migration
0072_prefix_cached_relations
when upgrading from v4.1 or earlier - #18436 - Reset primary MAC address when unassigning MAC address from interface
- #18181 - Fix "Create & Add Another" workflow when adding IP addresses to interfaces
v4.2.2 - 2025-01-17
Bug Fixes
- #18336 - Validate new rack height against installed devices when changing a rack's type
- #18350 - Fix
FieldDoesNotExist
exception when global search results include a circuit termination - #18353 - Disable fetching of plugin catalog data when
ISOLATED_DEPLOYMENT
is enabled - #18362 - Avoid transmitting census data on every worker restart
- #18363 - Fix support for assigning a MAC address to an interface via the REST API
- #18368 - Restore missing attributes from REST API serializer for MAC addresses (
tags
,created
,last_updated
, and custom fields) - #18369 - Fix
TypeError
exception when rendering the system configuration view with one or more custom classes defined underPROTECTION_RULES
- #18373 - Fix
AttributeError
exception when attempting to assign host devices to a cluster - #18376 - Fix the display of tagged VLANs in interfaces list for Q-in-Q interfaces
- #18379 - Ensure RSS feed dashboard widget content is sanitized
- #18392 - Virtual machines should not inherit config contexts assigned to locations
- #18400 - Fix support for
STORAGE_BACKEND
configuration parameter - #18406 - Scope column headers in object lists should not be orderable
v4.2.1 - 2025-01-08
Bug Fixes
- #18282 - Fix ordering of prefixes list by assigned VLAN
- #18314 - Fix KeyError exception when rendering pre-saved dashboard (
requires_internet
missing) - #18316 - Fix AttributeError exception when global search results include prefixes and/or clusters
- #18318 - Correct navigation breadcrumbs for module type UI view
- #18324 - Correct filtering for certain related object listings
- #18329 - Address upstream bug in GraphQL API where only one primary IP address is returned within a device/VM list