Nautobot v2.1¶
This document describes all new features and changes in Nautobot 2.1.
Release Overview¶
Added¶
Django Admin Log Entries (#4646)¶
Django Admin Log Entries record administrative changes made under the "Admin" section of the user interface. Changes (add/delete/update) to Objects like Users, Group, Object Permissions, etc. in the "Admin" user interface are now displayed as "Log Entries" under the "Administration" section of the Admin UI.
Info
Django Admin Log Entries are automatically created when administrative changes happen and have always existed natively in Django Admin. This feature is simply providing a read-only UI view for admin/privileged users to access them with more ease.
See Administrative Change-logging for more details.
External Integration Model (#4694)¶
A new ExternalIntegration
model has been added which provides a centralized store for data such as URLs and credentials that are used to access systems external to Nautobot. This information can then be used by jobs or apps to perform actions such as creating DNS records or updating configuration management tickets.
Home Page Panels Can Be Customized (#2149)¶
The panels displayed on the Nautobot home page have been modified to enable a more personalized user experience. Individual panels can now be collapsed, hiding the contents from view. Additionally, panels can be reordered by dragging and dropping the panels to the desired order.
Job File Outputs (#3352, #4820)¶
The Job
base class now includes a create_file(filename, content)
method which can be called by a Job to create a persistent file with the provided content when run. This file will be linked from the Job Result detail view for subsequent downloading by users, and can also be downloaded via the REST API (/api/extras/file-proxies/<id>/download/
) as desired.
The size of files Jobs can create via this method are constrained by the JOB_CREATE_FILE_MAX_SIZE
settings variable.
Info
The specific storage backend used to retain such files is controlled by the JOB_FILE_IO_STORAGE
settings variable. The default value of this setting uses the Nautobot database to store output files, which should work in all deployments but is generally not optimal and better alternatives may exist in your specific deployment. Refer to the documentation link above for more details.
Tip
Users must have permission to view
the extras > file proxy
object type in order to list and download files from the REST API.
Job JSONVar inputs (#4926)¶
Provides the ability to have native JSON data inputs for Jobs, this is provided by a multi-line text input on the Job form and the provided JSON data is serialized prior to passing to the run()
method of the Job.
UI/API isnull
Filter on Nullable Fields (#1905)¶
Models with nullable fields (i.e. model fields with null=True
) can now be filtered in the UI and the API with <field>__isnull=true/false
filters. These filters are automatically added to all appropriate fields.
Note
Model fields that have the value ""
(i.e. blank) will not match with __isnull=True
. Instead, they will match with __isnull=False
.
Changed¶
Data Exports as a System Job (#4745)¶
The data export functionality in all object list views (allowing export of all or a filtered subset of objects to CSV, YAML, and/or as defined by an ExportTemplate
) has been changed from a synchronous operation to an asynchronous background task, leveraging the new ExportObjectList
system Job. As a result, exports of thousands of objects in a single operation will no longer fail due to browser timeout.
Tip
Users now must have the run
action permission for extras > job
(specifically the nautobot.core.jobs.ExportObjectList
Job) in order to export objects, in addition to the normal view
permissions for the objects being exported.
Nautobot UI Reskin (#4677, #4765)¶
The Nautobot UI has been updated with a customized theme, giving it a brand new look. In addition, Nautobot's navigation bar has been moved from the top to the left.
Removed¶
Drop Support for Legacy PostgreSQL Versions (#4757)¶
Support for versions of PostgreSQL prior to 12.0 has been removed as these versions are no longer maintained and contain bugs that prevent migrations from running in certain scenarios. The nautobot-server migrate
or nautobot-server post_upgrade
commands will now abort when detecting an unsupported PostgreSQL version.
Remove HIDE_RESTRICTED_UI
Toggle (#4787)¶
Support for HIDE_RESTRICTED_UI
has been removed. UI elements requiring specific permissions will now always be hidden from users lacking those permissions. Additionally, users not logged in will now be automatically redirected to the login page.
v2.1.9 (2024-03-25)¶
Security¶
- #5450 - Updated
django
to~3.2.25
due toCVE-2024-27351
. - #5464 - Added requirement for user authentication to access the endpoint
/extras/job-results/<uuid:pk>/log-table/
; furthermore it will not allow an authenticated user to view log entries for a JobResult they don't otherwise have permission to view. (GHSA-m732-wvh2-7cq4) - #5464 - Added narrower permissions enforcement on the endpoints
/extras/git-repositories/<uuid:pk>/sync/
and/extras/git-repositories/<uuid:pk>/dry-run/
; a user who haschange
permissions for a subset of Git repositories is no longer permitted to sync or dry-run other repositories for which they lack the appropriate permissions. (GHSA-m732-wvh2-7cq4) - #5464 - Added narrower permissions enforcement on the
/api/dcim/connected-device/?peer_device=...&?peer_interface=...
REST API endpoint; a user who hasview
permissions for a subset of interfaces is no longer permitted to query other interfaces for which they lack permissions. (GHSA-m732-wvh2-7cq4) - #5464 - Added narrower permissions enforcement on all
<app>/<model>/<uuid>/notes/
UI endpoints; a user must now have the appropriateextras.view_note
permissions to view existing notes. (GHSA-m732-wvh2-7cq4) - #5464 - Added requirement for user authentication to access the REST API endpoints
/api/redoc/
,/api/swagger/
,/api/swagger.json
, and/api/swagger.yaml
. (GHSA-m732-wvh2-7cq4) - #5464 - Added requirement for user authentication to access the
/api/graphql
REST API endpoint, even whenEXEMPT_VIEW_PERMISSIONS
is configured. (GHSA-m732-wvh2-7cq4) - #5464 - Added requirement for user authentication to access the endpoints
/dcim/racks/<uuid>/dynamic-groups/
,/dcim/devices/<uuid>/dynamic-groups/
,/ipam/prefixes/<uuid>/dynamic-groups/
,/ipam/ip-addresses/<uuid>/dynamic-groups/
,/virtualization/clusters/<uuid>/dynamic-groups/
, and/virtualization/virtual-machines/<uuid>/dynamic-groups/
, even whenEXEMPT_VIEW_PERMISSIONS
is configured. (GHSA-m732-wvh2-7cq4) - #5464 - Added requirement for user authentication to access the endpoint
/extras/secrets/provider/<str:provider_slug>/form/
. (GHSA-m732-wvh2-7cq4)
Added¶
- #5464 - Added
nautobot.apps.utils.get_url_for_url_pattern
andnautobot.apps.utils.get_url_patterns
lookup functions. - #5464 - Added
nautobot.apps.views.GenericView
base class.
Changed¶
- #5464 - Added support for
view_name
andview_description
optional parameters when instantiating anautobot.apps.api.OrderedDefaultRouter
. Specifying these parameters is to be preferred over defining a customAPIRootView
subclass when defining App API URLs. - #5464 - Added requirement for user authentication by default on the
nautobot.apps.api.APIRootView
class. As a consequence, viewing the browsable REST API root endpoints (e.g./api/
,/api/circuits/
,/api/dcim/
, etc.) now requires user authentication.
Removed¶
- #5464 - Removed the URL endpoints
/api/users/users/my-profile/
,/api/users/users/session/
,/api/users/tokens/authenticate/
, and/api/users/tokens/logout/
as they are unused at this time.
Fixed¶
- #5413 - Updated Device "LLDP Neighbors" detail panel to handle LLDP neighbors with MAC address as port-id.
- #5423 - Fixed collapsable navbar for GraphiQL page
/graphql
. - #5423 - Fixed collapsable navbar for Admin page
/admin
. - #5423 - Fixed collapsable navbar for Django Rest Framework (DRF) page
/api/
. - #5423 - Improved footer responsiveness for certain media sizes.
- #5464 - Fixed a 500 error when accessing any of the
/dcim/<port-type>/<uuid>/connect/<termination_b_type>/
view endpoints with an invalid/nonexistenttermination_b_type
string. - #5466 - Remove duplicated location param in vlan table.
Dependencies¶
- #5296 - Fixed bug in pyproject.toml that added
coverage
as a nautobot dependency instead of a development dependency.
Documentation¶
- #5340 - Added installation documentation about recommended health-checks for Docker Compose and Kubernetes.
- #5464 - Updated example views in the App developer documentation to include
ObjectPermissionRequiredMixin
orLoginRequiredMixin
as appropriate best practices.
Housekeeping¶
- #1746 - Replaced
OrderedDict
instance innautobot/core/api/routers.py#21
with with a plaindict
instance. - #1746 - Replaced
OrderedDict
instance innautobot/dcim/models/racks.py#275
with a plaindict
instance. - #5435 - Added
--pattern
argument toinvoke unittest
. - #5435 - Added
--parallel-workers
argument toinvoke unittest
. - #5464 - Updated custom views in the
example_plugin
to use the newGenericView
base class as a best practice.
v2.1.8 (2024-03-18)¶
Added¶
- #1102 - Added
CELERY_BEAT_HEARTBEAT_FILE
settings variable. - #5228 - Added the option to configure and enforce
validation_minimum
andvalidation_maximum
as length constraints on a Custom Field of typeText
,URL
,JSON
,Markdown
,Selection
, orMultiple Selection
. - #5228 - Added the option to configure and enforce
validation_regex
as a constraint on valid choice definitions for a Custom Field of typeSelection
orMultiple Selection
. - #5400 - Added power-port/power-outlet types
IEC 60906-1
,2P+T 10A (NBR 14136)
, and2P+T 20A (NBR 14136)
. - #5401 - Added front/rear port types
LX.5
,LX.5/PC
,LX.5/UPC
, andLX.5/APC
. - #5402 - Added interface types
CXP (100GE)
,DSFP (100GE)
,SFP-DD (100GE)
,QSFP-DD (100GE)
,QSFP-DD (200GE)
,CFP2 (400GE)
,OSFP-RHS (400GE)
,CDFP (400GE)
,CPF8 (400GE)
,SFP+ (32GFC)
,SFP-DD (64GFC)
, andSFP+ (64GFC)
. - #5424 - Added
TemplateExtension.list_buttons()
API, allowing apps to register button content to be injected into object list views.
Changed¶
- #5403 - Changed uses of
functools.lru_cache
to use django-redis cache instead. - #5403 - Standardized cache key strings used with the django-redis cache.
Removed¶
- #5228 - Removed the hard-coded 255-character limit on custom fields of type
Text
.
Fixed¶
- #5247 - Fixed Job buttons do not respect the
task_queues
of the job class. - #5380 - Fixed incorrect permission for "Add Tenant" button in the navigation menu.
- #5380 - Added missing
extras.view_scheduledjob
permission to the "Job Approval Queue" navigation menu item. - #5395 - Fixed incorrect permission for "Roles" link in the navigation menu.
- #5403 - Fixed an issue with stale CustomField, ComputedField, Relationship, and TreeModel caches that caused incorrect data at times.
Documentation¶
- #5437 - Added release-note for version 1.6.15.
- #5421 - Added release-notes for versions 1.6.11 through 1.6.14.
Housekeeping¶
- #1102 - Added health check for Celery Beat based on it touching a file (by default
/tmp/nautobot_celery_beat_heartbeat
) each time its scheduler wakes up. - #3213 - Removed redundant filter tests for related boolean filters.
- #5434 - Fixed health check for beat container in
docker-compose.yml
underdocker-compose
v1.x.
v2.1.7 (2024-03-05)¶
Fixed¶
- #5387 - Fixed an error in the Dockerfile that resulted in
pyuwsgi
being installed without SSL support.
v2.1.6 (2024-03-04)¶
Security¶
- #5319 - Updated
cryptography
to 42.0.4 due to CVE-2024-26130. This is not a direct dependency so will not auto-update when upgrading. Please be sure to upgrade your local environment.
Added¶
- #5172 - Added Collapse Capable Side Navbar: Side Navbar is now able to be expanded and collapsed
- #5172 - Added Expandable Main Content: The Main Content part of the UI grows as the Side Navbar collapses and shrinks as the Side Navbar expands.
- #5172 - Added Better mobile friendly bottom navbar: This update will switch to vertically aligned bottom nav menu items once a certain media query is hit, making for a better mobile experience.
- #5172 - Added automatic Side Navbar collapse for mobile devices. This is based on media query and will trigger at specific width.
- #5329 - Added caching of
ChangeLoggedModelsQuery().as_queryset()
to improve performance when saving many objects in a change-logged context. - #5361 - Added
nautobot.core.testing.forms.FormTestCases
base class and added it tonautobot.apps.testing
as well.
Changed¶
- #5082 - Adjusted Edit / Create panels to occupy more page width on medium and large screens.
Fixed¶
- #4106 - Fixed inefficient query in VirtualMachine create form.
- #5172 - Fixed Brand Icon mouseover Background: Fix for mouseover effect on the Brand / Icon (was flashing white background vs being transparent) when in dark mode.
- #5307 - Fixed Custom Field form field(s) missing from git repository edit form.
- #5309 - Fixed
Tenant
UI detail view breadcrumb with invalidTenantGroup
filter link. - #5309 - Fixed
TenantGroup
UI detail view with invalid "add tenant" button invalidquery_params
link. - #5309 - Fixed
DeviceForm
invalidcluster
fieldquery_params
. - #5309 - Fixed
PrefixForm
invalidvlan
andvlan_group
fieldsquery_params
. - #5311 - Fixed dependencies in various migration files.
- #5332 - Fixed Docker image missing OS-level dependencies for SSO (SAML) support.
- #5334 - Fixed migration from 1.x failing when specific duplicate prefixes are present.
- #5343 - Fixed incorrect reference for
device.device_role
on the Rack detail view for non-racked device objects. - #5345 - Fixed intermittent 405 errors when using the Docker image with SAML authentication.
- #5346 - Fixed device LLDP view to work when interface names include a space.
- #5365 - Fixed
invalidate_max_depth_cache
itself calculatingmax_depth
on querysets without tree fields.
Documentation¶
- #4419 - Added documentation on
nautobot.apps
import locations. - #4419 - Added documentation about the supported public interfaces.
- #4419 - Removed some incorrect content from the documentation about nav menu changes that were reverted during 2.0 development.
- #4511 - Added documentation on how to correctly implement NautobotUIViewSet with custom views.
- #5284 - Added a quick overview of the most used models.
- #5311 - Added documentation on writing custom migrations.
- #5326 - Fixed simple typo in creating-location-types-and-locations.md.
- #5330 - Updated SSO documentation to include a view for presenting SAML metadata.
- #5345 - Added a note to the Nautobot installation documentation about the need to do
pip3 install --no-binary=pyuwsgi
in order to have SSL support inpyuwsgi
. - #5345 - Added a note to the SSO documentation about the need to do
pip3 install --no-binary=lxml
to avoid incompatibilities betweenlxml
andxmlsec
packages.
v2.1.5 (2024-02-21)¶
Security¶
- #5303 - Updated
cryptography
to 42.0.2 due to CVE-2024-0727. This is not a direct dependency so will not auto-update when upgrading. Please be sure to upgrade your local environment.
Added¶
- #5171 - Added
latest
andlatest-py<version>
tags to thenautobot
Docker images published for the latest stable release of Nautobot. - #5210 - Added
METRICS_AUTHENTICATED
setting to control authentication for the HTTP endpoint/metrics
. - #5243 - Added support for setting display_field on DynamicModelChoiceField to nested values in suggested choices list.
Changed¶
- #5171 - Changed the tagging of
nautobot-dev
Docker images to reserve thelatest
andlatest-py<version>
tags for the latest stable release of Nautobot, rather than the latest build from thedevelop
branch. - #5254 - Changed
TreeQuerySet.ancestors
implementation to a more efficient approach for shallow trees. - #5254 - Changed the location detail view not to annotate tree fields on its queries.
- #5267 - Updated navbar user dropdown with chevron.
Fixed¶
- #5058 - Changed more filter parameters from
location_id
tolocation
invirtualization/forms.py
. - #5121 - Fixed an issue where deleting a git repository resulted in a job result stuck in running state.
- #5186 - Fixed a case where an IPAddress created with a
host
andmask_length
would default to a nullip_version
. - #5267 - Fixed hover coloring after closing/reopening navbar dropdown.
- #5267 - Fixed button spacing when there are multiple buttons in navbar.
- #5283 - Fixed inconsistent ordering of IP addresses in various tables.
Documentation¶
- #3349 - Added annotations to document the importance of keeping the TIME_ZONE setting consistent on Nautobot web servers and Celery Beat servers.
- #5297 - Updated the low level application stack diagram to orient user traffic coming from the top.
Housekeeping¶
- #5267 - Reorganized navbar css rules in
base.css
.
v2.1.4 (2024-02-08)¶
Security¶
- #5251 - Updated
Django
dependency to 3.2.24 due to CVE-2024-24680.
Fixed¶
- #5254 - Fixed
TypeError
and similar exceptions thrown when rendering certain App data tables in v2.1.3.
Documentation¶
- #4778 - Added troubleshooting documentation for PostgreSQL databases with unsupported encoding settings.
Housekeeping¶
- #5240 - Changed test config to use
constance.backends.memory.MemoryBackend
to avoid intermittent failures in parallel tests.
v2.1.3 (2024-02-05)¶
Security¶
- #5151 - Updated
pillow
dependency to 10.2.0 due to CVE-2023-50447.
Added¶
- #4981 - Add serial types to InterfaceTypeChoices.
- #5012 - Added database indexes to the ObjectChange model to improve performance when filtering by
user_name
,changed_object
, orrelated_object
, and also bychanged_object
in combination withuser
oruser_name
. - #5169 - Added support for user session profiling via django-silk.
- #5178 - Added Navbar dropdown arrow rotation on open/close.
- #5178 - Added behavior of resetting navbar state when the "home" link is clicked.
Changed¶
- #5149 - Updated the Job List to show Job Hook Receiver and Job Button Receiver Jobs, which were previously being hidden from view.
- #5178 - Changed navbar dropdown link behavior to turn orange when active/clicked; state is saved.
- #5178 - Changed navbar dropdown link hover style.
- #5178 - Changed navbar state save to use session storage.
- #5178 - Changed navbar dropdown to use chevron icon instead of carets.
- #5178 - Aligned navbar dropdown icons to the right.
Removed¶
- #5178 - Removed unneeded tooltip of dropdown title.
- #5178 - Removed navbar dropdown links underlining.
Fixed¶
- #3664 - Fixed AssertionError when querying Date type custom fields in GraphQL.
- #4898 - Improved automatic query optimization when rendering object list views.
- #4898 - Optimized database queries to improve performance of
/api/ipam/prefixes/
and/api/ipam/vrfs/
REST API endpoints. - #5067 - Fixed missing search filter on ExternalIntegration.
- #5146 - Changed nav menu items to collapse in a smooth animated way, rather than jumping 100% open immediately and covering menu items below. Previously opened menu items now collapse smoothly as well.
- #5146 - Changed nav menu so that menu expansion now pushes other menus below it downward rather than covering them (z axis).
- #5146 - Changed nav menu headers to not lose their color after a link was clicked.
- #5146 - Added nav menu state (expanded or closed) and scroll position to local storage, allowing it to be maintained on page refresh, link clicked, or page reload.
- #5174 - Added missing postgresql public schema permission grant command.
- #5178 - Fixed navbar dropdown links alignment and spacing.
- #5198 - Fixed error in device and rack dropdowns when attempting to add an Interface to an InterfaceRedundancyGroup.
Dependencies¶
- #4821 - Updated
MarkupSafe
dependency to 2.1.5. - #4821 - Updated
mysqlclient
dependency to 2.2.3. - #4821 - Updated
python-slugify
dependency to 8.0.3. - #4821 - Updated
pyuwsgi
dependency to 2.0.23.
Housekeeping¶
- #4821 - Updated
mkdocs-section-index
documentation dependency to 0.3.8. - #4821 - Updated
ruff
development dependency to 0.1.15. - #5130 - Added experimental
--parallel
option toinvoke unittest
. - #5163 - Added
--parallel
flag toinvoke unittest
in CI. - #5163 - Fixed code coverage calculation when running
invoke unittest --parallel
. - #5163 - Changed
invoke unittest
andinvoke integration-test
to automatically report code coverage on successful completion. - #5163 - Changed test code coverage analysis to exclude the test code itself from the analysis.
- #5206 - Added q filter test for ExternalIntegration.
v2.1.2 (2024-01-22)¶
Security¶
- #5054 - Added validation of redirect URLs to the "Add a new IP Address" and "Assign an IP Address" views.
- #5109 - Removed
/files/get/
URL endpoint (for viewing FileAttachment files in the browser), as it was unused and could potentially pose security issues. - #5133 - Fixed an XSS vulnerability (GHSA-v4xv-795h-rv4h) in the
render_markdown()
utility function used to render comments, notes, job log entries, etc.
Added¶
- #3877 - Added global filtering to Job Result log table, enabling search across all pages.
- #5102 - Enhanced the
sanitize
function to also handle sanitization of lists and tuples of strings. - #5133 - Enhanced Markdown-supporting fields (
comments
,description
, Notes, Job log entries, etc.) to also permit the use of a limited subset of "safe" HTML tags and attributes.
Changed¶
- #5102 - Changed the
nautobot-server runjob
management command to check whether the requested user has permission to run the requested job. - #5102 - Changed the
nautobot-server runjob
management command to check whether the requested job is installed and enabled. - #5102 - Changed the
nautobot-server runjob
management command to check whether a Celery worker is running when invoked without the--local
flag. - #5131 - Improved the performance of the
/api/dcim/locations/
REST API.
Removed¶
- #5078 - Removed
nautobot-server startplugin
management command.
Fixed¶
- #4075 - Fixed sorting of Device Bays list view by installed device status.
- #4444 - Fixed Sync Git Repository requires non-matching permissions for UI vs API.
- #4998 - Fixed inability to import CSVs where later rows include references to records defined by earlier rows.
- #5024 - Improved performance of the Job Result list view by optimizing the way JobLogEntry records are queried.
- #5024 - Improved performance of the Device list view by including the manufacturer name in the table queryset.
- #5024 - Improved performance of most ObjectListViews by optimizing how Custom fields, Computed fields, and Relationships are queried.
- #5024 - Fixed a bug that caused IPAddress objects to query their parent Prefix and Namespace every time they were instantiated.
- #5024 - Improved performance of the IPAddress list view by including the namespace in the table queryset.
- #5024 - Updated bulk-edit and bulk-delete views to auto-hide any "actions" column in the table of objects being edited or deleted.
- #5031 - Updated the default sanitizer pattern to include secret(s) and to be flexible with python dictionaries.
- #5043 - Fixed early return conditional in
ensure_git_repository
. - #5045 - Adjusted Bootstrap grid breakpoints to account for the space occupied by the sidebar, fixing various page rendering.
- #5054 - Fixed missing search logic on the "Assign an IP Address" view.
- #5058 - Changed filter query parameters from
location_id
tolocation
invirtualization/forms.py
. - #5081 - Fixed core.tables.BaseTable to terminate dynamic queryset's building of pre-fetched fields upon first non-RelatedField of a column.
- #5095 - Fixed a couple of potential
KeyError
when refreshing Git repository Jobs. - #5095 - Fixed color highlighting of
error
andcritical
log entries when viewing a Job Result. - #5102 - Fixed missing log messages when errors occur during
Job.__call__()
initial setup. - #5102 - Fixed misleading "Job completed" message from being logged when a Job aborted.
- #5102 - Fixed an error in
nautobot-server runjob
if a job returned data other than a dict. - #5102 - Fixed misleading "SUCCESS" message when
nautobot-server runjob
resulted in any JobResult status other than "FAILED". - #5102 - Fixed incorrect JobResult data when using
nautobot-server runjob --local
orJobResult.execute_job()
. - #5111 - Fixed rack group and rack filtering by the location selected in the device bulk edit form.
Dependencies¶
- #5083 - Updated GitPython to version 3.1.41 to address Windows security vulnerability GHSA-2mqj-m65w-jghx.
- #5086 - Updated Jinja2 to version 3.1.3 to address to address XSS security vulnerability GHSA-h5c8-rqwp-cp95.
- #5133 - Added
nh3
HTML sanitization library as a dependency.
Documentation¶
- #5078 - Added a link to the
cookiecutter-nautobot-app
project in the App developer documentation.
Housekeeping¶
- #4906 - Added automatic superuser creation environment variables to docker development environment.
- #4906 - Updated VS Code Dev Containers configuration and documentation.
- #5076 - Updated
packaging
dependency to permit newer versions since it follows CalVer rather than SemVer. - #5079 - Increased overly-brief
start_period
for developmentnautobot
container to allow sufficient time for initial migrations to run. - #5079 - Fixed bug with invoke cli and invoke nbshell.
- #5118 - Updated PR template to encourage inclusion of screenshots.
v2.1.1 (2024-01-08)¶
Added¶
- #5046 - Updated the LocationType clone process to pre-populate the original object's parent, nestable and content type fields.
Changed¶
- #4992 - Added change-logging (ObjectChange support) for the ObjectPermission model.
Removed¶
- #5033 - Removed alpha UI from the main code base for now (it still exists in a prototype branch) to reduce the burden of maintaining its dependencies in the meantime.
- #5035 - Removed nodesource apt repository from Dockerfile.
Fixed¶
- #4606 - Fixed an error when attempting to "Save Changes" to an existing GraphQL saved query via the GraphiQL UI.
- #4606 - Fixed incorrect positioning of the "Save Changes" button in the "Queries" menu in the GraphiQL UI.
- #4606 - Fixed incorrect specification of the "variables" field in the GraphQL saved query REST API.
- #4606 - Fixed a display glitch in the detail view for GraphQL saved queries.
- #5005 - Fixed missing schema field in config context create/edit forms.
- #5020 - Fixed display of secrets when editing a SecretsGroup.
Documentation¶
- #5019 - Updated the documentation on the usage of the
nautobot-server runjob
management command. - #5023 - Fixed some typos in the 2.1.0 release notes.
- #5027 - Fixed typo in Device Redundancy Group docs.
- #5044 - Updated the documentation on
nautobot_database_ready
signal handlers with a warning.
Housekeeping¶
- #5039 - Updated
ruff
development dependency to~0.1.10
. - #5039 - Removed
black
andflake8
as development dependencies as they're fully replaced byruff
now. - #5039 - Removed
black
andflake8
steps from CI. - #5039 - Enabled
DJ
Ruff rules (flake8-django
) and addressed all warnings raised. - #5039 - Enabled
PIE
Ruff rules except forPIE808
(flake8-pie
) and addressed all warnings raised. - #5039 - Enabled
RUF
Ruff rules except forRUF012
and addressed all warnings raised. - #5039 - Enabled remaining
S
Ruff rules (flake8-bandit
) and addressed all warnings raised. - #5049 - Fixed an intermittent timing-related failure in
DynamicGroupModelTest.test_member_caching_enabled
test case. - #5053 - Removed reference to develop-1.6 branch in CI workflow.
- #5055 - Enabled
I
Ruff rules (isort
) and addressed all warnings raised. - #5055 - Removed
isort
as a development dependency as it's fully replaced byruff
now.
v2.1.0 (2023-12-22)¶
Security¶
- #4988 - Fixed missing object-level permissions enforcement when running a JobButton (GHSA-vf5m-xrhm-v999).
- #4988 - Removed the requirement for users to have both
extras.run_job
andextras.run_jobbutton
permissions to run a Job via a Job Button. Onlyextras.run_job
permission is now required. - #5002 - Updated
paramiko
to3.4.0
due to CVE-2023-48795. As this is not a direct dependency of Nautobot, it will not auto-update when upgrading. Please be sure to upgrade your local environment.
Added¶
- #2149 - Added customizable panels on the homepage.
- #4708 - Added VRF to interface bulk edit form.
- #4757 - Added system check for minimum PostgreSQL version.
- #4893 - Added reverse capability from
IPAddress
to the custom through tableIPAddressToInterface
. - #4895 - Added
http_method
,headers
, andca_file_path
fields, as well asrender_headers
,render_extra_config
, andrender_remote_url
APIs, to theExternalIntegration
model. - #4926 - Added support for a JSONVar in Nautobot Jobs.
- #4942 - Added DynamicRoute() to NautobotUIViewSet to support custom actions.
- #4965 - Added MMF OM5 cable type to cable type choices.
- #4973 - Created convenience methods to access Git with and without secrets.
- #4984 - Added
JOB_CREATE_FILE_MAX_SIZE
setting. - #4989 - Added a link to the Advanced tab on detail views to easily open the object in the API browser.
Changed¶
- #4884 - Added Bootstrap tooltips for all HTML elements with a
title
attribute. - #4888 - Moved username and user actions menu from the top of the nav bar to the bottom.
- #4896 - Updated UI colors to match updated Nautobot branding guidelines.
- #4897 - Changed screenshots in docs to reflect UI changes.
- #4961 - Widened left navigation menu and made longer menus truncate instead of overflowing into the next line.
- #4961 - Inserted a divider in between the standard navigation menus and the user menu at the bottom.
- #4996 - Changed the order and help text of fields in the External Integration create and edit forms.
- #5003 - Updated gifs to showcase new Nautobot 2.1 interface.
Removed¶
- #4757 - Dropped support for PostgreSQL versions before 12.0.
- #4988 - Removed redundant
/extras/job-button/<uuid>/run/
URL endpoint; Job Buttons now use/extras/jobs/<uuid>/run/
endpoint like any other job.
Fixed¶
- #4620 - Ensure UI build directory is created on init of nautobot-server.
- #4627 - Fixed JSON custom field being returned as a
repr()
string when using GraphQL. - #4834 - Fixed display of custom field choices when editing a CustomField.
- #4834 - Fixed display of child groups when editing a DynamicGroup.
- #4835 - Fixed incorrect (too dark) color for disabled text fields in forms.
- #4835 - Fixed incorrect (too low contrast) color for text fields and select menus in forms in dark theme.
- #4917 - Improved performance of location hierarchy HTML template.
- #4961 - Fixed bug in dark mode where the left navigation menu top level items would turn white when losing focus.
- #4968 - Fixed some cases in which the
ipam.0025
data migration might throw an exception due to invalid data. - #4977 - Fixed early return conditional in
ensure_git_repository
.
Documentation¶
- #4735 - Documented Django Admin Log Entries in v2.1 Release Overview.
- #4736 - Documented
isnull
filter expression in v2.1 Release Overview. - #4766 - Updated documentation for registering tab views.
- #4984 - Fixed up docstrings for a number of Job-related classes and methods.
Housekeeping¶
- #4647 - Added DeviceFactory.
- #4896 - Added
/theme-preview/
view (only whensettings.DEBUG
is enabled) to preview various UI elements and layouts. - #4942 - Added example of a custom action on a NautobotUIViewSet to the Example App.
- #4988 - Fixed some bugs in
example_plugin.jobs.ExampleComplexJobButtonReceiver
.
v2.1.0-beta.1 (2023-11-30)¶
Added¶
- #1905 - Added the ability to automatically apply
isnull
filters when model field is nullable. - #1905 - Enhanced
status
filters to support filtering by ID (UUID) as an alternative to filtering byname
. - #3352 - Added
Job.create_file()
API andJOB_FILE_IO_STORAGE
configuration setting. - #3994 - Added "Data Provenance" section to the Advanced tab in ObjectDetailView to display the user that created and last updated the object.
- #4272 - Added bulk edit and bulk destroy views to Namespaces.
- #4646 - Added read-only view in admin panel for Django admin log entries.
- #4694 - Added
ExternalIntegration
model to track connections to systems external to Nautobot. - #4745 - Added
ExportObjectList
system Job. - #4750 - Added "copy" button support to titles of all object retrieve views.
- #4750 - Added support for
BRANDING_FILEPATHS["header_bullet"]
to customize the view header appearance. - #4765 - Added support for
BRANDING_FILEPATHS["nav_bullet"]
to customize the nav menu appearance. - #4796 - Added InterfaceRedundancyGroupAssociation to GraphQL.
- #4796 - Added IPAddressToInterface to GraphQL.
- #4796 - Added VRFDeviceAssignment to GraphQL.
- #4796 - Added VRFPrefixAssignment to GraphQL.
- #4820 - Added listing of related
files
to the/api/extras/job-results/
REST API. - #4820 - Added read-only REST API for the FileProxy model (files generated by a Job run), including a
/download/
endpoint for downloading the file content.
Changed¶
- #4677 - Updated and customized nautobot UI bootstrap theme with LESS variables.
- #4745 - Changed object export (CSV, YAML, export-template) to run as a background task, avoiding HTTP timeouts when exporting thousands of objects in a single operation.
- #4750 - Refined CSS to Nautobot Bootstrap UI.
- #4765 - Moved navbar to the left.
- #4786 - Lightened table row background color in dark mode.
- #4808 - Make NavItem link text margin-right slightly larger.
Removed¶
- #4765 - Removed "Import" buttons from navbar dropdown menus.
- #4787 - Removed support for
HIDE_RESTRICTED_UI
. UI elements requiring specific permissions will now always be hidden from users lacking those permissions. Additionally, users not logged in will now be automatically redirected to the login page.
Fixed¶
- #4646 - Fixed a bug in
ObjectPermission
whereusers.user
permissions could not be created. - #4786 - Fixed default button background color in dark mode.
- #4818 - Fixed various inconsistencies with UI reskin in dark mode.
- #4862 - Fixes issues with uninstalled apps & lingering contenttypes referenced in changelog.
- #4882 - Fixed a regression in the rendering of the Jobs table view.