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

chore(deps): update ghcr.io/nautobot/nautobot docker tag to v2.4.0 #501

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Jan 10, 2025

This PR contains the following updates:

Package Update Change
ghcr.io/nautobot/nautobot minor 2.3.16-py3.11 -> 2.4.0-py3.11

Release Notes

nautobot/nautobot (ghcr.io/nautobot/nautobot)

v2.4.0: - 2025-01-10

Compare Source

This document describes all new features and changes in Nautobot 2.4.

Upgrade Actions
Administrators
  • Nautobot 2.4 drops support for Python 3.8, so any existing Nautobot deployment using Python 3.8 will need upgrade to a newer Python version before upgrading to Nautobot v2.4 or later.
  • Administrators should familiarize themselves with the new Event Publication Framework and the possibilities it enables for improved monitoring of Nautobot operations and integration with distributed automation platforms.
  • Administrators of Kubernetes-based Nautobot deployments should familiarize themselves with the new capabilities that Nautobot v2.4 provides for Job execution in such environments and may wish to update their Nautobot configuration to take advantage of these capabilities. Please note that this feature set is considered Experimental in v2.4.0 and is subject to change in future releases.
  • Nautobot 2.4 includes an About page which is capable of displaying the status of Network to Code support contracts, dictated by the NTC_SUPPORT_CONTRACT_EXPIRATION_DATE configuration setting.
Job Authors & App Developers
  • App developers should begin to adopt the UI Component Framework introduced in Nautobot v2.4, as this will reduce the amount of boilerplate HTML/CSS content that they need to develop and maintain, and will help insulate Apps from future CSS and layout design changes planned for Nautobot v3.
  • Additionally, App developers should familiarize themselves with the new Event Publication Framework and the possibilities it enables for Apps to publish their own relevant events to configured message brokers.
  • As a side benefit of adding REST API exclude_m2m support, the Nautobot REST API ViewSet classes now attempt to intelligently apply select_related() and/or prefetch_related() optimizations to the queryset 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 to select_related() and prefetch_related(); furthermore, in order to benefit most from the exclude_m2m=true query parameter, apps in Nautobot v2.4.0 and later should not explicitly prefetch_related() many-to-many related fields any longer. (Explicit calls to select_related() and prefetch_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.)
  • Job authors should be aware of the ability to log success messages in Nautobot v2.4.0 and later and should adopt this log level as appropriate.
  • Job authors should be aware of the introduction of Job Queues as a general-purpose replacement for the Celery-specific Job.task_queues attribute, and if a Job specifies its preferred task_queues, should verify that the queue selected as its default_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 new InterfaceVDCAssignment model as well.

Wireless Data Models

Nautobot 2.4 adds the data models WirelessNetwork, RadioProfile, and SupportedDataRate, enabling Nautobot to model campus wireless networks. In support of this functionality, the Controller and ControllerManagedDeviceGroup 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 Level

Jobs can now log success messages as a new logging level which will be appropriately labeled and colorized in Job Result views.

self.logger.success("All data is valid.")
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 Support

Added 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 use exclude_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:

  • Circuit
  • Cluster Type
  • Device ("Add Components" buttons only)
  • External Integration
  • Location Type
  • Provider
  • Route Target
  • Secret
  • Tenant
  • VRF
Deprecated
FilterTestCases.NameOnlyFilterTestCase and FilterTestCases.NameSlugFilterTestCase

These two generic base test classes are deprecated. Apps should migrate to using FilterTestCases.FilterTestCase with an appropriately defined list of generic_filter_tests instead.

Job task_queues and ScheduledJob.queue

The Job.task_queues field (a list of queue name strings) is deprecated in favor of the new Job.job_queues relationship to the JobQueue model. task_queues is still readable and settable for backward compatibility purposes but code using this attribute should migrate to using job_queues instead.

Similarly, ScheduledJob.queue is deprecated in favor of ScheduledJob.job_queue.

TemplateExtension.detail_tabs(), TemplateExtension.left_page() and others

With 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 existing TemplateExtension 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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Copy link
Contributor Author

renovate bot commented Jan 10, 2025

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: charts/nautobot/values.yaml
Post-upgrade command 'scripts/update_version.sh "{{{prTitle}}}"' has not been added to the allowed list in allowedPostUpgradeCommands

@renovate renovate bot requested review from gertzakis and ubajze as code owners January 10, 2025 19:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants