Skip to content
  • v2.9.10
  • 6a90295
  • Compare
    Choose a tag to compare
    Search for a tag
  • v2.9.10
  • 6a90295
  • Compare
    Choose a tag to compare
    Search for a tag

@jeremystretch jeremystretch released this Nov 24, 2020

Enhancements

  • #5319 - Add USB types for power ports and outlets
  • #5337 - Add "splice" type for pass-through ports

Bug Fixes

  • #5235 - Fix exception when editing IP address with a NAT IP assigned to a non-racked device
  • #5309 - Avoid extraneous database queries when manipulating objects
  • #5345 - Fix non-deterministic ordering of prefixes and IP addresses
  • #5350 - Filter available racks by selected group when creating a rack reservation
  • #5355 - Limit rack groups by selected site when editing a rack
  • #5356 - Populate manufacturer field when adding a device component template
  • #5360 - Clear VLAN assignments when setting interface mode to none
Assets 2
Pre-release

@jeremystretch jeremystretch released this Nov 17, 2020 · 42 commits to develop-2.10 since this release

WARNING: This is a beta release and is not suitable for production use. It is intended for development and evaluation purposes only. No upgrade path to the final v2.10 release will be provided from this beta, and users should assume that all data entered into the application will be lost.

NOTE: This release completely removes support for embedded graphs.

NOTE: The Django templating language (DTL) is no longer supported for export templates. Ensure that all export templates use Jinja2 before upgrading.

New Features

Route Targets (#259)

This release introduces support for modeling L3VPN route targets, which can be used to control the redistribution of advertised prefixes among VRFs. Each VRF may be assigned one or more route targets in the import and/or export direction. Like VRFs, route targets may be assigned to tenants and support tag assignment.

REST API Bulk Deletion (#3436)

The REST API now supports the bulk deletion of objects of the same type in a single request. Send a DELETE HTTP request to the list to the model's list endpoint (e.g. /api/dcim/sites/) with a list of JSON objects specifying the numeric ID of each object to be deleted. For example, to delete sites with IDs 10, 11, and 12, issue the following request:

curl -s -X DELETE \
-H "Authorization: Token $TOKEN" \
-H "Content-Type: application/json" \
http://netbox/api/dcim/sites/ \
--data '[{"id": 10}, {"id": 11}, {"id": 12}]'

REST API Bulk Update (#4882)

Similar to bulk deletion, the REST API also now supports bulk updates. Send a PUT or PATCH HTTP request to the list to the model's list endpoint (e.g. /api/dcim/sites/) with a list of JSON objects specifying the numeric ID of each object and the attribute(s) to be updated. For example, to set a description for sites with IDs 10 and 11, issue the following request:

curl -s -X PATCH \
-H "Authorization: Token $TOKEN" \
-H "Content-Type: application/json" \
http://netbox/api/dcim/sites/ \
--data '[{"id": 10, "description": "Foo"}, {"id": 11, "description": "Bar"}]'

Reimplementation of Custom Fields (#4878)

NetBox v2.10 introduces a completely overhauled approach to custom fields. Whereas previous versions used CustomFieldValue instances to store values, custom field data is now stored directly on each model instance as JSON data and may be accessed using the cf property:

>>> site = Site.objects.first()
>>> site.cf
{'site_code': 'US-RAL01'}
>>> site.cf['foo'] = 'ABC'
>>> site.full_clean()
>>> site.save()
>>> site = Site.objects.first()
>>> site.cf
{'foo': 'ABC', 'site_code': 'US-RAL01'}

Additionally, custom selection field choices are now defined on the CustomField model within the admin UI, which greatly simplifies working with choice values.

Improved Cable Trace Performance (#4900)

All end-to-end cable paths are now cached using the new CablePath backend model. This allows NetBox to now immediately return the complete path originating from any endpoint directly from the database, rather than having to trace each cable recursively. It also resolves some systemic validation issues present in the original implementation.

Note: As part of this change, cable traces will no longer traverse circuits: A circuit termination will be considered the origin or destination of an end-to-end path.

Enhancements

  • #609 - Add min/max value and regex validation for custom fields
  • #1503 - Allow assigment of secrets to virtual machines
  • #1692 - Allow assigment of inventory items to parent items in web UI
  • #2179 - Support the use of multiple port numbers when defining a service
  • #4897 - Allow filtering by content type identified as <app>.<model> string
  • #4918 - Add a REST API endpoint (/api/status/) which returns NetBox's current operational status
  • #4956 - Include inventory items on primary device view
  • #4967 - Support tenant assignment for aggregates
  • #5003 - CSV import now accepts slug values for choice fields
  • #5146 - Add custom field support for cables, power panels, rack reservations, and virtual chassis
  • #5154 - The web interface now consumes the entire browser window
  • #5190 - Add a REST API endpoint for retrieving content types (/api/extras/content-types/)

Other Changes

  • #1846 - Enable MPTT for InventoryItem hierarchy
  • #4349 - Dropped support for embedded graphs
  • #4360 - Dropped support for the Django template language from export templates
  • #4941 - commit argument is now required argument in a custom script's run() method
  • #5011 - Standardized name field lengths across all models
  • #5139 - Omit utilization statistics from RIR list
  • #5225 - Circuit termination port speed is now an optional field

REST API Changes

  • Added support for PUT, PATCH, and DELETE operations on list endpoints (bulk update and delete)
  • Added the /extras/content-types/ endpoint for Django ContentTypes
  • Added the /status/ endpoint to convey NetBox's current status
  • circuits.CircuitTermination:
    • Added the /trace/ endpoint
    • Replaced connection_status with connected_endpoint_reachable (boolean)
    • Added cable_peer and cable_peer_type
    • port_speed may now be null
  • dcim.Cable: Added custom_fields
  • dcim.ConsolePort:
    • Replaced connection_status with connected_endpoint_reachable (boolean)
    • Added cable_peer and cable_peer_type
    • Removed connection_status from nested serializer
  • dcim.ConsoleServerPort:
    • Replaced connection_status with connected_endpoint_reachable (boolean)
    • Added cable_peer and cable_peer_type
    • Removed connection_status from nested serializer
  • dcim.FrontPort:
    • Replaced the /trace/ endpoint with /paths/, which returns a list of cable paths
    • Added cable_peer and cable_peer_type
  • dcim.Interface:
    • Replaced connection_status with connected_endpoint_reachable (boolean)
    • Added cable_peer and cable_peer_type
    • Removed connection_status from nested serializer
  • dcim.InventoryItem: The _depth field has been added to reflect MPTT positioning
  • dcim.PowerFeed:
    • Added the /trace/ endpoint
    • Added fields connected_endpoint, connected_endpoint_type, connected_endpoint_reachable, cable_peer, and cable_peer_type
  • dcim.PowerOutlet:
    • Replaced connection_status with connected_endpoint_reachable (boolean)
    • Added cable_peer and cable_peer_type
    • Removed connection_status from nested serializer
  • dcim.PowerPanel: Added custom_fields
  • dcim.PowerPort
    • Replaced connection_status with connected_endpoint_reachable (boolean)
    • Added cable_peer and cable_peer_type
    • Removed connection_status from nested serializer
  • dcim.RackReservation: Added custom_fields
  • dcim.RearPort:
    • Replaced the /trace/ endpoint with /paths/, which returns a list of cable paths
    • Added cable_peer and cable_peer_type
  • dcim.VirtualChassis: Added custom_fields
  • extras.ExportTemplate: The template_language field has been removed
  • extras.Graph: This API endpoint has been removed (see #4349)
  • extras.ImageAttachment: Filtering by content_type now takes a string in the form <app>.<model>
  • extras.ObjectChange: Filtering by changed_object_type now takes a string in the form <app>.<model>
  • ipam.Aggregate: Added tenant field
  • ipam.RouteTarget: New endpoint
  • ipam.Service: Renamed port to ports; now holds a list of one or more port numbers
  • ipam.VRF: Added import_targets and export_targets fields
  • secrets.Secret: Removed device field; replaced with assigned_object generic foreign key. This may represent either a device or a virtual machine. Assign an object by setting assigned_object_type and assigned_object_id.
Assets 2
  • v2.9.9
  • 8ba50d0
  • Compare
    Choose a tag to compare
    Search for a tag
  • v2.9.9
  • 8ba50d0
  • Compare
    Choose a tag to compare
    Search for a tag

@jeremystretch jeremystretch released this Nov 10, 2020 · 23 commits to master since this release

Enhancements

  • #5304 - Return server error messages as JSON when handling REST API requests
  • #5310 - Link to rack groups within rack list table
  • #5327 - Be more strict when capturing anticipated ImportError exceptions

Bug Fixes

  • #5271 - Fix auto-population of region field when editing a device
  • #5314 - Fix config context rendering when multiple tags are assigned to an object
  • #5316 - Dry running scripts should not trigger webhooks
  • #5324 - Add missing template extension tags for plugins for VM interface view
  • #5328 - Fix CreatedUpdatedFilterTest when running in non-UTC timezone
  • #5331 - Fix filtering of sites by null region
Assets 2
  • v2.9.8
  • 6dcb2de
  • Compare
    Choose a tag to compare
    Search for a tag
  • v2.9.8
  • 6dcb2de
  • Compare
    Choose a tag to compare
    Search for a tag

@jeremystretch jeremystretch released this Oct 30, 2020 · 45 commits to master since this release

Enhancements

  • #4559 - Improve device/VM context data rendering performance

Bug Fixes

  • #3672 - Fix a caching issue causing incorrect related object counts in API responses
  • #5113 - Fix incorrect caching of permission object assignments to user groups in the admin panel
  • #5243 - Redirect user to appropriate tab after modifying device components
  • #5273 - Fix exception when validating a new permission with no models selected
  • #5282 - Fix high CPU load when LDAP authentication is enabled
  • #5285 - Plugins no longer need to define app_name for API URLs to be included in the root view
Assets 2
  • v2.9.7
  • 1bbfc6d
  • Compare
    Choose a tag to compare
    Search for a tag
  • v2.9.7
  • 1bbfc6d
  • Compare
    Choose a tag to compare
    Search for a tag

@jeremystretch jeremystretch released this Oct 12, 2020 · 78 commits to master since this release

Bug Fixes

  • #5231 - Fix KeyError exception when viewing object with custom link and debugging is disabled
Assets 2
  • v2.9.6
  • eecd51e
  • Compare
    Choose a tag to compare
    Search for a tag
  • v2.9.6
  • eecd51e
  • Compare
    Choose a tag to compare
    Search for a tag

@jeremystretch jeremystretch released this Oct 9, 2020 · 82 commits to master since this release

Bug Fixes

  • #5229 - Fix AttributeError exception when LDAP authentication is enabled
Assets 2
  • v2.9.5
  • 26abd1f
  • Compare
    Choose a tag to compare
    Search for a tag
  • v2.9.5
  • 26abd1f
  • Compare
    Choose a tag to compare
    Search for a tag

@jeremystretch jeremystretch released this Oct 9, 2020 · 86 commits to master since this release

Enhancements

  • #5202 - Extend the available context data when rendering custom links

Bug Fixes

  • #4523 - Populate site vlan list when bulk editing interfaces under certain circumstances
  • #5174 - Ensure consistent alignment of rack elevations
  • #5175 - Fix toggling of rack elevation order
  • #5184 - Fix missing Power Utilization
  • #5197 - Limit duplicate IPs shown on IP address view
  • #5199 - Change default LDAP logging to INFO
  • #5201 - Fix missing querystring when bulk editing/deleting VLAN Group VLANs when selecting "select all x items matching query"
  • #5206 - Apply user pagination preferences to all paginated object lists
  • #5211 - Add missing has_primary_ip filter for virtual machines
  • #5217 - Prevent erroneous removal of prefetched GenericForeignKey data from tables
  • #5218 - Raise validation error if a power port's allocated_draw exceeds its maximum_draw
  • #5220 - Fix API patch request against IP Address endpoint with null assigned_object_type
  • #5221 - Fix bulk component creation for virtual machines
  • #5224 - Don't allow a rear port to have fewer positions than the number of mapped front ports
  • #5226 - Custom choice fields should be blank initially if no default choice has been designated
Assets 2
  • v2.9.4
  • 28925c1
  • Compare
    Choose a tag to compare
    Search for a tag
  • v2.9.4
  • 28925c1
  • Compare
    Choose a tag to compare
    Search for a tag

@jeremystretch jeremystretch released this Sep 23, 2020 · 116 commits to master since this release

NOTE: This release removes support for the DEFAULT_TIMEOUT parameter under REDIS database configuration. Set RQ_DEFAULT_TIMEOUT as a global configuration parameter instead.

NOTE: Any permissions referencing the legacy ReportResult model (e.g. extras.view_reportresult) should be updated to reference the Report model.

Enhancements

  • #1755 - Toggle order in which rack elevations are displayed
  • #5128 - Increase maximum rear port positions from 64 to 1024
  • #5134 - Display full hierarchy in breadcrumbs for sites/racks
  • #5149 - Add rack group field to device edit form
  • #5164 - Show total rack count per rack group under site view
  • #5171 - Introduce the RQ_DEFAULT_TIMEOUT configuration parameter

Bug Fixes

  • #5050 - Fix potential failure on 0016_replicate_interfaces schema migration from old release
  • #5066 - Update view_reportresult to view_report permission
  • #5075 - Include a VLAN membership view for VM interfaces
  • #5105 - Validation should fail when reassigning a primary IP from device to VM
  • #5109 - Fix representation of custom choice field values for webhook data
  • #5108 - Fix execution of reports via CLI
  • #5111 - Allow use of tuples when specifying ObjectVar query_params
  • #5118 - Specifying an empty list of tags should clear assigned tags (REST API)
  • #5133 - Fix disassociation of an IP address from a VM interface
  • #5136 - Fix exception when bulk editing interface 802.1Q mode
  • #5156 - Add missing "add" button to rack reservations list
  • #5167 - Support filtering ObjectChanges by multiple users
Assets 2
  • v2.9.3
  • d0ac433
  • Compare
    Choose a tag to compare
    Search for a tag
  • v2.9.3
  • d0ac433
  • Compare
    Choose a tag to compare
    Search for a tag

@jeremystretch jeremystretch released this Sep 4, 2020 · 144 commits to master since this release

Enhancements

  • #4977 - Redirect authenticated users from login view
  • #5048 - Show the device/VM name when editing a component
  • #5072 - Add REST API filters for image attachments
  • #5080 - Add 8P6C, 8P4C, 8P2C port types

Bug Fixes

  • #5046 - Disabled plugin menu items are no longer clickable
  • #5063 - Fix "add device" link in rack elevations for opposite side of half-depth devices
  • #5074 - Fix inclusion of VC member interfaces when viewing VC master
  • #5078 - Fix assignment of existing IP addresses to interfaces via web UI
  • #5081 - Fix exception during webhook processing with custom select field
  • #5085 - Fix ordering by assignment in IP addresses table
  • #5087 - Restore label field when editing console server ports, power ports, and power outlets
  • #5089 - Redirect to device view after editing component
  • #5090 - Fix status display for console/power/interface connections
  • #5091 - Avoid KeyError when handling invalid table preferences
  • #5095 - Show assigned prefixes in VLANs list
Assets 2
  • v2.9.2
  • 8e5aa69
  • Compare
    Choose a tag to compare
    Search for a tag
  • v2.9.2
  • 8e5aa69
  • Compare
    Choose a tag to compare
    Search for a tag

@jeremystretch jeremystretch released this Aug 27, 2020 · 169 commits to master since this release

Enhancements

  • #5055 - Add tags column to device/VM component list tables
  • #5056 - Add interface and parent columns to IP address list

Bug Fixes

  • #4988 - Fix ordering of rack reservations with identical creation times
  • #5002 - Correct OpenAPI definition for available-prefixes endpoint
  • #5035 - Fix exception when modifying an IP address assigned to a VM
  • #5038 - Fix validation of primary IPs assigned to virtual machines
  • #5040 - Limit SLAAC status to IPv6 addresses
  • #5041 - Fix form tabs when assigning an IP to a VM interface
  • #5042 - Fix display of SLAAC label for IP addresses status
  • #5045 - Allow assignment of interfaces to non-master VC peer LAG during import
  • #5058 - Correct URL for front rack elevation images when using external storage
  • #5059 - Fix inclusion of checkboxes for interfaces in virtual machine view
  • #5060 - Fix validation when bulk-importing child devices
  • #5061 - Allow adding/removing tags when bulk editing virtual machine interfaces
Assets 2
You can’t perform that action at this time.