chore(deps): update ghcr.io/nautobot/nautobot docker tag to v2.4.0 #501
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
2.3.16-py3.11
->2.4.0-py3.11
Release Notes
nautobot/nautobot (ghcr.io/nautobot/nautobot)
v2.4.0
: - 2025-01-10Compare Source
This document describes all new features and changes in Nautobot 2.4.
Upgrade Actions
Administrators
NTC_SUPPORT_CONTRACT_EXPIRATION_DATE
configuration setting.Job Authors & App Developers
exclude_m2m
support, the Nautobot REST APIViewSet
classes now attempt to intelligently applyselect_related()
and/orprefetch_related()
optimizations to thequeryset
associated to a given REST API viewset. Apps defining their own REST API viewsets (and requiring Nautobot v2.4.0 or later) can typically remove most explicit calls toselect_related()
andprefetch_related()
; furthermore, in order to benefit most from theexclude_m2m=true
query parameter, apps in Nautobot v2.4.0 and later should not explicitlyprefetch_related()
many-to-many related fields any longer. (Explicit calls toselect_related()
andprefetch_related()
may still be necessary and appropriate if your API serializer needs to perform nested lookups, as the automatic optimization here currently only understands directly related object lookups.)success
messages in Nautobot v2.4.0 and later and should adopt this log level as appropriate.Job.task_queues
attribute, and if a Job specifies its preferredtask_queues
, should verify that the queue selected as itsdefault_job_queue
after the Nautobot upgrade is correct.Release Overview
Added
Virtual Device Context Data Models
Nautobot 2.4 adds a
VirtualDeviceContext
data model to support modeling of logical partitions of physical network devices, such as Cisco Nexus Virtual Device Contexts, Juniper Logical Systems, Arista Multi-instance EOS, and so forth. Device Interfaces can be associated to Virtual Device Contexts via the newInterfaceVDCAssignment
model as well.Wireless Data Models
Nautobot 2.4 adds the data models
WirelessNetwork
,RadioProfile
, andSupportedDataRate
, enabling Nautobot to model campus wireless networks. In support of this functionality, theController
andControllerManagedDeviceGroup
models have been enhanced with additional capabilities as well.Refer to the Wireless documentation for more details.
Apps Marketplace Page and Installed Apps Page Tile View
Nautobot v2.4 introduces the Apps Marketplace, containing information about available Nautobot Apps. In addition to that, the Installed Apps page has added a tile-view option, similar to the Apps Marketplace.
Event Publication Framework
Nautobot now includes a general-purpose, extensible event publication framework for publication of event notifications to other systems such as Redis publish/subscribe, Kafka, syslog, and others. An abstract
EventBroker
API can be implemented and extended with system-specific functionality to enable publication of Nautobot events to any desired message broker.As of v2.4.0, Nautobot publishes events with the following topics:
Data model manipulation:
nautobot.create.<app>.<model>
nautobot.update.<app>.<model>
nautobot.delete.<app>.<model>
User interaction:
nautobot.users.user.login
nautobot.users.user.logout
nautobot.users.user.change_password
nautobot.admin.user.change_password
Jobs:
nautobot.jobs.job.started
nautobot.jobs.job.completed
nautobot.jobs.approval.approved
nautobot.jobs.approval.denied
The payload of each topic is a data representaton of the corresponding event, such as the object created, or the Job that started execution. Events are published to configured event brokers, and may be filtered.
Nautobot Apps can also make use of this framework to publish additional event topics, specific to the App's functionality as desired.
Jinja2 Template Rendering Tool
Nautobot v2.4 adds a new tool to render Jinja2 templates directly from the UI. Users may supply their own template body and context data to be rendered, with access to to Nautobot's built-in Jinja2 tags and filters. Additionally, a new REST API endpoint
/api/core/render-jinja-template/
has been added to achieve the same functionaly. This can be used by users and Apps such as Nautobot Golden Config to assist with the development and validation of Jinja2 template content. This functionality will be extended in the future to more easily access context aware data in Nautobot such as Devices and Config Contexts.Job
success
Log LevelJobs can now log
success
messages as a new logging level which will be appropriately labeled and colorized in Job Result views.Kubernetes Job Execution and Job Queue Data Model (Experimental)
Please note that this functionality is considered Experimental in the v2.4.0 release and is subject to change in the future.
When running in a Kubernetes (k8s) deployment, such as with Nautobot's Helm chart, Nautobot now supports an alternative method of running Nautobot Jobs - instead of (or in addition to) running one or more Celery Workers as long-lived persistent pods, Nautobot can dispatch Nautobot Jobs to be executed as short-lived Kubernetes Job pods.
In support of this functionality, Nautobot now supports the definition of
JobQueue
records, which represent either a Celery task queue or a Kubernetes Job queue. Nautobot Jobs can be associated to queues of either or both types, and the Job Queue selected when submitting a Job will dictate whether it is executed via Celery or via Kubernetes.Nautobot Jobs support the same feature sets, regardless if they are executed on Celery Job queues or Kubernetes Job queues.
Refer to the Jobs documentation for more details.
Singleton Jobs
Job authors can now set their jobs to only allow a single concurrent execution across all workers, preventing mistakes where, e.g., data synchronization jobs accidentally run twice and create multiple instances of the same data. This functionality and the corresponding setting are documented in the section on developing Jobs.
Per-user Time Zone Support
Users can now configure their preferred display time zone via the User Preferences UI under their user profile and Nautobot will display dates and times in the configured time zone for each user.
REST API
exclude_m2m
SupportAdded REST API support for an
?exclude_m2m=true
query parameter. Specifying this parameter prevents the API from retrieving and serializing many-to-many relations on the requested object(s) (for example, the list of all Prefixes associated with a given VRF), which can in some cases greatly improve the performance of the API and reduce memory and network overhead substantially.A future Nautobot major release may change the REST API behavior to make
exclude_m2m=true
the default behavior.Additionally, the
DynamicModelChoiceField
and related form fields have been enhanced to useexclude_m2m=true
when querying the REST API to populate their options, which can in some cases significantly improve the responsiveness of these fields.UI Component Framework
Nautobot's new UI Component Framework provides a set of Python APIs for defining parts of the Nautobot UI without needing, in many cases, to write custom HTML templates. In v2.4.0, the focus is primarily on the definition of object "detail" views as those were the most common cases where custom templates have been required in the past.
Adoption of this framework significantly reduces the amount of boilerplate needed to define an object detail view, drives increased self-consistency across views, and encourages code reuse. It also insulates Apps from the details of Nautobot's CSS and layout (Bootstrap 3 framework), smoothing the way for Nautobot to adopt UI changes in the future with minimal impact to compliant apps.
App template extensions--which are used to inject App content into Nautobot Core views--offer new implementation patterns using the UI Component Framework and it is highly recomended that App developers take this opportunity to adopt, as old methods have been deprecated in some cases (see below).
As of Nautobot 2.4.0, the following detail views have been migrated to use the UI Component Framework, and any app template extensions targeting these models should adopt:
Deprecated
FilterTestCases.NameOnlyFilterTestCase
andFilterTestCases.NameSlugFilterTestCase
These two generic base test classes are deprecated. Apps should migrate to using
FilterTestCases.FilterTestCase
with an appropriately defined list ofgeneric_filter_tests
instead.Job
task_queues
andScheduledJob.queue
The
Job.task_queues
field (a list of queue name strings) is deprecated in favor of the newJob.job_queues
relationship to theJobQueue
model.task_queues
is still readable and settable for backward compatibility purposes but code using this attribute should migrate to usingjob_queues
instead.Similarly,
ScheduledJob.queue
is deprecated in favor ofScheduledJob.job_queue
.TemplateExtension.detail_tabs()
,TemplateExtension.left_page()
and othersWith the introduction of the UI Component Framework (described above), new APIs are available for Apps to extend core Nautobot views with additional content using this framework. A number of new APIs have been added to the
TemplateExtension
base class in support of this functionality, and several existingTemplateExtension
APIs have been deprecated in favor of these new APIs. Refer to the App development documentation for details.Dependencies
Removed Python 3.8 Support
As Python 3.8 has reached end-of-life, Nautobot 2.4 requires a minimum of Python 3.9. Note that existing installs using Python 3.8 will need to upgrade their Python version prior to initiating the Nautobot v2.4 upgrade.
Contributors
New Contributors
Full Changelog: nautobot/nautobot@v2.3.16...v2.4.0
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.