Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v3.6.0 #13614

Merged
merged 115 commits into from
Aug 30, 2023
Merged

Release v3.6.0 #13614

merged 115 commits into from
Aug 30, 2023

Conversation

jeremystretch
Copy link
Member

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 to role. The device_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 new choice_set field on the CustomField model.
  • The napalm_driver and napalm_args fields (which were deprecated in v3.5) have been removed from the Platform model.
  • The device and device_id filter for interfaces will no longer include interfaces from virtual chassis peers. Two new filters, virtual_chassis_member and virtual_chassis_member_id, have been introduced to match all interfaces belonging to the specified device's virtual chassis (if any).
  • Reports and scripts are now returned within a results list when fetched via the REST API, consistent with other models.
  • Superusers can no longer retrieve API token keys via the web UI if ALLOW_TOKEN_RETRIEVAL is disabled. (The admin view has been removed per #13044.)

New Features

Relocated Admin UI 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
  • #11478 - Introduce virtual_chassis_member filter for interfaces & restore default behavior for device filter
  • #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
  • #12461 - Add config template rendering for virtual machines
  • #12814 - Expose NetBox models within ConfigTemplate rendering context
  • #12882 - Add tag support for contact assignments
  • #13037 - Return reports & scripts within a results list when fetched via the REST API
  • #13170 - Add rf_role to InterfaceTemplate
  • #13269 - Cache the number of assigned component templates for device types

Bug Fixes

  • #13513 - Prevent exception when rendering bookmarks widget for anonymous user
  • #13599 - Fix errant counter increments when editing device/VM components
  • #13605 - Optimize cached counter migrations to avoid excessive memory consumption

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 to role for consistency with VirtualMachine
  • #9077 - Prevent the errant execution of dangerous instance methods in Django templates
  • #11766 - Remove obsolete custom ChoiceField and MultipleChoiceField 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 and napalm_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

jeremystretch and others added 30 commits May 12, 2023 16:27
* 11305 add lat/long to devices

* 11305 update docs

* 11305 update tests
* Introduce AvailableObjectsView and refactor 'available objects' API views

* Restore advisory PostgreSQL locks

* Move get_next_available_prefix()

* Apply OpenAPI decorators for get() and post()
* 12794 change User ref to get_user_model

* 12794 call get_user_model once in tests

* 12794 call get_user_model once in tests

* 12794 use settings.AUTH_USER_MODEL for FK reference
* 12175 add rack starting unit

* 12175 rack starting unit to svg

* verify devices can still fit if change rack starting_unit

* 12175 fix migration

* 12175 fix typo and test

* 12175 fix test

* 12175 fix max height calc display

* Misc cleanup & fixes

---------

Co-authored-by: Jeremy Stretch <[email protected]>
* 12591 initial commit

* 12591 detail view

* 12591 add/edit view

* 12591 edit button

* 12591 base views and forms

* 12591 form cleanup

* 12591 form cleanup

* 12591 form cleanup

* 12591 review changes

* 12591 move check for restrictedqueryset

* 12591 restore view

* 12591 restore page styling

* 12591 remove admin

* Remove edit view for ConfigRevision instances

* Order ConfigRevisions by creation time

* Correct permission name

* Use RestrictedQuerySet for ConfigRevision

* Fix redirect URL

---------

Co-authored-by: Jeremy Stretch <[email protected]>
* 12237 upgrade django and psycopg

* 12237 add migration

* 12237 rename migration

* 12237 update requirements

* 12237 fix migration

* Update base requirements

---------

Co-authored-by: Jeremy Stretch <[email protected]>
…12982)

* Initial work on #11541

* Merge migrations

* Limit tags by object type during assignment

* Add tests for object type validation

* Fix form field parameters
* Initial work on #8248

* Add tests

* Fix tests

* Add feature query for bookmarks

* Add BookmarksWidget

* Correct generic relation name

* Add docs for bookmarks

* Remove inheritance from ChangeLoggedModel
* Initial work on custom field choice sets

* Rename choices to extra_choices (prep for #12194)

* Remove CustomField.choices

* Add & update tests

* Clean up table columns

* Add order_alphanetically boolean for choice sets

* Introduce ArrayColumn for choice lists

* Show dependent custom fields on choice set view

* Update custom fields documentation

* Introduce ArrayWidget for more convenient editing of choices

* Incorporate PR feedback

* Misc cleanup
Move admin views for users, groups, and object permissions from the admin site to the NetBox frontend

---------

Co-authored-by: Jeremy Stretch <[email protected]>
* initial oob_ip support for devices

* add primary ip and oob ip checkmark to ip address view

* add oob ip to device view and device edit view

* pep8

* make is_oob_ip and is_primary_ip generic for other models

* refactor oob_ip

* fix oob ip signal

* string capitalisation

* Misc cleanup

---------

Co-authored-by: Jeremy Stretch <[email protected]>
* adds rf_role to interface template #13170

* fixed migration file conflict

* Misc cleanup

---------

Co-authored-by: Jeremy Stretch <[email protected]>
jeremystretch and others added 23 commits August 10, 2023 14:32
* 13319 add documentation for internationalization

* 13319 add verbose name to model

* 13319 fix typo

* Flesh out developer doc for i18n

---------

Co-authored-by: Jeremy Stretch <[email protected]>
* adds config template to vm model #12461

* Add translation tags; collapse config data

* i18n cleanup

* Establish parity with DeviceRenderConfigView

* Move config_template field to RenderConfigMixin

---------

Co-authored-by: Jeremy Stretch <[email protected]>
* 13599 fix cache counter

* 13599 update test

* Merge conditionals

---------

Co-authored-by: Jeremy Stretch <[email protected]>
* Specify batch size for cached counter migrations

* Remove list() casting of querysets
…aces (#13296)

* Add `vc_interfaces` flag to control interface queryset

* Fix test failure

* Add new filters instead of using undocumented query params

* Cleanup filterset, add test

* Rename filter and re-introduce virtual_chassis filtering method (required)

* Fix test

* Adjust tests to more accurately provide coverage

* Add breaking change note

* Misc cleanup

---------

Co-authored-by: Jeremy Stretch <[email protected]>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants