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
and VirtualMachine
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
and offset
. 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:
- The Jobs listing UI view can now be filtered and searched like most other Nautobot table/list views.
- Job attributes (name, description, approval requirements, etc.) can now be managed via the Nautobot UI by an administrator or user with appropriate permissions to customize or override the attributes defined in the Job source code.
- Jobs can now be identified by a
slug
as well as by theirclass_path
. - A new set of REST API endpoints have been added to
/api/extras/jobs/<uuid>/
. The existing/api/extras/jobs/<class_path>/
REST API endpoints continue to work but should be considered as deprecated.- A new version of the REST API
/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.
- A new version of the REST API
- As a minor security measure, newly installed Jobs default to
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.
Jobs With Sensitive Parameters (#2091)¶
Jobs model now includes a has_sensitive_variables
field which by default prevents the job's input parameters from being saved to the database. Review whether each job's input parameters include sensitive data such as passwords or other user credentials before setting this to False
for any given job.
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 API version=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), and nire
(negated case-insensitive regex) lookup expressions are now dynamically-generated for filter fields inherited by subclasses of nautobot.utilities.filters.BaseFilterSet
.
Remove Stale Scheduled Jobs (#2091)¶
remove_stale_scheduled_jobs management command has been added to delete non-recurring scheduled jobs that were scheduled to run more than a specified days ago.
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.
curl -X POST \
-H "Accept: application/json; indent=4" \
-u "hankhill:I<3C3H8" \
https://nautobot/api/users/tokens/
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:
- The REST API endpoints that are versioned in the 1.3.0 release are
/api/extras/jobs/
listing endpoint/api/extras/tags/
create/put/patch endpoints- all
/api/ipam/ip-addresses/
endpoints
- All other REST API endpoints are currently non-versioned. However, over time more versioned REST APIs will be developed, so this is important to understand for all REST API consumers.
- If a REST API client does not request a specific REST API version (in other words, requests
Accept: 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. - The API behavior may change to a newer default version in a Nautobot major release (such as 2.0).
- To request an updated (non-backwards-compatible) API endpoint, an API version must be requested corresponding at a minimum to the Nautobot
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 new extras.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 the extras.view_scheduledjob
, extras.change_scheduledjob
, and extras.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, the template
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.
Virtual Chassis Master Device Interfaces List¶
The device column will now show on a device's interfaces list if this device is the master in a virtual chassis. And will conversely not appear if the device is not a master on a virtual chassis.
It is no longer possible to connect an interface to itself in the cable connect form.
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.10 (2022-08-08)¶
Security¶
Important
With introducing the has_sensitive_variables
flag on Job classes and model (see: #2091), jobs can be prevented from storing their inputs in the database. Due to the nature of queuing or scheduling jobs, the desired inputs must be stored for future use.
New safe-default behavior will only permit jobs to be executed immediately, as has_sensitive_variables
defaults to True
. This value can be overridden by the Job class itself or the Job model edit page. Values entered for jobs executing immediately go straight to the Celery message bus and are cleaned up on completion of execution.
Scheduling jobs or requiring approval necessitates those values to be stored in the database until they have been sent to the Celery message bus for execution.
During installation of v1.3.10
, a migration is applied to set the has_sensitive_variables
value to True
to all existing Jobs. However to maintain backwards-compatibility, past scheduled jobs are permitted to keep their schedule. New schedules cannot be made until an administrator has overridden the has_sensitive_variables
for the desired Job.
A new management command exists (remove_stale_scheduled_jobs
) which will aid in cleaning up schedules to past jobs which may still have sensitive data stored in the database. This command is not exhaustive nor intended to clean up sensitive values stored in the database. You should review the extras_scheduledjob
table for any further cleanup.
Note: Leveraging the Secrets and Secret Groups features in Jobs does not need to be considered a sensitive variable. Secrets are retrieved by reference at run time, which means no secret value is stored directly in the database.
Added¶
- #1226 - Added custom job intervals package management.
- #2073 - Added
--local
option tonautobot-server runjob
command. - #2080 - Added
--data
parameter tonautobot-server runjob
command. - #2091 - Added
remove_stale_scheduled_jobs
management command which removes all stale scheduled jobs and also addedhas_sensitive_variables
field to Job model which prevents the job's input parameters from being saved to the database. - #2143 - Scheduled Job detail view now includes details of any custom interval.
Changed¶
- #2114 - Home page now redirects to the login page when
HIDE_RESTRICTED_UI
is enabled and user is not authenticated.
Fixed¶
- #1739 - Fixed paginator not enforcing
max_page_size
setting in web UI views. - #2060 - Fixed relationship
peer_id
filter non-existent error on relationship association page. - #2095 - Fixed health check failing with Redis Sentinel, TLS configuration.
Dependencies¶
- #2115 - Patch updates to
mkdocs
,svgwrite
.
Housekeeping¶
- #2025 - Tweak Renovate config for automated package management.
- #2119 - Fixed flaky integration test for cable connection UI.
v1.3.9 (2022-07-25)¶
Added¶
- #1595 - Add ability to specify uWSGI buffer size via environment variable.
- #1757 - Added nullable face, position to Device bulk edit form to provided desired behavior to bulk assigning to a new rack.
Changed¶
- #386 - Clarified messaging in API for rack position occupied.
- #1356 - Virtual chassis master device interface list is less confusing.
- #2045 - Clarified Job authoring around proper class inheritance.
Fixed¶
- #1035 - Fix assertion raised if SLAAC Status is missing when creating
IPAddress
objects - #1694 - Fixed CablePath not found error when disconnects/delete action performed on a cable
- #1795 - Corrected relationship source/destination filter help text from queryset Filter to filterset Filter and updated documentations.
- #1839 - Fixed staff users with auth > group permissions unable to view groups in admin UI.
- #1937 - Solved
_custom_field_data
do not fully delete when using CustomFieldBulkDeleteView. - #1947 - Fixed unbound local error by initializing template variable before conditional logic statements.
- #2039 - Fixed IntegerVar with default set to 0 on Job evaluating to False.
- #2057 - Fixed RIR changelog route being in VRF name prefix.
- #2077 - Fixed an error when viewing object detail pages after uninstalling a plugin but still having RelationshipAssociations involving the plugin's models.
- #2081 - Fixed error raised if status connected not found when creating a cable
Documentation¶
- #860 - Added documentation that adding device component to device type does not modify existing device instances
- #2036 - Fixed outdated UI navigation references in documentation.
v1.3.8 (2022-07-11)¶
Security¶
Important
CVE in Django versions >= 3.2, < 3.2.14
. This update upgrades Django to 3.2.14
.
- #2004 - Bump Django from 3.2.13 to 3.2.14 for for CVE-2022-34265.
Added¶
- #1464 - Added "Continue with SSO" link on login page.
Changed¶
- #1407 - Changed custom field export column headings to prefix with
cf_
. - #1603 - Changed GraphQL schema generation to call time for GraphQL API.
Fixed¶
- #1838 - Fixed job result to show latest not oldest.
- #1874 - Fixed Git repo sync issue with Sentinel with deprecated
rq_count
check.
Dependencies¶
- #2020 - Updated
celery >= 5.2.7
,django-jinja >= 2.10.2
, andmysqlclient >= 2.1.1
versions in lock file (patch updates).
Housekeeping¶
- #1977 - Updated Renovate config to batch updates (additional PRs included to further refine config).
v1.3.7 (2022-06-27)¶
Added¶
- #1900 - Added ability to filter Git repository table based on provided contents.
Changed¶
- #1645 - Hide search bar for unauthenticated users if
HIDE_RESTRICTED_UI
is True - #1946 - Increase character limit on
FileAttachment.mimetype
to 255 to allow for all mime types to be used.
Fixed¶
- #1677 - Fixed default values of custom fields on device components (such as Interface) not being applied upon Device creation.
- #1769 - Resolve missing menu 'General / Installed Plugins' in navbar if
HIDE_RESTRICTED_UI
is activated - #1836 - Fixed incorrect pre-population of custom field filters in table views.
- #1870 - Fixed cable
_abs_length
validation error.
Documentation¶
- #1941 - Fixed uWSGI config example, development environment links in Docker section of docs.
Housekeeping¶
- #1896 - Added Renovate Bot configuration, targeting
next
. - #1948 - Switched Renovate Bot configuration to bump lock-file only on patch releases instead of bumping in
pyproject.toml
.
v1.3.6 (2022-06-13)¶
Fixed¶
- #1409 - Fixed page title on device status (NAPALM) page template.
- #1524 - Fixed valid "None" option removed from search field upon display.
- #1649 - Changed the incorrect view permission (
circuits.view_vrf
toipam.view_vrf
) - #1750 - Fixed incorrect display of boolean value in Virtual Chassis display.
- #1759 - Fixed TypeError on webhook REST API PATCH.
- #1787 - Fix scheduled jobs failing when scheduled from REST API.
- #1841 - Fixed incorrect display of boolean values in Git Repository view.
- #1850 - Added
{{block.super}}
to negate the override from the js block in rack.html. This change fixed the issue of unable to navigate away from rack changelog tab.
Documentation¶
- #207 - Update permissions documentation to add assigning permissions section.
- #1763 - Job testing documentation updated to include details around enabling jobs. Job logs database added to
TransactionTestCase
. - #1856 - Updated links to Slack community.
- #1868 - Updated link to advanced Docker compose use in getting started guide.
Housekeeping¶
- #1829 - Change Docker build GitHub Action to cache with matrix awareness.
- #1848 - Fix Poetry cache issue in CI causing version tests to fail in
next
.
v1.3.5 (2022-05-30)¶
Security¶
Attention
PyJWT
- Nautobot does not directly depend on PyJWT
so your upgrading Nautobot via pip
or other package management tools may not pick up the patched version (we are not pinning this dependency). However some tools support an "eager" upgrade policy as an option. For example, pip install --upgrade --upgrade-strategy eager nautobot
will upgrade Nautobot and all it's dependencies to their latest compatible version. This may not work for all use cases so it may be safer to update Nautobot then perform pip install --upgrade PyJWT
.
Docker containers published with this build will have PyJWT upgraded.
- #1808 - Bump PyJWT from 2.3.0 to 2.4.0
Fixed¶
- #895 - Fixed validation when creating
Interface
andVMInterface
objects via the REST API while specifyinguntagged_vlan
withoutmode
also set in the payload. A 400 error will now be raised as expected. - #1289 - Fixed issue where job result live pagination would reset to page 1 on refresh. The currently selected page will now persist until the job run completes.
- #1290 - Fix NAPALM enable password argument for devices using the eos NAPALM driver.
- #1427 - Fix NoReverseMatch exception when related views for
action_buttons
don't exist. - #1428 - Fix IPAM prefix utilization sometimes showing greater than 100 percent for IPv4 prefixes.
- #1604 - Fix missing filter restriction enforcement on relationship association.
- #1771 - Fix exception raised for RelationshipAssociation when updating source.
- #1772 - Fix RelationshipAssociationSerializer not triggering model clean method.
- #1784 - Fix
nautobot-server dumpdata
not working due todjango_rq
update. Updated documentation.
Documentation¶
- #1606 - Added best practices for working with FilterSet classes to developer documentation.
- #1796 - Added documentation for using Git Repositories behind/via proxies.
Housekeeping¶
- #1805 - Fix git pre-commit hook incompatibility with dash shell and add warning on skipped tests.
- #1811 - Added developer Docker container for running mkdocs instead of locally.
- #1818 - Changed README.md to link to correct build status workflows.
v1.3.4 (2022-05-16)¶
Security¶
- #1715 - Add
SANITIZER_PATTERNS
optional setting andnautobot.utilities.logging.sanitize
function and use it for redaction of Job log entries.
Added¶
- #1766 - Added configuration for downloaded filename branding.
- #1752 - Added a new
SearchFilter
that is now used on all core filtersets to provide theq=
search parameter for basic searching in list view of objects.
Fixed¶
- #1263 - Rack device image toggle added back to detail UI.
- #1449 - Fixed a performance bug in
/api/dcim/devices/
and/api/virtualization/virtual-machines/
relating to configuration contexts. - #1652 - Unicode now renders correctly on uses of json.dumps and yaml.dump throughout the code base.
- #1712 - Fixed circuit termination detail view getting 500 response when it's a provider network.
- #1755 - Fixed "Select All" helper widget from taking full UI height.
Documentation¶
- #1744 - Updated REST API token provisioning docs to include added in version.
- #1751 - Updated secrets documentation advisory notes.
- #1761 - Fixed typo in upgrading documentation.
v1.3.3 (2022-05-02)¶
Added¶
- #1481 - Pre-Generate Docs, Add Support for Plugin-Provided Docs
- #1617 - Added
run_job_for_testing
helper method for testing Jobs in plugins, internally.
Changed¶
- #1481 - Docs link in footer now opens link to bundled documentation instead of Read the Docs.
Fixed¶
- #473 - Fix
get_return_url
for plugin reverse URLs. - #1430 - Fix not being able to print Job results, related IPs.
- #1503 - SSO users can no longer interact with or see the change password form.
- #1515 - Further fixes for slow/unresponsive jobs results display.
- #1538 - Fix incorrect page title alignment on the "Device Type Import" page.
- #1678 - Custom fields with 'json' type no longer raise TypeError when filtering on an object list URL
- #1679 - Fix a data migration error when upgrading to 1.3.x with pre-existing JobResults that reference Jobs with names exceeding 100 characters in length.
- #1692 - Fix duplicate tags in search list results.
- #1701 - Fix static file serving of drf-spectacular-sidecar assets when using alternative
STATICFILES_STORAGE
settings. - #1705 - Fix
NestedVMInterfaceSerializer
referencing the wrong model.
Dependencies¶
Documentation¶
- #1697 - Fix docs incorrectly stating Celery Redis URLs defaulting from CACHES.
Housekeeping¶
- #1685 - Fix Hadolint issue of
docker/Dockerfile
.
v1.3.2 (2022-04-22)¶
Security¶
Important
Critical CVEs in Django versions >= 3.2, < 3.2.13
. This update upgrades Django to 3.2.13
.
- #1686 - Implemented fixes for CVE-2022-28347 and CVE-2022-28346 to require Django >=3.2.13.
Added¶
- #1219 - Add ARM64 support (alpha).
Changed¶
- #1670 - Configure drf-spectacular schema to more closely match drf-yasg (related to: nautobot-ansible#135).
Fixed¶
- #1682 - Fixed Nautobot health checks failing if Redis Sentinel password is required.
Documentation¶
- #1426 - Added plugin development documentation around using ObjectListView.
- #1659 - Added some missing test/lint commands to the development getting-started documentation, and made
invoke cli
parameters matchinvoke start/stop
. - #1666 - Fixed errors in documentation with incomplete import statements.
- #1667 - Updated README.md screenshots.
Housekeeping¶
- #1674 - Added flag in Dockerfile, tasks.py to enable Poetry install parallelization.
v1.3.1 (2022-04-19)¶
Changed¶
- #1647 - Changed class inheritance of JobViewSet to be simpler and more self-consistent.
Fixed¶
- #1278 - Fixed several different errors that could be raised when working with RelationshipAssociations.
- #1662 - Fixed
nat_outside
prefetch on Device API view, and displaying multiplenat_outside
entries on VM detail view.
v1.3.0 (2022-04-18)¶
Added¶
- #630 - Added support for multiple NAT outside IP addresses.
- #872 - Added ability to scope tags to content types.
- #896 - Implemented support for Dynamic Groups objects.
- #897 - Added JSON type for custom fields.
- #1374 - Added REST API Token Provisioning. (Port of NetBox #6592 and subsequent fixes)
- #1465 - Implemented REST API versioning.
- #1525 - Implemented support for regex lookup expressions for
BaseFilterSet
filter fields in the API. - #1638 - Implemented numerous indexes on models natural lookup fields as well as some index togethers for
ObjectChange
.
Changed¶
- #595 - Migrated from
drf-yasg
(OpenAPI 2.0) todrf-spectacular
(OpenAPI 3.0) for REST API interactive Swagger documentation. - #792 - Poetry-installed dependencies are now identical between
dev
andfinal
images. - #1225 - Relaxed uniqueness constraint on Webhook creation, allowing multiple webhooks to send to the same target address so long as their content-type(s) and action(s) do not overlap.
- #1478 - ScheduledJob REST API endpoints now enforce
extras.approve_job
permissions as appropriate. - #1502 Finalized Dynamic Groups implementation for 1.3 release (including documentation and integration tests).
- #1521 - Consolidated Job REST API endpoints, taking advantage of REST API versioning.
Fixed¶
- #794 - Fixed health check issue when using Redis Sentinel for caching with Cacheops. The Redis health check backend is now aware of Redis Sentinel.
- #1311 - Fixed where it was not possible to set the rack height to
0
when performing a bulk edit of device types. - #1476 - Fixed a bug wherein a Job run via the REST API with a missing
schedule
would allowapproval_required
to be bypassed. - #1504 - Fixed an error that could be encountered when migrating from Nautobot 1.1 or earlier with JobResults with very long log entries.
- #1515 - Fix Job Result rendering performance issue causing Bad Gateway errors.
- #1562 - Fixed JobResult filter form UI pointing to the wrong endpoint.
- #1563 - Fixed UI crash when trying to execute Jobs provided by disabled plugins. A friendly error message will now be displayed.
- #1582 - Fixed a timing issue with editing a record while its custom field(s) are in the process of being cleaned up by a background task.
- #1632 - Fixed issue accessing request attributes when request may be None.
- #1637 - Fixed warnings logged during REST API schema generation.
Documentation¶
- #814 - Extended documentation for configuring Celery for use Redis Sentinel clustering.
- #1479 - Updated Jobs documentation regarding the concrete Job database model.
- #1556 - Cleaned up typos and formatting issues across docs, few code spots.
Housekeeping¶
- #1385 - Added MarkdownLint validation and enforcement to CI.
- #1417 - CI scope improvements for streamlined performance.
- #1516 - Fixed MySQL unit tests running in Docker environment and revised recommended MySQL encoding settings.
v1.3.0b1 (2022-03-11)¶
Added¶
- #5 - Added the option to perform a "dry run" of Git repository syncing.
- #330 - Added pre-/post-change data to WebHooks leveraging snapshots.
- #498 - Added custom-validator support to the RelationshipAssociation model.
- #724 - Added Provider Network data model. (Partially based on NetBox #5986.)
- #795 - Added ability to filter objects missing custom field values by using
null
. - #803 - Added a
render_boolean
template filter, which renders computed boolean values as HTML in a consistent manner. - #863 - Added the ability to hide a job in the UI by setting
hidden = True
in the Job's innerMeta
class. - #881 - Improved the UX of the main Jobs list by adding accordion style interface that can collapse/expand jobs provided by each module.
- #885 - Added the ability to define a
soft_time_limit
andtime_limit
in seconds as attributes of a Job'sMeta
. - #894 - Added the ability to view computed fields in an object list.
- #898 - Added support for moving a CustomField, Relationship or ComputedField from the main tab of an object's detail page in the UI to the "Advanced" tab.
- #1001 - Added Job database model and associated functionality.
- #1109 - Added pagination support for GraphQL list queries.
- #1255 - Added Python 3.10 support.
- #1350 - Added missing methods on Circuit Termination detail view.
- #1411 - Added concrete Job database model; added database signals to populate Job records in the database; added detail, edit, and delete views for Job records.
- #1457 - Added new Jobs REST API, added control logic to use JobModel rather than JobClass where appropriate; improved permissions enforcement for Jobs.
- #1470 - Added plugin framework for extending FilterSets and Filter Forms.
Changed¶
- #368 - Added
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. - #591 - All uses of
type()
are now refactored to useisinstance()
where applicable. - #880 - Jobs menu items now form their own top-level menu instead of a sub-section under the Extensibility menu.
- #909 - Device, InventoryItem, and Rack serial numbers can now be up to 255 characters in length.
- #916 - A
Job.Meta.description
can now contain markdown-formatted multi-line text. - #1107 - Circuit Provider account numbers can now be up to 100 characters in length.
- #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. - #1367 - Extracted Job-related models to submodule
nautobot.extras.models.jobs
; refined Job testing best practices.
Removed¶
- #1268 - Drop Support for Python 3.6.
Fixed¶
- #1440 - Handle models missing serializer methods, dependent from adding pre-/post-change data to WebHooks.
Dependencies¶
- #1277 - Updated Django dependency to 3.2.X LTS.
- #1307 - Updated various Python package dependencies to their latest compatible versions.
- #1321 - Updates to various browser package dependencies. This includes updating from Material Design Icons 5.x to 6.x, which has a potential impact on plugins: a small number of icons have been removed or renamed as a result of this change.
- #1391 - Updated Jinja2 dependency to 3.0.X.
- #1435 - Update to Selenium 4.X.