In anticipation of the upcoming release of NetBox v3.6, the first beta release is now available on GitHub! This release introduces a bunch of new features, and lays the foundation for internationalization support (coming in v4.0).
A complete accounting of the changes coming in v3.6 is provided below. A public demo of this release is available for testing at beta-demo.netbox.dev.
Breaking Changes
- PostgreSQL 11 is no longer supported (dropped in Django 4.2). NetBox v3.6 requires PostgreSQL 12 or later.
- The
device_role
field on the Device model has been renamed torole
. Thedevice_role
field has been temporarily retained on the REST API serializer for devices for backward compatibility, but is read-only. - The
choices
array field has been removed from the CustomField model. Any defined choices are automatically migrated to CustomFieldChoiceSets, accessible via the newchoice_set
field on the CustomField model. - The
napalm_driver
andnapalm_args
fields (which were deprecated in v3.5) have been removed from the Platform model.
New Features
Relocated Admin Views (#12589, #12590, #12591, #13044)
Management views for the following object types, previously available only under the backend admin interface, have been relocated to the primary user interface:
- Users
- Groups
- Object permissions
- API tokens
- Configuration revisions
This migration provides a more consistent user experience and unlocks advanced functionality not feasible using Django’s built-in views. The admin UI is scheduled for complete removal in NetBox v4.0.
Configurable Default Permissions (#13038)
Administrators now have the option of configuring default permissions for all users globally, regardless of explicit permission or group assignments granted in the database. This is accomplished by defining the DEFAULT_PERMISSIONS
configuration parameter. By default, all users are granted permission to manage their own bookmarks and API tokens.
User Bookmarks (#8248)
Users can now bookmark their favorite objects in NetBox. Bookmarks are accessible under each user’s personal bookmarks list, and can also be added as a dashboard widget.
Custom Field Choice Sets (#12988)
Selection and multi-select custom fields now employ discrete, reusable choice sets containing the valid options for each field. A choice set may be shared by multiple custom fields. Additionally, each choice within a set can now specify both a raw value and a human-friendly label (see #13241). Pre-existing custom field choices are migrated to choice sets automatically during the upgrade process.
Pre-Defined Location Choices for Custom Fields (#12194)
Users now have the option to employ one of several pre-defined sets of choices when creating a custom field. These include:
- IATA airport codes
- ISO 3166 country codes
- UN/LOCODE location identifiers
When defining a choice set, one of the above can be employed as the base set, with the option to define extra, custom choices as well.
Restrict Tag Usage by Object Type (#11541)
Tags may now be restricted to use with designated object types. Tags that have no specific object types assigned may be used with any object that supports tag assignment.
Enhancements
- #6347 – Cache the number of assigned components for devices and virtual machines
- #8137 – Add a field for designating the out-of-band (OOB) IP address for devices
- #10197 – Cache the number of member devices on each virtual chassis
- #11305 – Add GPS coordinate fields to the device model
- #11519 – Add a SQL index for IP address host values to optimize queries
- #11732 – Prevent inadvertent overwriting of object attributes by competing users
- #11936 – Introduce support for tags and custom fields on webhooks
- #12175 – Permit racks to start numbering at values greater than one
- #12210 – Add tenancy assignment for power feeds
- #12882 – Add tag support for contact assignments
- #13170 – Add
rf_role
to InterfaceTemplate - #13269 – Cache the number of assigned component templates for device types
Other Changes
- Work has begun on introducing translation and localization support in NetBox. This work is being performed in preparation for release 4.0.
- #6391 – Rename the
device_role
field on Device torole
for consistency with VirtualMachine - #9077 – Prevent the errant execution of dangerous instance methods in Django templates
- #11766 – Remove obsolete custom
ChoiceField
andMultipleChoiceField
classes - #12180 – All API endpoints for available objects (e.g. IP addresses) now inherit from a common parent view
- #12237 – Upgrade Django to v4.2
- #12794 – Avoid direct imports of Django’s stock user model
- #12320 – Remove obsolete fields
napalm_driver
andnapalm_args
from Platform - #12964 – Drop support for PostgreSQL 11
- #13309 – User account-specific resources have been moved to a new
account
app for better organization