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.7.0 #14636

Merged
merged 85 commits into from
Dec 29, 2023
Merged

Release v3.7.0 #14636

merged 85 commits into from
Dec 29, 2023

Conversation

jeremystretch
Copy link
Member

Breaking Changes

  • The following fields have been removed from the Webhook model: content_types, type_create, type_update, type_delete, type_job_start, type_job_end, enabled, and conditions. Webhooks are now tied to events via event rules. New event rules will be created for any existing webhooks automatically upon upgrade.
  • The ui_visibility field on the custom field model has been replaced with two new fields: ui_visible and ui_editable. These new fields will have their values mapped from the original field automatically upon upgrade.
  • The FeatureQuery class used internally for querying content types by model feature has been removed. It has been replaced by the new with_feature() manager method on NetBox's proxy model for ContentType (core.models.ContentType).
  • The internal ConfigRevision model has moved from extras to core. Configuration history will be retained throughout the upgrade process.
  • The L2VPN and L2VPNTermination models have moved from the ipam app to the new vpn app. All object data will be retained, however please note that the relevant API endpoints have likewise moved to /api/vpn/.
  • The CustomFieldsMixin, SavedFiltersMixin, and TagsMixin classes have moved from the extras.forms.mixins module to netbox.forms.mixins.

New Features

VPN Tunnels (#9816)

Several new models have been introduced to enable VPN tunnel management. Users can now define tunnels with two or more terminations to represent peer-to-peer or hub-and-spoke topologies. Each termination is made to a virtual interface on a device or virtual machine. Additionally, users can define IKE and IPSec proposals and policies, which can be applied to tunnels to document encryption and authentication strategies.

Event Rules (#14132)

This release introduces event rules, which can be used to send webhooks or execute custom scripts automatically in response to events that occur in NetBox. For example, it's now possible to run a custom script whenever a new site is created with a particular status or tag.

Event rules replace and extend functionality that was previously built into the webhook model. New event rules will be created for any existing webhooks automatically upon upgrade.

Virtual Machine Disks (#8356)

A new VirtualDisk model has been introduced to enable tracking the assignment of discrete virtual disks to virtual machines. The size field has been retained on the VirtualMachine model, and will be populated automatically with the aggregate size of all assigned virtual disks. (Users who opt to eschew the new model may continue using the VirtualMachine size attribute independently as in previous releases.)

Object Protection Rules (#10244)

A new PROTECTION_RULES configuration parameter has been introduced. Similar to how custom validation rules can be used to enforce certain values for object attributes, protection rules guard against the deletion of objects which do not meet specified criteria. This enables an administrator to prevent, for example, the deletion of a site which has a status of "active."

Improved Custom Field Visibility Controls (#13299)

The ui_visible field on the custom field model has been superseded by two new fields, ui_visible and ui_editable, which control how and whether a custom field is displayed when view and editing an object, respectively. Separating these two functions into discrete fields allows more control over how each custom field is presented to users. The values of these fields will be appropriately set automatically during the upgrade process from the value of the original field.

Improved Global Search Results (#14134)

Global search results now include additional context about each object, such as a description, status, and/or related objects. The set of attributes to be displayed is specific to each object type, and is defined by setting display_attrs under the object's SearchIndex class.

Table Column Registration for Plugins (#14173)

Plugins can now register their own custom columns for inclusion on core NetBox tables. For example, a plugin can register a new column on SiteTable using the new register_table_column() utility function, and it will become available for users to select for display.

Data Backend Registration for Plugins (#13381)

Plugins can now register their own data backends for use with synchronized data sources. This enables plugins to introduce new backends in addition to the git, S3, and local path backends provided natively.

Enhancements

  • #12135 - Avoid orphaned interfaces by preventing the deletion of interfaces which have children assigned
  • #12216 - Add a color field for circuit types
  • #13230 - Allow device types to be excluded from consideration when calculating a rack's utilization
  • #13334 - Add an error field to the Job model to record any errors associated with its execution
  • #13427 - Introduce a mechanism for excluding models from general-purpose lists of object types
  • #13690 - Display any dependent objects to be deleted prior to deleting an object via the web UI
  • #13794 - Any models with a relationship to Tenant are now included automatically in the list of related objects under the tenant view
  • #13808 - Add a /render-config REST API endpoint for virtual machines
  • #14035 - Order objects of equivalent weight by value in global search results to improve readability
  • #14147 - Avoid recording empty changelog entries via the new CHANGELOG_SKIP_EMPTY_CHANGES config parameter
  • #14156 - Enable custom fields for contact assignments
  • #14240 - Increase maximum values for custom field minimum & maximum numeric validators
  • #14361 - Add a description field for webhooks
  • #14365 - Introduce job_start and job_end signals to allow automated plugin actions
  • #14434 - Add model-specific termination object filters for cables (e.g. interface_id and consoleport_id)
  • #14436 - Add PostgreSQL indexes for all GenericForeignKey fields
  • #14579 - Allow users to specify a preferred language for UI translations

Translations

  • #14075 - Add Spanish translation
  • #14096 - Add French translation
  • #14145 - Add Portuguese translation
  • #14266 - Add Russian translation

Bug Fixes

  • #14432 - Fix hyperlinks for global search result attributes
  • #14472 - Fix display of hidden custom fields in object edit forms
  • #14499 - Relax requirements for encryption/auth algorithms on IKE & IPSec proposals
  • #14550 - Fix changing action type of existing event rule

Other Changes

  • #13550 - Optimize the format for declaring view actions under ActionsMixin (backward compatibility has been retained)
  • #13645 - Installation of the sentry-sdk Python library is now required only if Sentry reporting is enabled
  • #14036 - Move plugin resources from the extras app into netbox (backward compatibility has been retained)
  • #14153 - Replace FeatureQuery with new with_feature() method on proxy ContentType manager
  • #14311 - Move the L2VPN models from the ipam app to the new vpn app
  • #14312 - Move the ConfigRevision model from the extras app to core
  • #14326 - Form feature mixin classes have been moved from the extras app to netbox
  • #14395 - Move extras.webhooks_worker.process_webhook() to extras.webhooks.send_webhook() (backward compatibility has been retained)
  • #14424 - Remove change logging functionality from StagedChange
  • #14458 - Remove the obsolete clearcache management command
  • #14536 - Enforce uniqueness by default for non-VRF prefixes & IP addresses (ENFORCE_GLOBAL_UNIQUE now defaults to true)

jeremystretch and others added 30 commits October 20, 2023 11:24
* Move extras.plugins to netbox.plugins & add deprecation warnings

* Move plugin template tags from extras to utilities

* Move plugins tests from extras to netbox

* Add TODO reminders for v4.0
* Merge actions and action_perms into a single mapping

* Update obsolete permission maps

* Update obsolete action lists

* Normalize empty permission mappings

* Cleanup

* Add deprecation warnings

* Introduce DEFAULT_ACTION_PERMISSIONS constant
* 12216 add color to model

* 12216 add forms, serializers for color

* 12216 color to detail view, add type to svg

* 12216 add color to svg

* 12216 review changes
* 13230 add exclusion flag to device type

* 13230 forms, detail views

* 13230 add tests

* 13230 extraneous model field

* 13230 extraneous form field

* Update netbox/dcim/forms/bulk_edit.py

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

* 13230 review feedback

---------

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

* Fix backend type display in table column

* Fix data source type choices during bulk edit

* Misc cleanup

* Move backend utils from core app to netbox

* Move backend type validation from serializer to model
* Translations cleanup

* Tweak variable names; misc string cleanup

* Misc cleanup
* Closes #12135: Prevent the deletion of interfaces with children

* Change PROTECT to RESTRICT

* Extend handle_protectederror() to also handle RestrictedError

* Fix string translation

* Update migrations

* Support bulk removal of parent interfaces via UI if all children are included

* Add support for the bulk deletion of restricted objects via REST API
* show objects that would be deleted by cascade

* some items were not showing (eg ips on devices)

* dont include the item being deleted in the list of related items

* Revert "dont include the item being deleted in the list of related items"

This reverts commit 298a786.

* cleanup

- migrate code to use collector directly instead of the NestedObjects wrapper from admin.utils

- adjust object names and text output

* requested adjustments

* remove comma from end of list

* linting

* refactor, add accordion

* migrate to defaultdict, use title for capitalisation of accordian titles

* Misc cleanup

---------

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

* Clarify documentation

* Reference public models registry when populating models for ConfigTemplate context
…results (#14154)

* WIP

* Add display_attrs for all indexers

* Linkify object attributes

* Clean up prefetch logic

* Use tooltips for display attributes

* Simplify template code

* Introduce get_indexer() utility function

* Add  to examples in docs

* Use tooltips to display long strings
… view (#14196)

* Closes #13794: Dynamically populate related objects list under tenant view

* get_related_models() should sort models alphabetically by default

* Reference Meta.related_objects instead of calling get_fields()
* WIP

* Remove FeatureQuery

* Standardize use of proxy ContentType for models

* Remove TODO

* Correctly filter BookmarksWidget object_types choices

* Add feature-specific object type validation
)

* Closes #14173: Enable plugins to register columns on core tables

* Support translation for column name

* Document new registry store
…#14287)

* Add /api/virtualization/virtual-machines/{id}/render-config/ endpoint

* Update Docstring "Device" -> "Virtual Machine"

Docstring should mention "..this Virtual Machine" instead of "...this Device", thanks @LuPo!

* Move config rendering logic to new RenderConfigMixin

* Add tests for render-config API endpoint

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
* 8356 add virtual disk model

* 8356 add supplemental forms

* 8356 add menu

* 8356 cleanup views

* 8356 virtual machine tab

* 8356 migrations

* 8356 vm disk tables

* 8356 cleanup

* 8356 graphql

* 8356 graphql

* 8356 add components button

* 8356 bulk add on virtualmachine

* 8356 bulk add fixes

* 8356 api tests

* 8356 news tests add rename

* 8356 VirtualDiskCreateForm

* 8356 fix test

* 8356 add todo to remove disk from vm

* 8356 review changes

* 8356 fix test

* 8356 deprecate disk field

* 8356 review changes

* 8356 fix test

* 8356 fix test

* Simplify view actions

* 8356 review changes

* 8356 split trans tag

* 8356 add total virtual disk size to api

* 8356 add virtual disk list to virtual machine detail view

* 8356 move virtual disk size to property

* 8356 revert property

* Tweak display of deprecated disk field

* 8356 render single disk field

* 8356 update serializer

* 8356 model property

* 8356 fix test

* 8356 review changes

* Revert disk space annotation

* Use existing disk field to store aggregate virtual disk size

* Introduce abstract ComponentModel for VM components

* Add search index for VirtualDisk

* Misc cleanup

---------

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

* Add ui_visible and ui_editable fields

* Extend migration to map new visible/editable values

* Remove ui_visibility field

* Update docs
* Move form mixins from extras app to netbox app

* Remove obsolete extras/admin.py
* Move ConfigRevision model & write migrations

* Move ConfigRevision resources from extras to core

* Extend migration to update original content type for ConfigRevision
- Introduces a new `vpn` app with the following models:
    - Tunnel
    - TunnelTermination
    - IKEProposal
    - IKEPolicy
    - IPSecProposal
    - IPSecPolicy
    - IPSecProfile
* Move L2VPN and L2VPNTermination models from ipam to vpn

* Move L2VPN resources from ipam to vpn

* Extend migration to update content types

* Misc cleanup
jeremystretch and others added 28 commits December 5, 2023 08:25
* Closes #14436: Add PostgreSQL indexes for all GenericForeignKeys

* Add note about GFK indexes to developer docs
* 14424 remove ChangeLoggedModel from StagedChange

* 14424 rename migration
* 14147 Prevent logging to Change Log when no changes are made

* 14147 add test

* 14147 add exclude_fields to serialize_object

* 14147 make skip empty default to True

* 14147 remove override of to_objectchange

* Misc cleanup

---------

Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
…ipt (#14571)

* Fixes #14550: Fix changing event rule action type from webhook to script

* Remove action_parameters from form; set on instance under save()
* Add termination object filters for cables

* Add tests for new filters
@jeremystretch jeremystretch merged commit 7b90481 into master Dec 29, 2023
8 checks passed
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jan 29, 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.

4 participants