11 KiB
NetBox v3.4
!!! warning "PostgreSQL 11 Required" NetBox v3.4 requires PostgreSQL 11 or later.
Breaking Changes
- Device and virtual machine names are no longer case-sensitive. Attempting to create e.g. "device1" and "DEVICE1" will raise a validation error.
- The
asnfield has been removed from the provider model. Please replicate any provider ASN assignments to the ASN model introduced in NetBox v3.1 prior to upgrading. - The
noc_contact,admin_contact, andportal_urlfields have been removed from the provider model. Please replicate any data remaining in these fields to the contact model introduced in NetBox v3.1 prior to upgrading. - The
content_typefield on the CustomLink and ExportTemplate models have been renamed tocontent_typesand now supports the assignment of multiple content types. - The
cfproperty on an object with custom fields now returns deserialized values. For example, a custom field referencing an object will return the object instance rather than its numeric ID. To access the raw serialized values, usecustom_field_datainstead.
New Features
New Global Search (#10560)
NetBox's global search functionality has been completely overhauled and replaced by a new cache-based lookup. This new implementation provides a much speedier, more intelligent search capability. Matches are returned in order of precedence regardless of object type, and matched field values are highlighted in the results. Additionally, custom field values are now included in global search results (when enabled). Plugins can also register their own models with the new global search engine.
Virtual Device Contexts (#7854)
A new model representing virtual device contexts (VDCs) has been added. VDCs are logical partitions of resources within a device that can be managed independently. A VDC is created within a device and may have device interfaces assigned to it. An interface can be allocated to any number of VDCs on its device.
Saved Filters (#9623)
Object lists can be filtered by a variety of different fields and characteristics. Applied filters can now be saved for reuse as a convenience. Saved filters can be kept private, or shared among NetBox users.
JSON/YAML Bulk Imports (#4347)
NetBox's bulk import feature, which was previously limited to CSV-formatted data for most objects, has been extended to support the import of objects from JSON and/or YAML data as well.
CSV-Based Bulk Updates (#7961)
NetBox's CSV-based bulk import functionality has been extended to support also modifying existing objects. When an id column is present in the import form, it will be used to infer the object to be modified, rather than a new object being created. All fields (columns) are optional when modifying existing objects.
Scheduled Reports & Scripts (#8366)
Reports and custom scripts can now be scheduled for execution at a desired time.
API for Staged Changes (#10851)
This release introduces a new programmatic API that enables plugins and custom scripts to prepare changes in NetBox without actually committing them to the active database. To stage changes, create and activate a branch using the checkout() context manager. Any changes made within this context will be captured, recorded, and rolled back for future use. Once ready, a branch can be applied to the active database by calling merge().
!!! danger "Experimental Feature" This feature is still under active development and considered experimental in nature. Its use in production is strongly discouraged at this time.
Enhancements
- #6003 - Enable the inclusion of custom field values in global search
- #7376 - Enable the assignment of tags during CSV import
- #8245 - Enable GraphQL filtering of related objects
- #8274 - Enable associating a custom link with multiple object types
- #8485 - Enable journaling for all organizational models
- #8853 - Introduce the
ALLOW_TOKEN_RETRIEVALconfig parameter to restrict the display of API tokens - #9249 - Device and virtual machine names are no longer case-sensitive
- #9478 - Add
link_peersfield to GraphQL types for cabled objects - #9654 - Add
weightfield to racks, device types, and module types - #9817 - Add
assigned_objectfield to GraphQL type for IP addresses and L2VPN terminations - #9832 - Add
mounting_depthfield to rack model - #9892 - Add optional
namefield for FHRP groups - #10052 - The
cfattribute now returns deserialized custom field data - #10348 - Add decimal custom field type
- #10545 - Standardize the use of
descriptionandcommentsfields on all primary models - #10556 - Include a
displayfield in all GraphQL object types - #10595 - Add GraphQL relationships for additional generic foreign key fields
- #10698 - Omit app label from content type in table columns
- #10710 - Add
statusfield to WirelessLAN - #10761 - Enable associating an export template with multiple object types
- #10781 - Add support for Python v3.11
Plugins API
- #4751 - Add
plugin_list_buttonstemplate tag to embed buttons on object lists - #8927 - Enable inclusion of plugin models in global search via
SearchIndex - #9071 - Enable plugins to register top-level navigation menus
- #9072 - Enable registration of tabbed plugin views for core NetBox models
- #9880 - Enable plugins to install and register other Django apps
- #9887 - Inspect
docs_urlproperty to determine link to model documentation - #10314 - Move
clone()method from NetBoxModel to CloningMixin - #10543 - Introduce
get_plugin_config()utility function - #10739 - Introduce
get_queryset()method on generic views
Other Changes
- #9045 - Remove legacy ASN field from provider model
- #9046 - Remove legacy contact fields from provider model
- #10358 - Raise minimum required PostgreSQL version from 10 to 11
- #10694 - Emit the
post_savesignal when creating device components in bulk - #10697 - Move application registry into core app
- #10699 - Remove custom
import_object()function - #10816 - Pass the current request when instantiating a FilterSet within UI views
- #10820 - Switch timezone library from pytz to zoneinfo
- #10821 - Enable data localization
REST API Changes
- Added the
/api/dcim/virtual-device-contexts/endpoint - circuits.provider
- Removed the
asn,noc_contact,admin_contact, andportal_urlfields - Added a
descriptionfield
- Removed the
- dcim.Cable
- Added
descriptionandcommentsfields
- Added
- dcim.Device
- Added a
descriptionfield
- Added a
- dcim.DeviceType
- Added a
descriptionfield - Added optional
weightandweight_unitfields
- Added a
- dcim.Module
- Added a
descriptionfield
- Added a
- dcim.Interface
- Added the
vdcsfield
- Added the
- dcim.ModuleType
- Added a
descriptionfield - Added optional
weightandweight_unitfields
- Added a
- dcim.PowerFeed
- Added a
descriptionfield
- Added a
- dcim.PowerPanel
- Added
descriptionandcommentsfields
- Added
- dcim.Rack
- Added a
descriptionfield - Added optional
weightandweight_unitfields
- Added a
- dcim.RackReservation
- Added a
commentsfield
- Added a
- dcim.VirtualChassis
- Added
descriptionandcommentsfields
- Added
- extras.CustomField
- Added the
search_weightfield
- Added the
- extras.CustomLink
- Renamed
content_typefield tocontent_types
- Renamed
- extras.ExportTemplate
- Renamed
content_typefield tocontent_types
- Renamed
- ipam.Aggregate
- Added a
commentsfield
- Added a
- ipam.ASN
- Added a
commentsfield
- Added a
- ipam.FHRPGroup
- Added a
commentsfield - Added optional
namefield
- Added a
- ipam.IPAddress
- Added a
commentsfield
- Added a
- ipam.IPRange
- Added a
commentsfield
- Added a
- ipam.L2VPN
- Added a
commentsfield
- Added a
- ipam.Prefix
- Added a
commentsfield
- Added a
- ipam.RouteTarget
- Added a
commentsfield
- Added a
- ipam.Service
- Added a
commentsfield
- Added a
- ipam.ServiceTemplate
- Added a
commentsfield
- Added a
- ipam.VLAN
- Added a
commentsfield
- Added a
- ipam.VRF
- Added a
commentsfield
- Added a
- tenancy.Contact
- Added a
descriptionfield
- Added a
- virtualization.Cluster
- Added a
descriptionfield
- Added a
- virtualization.VirtualMachine
- Added a
descriptionfield
- Added a
- wireless.WirelessLAN
- Added a required
statuschoice field - Added a
commentsfield
- Added a required
- wireless.WirelessLink
- Added a
commentsfield
- Added a
GraphQL API Changes
- All object types now include a
displayfield - All cabled object types now include a
link_peersfield - Add a
contactsrelationship for all relevant models - dcim.Cable
- Add A/B terminations fields
- dcim.CableTermination
- Add
terminationfield
- Add
- dcim.InventoryItem
- Add
componentfield
- Add
- dcim.InventoryItemTemplate
- Add
componentfield
- Add
- dcim.Rack
- Add
mounting_depthfield
- Add
- ipam.FHRPGroupAssignment
- Add
interfacefield
- Add
- ipam.IPAddress
- Add
assigned_objectfield
- Add
- ipam.L2VPNTermination
- Add
assigned_objectfield
- Add
- ipam.VLANGroupType
- Add
scopefield
- Add