v2.3.0 - 2024-08-08 #6083
glennmatthews
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
This document describes all new features and changes in Nautobot 2.3.
Upgrade Actions
Administrators
Administrators should plan to take these actions during or immediately after upgrade from a previous version. New installations should also take note of these actions where appropriate.
!!! warning "Python 3.12"
Because Nautobot prior to 2.3.0 did not declare support for Python 3.12, most Apps similarly needed to previously declare an upper bound of Python 3.11 for their own compatibility. Therefore, older versions of most Apps will not be installable under Python 3.12. Before migrating your Nautobot environment to Python 3.12, it is your responsibility to confirm that all relevant Apps in your environment are also compatible and installable. There is a minor "chicken-and-egg" problem here in that Apps generally cannot declare support for a new Python version before Nautobot itself publishes a release that does so; therefore, as of the 2.3.0 Nautobot release day, most Apps have not yet been updated to declare support for Python 3.12. We'll be working in the following days to promptly update our supported Apps as needed, so stay tuned.
!!! warning "Docker images"
As has been Nautobot's policy since version 1.6.1, our published Docker images that are not tagged with a specific Python version implicitly always include the latest supported version of Python. This means that as of the release of Nautobot 2.3.0, the tags
latest
,stable
,2.3
, and2.3.0
will all indicate Docker images that include Python 3.12, whereas previously these indicated Python 3.11 images. As noted above and below, updating to Python 3.12 may not be immediately desirable (or even possible, depending on the status of your Apps) as a "day one" action. If you need to stay with a given Python version for the time being, you must make sure that you're relying on an appropriately specific image tag, such as2.3-py3.11
,stable-py3.10
, etc.DYNAMIC_GROUPS_MEMBER_CACHE_TIMEOUT
setting can be safely removed, as it is no longer used. If this setting was being used previously, it is recommended to set the new scheduled job's interval to the same value.CHANGELOG_RETENTION
setting is still used to define the retention period, but the scheduled system job will perform the actual cleanup, if any needed.Job Authors & App Developers
Job Authors and App Developers should take these actions to ensure compatibility with their Jobs and Apps.
DynamicGroup.update_cached_members()
to find the correct balance between Dynamic Group performance and membership updates.!!! warning "Django 4"
Django 4 includes a small number of breaking changes compared to Django 3. In our experience, most Apps have required few (or zero) updates to be Django 4 compatible, but your mileage may vary.
Release Overview
Added
Cloud Models (#5716, #5719, #5721, #5872)
Added the new models
CloudAccount
,CloudResourceType
,CloudNetwork
, andCloudService
to support recording of cloud provider accounts (AWS, Azure, GCP, DigitalOcean, etc.), cloud resource types (AWS EC2, Azure Virtual Machine Service, Google App Engine, etc.), cloud services (specific instances of services described by cloud resource types) and cloud network objects (such as VPCs) in Nautobot.Device Modules (#2101)
Added new models for
ModuleBay
,Module
,ModuleType
, andModuleBayTemplate
to support modeling line cards and other modular components of a device. These models allow you to define a hierarchy of module bays and modules within a device, and to assign components (such as interfaces, power ports, etc.) to specific modules.Dynamic Group Enhancements (#5472, #5786)
Dynamic Groups now have a
group_type
field, which specifies whether this group is defined by an object filter, defined by aggregating other groups via set operations, or defined via static assignment of objects as group members (this third type is new in Nautobot 2.3). Additionally, you can now assign a tenant and/or tags to each Dynamic Group, and many more models now can be included in Dynamic Groups.A new model,
StaticGroupAssociation
, and associated REST API, have been added in support of the new "static" group type. See also "Dynamic Group Cache Changes" below.For more details, refer to the Dynamic Group documentation.
Interface and VMInterface Roles (#4406)
Added an optional
role
field to Interface and VMInterface models to track common interface configurations. Now the users can create Role instances that can be assigned to interfaces and vminterfaces.Object Metadata Models (#5663)
Added a set of functionality for defining and managing object metadata, that is to say, data about the network data managed in Nautobot, such as data provenance, data ownership, and data classification. For more details, refer to the linked documentation.
Python 3.12 Support (#5429)
Nautobot now supports Python 3.12, and Python 3.12 is now the default Python version included in the
nautobot
Docker images.Saved Views (#1758)
Added the ability for users to save multiple configurations of list views (table columns, filtering, pagination and sorting) for ease of later use and reuse. Refer to the Saved View documentation for more details and on how to use saved views.
Worker Status Page (#5873)
User accounts with the
is_staff
flag set can access a new worker status page at/worker-status/
to view the status of the Celery worker(s) and the configured queues. The link to this page appears in the "User" dropdown at the bottom of the navigation menu, under the link to the "Profile" page. Use this page with caution as it runs a live query against the Celery worker(s) and may impact performance of your web service.Changed
Changed TreeManager Default Behavior (#5786)
The
TreeManager
class (used for tree-models such as Location, RackGroup, and TenantGroup) default behavior has changed fromwith_tree_fields
towithout_tree_fields
. This should improve performance in many cases but may impact Apps or Jobs that were relying on the old default; such code should be updated to explicitly call.with_tree_fields()
where appropriate.Dynamic Group Cache Changes (#5473)
To improve performance of the Dynamic Groups feature, a number of changes have been made:
StaticGroupAssociation
records as a database cache of their member objects, rather than optionally caching their members in Redis for a limited time period. For Dynamic Groups of types other than the new "static" group type, theseStaticGroupAssociation
records are hidden by default from the UI and REST API.DYNAMIC_GROUPS_MEMBER_CACHE_TIMEOUT
setting variable is deprecated, as it no longer influences Dynamic Group cache behavior.DynamicGroup.members
,DynamicGroup.count
,DynamicGroup.has_member()
, andobject.dynamic_groups
now always use the database cache rather than being recalculated on the fly.DynamicGroup.members_cached
,DynamicGroup.members_cache_key
,object.dynamic_groups_cached
,object.dynamic_groups_list
, andobject.dynamic_groups_list_cached
are now deprecated.Refresh Dynamic Group Caches
, can be run or scheduled as appropriate to refresh Dynamic Group member caches on demand.DynamicGroup.update_cached_members()
can be called by Apps or Jobs needing to ensure that the cache is up-to-date for any given Dynamic Group.Log Cleanup as System Job (#3749)
Cleanup of the change log (deletion of
ObjectChange
records older than a given cutoff) is now handled by the newLogsCleanup
system Job, rather than occurring at random as a side effect of new change log records being created. Admins desiring automatic cleanup are encouraged to schedule this job to run at an appropriate interval suitable to your deployment's needs.!!! info
Setting
CHANGELOG_RETENTION
in your Nautobot configuration by itself no longer directly results in periodic cleanup ofObjectChange
records. You must run (or schedule to periodically run) theLogsCleanup
Job for this to occur.As an additional enhancement, the
LogsCleanup
Job can also be used to cleanupJobResult
records if desired as well.UI Button Consolidation (#5869, #5870, #5871)
Various button groups in the "object list" and "object detail" views have been consolidated following a common UI pattern of a single button for the most common action plus a popup menu for less common actions.
Dependencies
Updated to Django 4.2 (#3581)
As Django 3.2 has reached end-of-life, Nautobot 2.3 requires Django 4.2, the next long-term-support (LTS) version of Django. There are a number of changes in Django itself as a result of this upgrade; Nautobot App maintainers are urged to review the Django release-notes (4.0, 4.1, 4.2), especially the relevant "Backwards incompatible changes" sections, to proactively identify any impact to their Apps.
Contributors
New Contributors
Full Changelog: v2.2.9...v2.3.0
This discussion was created from the release v2.3.0 - 2024-08-08.
Beta Was this translation helpful? Give feedback.
All reactions