2022-09-13 14:36:37 -04:00
# NetBox v3.4
2022-09-14 17:10:14 -04:00
!!! warning "PostgreSQL 11 Required"
NetBox v3.4 requires PostgreSQL 11 or later.
2022-09-27 16:52:14 -04:00
### 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.
2022-09-28 17:18:31 -04:00
* The `asn` field 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` , and `portal_url` fields 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.
2022-10-26 13:30:45 -04:00
* The `content_type` field on the CustomLink and ExportTemplate models have been renamed to `content_types` and now supports the assignment of multiple content types.
2022-11-04 14:53:18 -04:00
* The `cf` property 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, use `custom_field_data` instead.
2022-09-28 17:18:31 -04:00
### New Features
2022-10-21 13:16:16 -04:00
#### New Global Search ([#10560](https://github.com/netbox-community/netbox/issues/10560))
NetBox's global search functionality has been completely overhauled and replaced by a new cache-based lookup.
2022-11-11 08:25:44 -05:00
#### Virtual Device Contexts ([#7854](https://github.com/netbox-community/netbox/issues/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.
2022-11-10 11:05:44 -05:00
### JSON/YAML Bulk Imports ([#4347](https://github.com/netbox-community/netbox/issues/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.
2022-10-27 13:24:20 -04:00
#### CSV-Based Bulk Updates ([#7961](https://github.com/netbox-community/netbox/issues/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.
2022-09-28 17:18:31 -04:00
#### Top-Level Plugin Navigation Menus ([#9071](https://github.com/netbox-community/netbox/issues/9071))
A new `PluginMenu` class has been introduced, which enables a plugin to inject a top-level menu in NetBox's navigation menu. This menu can have one or more groups of menu items, just like core items. Backward compatibility with the existing `menu_items` has been maintained.
2022-09-27 16:52:14 -04:00
2022-11-14 14:06:30 -05:00
#### API for Staged Changes ([#10851](https://github.com/netbox-community/netbox/issues/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.
2022-09-27 09:55:35 -04:00
### Enhancements
2022-11-04 13:46:15 -04:00
* [#7376 ](https://github.com/netbox-community/netbox/issues/7376 ) - Enable the assignment of tags during CSV import
2022-10-12 13:43:31 -04:00
* [#8245 ](https://github.com/netbox-community/netbox/issues/8245 ) - Enable GraphQL filtering of related objects
2022-10-26 11:33:11 -04:00
* [#8274 ](https://github.com/netbox-community/netbox/issues/8274 ) - Enable associating a custom link with multiple object types
2022-11-03 13:29:24 -04:00
* [#8485 ](https://github.com/netbox-community/netbox/issues/8485 ) - Enable journaling for all organizational models
2022-11-02 09:45:00 -07:00
* [#8853 ](https://github.com/netbox-community/netbox/issues/8853 ) - Introduce the `ALLOW_TOKEN_RETRIEVAL` config parameter to restrict the display of API tokens
2022-09-27 16:52:14 -04:00
* [#9249 ](https://github.com/netbox-community/netbox/issues/9249 ) - Device and virtual machine names are no longer case-sensitive
2022-10-06 16:54:19 -04:00
* [#9478 ](https://github.com/netbox-community/netbox/issues/9478 ) - Add `link_peers` field to GraphQL types for cabled objects
2022-09-30 16:37:07 -04:00
* [#9654 ](https://github.com/netbox-community/netbox/issues/9654 ) - Add `weight` field to racks, device types, and module types
2022-10-11 12:35:50 -04:00
* [#9817 ](https://github.com/netbox-community/netbox/issues/9817 ) - Add `assigned_object` field to GraphQL type for IP addresses and L2VPN terminations
2022-10-27 10:17:20 -04:00
* [#9832 ](https://github.com/netbox-community/netbox/issues/9832 ) - Add `mounting_depth` field to rack model
2022-09-27 09:55:35 -04:00
* [#9892 ](https://github.com/netbox-community/netbox/issues/9892 ) - Add optional `name` field for FHRP groups
2022-11-04 14:53:18 -04:00
* [#10052 ](https://github.com/netbox-community/netbox/issues/10052 ) - The `cf` attribute now returns deserialized custom field data
2022-09-30 16:37:07 -04:00
* [#10348 ](https://github.com/netbox-community/netbox/issues/10348 ) - Add decimal custom field type
2022-10-05 15:53:50 -04:00
* [#10556 ](https://github.com/netbox-community/netbox/issues/10556 ) - Include a `display` field in all GraphQL object types
2022-10-11 12:35:50 -04:00
* [#10595 ](https://github.com/netbox-community/netbox/issues/10595 ) - Add GraphQL relationships for additional generic foreign key fields
2022-11-02 16:26:26 -04:00
* [#10698 ](https://github.com/netbox-community/netbox/issues/10698 ) - Omit app label from content type in table columns
2022-11-04 13:46:15 -04:00
* [#10710 ](https://github.com/netbox-community/netbox/issues/10710 ) - Add `status` field to WirelessLAN
2022-10-26 13:30:45 -04:00
* [#10761 ](https://github.com/netbox-community/netbox/issues/10761 ) - Enable associating an export template with multiple object types
2022-10-31 15:17:24 -04:00
* [#10781 ](https://github.com/netbox-community/netbox/issues/10781 ) - Add support for Python v3.11
2022-09-27 09:55:35 -04:00
2022-09-13 14:36:37 -04:00
### Plugins API
2022-11-14 14:06:30 -05:00
* [#4751 ](https://github.com/netbox-community/netbox/issues/4751 ) - Add `plugin_list_buttons` template tag to embed buttons on object lists
2022-10-10 11:00:59 -07:00
* [#8927 ](https://github.com/netbox-community/netbox/issues/8927 ) - Enable inclusion of plugin models in global search via `SearchIndex`
2022-09-28 17:18:31 -04:00
* [#9071 ](https://github.com/netbox-community/netbox/issues/9071 ) - Introduce `PluginMenu` for top-level plugin navigation menus
2022-10-07 15:03:52 -04:00
* [#9072 ](https://github.com/netbox-community/netbox/issues/9072 ) - Enable registration of tabbed plugin views for core NetBox models
2022-09-30 17:30:18 -04:00
* [#9880 ](https://github.com/netbox-community/netbox/issues/9880 ) - Introduce `django_apps` plugin configuration parameter
2022-10-27 09:44:09 -04:00
* [#9887 ](https://github.com/netbox-community/netbox/issues/9887 ) - Inspect `docs_url` property to determine link to model documentation
2022-09-13 14:36:37 -04:00
* [#10314 ](https://github.com/netbox-community/netbox/issues/10314 ) - Move `clone()` method from NetBoxModel to CloningMixin
2022-11-03 13:29:24 -04:00
* [#10543 ](https://github.com/netbox-community/netbox/issues/10543 ) - Introduce `get_plugin_config()` utility function
2022-10-25 11:19:15 -04:00
* [#10739 ](https://github.com/netbox-community/netbox/issues/10739 ) - Introduce `get_queryset()` method on generic views
2022-09-14 17:10:14 -04:00
### Other Changes
2022-09-28 17:18:31 -04:00
* [#9045 ](https://github.com/netbox-community/netbox/issues/9045 ) - Remove legacy ASN field from provider model
* [#9046 ](https://github.com/netbox-community/netbox/issues/9046 ) - Remove legacy contact fields from provider model
2022-09-14 17:10:14 -04:00
* [#10358 ](https://github.com/netbox-community/netbox/issues/10358 ) - Raise minimum required PostgreSQL version from 10 to 11
2022-11-14 14:06:30 -05:00
* [#10694 ](https://github.com/netbox-community/netbox/issues/10694 ) - Emit the `post_save` signal when creating device components in bulk
2022-11-02 15:18:07 -04:00
* [#10697 ](https://github.com/netbox-community/netbox/issues/10697 ) - Move application registry into core app
2022-10-19 10:40:39 -04:00
* [#10699 ](https://github.com/netbox-community/netbox/issues/10699 ) - Remove custom `import_object()` function
2022-11-02 11:00:09 -04:00
* [#10816 ](https://github.com/netbox-community/netbox/issues/10816 ) - Pass the current request when instantiating a FilterSet within UI views
2022-11-02 15:38:17 -04:00
* [#10820 ](https://github.com/netbox-community/netbox/issues/10820 ) - Switch timezone library from pytz to zoneinfo
2022-11-02 15:55:39 -04:00
* [#10821 ](https://github.com/netbox-community/netbox/issues/10821 ) - Enable data localization
2022-09-27 09:55:35 -04:00
### REST API Changes
2022-11-11 08:25:44 -05:00
* Added the `/api/dcim/virtual-device-contexts/` endpoint
2022-09-28 17:18:31 -04:00
* circuits.provider
* Removed the `asn` , `noc_contact` , `admin_contact` , and `portal_url` fields
2022-11-04 08:28:09 -04:00
* Added a `description` field
* dcim.Cable
* Added `description` and `comments` fields
* dcim.Device
* Added a `description` field
2022-09-30 16:37:07 -04:00
* dcim.DeviceType
2022-11-04 08:28:09 -04:00
* Added a `description` field
2022-09-30 16:37:07 -04:00
* Added optional `weight` and `weight_unit` fields
2022-11-04 08:28:09 -04:00
* dcim.Module
* Added a `description` field
2022-11-11 08:25:44 -05:00
* dcim.Interface
* Added the `vdcs` field
2022-09-30 16:37:07 -04:00
* dcim.ModuleType
2022-11-04 08:28:09 -04:00
* Added a `description` field
2022-09-30 16:37:07 -04:00
* Added optional `weight` and `weight_unit` fields
2022-11-04 08:28:09 -04:00
* dcim.PowerFeed
* Added a `description` field
* dcim.PowerPanel
* Added `description` and `comments` fields
2022-09-30 16:37:07 -04:00
* dcim.Rack
2022-11-04 08:28:09 -04:00
* Added a `description` field
2022-09-30 16:37:07 -04:00
* Added optional `weight` and `weight_unit` fields
2022-11-04 08:28:09 -04:00
* dcim.RackReservation
* Added a `comments` field
* dcim.VirtualChassis
* Added `description` and `comments` fields
2022-10-26 11:33:11 -04:00
* extras.CustomLink
* Renamed `content_type` field to `content_types`
2022-10-26 13:30:45 -04:00
* extras.ExportTemplate
* Renamed `content_type` field to `content_types`
2022-11-04 08:28:09 -04:00
* ipam.Aggregate
* Added a `comments` field
* ipam.ASN
* Added a `comments` field
2022-09-27 09:55:35 -04:00
* ipam.FHRPGroup
2022-11-04 08:28:09 -04:00
* Added a `comments` field
2022-09-27 09:55:35 -04:00
* Added optional `name` field
2022-11-04 08:28:09 -04:00
* ipam.IPAddress
* Added a `comments` field
* ipam.IPRange
* Added a `comments` field
* ipam.L2VPN
* Added a `comments` field
* ipam.Prefix
* Added a `comments` field
* ipam.RouteTarget
* Added a `comments` field
* ipam.Service
* Added a `comments` field
* ipam.ServiceTemplate
* Added a `comments` field
* ipam.VLAN
* Added a `comments` field
* ipam.VRF
* Added a `comments` field
* tenancy.Contact
* Added a `description` field
* virtualization.Cluster
* Added a `description` field
* virtualization.VirtualMachine
* Added a `description` field
* wireless.WirelessLAN
2022-11-04 13:46:15 -04:00
* Added a required `status` choice field
2022-11-04 08:28:09 -04:00
* Added a `comments` field
* wireless.WirelessLink
* Added a `comments` field
2022-10-05 15:53:50 -04:00
### GraphQL API Changes
* All object types now include a `display` field
2022-10-06 16:54:19 -04:00
* All cabled object types now include a `link_peers` field
2022-10-11 12:35:50 -04:00
* Add a `contacts` relationship for all relevant models
* dcim.Cable
* Add A/B terminations fields
* dcim.CableTermination
* Add `termination` field
* dcim.InventoryItem
* Add `component` field
* dcim.InventoryItemTemplate
* Add `component` field
2022-10-27 10:17:20 -04:00
* dcim.Rack
* Add `mounting_depth` field
2022-10-11 12:35:50 -04:00
* ipam.FHRPGroupAssignment
* Add `interface` field
* ipam.IPAddress
* Add `assigned_object` field
* ipam.L2VPNTermination
* Add `assigned_object` field
* ipam.VLANGroupType
* Add `scope` field