Nautobot v1.6¶
This document describes all new features and changes in Nautobot 1.6.
Release Overview¶
Added¶
Custom Field "Markdown" Type (#4006)¶
A new Custom Field type, "Markdown", has been added. Custom fields of this type can store Markdown-formatted text which will be rendered in the web UI.
Caching of Dynamic Groups and Content Types (#4092)¶
APIs have been added to allow for caching of the results of looking up an object's content-type or Dynamic Group memberships, as well as for looking up the members of a Dynamic Group itself. These caches are disabled by default but can be enabled by configuring the DYNAMIC_GROUPS_MEMBER_CACHE_TIMEOUT and CONTENT_TYPE_CACHE_TIMEOUT settings respectively. Apps (plugins) that make use of dynamic groups should review the documentation for the APIs to determine how and when to make use of the cache for improved performance.
Interface Redundancy Group (#2825)¶
Interface Redundancy Group model and related views have been added to allow logical grouping of multiple interfaces under a specific interface redundancy protocol (HSRP, VRRP, CARP, and etc).
Installation Metrics (#4047)¶
A new setting, INSTALLATION_METRICS_ENABLED, has been added to allow Nautobot to send anonymous installation metrics to the Nautobot maintainers. This setting is True by default but can be changed in nautobot_config.py or the NAUTOBOT_INSTALLATION_METRICS_ENABLED environment variable.
If the INSTALLATION_METRICS_ENABLED setting is True, running the post_upgrade or send_installation_metrics management commands will send a list of all installed apps and their versions, as well as the currently installed Nautobot and Python versions, to the Nautobot maintainers. A randomized UUID will be generated and saved in the DEPLOYMENT_ID setting to anonymously and uniquely identify each installation. The plugin names will be one-way hashed with SHA256 to further anonymize the data sent. This enables tracking the installation metrics of publicly released apps without disclosing the names of any private apps.
The following is an example of the data that is sent:
{
"deployment_id": "1de3dacf-f046-4a98-8d4a-17419080db79",
"nautobot_version": "1.6.0b1",
"python_version": "3.10.12",
"installed_apps": {
# "example_plugin" hashed by sha256
"3ffee4622af3aad6f78257e3ae12da99ca21d71d099f67f4a2e19e464453bee7": "1.0.0"
},
"debug": true
}
Platform.network_driver and related fields (4136)¶
The Platform model has been enhanced to include a network_driver database field and a network_driver_mappings derived property based on the netutils library. For example, if you set a Platform to have a network_driver value of "cisco_ios", the platform.network_driver_mappings property will return a dictionary containing ansible, hier_config, napalm, netmiko, ntc_templates, pyats, pyntc, and scrapli keys corresponding to this entry. These properties can be referenced via the REST API and GraphQL to assist in developing and maintaining Apps, Jobs, or third-party code that interact with devices by using any of these libraries.
If the default derivations provided by netutils are not suitable for your purposes, you can extend or override them by configuring the NETWORK_DRIVERS system setting.
Python 3.11 Support (#3561)¶
Nautobot 1.6.0 formally adds support for installation and operation under Python 3.11.
Changed¶
Additional HIDE_RESTRICTED_UI Effects for Unauthenticated Users (#3646)¶
When HIDE_RESTRICTED_UI is enabled, unauthenticated users are no longer able to view the OpenAPI (Swagger) UI, the GraphiQL UI, or any configured top/bottom banners. Additionally, the page footer on the login page will not display the Nautobot server hostname in this case.
Increased Device.asset_tag maximum length (#3693)¶
The maximum length of the Device.asset_tag field has been increased from 50 to 100 characters.
Changed Default Python Version for Docker Images (#4029)¶
The default Python version for Nautobot Docker images has been changed from 3.7 to 3.11.
Removed¶
Removed Python 3.7 Support (#3561)¶
As Python 3.7 has reached end-of-life, Nautobot 1.6 and later do not support installation or operation under Python 3.7.
v1.6.5 (2023-11-13)¶
Security¶
- #4671 - Updated
urllib3to 2.0.7 due to CVE-2023-45803. This is not a direct dependency so it will not auto-update when upgrading. Please be sure to upgrade your local environment. - #4748 - Updated
Djangominimum version to 3.2.23 to protect against CVE-2023-46695.
Added¶
- #4649 - Added
device_redundancy_groupsfield toConfigContextSerializer.
Fixed¶
- #4645 - Fixed a bug where the
failover-strategyfield was required for the device redundancy group API. - #4686 - Fixed incorrect tagging of 1.6.x Docker
nautobot-devimages aslatest. - #4718 - Fixed bug in which a device's device redundancy group priority was not being set to
Nonewhen the device redundancy group was deleted. - #4728 - Fixed bug with JobResultFilterSet and ScheduledJobFilterSet using
django_filters.DateTimeFilterfor only exact date matches. - #4733 - Fixed the bug that prevents retrieval of IPAddress using its address args if it was created using
hostandprefix_length.
Documentation¶
- #4700 - Removed incorrect
NAUTOBOT_DYNAMIC_GROUPS_MEMBER_CACHE_TIMEOUTenvironment variable reference from settings documentation.
Housekeeping¶
- #4638 - Renamed
ltm/1.6branch toltm-1.6.
v1.6.4 (2023-10-17)¶
Added¶
- #4361 - Added
SUPPORT_MESSAGEconfiguration setting. - #4573 - Added caching for
displayproperty ofLocationandLocationType, mitigating duplicated SQL queries in the related API views.
Changed¶
- #4313 - Updated device search to include manufacturer name.
Removed¶
- #4595 - Removed
stabletagging for container builds in LTM release workflow.
Housekeeping¶
- #4619 - Fixed broken links in Nautobot README.md.
v1.6.3 (2023-10-03)¶
Security¶
- #4446 - Updated
GitPythonto3.1.36to addressCVE-2023-41040.
Added¶
- #3372 - Added ObjectPermission constraints check to
pre_migratemanagement command.
Fixed¶
- #4396 - Fixed rack form silently dropping custom field values.
Housekeeping¶
- #4587 - Fixed
release.ymlandpre-release.ymlworkflow files to targetci_integration.ymlin its own branch. - #4587 - Enforced changelog requirement in
ci_pullrequest.ymlforltm/1.6.
v1.6.2 (2023-09-01)¶
Added¶
- #3913 - Added
urlfield to GraphQL objects. - #4316 - Added management command
nautobot-server populate_platform_network_driverto help update thePlatform.network_driverfield in bulk.
Changed¶
- #3212 - Updated Dynamic Group field filter/child group exclusivity error to be more noticeable.
- #3949 - Moved DynamicGroup
clean_filter()call fromclean()toclean_fields(), which has the impact that it will still be called byfull_clean()andvalidated_save()but no longer called on a simpleclean(). - #4216 - Changed the rendering of
TagFilterFieldto prevent very slow rendering of pages when large numbers of tags are defined. - #4217 - Added a restriction that two Git repositories with the same
remote_urlcannot overlap in theirprovided_contents, as such cases are highly likely to introduce data conflicts.
Fixed¶
- #3949 - Fixed a ValueError when editing an existing DynamicGroup that has invalid
filterdata. - #3949 - Fixed
DynamicGroup.clean_fields()so that it will respect anexclude=["filter"]kwarg by not validating thefilterfield. - #4262 - Fixed warning message when trying to use bulk edit with no items selected.
Documentation¶
- #3289 - Added documentation on factory data caching.
- #4201 - Added docs for
InterfaceRedundancyGroup.
Housekeeping¶
- #4317 - Added tests for GraphQL url field.
- #4331 - Added a "housekeeping" subsection to the release-notes via
towncrier.
v1.6.1 (2023-08-21)¶
Changed¶
- #4242 - Changed behavior of
devandfinal-devDocker images to disable installation metrics by default.
Fixed¶
- #4093 - Fixed dependencies required for saml support missing in final docker image.
- #4149 - Fixed a bug that prevented renaming a
Rackif it contained any devices whose names were not globally unique. - #4241 - Added a timeout and exception handling to the
nautobot-server send_installation_metricscommand.
Documentation¶
- #4256 - Introduced new
mkdocssetting oftabbed. - #4256 - Updated docs at
nautobot/docs/installation/nautobot.mdandnautobot/docs/installation/http-server.mdto adopt tabbed interfaces. - #4258 - Re-enabled copy-to-clipboard button in mkdocs theme.
Housekeeping¶
- #4028 - Fixed CI integration workflow to publish 'final-dev', and build only
finalimages. - #4028 - Fixed CI integration workflow
set-outputwarnings. - #4242 - Changed
development/nautobot_config.pyto disable installation metrics for developer environments by default.
v1.6.0 (2023-08-08)¶
Added¶
- #4169 - Added environment variable
NAUTOBOT_SESSION_EXPIRE_AT_BROWSER_CLOSEto set theSESSION_EXPIRE_AT_BROWSER_CLOSEDjango setting which expires session cookies when the user closes their browser.
Fixed¶
- #3985 - Added error handling in
JobResult.log()for the case where an object'sget_absolute_url()raises an exception. - #3985 - Added missing
get_absolute_url()implementation onCustomFieldChoicemodel. - #4175 - Changed custom field clean to not populate null default values.
- #4204 - Fixed failing Apps CI by downgrading
jsonschema<4.18. - #4205 - Fixed failing Apps CI due to missing dependency of
toml. - #4222 - Fixed a bug in which
JobChoiceVarscould sometimes get rendered incorrectly in the UI as multiple-choice fields.
Dependencies¶
- #4208 - Updated django-rq to 2.8.1.
- #4209 - Relaxed constraint on prometheus-client minimum version to
0.14.1. - #4173 - Updated
drf-spectacularto0.26.4. - #4199 - Updated
cryptographyto~41.0.3. As this is not a direct dependency of Nautobot, it will not auto-update when upgrading. Please be sure to upgrade your local environment. - #4215 - Broadened the range of acceptable
packagingdependency versions.
Documentation¶
- #4184 - Added documentation detailing rack power utilization calculation.
v1.6.0-rc.1 (2023-08-02)¶
Added¶
- #2825 - Added InterfaceRedundancyGroup and related views, forms, filtersets and table.
- #3269 - Added ability to cache
DynamicGroupmemberships in Redis to improve reverse lookup performance. - #3269 - Added ability to cache
ContentTypelookups in Redis to improve performance. - #3561 - Added support for Python 3.11.
- #4006 - Added Markdown custom field type.
- #4044 - Added ability to use
@action(detail=True)decorator for registering additional non-standardGETviews to aNautobotUIViewSet. - #4047 - Added ability for Nautobot to send installation metrics.
- #4136 - Added
network_driverdatabase field to thePlatformmodel. - #4136 - Added
network_driver_mappingsderived attribute on thePlatformmodel. - #4136 - Added
CONSTANCE_DATABASE_CACHE_BACKEND = 'default'tosettings.py, which should improve performance a bit. - #4136 - Added support for
NETWORK_DRIVERSconfig setting to override or extend default network driver mappings fromnetutilslibrary. - #4161 - Enhanced
NautobotUIViewSetto allow Create and Update methods to have their own form classes.
Changed¶
- #3646 - Redirect unauthenticated users on all views to login page if
HIDE_RESTRICTED_UIis True. - #3646 - Only time is shown on the footer if a user is unauthenticated and
HIDE_RESTRICTED_UIis True. - #3693 - Increased Device model's
asset_tagsize limit to 100. - #4029 - Changed default Python version for Docker images from 3.7 to 3.11.
Removed¶
- #3561 - Dropped support for Python 3.7. Python 3.8 is now the minimum version required by Nautobot.
- #3561 - Removed direct dependency on
importlib-metadata. - #3561 - Removed direct dependency on
pycryptodomeas Nautobot does not currently use this library and hasn't for some time.
Fixed¶
- #4178 - Fixed JSON serialization of overloaded/non-default FilterForm fields on Dynamic Groups.
Dependencies¶
- #3561 - Updated
celerydependency to~5.3.1. - #3561 - Updated
django-auth-ldapoptional dependency to~4.3.0. - #3561 - Updated
django-cacheopsdependency to~6.2. - #3561 - Updated
django-celery-beatdependency to~2.5.0. - #3561 - Updated
django-constancedependency to~2.9.1. - #3561 - Updated
django-cors-headersdependency to~4.2.0. - #3561 - Updated
django-cryptographydependency to~1.1. Note that this dependency will be removed in Nautobot 2.0. - #3561 - Updated
django-extensionsdependency to~3.2.3. - #3561 - Updated
django-filterdependency to~23.1. - #3561 - Updated
django-health-checkdependency to~3.17.0 - #3561 - Updated
django-prometheusdependency to~2.3.1. - #3561 - Updated
django-redisdependency to~5.3.0. - #3561 - Updated
django-storagesoptional dependency to~1.13.2. - #3561 - Updated
django-tables2dependency to~2.6.0. - #3561 - Updated
django-taggitdependency to~4.0.0. - #3561 - Updated
django-timezone-fielddependency to~5.1. - #3561 - Updated
django-tree-queriesdependency to~0.15.0. - #3561 - Updated
drf-spectaculardependency to~0.26.3. - #3561 - Updated
graphene-djangodependency to~2.16.0. - #3561 - Updated
Jinja2dependency to~3.1.2. - #3561 - Updated
jsonschemadependency to permit versions up to 4.18.x. Note that versions back to 4.7.0 are still permitted, so this dependency may not necessarily auto-upgrade when updating Nautobot. - #3561 - Updated
MarkupSafedependency to~2.1.3. - #3561 - Updated
mysqlclientoptional dependency to~2.2.0. - #3561 - Updated
napalmoptional dependency to~4.1.0. Note that as a result of this update, the following indirect package dependencies are no longer included by default when installing Nautobot with NAPALM:ciscoconfparse,dnspython,loguru,passlib,tenacity,toml,win32-setctime. - #3561 - Updated
packagingdependency to~23.1. - #3561 - Updated
Pillowdependency to~10.0.0. - #3561 - Updated
prometheus-clientdependency to~0.17.1. - #3561 - Updated
social-auth-coreoptional dependency to~4.4.2. - #3561 - Updated
social-auth-app-djangodependency to~5.2.0. - #3561 - Updated various development-only dependencies to the latest available versions.
Documentation¶
- #4118 - Added documentation for troubleshooting integration test failures via VNC.