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 v4.1.0 #17350

Merged
merged 118 commits into from
Sep 3, 2024
Merged

Release v4.1.0 #17350

merged 118 commits into from
Sep 3, 2024

Conversation

jeremystretch
Copy link
Member

Breaking Changes

  • Several filters deprecated in v4.0 have been removed (see #15410).
  • The unit size for VirtualMachine.disk and VirtualDisk.size has been changed from 1 gigabyte to 1 megabyte. Existing values will be adjusted automatically during the upgrade process.
  • The min_vid and max_vid fields on the VLAN group model have been replaced with vid_ranges, an array of starting and ending VLAN ID pairs.
  • The five individual event type fields on the EventRule model have been replaced by a single event_types array field, which lists applicable event types by name.
  • All UI views & API endpoints associated with change records have been moved from /extras to /core.
  • The validate() method on CustomValidator subclasses now must accept the request argument (deprecated in v4.0 by #14279).

New Features

Circuit Groups (#7025)

Circuits can now be assigned to groups for administrative purposes. Each circuit may be assigned to multiple groups, and each assignment may optionally indicate a priority (primary, secondary, or tertiary).

VLAN Group ID Ranges (#9627)

The VLAN group model has been enhanced to support multiple VLAN ID (VID) ranges, whereas previously it could track only a single beginning and ending VID pair. VID ranges are stored as an array of beginning and ending (inclusive) integer pairs, e.g. 1-100,1000-1999.

Nested Device Modules (#10500)

Module bays can now be added to modules to effect a hierarchical arrangement of submodules within a device. A module installed within a device's module bay may itself have module bays into which child modules may be installed.

Rack Types (#12826)

A new rack type model has been introduced, which functions similarly to device types. Users can now define a common make and model of equipment rack, the attributes of which are automatically populated when creating a new rack of that type. Backward compatibility for racks with individually defined characteristics is fully retained.

Plugins Catalog Integration (#14731)

The NetBox UI now integrates directly with the canonical plugins catalog hosted by NetBox Labs. Users can now explore available plugins and check for newer releases natively within the NetBox user interface.

User Notifications (#15621)

NetBox now includes a user notification system. Users can subscribe to individual objects and be alerted to changes within the web interface. Additionally, event rules can be created to trigger notifications for specific users and/or groups. Plugins can also employ this notification system for their own purposes.

Enhancements

  • #7537 - Add a serial number field for virtual machines
  • #8198 - Enable uniqueness enforcement for custom field values
  • #8984 - Enable filtering of custom script output by log level
  • #11969 - Support for tracking airflow on racks and module types
  • #14656 - Dynamically render the custom field edit form depending on the selected field type
  • #15106 - Add distance and distance_unit fields for wireless links
  • #15156 - Add display_url field to all REST API serializers, which links to the corresponding UI view for an object
  • #16574 - Add last_synced time to REST API serializer for data sources
  • #16580 - Enable plugin views to enforce LOGIN_REQUIRED selectively (remove AUTH_EXEMPT_PATHS)
  • #16782 - Enable filtering of selection choices for object and multi-object custom fields
  • #16907 - Update user interface styling
  • #17051 - Introduce ISOLATED_DEPLOYMENT config parameter for denoting Internet isolation
  • #17221 - ObjectEditView now supports HTMX-based object editing
  • #17288 - Introduce a configurable limit on the number of aliases within a GraphQL API request
  • #17289 - Enforce a standard policy for local passwords by default
  • #17318 - Include the assigned provider in nested API representation of circuits

Bug Fixes (From Beta1)

  • #17086 - Fix exception when viewing a job with no related object
  • #17097 - Record static object representation when calling NotificationGroup.notify()
  • #17098 - Prevent automatic deletion of related notifications when deleting an object
  • #17159 - Correct file paths in plugin installation instructions
  • #17163 - Fix filtering of related services under IP address view
  • #17169 - Avoid duplicating catalog listings for installed plugins
  • #17301 - Correct styling of the edit & delete buttons for custom script modules
  • #17302 - Fix log level filtering support for custom script messages
  • #17306 - Correct rounding of reported VLAN group utilization

Plugins

  • #15692 - Introduce improved plugin support for background jobs
  • #16359 - Enable plugins to embed content in the top navigation bar
  • #16726 - Extend PluginTemplateExtension to enable registering multiple models
  • #16776 - Add an alerts() method to PluginTemplateExtension for embedding important information on object views
  • #16886 - Introduce a mechanism for plugins to register custom event types (for use with user notifications)

Other Changes

  • #14692 - Change the atomic unit for virtual disks from 1GB to 1MB
  • #14861 - The URL path for UI views concerning virtual disks has been standardized to /virtualization/virtual-disks/
  • #15410 - Remove various deprecated query filters
  • #15908 - Indicate product edition in release data
  • #16388 - Move all change logging resources from extras to core
  • #16884 - Remove the ID column from the default table configuration for changelog records
  • #16988 - Relocate rack items in navigation menu
  • #17143 - The use of legacy "nested" serializer classes has been deprecated

jeremystretch and others added 30 commits June 5, 2024 12:34
…16420)

* Closes #15908: Establish canonical & local sources for release info

* Update references to settings.VERSION
* 15410 removed legacy filters

* 15410 fix tests

* 15410 fix tests
* 14692 convert disk size to MB

* 14692 fix list display

* 14692 fix migration

* Update netbox/virtualization/migrations/0039_convert_disk_size.py

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
* 7537 add serial number to virtual machines

* 7537 add migration

* 7537 add sn to search

* 7537 add to model documentation

* 8984 move serializer field

* 8984 add to detail view and search index

* 7537 serial_number -> serial

* 7537 fix migration

* Add missing serial field

* Give serial field higher precedence for search

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
* 15106 add wireles link length

* 15106 add wireles link length

* 15106 add wireless link length

* 15106 add tests

* 15106 rename length -> distance

* 15106 rename length -> distance

* 15106 review comments

* 15106 review comments

* 15106 fix form

* 15106 length -> distance
* Closes #8198: Implement ability to enforce custom field uniqueness

* Add missing form fields & table columns for validation attributes

* Remove obsolete code
* 15156 add display_url to REST API

* 15156 fix view name

* 15156 fix typo

* 15156 fix tests

* 15156 add url display_url to base class

* 15156 add url display_url to base class

* 15156 add url display_url to base class

* 15156 review changes

* 15156 review changes

* 15156 review changes

* 15156 review changes

* 15156 remove bogus code

* 15156 remove bogus code

* 15156 review changes

* 15156 review changes

* 15156 review changes

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
* Closes #16580: Remove AUTH_EXEMPT_PATHS

* Misc cleanup
* 8984 filter by script log level

* 8984 filter log list

* 8984 add dropdown

* 8984 add dropdown

* 8984 fix button color

* Update netbox/extras/views.py

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>

* 8984 review changes

* 8984 review changes

* 8984 review changes

* Clean up log threshold selector

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
… for objects (#16889)

* Closes #16776: Extend PluginTemplateExtension to render custom alerts for objects

* Fix bug in _get_registered_content()
* Initial work on #15621

* Signal receiver should ignore models which don't support notifications

* Flesh out NotificationGroup functionality

* Add NotificationGroup filters for users & groups

* Separate read & dimiss actions

* Enable one-click dismissals from notifications list

* Include total notification count in dropdown

* Drop 'kind' field from Notification model

* Register event types in the registry; add colors & icons

* Enable event rules to target notification groups

* Define dynamic choices for Notification.event_name

* Move event registration to core

* Add more job events

* Misc cleanup

* Misc cleanup

* Correct absolute URLs for notifications & subscriptions

* Optimize subscriber notifications

* Use core event types when queuing events

* Standardize queued event attribute to event_type; change content_type to object_type

* Rename Notification.event_name to event_type

* Restore NotificationGroupBulkEditView

* Add API tests

* Add view & filterset tests

* Add model documentation

* Fix tests

* Update notification bell when notifications have been cleared

* Ensure subscribe button appears only on relevant models

* Notifications/subscriptions cannot be ordered by object

* Misc cleanup

* Add event icon & type to notifications table

* Adjust icon sizing

* Mute color of read notifications

* Misc cleanup
* 12826 add RackType

* 12826 add forms, filters, tables

* 12826 add to menu

* 12826 remove role

* 12826 add api/serializers

* 12826 add tests and fixes

* 12826 fix tests

* 12826 fix tests

* 12826 fix tests

* 12826 fix tests

* 12826 add device_type to device and instantiation

* 12826 test device creation

* 12826 add slug

* 12826 fix tests

* 12826 fix slug field

* 12826 prevent modification of rack fields if rack_type set

* 12826 update rack fields on rack_type edit

* Misc cleanup

* Update model docs

* Add manufacturer field to RackType

* Add test for mounting_depth

* Rename 'type' to 'form_factor'

* Create base classes for Rack & RackType models, serializers

* Hide RackType-defined fields on RackForm when a rack type is set

* Establish a base filter form for Rack & RackType

* Clean up RackType attr inheritance

* Clean up templates

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
* 9627 initial commit

* 9627 numeric range field

* 9627 numeric range field

* 9627 numeric range field

* 9627 numeric range field

* 9627 add stuff for utilization calc

* 9627 update views

* 9627 fixes

* 9627 available_vlans

* 9627 available_vlans

* 9627 fixes

* 9627 bulk import / edit

* 9627 test fixes

* 9627 test fixes

* 9627 update validation

* 9627 fix tests

* 9627 fix tests

* 9627 fix tests

* 9627 fix tests

* 9627 fix tests

* 9627 fix tests

* 9627 review changes

* 9627 temp vlan_id filter

* Clean up labels

* Remove annotate_vlan_ranges() from VLANGroupQuerySet

* Misc cleanup

* Implement contains_vid filter

* Serialize VID ranges as integer lists in REST API

* Remove default value from vlan_id_ranges

* 9627 fix typo in test

* Require vlan_id_ranges & set default value

* Fix logic for upper range boundaries

* Add field to VLANGroup model documentation

* Rename vlan_id_ranges to vid_ranges

* Fix computation of available VLAN IDs

* Clean up migration

* Add tests for range utility functions

* Clean up add_available_vlans()

* Misc cleanup, add test for VID validation

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
* Initial work on #16886

* Restore GraphQL filter

* Remove namespace

* Add Event documentation

* Use MultipleChoiceField for event_types

* Fix event_types field class on EventRuleImportForm

* Fix tests

* Simplify event queue handling logic

* Misc cleanup
arthanson and others added 28 commits August 19, 2024 12:01
* 17174 add version to plugin catalog

* Retain the created & updated columns for optional use

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
* Use MPTTColumn for module bays

* Fix return URLs

* Omit extraneous relationships from nested serializers

* Add note re: v4.1
* Shorten choice constant names

* Add filter tests for airflow
* 11969 remove airflow from racktype

* 11969 remove airflow from racktype

* 11969 update docs

* 11969 fix rack edit

* Rename migration

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
* 12826 make RackType.form_factor required

* 12826 fix tests
* #8198: Rename CustomField.validation_unique to unique

* Update CustomField model documentation
* 17289 add password validation

* 17289 add password validation

* 17289 fix tests

* 17289 fix tests

* Update netbox/utilities/password_validation.py

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>

* Update netbox/utilities/password_validation.py

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>

* Update netbox/utilities/password_validation.py

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>

* 17289 update tests

* 17289 remove common password check

* 17289 fix user create

* 17289 revert _post_clean

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
…sts to 10 (#17329)

* Closes #17288: Limit the number of aliases within a GraphQL API request to 10

* Introduce GRAPHQL_MAX_ALIASES config parameter
* New screenshots for 4.1

* Remove footer info

* Add bookmarks to dashboard to match previous

* Reverse ordering of bookmarks

* Fix colors of cables in cable-trace.png

* New screenshots for 4.1

* Recapture screenshots with better rendering gradient

* Better sidebar on cable-trace.png
@jeremystretch jeremystretch merged commit 7bc0d34 into master Sep 3, 2024
6 checks passed
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Oct 4, 2024
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