v1.3.0 - 2022-04-18 #1658
bryanculver
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
-
Nautobot v1.3
This document describes all new features and changes in Nautobot 1.3.
If you are a user migrating from NetBox to Nautobot, please refer to the "Migrating from NetBox" documentation.
Release Overview
Added
Dynamic Group Model (#896)
A new data model for representing dynamic groups of objects has been implemented. Dynamic groups can be used to organize objects together by matching criteria such as their site location or region, for example, and are dynamically updated whenever new matching objects are created, or existing objects are updated.
For the initial release only dynamic groups of
Device
andVirtualMachine
objects are supported.Extend FilterSets and Filter Forms via Plugins (#1470)
Plugins can now extend existing FilterSets and Filter Forms. This allows plugins to provide alternative lookup methods or custom queries in the UI or API that may not already exist today.
You can refer to the plugin development guide on how to create new filters and fields.
GraphQL Pagination (#1109)
GraphQL list queries can now be paginated by specifying the filter parameters
limit
andoffset
. Refer to the GraphQL user guide for examples.Job Database Model (#1001)
Installed Jobs are now represented by a data model in the Nautobot database. This allows for new functionality including:
slug
as well as by theirclass_path
./api/extras/jobs/<uuid>/
. The existing/api/extras/jobs/<class_path>/
REST API endpoints continue to work but should be considered as deprecated./api/extras/jobs/
list endpoint has been implemented as well, but by default this endpoint continues to demonstrate the pre-1.3 behavior unless the REST API client explicitly requests APIversion=1.3
. See the section on REST API versioning, below, for more details.enabled = False
, preventing them from being run until an administrator or user with appropriate permissions updates them to be enabled for running.!!! note
As a convenience measure, when initially upgrading to Nautobot 1.3.x, any existing Jobs that have been run or scheduled previously (i.e., have at least one associated JobResult and/or ScheduledJob record) will instead default to
enabled = True
so that they may continue to be run without requiring changes.For more details please refer to the Jobs feature documentation as well as the Job data model documentation.
JSON Type for Custom Fields (#897)
Custom fields can now have a type of "json". Fields of this type can be used to store arbitrary JSON data.
Natural Indexing for Common Lookups (#1638)
Many fields have had indexing added to them as well as index togethers on
ObjectChange
fields. This should provide a noticeable performance improvement when filtering and doing lookups.!!! note
This is going to perform several migrations to add all of the indexes. On MySQL databases and tables with 1M+ records this can take a few minutes. Every environment is different but it should be expected for this upgrade to take some time.
Overlapping/Multiple NAT Support (#630)
IP addresses can now be associated with multiple outside NAT IP addresses. To do this, set more than one IP Address to have the same NAT inside IP address.
A new version of the REST API
/api/ipam/ip-addresses/*
endpoints have been implemented as well, but by default this endpoint continues to demonstrate the pre-1.3 behavior unless the REST API client explicitly requests APIversion=1.3
. See the section on REST API versioning, below, for more details.!!! note
There are some guardrails on this feature to support backwards compatibility. If you consume the REST API without specifying the version header or query argument and start associating multiple IPs to have the same NAT inside IP address, an error will be reported, because the existing REST API schema returns
nat_outside
as a single object, where as 1.3 and beyond will return this as a list.Provider Network Model (#724)
A data model has been added to support representing the termination of a circuit to an external provider's network.
Python 3.10 Support (#1255)
Python 3.10 is officially supported by Nautobot now, and we are building and publishing Docker images with Python 3.10 now.
Regular Expression Support in API Filtering (#1525)
New lookup expressions for using regular expressions to filter objects by string (char) fields in the API have been added to all core filters.
The expressions
re
(regex),nre
(negated regex),ire
(case-insensitive regex), andnire
(negated case-insensitive regex) lookup expressions are now dynamically-generated for filter fields inherited by subclasses ofnautobot.utilities.filters.BaseFilterSet
.REST API Token Provisioning (#1374)
Nautobot now has an
/api/users/tokens/
REST API endpoint where a user can provision a new REST API token. This allows a user to gain REST API access without needing to first create a token via the web UI.This endpoint specifically supports Basic Authentication in addition to the other REST API authentication methods.
REST API Versioning (#1465)
Nautobot's REST API now supports multiple versions, which may be requested by modifying the HTTP Accept header on any requests sent by a REST API client. Details are in the REST API documentation, but in brief:
/api/extras/jobs/
listing endpoint/api/extras/tags/
create/put/patch endpoints/api/ipam/ip-addresses/
endpointsAccept: application/json
rather thanAccept: application/json; version=1.3
) the API behavior will be compatible with Nautobot 1.2, at a minimum for the remainder of the Nautobot 1.x release cycle.major.minor
version where the updated API endpoint was introduced (so to interact with the updated REST API endpoints mentioned above,Accept: application/json; version=1.3
).!!! tip
As a best practice, when developing a Nautobot REST API integration, your client should always request the current API version it is being developed against, rather than relying on the default API behavior (which may change with a new Nautobot major release, as noted, and which also may not include the latest and greatest API endpoints already available but not yet made default in the current release).
Webhook Pre/Post-change Data Added to Request Body (#330)
Webhooks now provide a snapshot of data before and after a change, as well as the differences between the old and new data. See the default request body section in the webhook docs.
Changed
Docker Images Now Default to Python 3.7 (#1252)
As Python 3.6 has reached end-of-life, the default Docker images published for this release (i.e.
1.3.0
,stable
,latest
) have been updated to use Python 3.7 instead.Job Approval Now Controlled By
extras.approve_job
Permission (#1490)Similar to the existing
extras.run_job
permission, a newextras.approve_job
permission is now enforced by the UI and the REST API when approving scheduled jobs. Only users with this permission can approve or deny approval requests; additionally such users also now require theextras.view_scheduledjob
,extras.change_scheduledjob
, andextras.delete_scheduledjob
permissions as well.OpenAPI 3.0 REST API documentation (#595)
The online REST API Swagger documentation (
/api/docs/
) has been updated from OpenAPI 2.0 format to OpenAPI 3.0 format and now supports Nautobot's REST API versioning as described above. Try/api/docs/?api_version=1.3
as an example.Tag restriction by content-type (#872)
When created, a
Tag
can be associated to one or more model content-types using a many-to-many relationship. The tag will then apply only to models belonging to those associated content-types.For users migrating from an earlier Nautobot release, any existing tags will default to being enabled for all content-types for compatibility purposes. Individual tags may subsequently edited to remove any content-types that they do not need to apply to.
Note that a Tag created programmatically via the ORM without assigning any
content_types
will not be applicable to any model until content-types are assigned to it.Update Jinja2 to 3.x (#1474)
We've updated the Jinja2 dependency from version 2.11 to version 3.0.3. This may affect the syntax of any
nautobot.extras.models.ComputedField
objects in your database... Specifically, thetemplate
attribute, which is parsed as a Jinja2 template. Please refer to Jinja2 3.0.x's release notes to check if any changes might be required in your computed fields' templates.Removed
Python 3.6 No Longer Supported (#1268)
As Python 3.6 has reached end-of-life, and many of Nautobot's dependencies have already dropped support for Python 3.6 as a consequence, Nautobot 1.3 and later do not support installation under Python 3.6.
v1.3.0 (2022-04-18)
Added
BaseFilterSet
filter fields in the API.ObjectChange
.Changed
drf-yasg
(OpenAPI 2.0) todrf-spectacular
(OpenAPI 3.0) for REST API interactive Swagger documentation.dev
andfinal
images.extras.approve_job
permissions as appropriate.Fixed
0
when performing a bulk edit of device types.schedule
would allowapproval_required
to be bypassed.v1.3.0b1 (2022-03-11)
Added
null
.render_boolean
template filter, which renders computed boolean values as HTML in a consistent manner.hidden = True
in the Job's innerMeta
class.soft_time_limit
andtime_limit
in seconds as attributes of a Job'sMeta
.Changed
nautobot.extras.forms.NautobotModelForm
andnautobot.extras.filters.NautobotFilterSet
base classes. All form classes which inherited from all three of (BootstrapMixin
,CustomFieldModelForm
, andRelationshipModelForm
) now inherit fromNautobotModelForm
as their base class. All filterset classes which inherited from all three of (BaseFilterSet
,CreatedUpdatedFilterSet
, andCustomFieldModelFilterSet
) now inherit fromNautobotFilterSet
as their base class.type()
are now refactored to useisinstance()
where applicable.Job.Meta.description
can now contain markdown-formatted multi-line text.1.3.0
,stable
,latest
) have been updated to use Python 3.7 instead.nautobot.extras.models.jobs
; refined Job testing best practices.Fixed
Removed
This discussion was created from the release v1.3.0 - 2022-04-18.
Beta Was this translation helpful? Give feedback.
All reactions