Nautobot v1.1¶
This document describes all new features and changes in Nautobot 1.1.
If you are a user migrating from NetBox to Nautobot, please refer to the "Migrating from NetBox" documentation.
Release Overview¶
Added¶
Computed Fields (#4)¶
Computed fields offers users the ability to create read-only custom fields using existing data already stored in the database. Users define Jinja2 templates that populate the value of these fields. Computed fields are available on all data models that currently support custom fields.
Config Context JSON Schemas (#274)¶
While config contexts allow for arbitrary data structures to be stored within Nautobot, at scale it is desirable to apply validation constraints to that data to ensure its consistency and to avoid data entry errors. To service this need, Nautobot supports optionally backing config contexts with JSON Schemas for validation. These schema are managed via the config context schema model and are optionally linked to config context instances, in addition to devices and virtual machines for the purpose of validating their local context data. Please see the docs for more details.
Just like config contexts, config context JSON schemas can optionally be managed via a Git repository.
Dynamic Navigation Menus (#12)¶
Applications and plugins can now define tabs, groups, items and buttons in the navigation menu. Using navigation objects a developer can add items to any section of the navigation using key names and weight values. Please see Application Registry for more details.
MySQL Database Support (#17)¶
MySQL 8.x is now fully supported as a database backend!
The installation and configuration guides have been revised to include MySQL. If you prefer MySQL or it is more easily supported in your environment, configuring Nautobot to use MySQL is as easy as changing value of ENGINE
in your DATABASES
setting to point to django.db.backends.mysql
and installing the MySQL Python driver using pip3 install nautobot[mysql]
.
A new NAUTOBOT_DB_ENGINE
environment variable has been added to allow for specifying the desired database engine at runtime without needing to modify your nautobot_config.py
. Please see the configuration guide on DATABASES
for more details on how to configure Nautobot to use MySQL.
Please see the MySQL setup guides to get started.
Plugin Defined Jinja2 Filters¶
Plugins can now define custom Jinja2 filters to be used when rendering templates defined within computed fields or custom links. To register your own filters, you may add a jinja_filters.py
to your plugin and any filters defined there will be automatically registered and globally usable.
Please see the plugin development documentation on including Jinja2 filters to get started.
Read Only Jobs (#200)¶
Jobs may be optionally marked as read only by setting the read_only = True
meta attribute. This prevents the job from making any changes to nautobot data and suppresses certain log messages. Read only jobs can be a great way to safely develop new jobs, and for working with reporting use cases. Please see the Jobs documentation for more details.
Saved GraphQL Queries (#3)¶
Saved GraphQL queries offers a new model where reusable queries can be stored in Nautobot. New views for managing saved queries are available; additionally, the GraphiQL interface has been augmented to allow populating the interface from a saved query, editing and saving new queries.
Saved queries can easily be imported into the GraphiQL interface by using the new navigation tab located on the right side of the navbar. Inside the new tab are also buttons for editing and saving queries directly into Nautobot's databases.
Additionally, two new GraphQL utility functions have been added to allow easy access to the GraphQL system from source code. Both functions can be imported from nautobot.core.graphql
:
execute_query()
: Runs string as a query against GraphQL.execute_saved_query()
: Execute a saved query from Nautobot database.
Changed¶
Background Tasks now use Celery (#223)¶
Celery has been introduced to eventually replace RQ for executing background tasks within Nautobot. All Nautobot core usage of RQ has been migrated to use Celery.
Note
Custom background tasks implemented by plugins are not part of Nautobot core functions
Prior to version 1.1.0, Nautobot utilized RQ as the primary background task worker. As of Nautobot 1.1.0, RQ is now deprecated. RQ and the @job
decorator for custom tasks are still supported for now, but will no longer be documented, and support for RQ will be removed in a future release.
RQ support for custom tasks was not removed in order to give plugin authors time to migrate, however, to continue to utilize advanced Nautobot features such as Git repository synchronization, webhooks, jobs, etc. you must migrate your nautobot-worker
deployment from RQ to Celery.
Please see the section on migrating to Celery from RQ for more information on how to easily migrate your deployment.
Warning
If you are running plugins that use background tasks requiring the RQ worker, you will need to run both the RQ and Celery workers concurrently until the plugins are converted to use the Celery worker. See the Migrating to Celery from RQ for details.
Fixed¶
HTTP "Remote end closed connection" errors (#725)¶
The example uwsgi.ini
provided in earlier versions of the Nautobot documentation was missing a recommendation to include the configuration http-keepalive = 1
which enables support for HTTP/1.1 keep-alive headers.
Warning
If you are upgrading from an earlier version of Nautobot (including 1.1.0) you should check your uwsgi.ini
and ensure that it contains this important configuration line.
v1.1.6 (2021-12-03)¶
Fixed¶
- #1093 - Improved REST API performance by adding caching of serializer "opt-in fields".
v1.1.5 (2021-11-11)¶
Security¶
- #998 - Update
mkdocs
dependency to avoid a potential path-traversal vulnerability; note that mkdocs is only used in development and is not a production deployment dependency of Nautobot.
Added¶
- #931 - Added support for direct upload of CSV files as an alternative to copy-pasting CSV text into a form field. (Partially based on NetBox #6561)
- #989 - Added
id
andname
fields toNestedJobResultSerializer
for the REST API.
Fixed¶
- #555 - Fixed
Status.DoesNotExist
duringnautobot-server loaddata
. - #567 - Fixed incorrect GraphQL schema generation for
_custom_field_data
when certain plugins are installed. - #733 - A Job erroring out early in initialization could result in its associated JobResult staying in Pending state indefinitely.
- #816 - Fixed
AttributeError
reported when viewing a Rack with certain associated power configurations. - #981 - Fixed incorrect handling of missing custom fields in the
fix_custom_fields
management command. - #986 - Fixed
TemplateDoesNotExist
exception when running a Job containing aFileVar
variable. - #991 - Fixed incorrect logging when importing ConfigContextSchemas from Git.
- #993 - Fixed incorrect
git
command when refreshing a previously checked out repository.
Documentation¶
- #263 - Added a link in the Docker deployment guide to the Nautobot Docker Compose repository.
- #948 - Fixed advanced logging example to use
EXTRA_MIDDLEWARE
instead ofMIDDLEWARE.append()
. - #970 - Clarified documentation around config context definition in Git repositories.
- #954 - Added documentation for migrating from PostgreSQL to MySQL, improved documentation as to recommended MySQL database configuration.
- #1023 - Removed invalid link in "Deploying Nautobot" documentation.
- #1025 - Added reference documentation for how to hide navigation menu items with no permissions.
- #1031 - Added a troubleshooting note around the combination of RedHat/CentOS, uWSGI, and static files.
Housekeeping¶
- #953 - Added option to use MySQL in the docker-compose development environment
- #1019 - Added GitHub action to redeploy the Nautobot sandbox on pushes to
main
,develop
, andnext
. - #1057 - Added GitHub action to automatically push Docker images to
ghcr.io
.
v1.1.4 (2021-10-04)¶
Security¶
- #939 - Nautobot views now default to
X-Frame-Options: DENY
rather thanX-Frame-Options: SAMEORIGIN
, with the exception of the rack-elevation API view (/api/dcim/rack-elevation/
) which specifically requiresX-Frame-Options: SAMEORIGIN
for functional reasons.
Added¶
- #623 - Git repository sync logs now include the commit hash that was synchronized to.
- #728 - Added
SOCIAL_AUTH_BACKEND_PREFIX
configuration setting to support custom authentication backends. - #861 - Bulk editing of devices can now update their site, rack, and rack-group assignments.
Fixed¶
- #944 - Jobs that commit changes to the database could not be invoked successfully from the
nautobot-server runjob
command. - #955 - REST API endpoint for syncing Git repositories was still checking for RQ workers instead of Celery workers.
- #969 - IPv6 prefixes such as
::1/128
were not being treated correctly.
Documentation¶
- #949 - Added documentation note about using
MAINTENANCE_MODE
in combination with LDAP.
Housekeeping¶
- #956 - Switched CI from Travis to GitHub Actions.
- #964 - Updated README.md build status badge to show GitHub status.
v1.1.3 (2021-09-13)¶
Security¶
- #893 - Bump Pillow dependency version from 8.2.0 to 8.2.3 to address numerous critical CVE advisories
Added¶
- #652 - Jobs REST API
run
endpoint now can look up ObjectVar references via a dictionary of parameters. - #791 - Added support for
NAUTOBOT_DOCKER_SKIP_INIT
variable to allow running the Docker container with a read-only database.
Changed¶
- #709 - Computed fields can now have a blank
fallback_value
. - #812 - In the GraphiQL interface, the "Queries" dropdown now appears alongside the other GraphiQL interface buttons instead of appearing in the main Nautobot navigation bar.
Fixed¶
- #464 - Fixed GraphQL schema generation error when certain custom field names are used.
- #651 - Fixed Jobs validation enforce schema consistently across UI and API.
- #715 - Fixed display of GraphiQL interface in narrow browser windows.
- #718 - Fixed rendering of long template values in Computed Field detail view.
- #731 - Config context schemas including
format
properties (such as"format": "ipv4"
) are now correctly enforced. - #779 - Fixed incorrect Tenant display in Prefix "Duplicate Prefixes" table. (Port of two fixes originally from NetBox)
- #818 - Database health-check now reports as healthy even when in
MAINTENANCE_MODE
. - #830 - Fixed incorrect database migration introduced by #818.
Documentation¶
- #601 - Developer documentation for advanced docker-compose use cases is now a separate file.
- #670 - Clarified Jobs documentation regarding how to fail or abort a Job.
- #755 - Added example showing how to use
django-request-logging
middleware to log the user associated with inbound requests. - #825 - Removed unnecessary
-B
flag from development Celery worker invocation. - #832 - Plugin installation documentation now recommends
nautobot-server post_upgrade
instead of separately runningnautobot-server migrate
andnautobot-server collectstatic
. - #841 - Added more detailed documentation around defining Relationship filters.
- #845 - Clarified documentation around
nautobot-server init
andNAUTOBOT_ROOT
. - #848 - Fixed stale links to NAPALM documentation
- #850 - Added developer documentation around the installation and use of
mkdocs
to locally preview documentation changes. - #856 - Added more detailed user documentation on how to create an API token.
Housekeeping¶
- #11 - Added tests to verify that plugin models can support webhooks if appropriately decorated with
@extras_features("webhooks")
- #809 - Fixed docker-compose file
version
values to work correctly with older versions of docker-compose.
v1.1.2 (2021-08-10)¶
Fixed¶
- #723 - Fixed power draw not providing a
UtilizationData
type for use in graphing power draw utilization - #785 - Fixed plugin loading error when using
final
Docker image. - #786 - Fixed
Unknown command: 'post_upgrade'
when usingfinal
Docker image. - #789 - Avoid a
NoReverseMatch
exception at startup time if an app or plugin defines a nav menu item with an invalid link reference.
Documentation¶
- #758 - Added documentation about the Job
class_path
concept. - #771 - Added examples of various possible logging configurations.
- #773 - Added documentation around enabling Prometheus metrics for database and caching backends.
- #782 - Corrected documentation regarding the use of
docker-compose.override.yml
Housekeeping¶
- #742 - The development environment now respects the setting of the
NAUTOBOT_DEBUG
environment variable if present.
v1.1.1 (2021-08-05)¶
Added¶
- #506 -
nautobot-server
now detects and rejects the misconfiguration of settingMAINTENANCE_MODE
while using database-backed session storage (django.contrib.sessions.backends.db
)
Fixed¶
- #683 - Fixed slug auto-construction when defining a new ComputedField.
- #727 - Fixed broken REST API endpoint (
/api/extras/graphql-queries/<uuid>/run/
) for running saved GraphQL queries. - #744 - Fixed missing Celery Django fixup that could cause assorted errors when multiple background tasks were run concurrently.
- #746 - Fixed data serialization error when running Jobs that used
IPAddressVar
,IPAddressWithMaskVar
, and/orIPNetworkVar
variables. - #759 - Corrected backwards add/import links for Power Feed and Power Panel in navigation bar
Documentation¶
- #681 - Added an example guide on how to use AWS S3 for hosting static files in production.
- #725 - Added missing
http-keepalive = 1
to recommendeduswgi.ini
configuration.
Housekeeping¶
- #738 - Added
*.env
(exceptdev.env
) to.gitignore
to prevent local environment variable files from accidentally being committed to Git
v1.1.0 (2021-07-20)¶
Security¶
- #717 - Bump Pillow dependency version from 8.1.2 to 8.2.0 to address numerous critical CVE advisories
Added¶
- #372 - Added support for displaying custom fields in tables used in object list views
- #620 - Config context schemas can now be managed via Git repositories.
Changed¶
- #684 - Renamed
?opt_in_fields=
query param to?include=
- #697 - Added
CELERY_TASK_SOFT_TIME_LIMIT
tosettings.py
and lowered the defaultCELERY_TASK_TIME_LIMIT
configuration.
Fixed¶
- #363 - Fixed using S3 django-storages backend requires
USE_TZ=False
- #466 - Fixed improper GraphQL schema generation on fields that can be blank but not null (such as
Interface.mode
) - #663 - Fixed
kombu.exceptions.EncodeError
when trying to execute Jobs using(Multi)ObjectVar
objects with nested relationships - #672 - Fixed inheritance of Celery broker/results URL settings for dev/template configs (they can now be defined using Redis env. vars)
- #680 - Removed unnecessary warning message when both RQ and Celery workers are present
- #686 - Fixed incorrect permission name for Tags list view in nav menu
- #690 - Fixed Jinja2 dependency version to remain backwards-compatible with Nautobot 1.0.x
- #696 - Fixed inheritance of VRF and Tenant assignment when creating an IPAddress or Prefix under a parent Prefix. (Port of NetBox #5703 and NetBox #6012)
- #698 - Fixed cloning of a computed field object to now carry over required non-unique fields
- #699 - Exceptions such as TypeError are now caught and handled correctly when rendering a computed field.
- #702 - GraphiQL view no longer requires internet access to load libraries.
- #703 - Fixed direct execution of saved GraphQL queries containing double quotes
- #705 - Fixed missing description field from detail view for computed fields
Documentation¶
- #675 - Update MySQL unicode settings docs to be more visible
- #677 - Revise LDAPS outdated documentation for ignoring TLS cert errors
- #691 - Clarify documentation on RQ to Celery worker migration and running both workers in parallel to help ease migration
- #692 - Clarify plugin development docs on naming of file for custom Jinja2 filters
v1.1.0b2 (2021-07-09)¶
Added¶
- #599 - Custom fields are now supported on
JobResult
objects - #637 - Implemented a
nautobot-server fix_custom_fields
command to manually purge stale custom field data
Fixed¶
- #495 - Fixed search for partial IPv4 prefixes/aggregates not finding all matching objects
- #533 - Custom field tasks are now run atomically to avoid stale field data from being saved on objects.
- #554 - Fixed search for partial IPv6 prefixes/aggregates not finding all matching objects
- #569 - Change minimum/maximum allowed values for integer type in Custom Fields to 64-bit
BigIntegerField
types (64-bit) - #626 - Added prefix
NAUTOBOT_
inoverride.env
example inside ofdocker-entrypoint.sh
- #661 - Fixed
computed_fields
key not being included in API response for devices when usinginclude
(for opt-in fields)
Documentation¶
- #600 - The
invoke migrate
step is now included in the development getting started guide for Docker workflows - #617 - Added extra comments to
uwsgi.ini
config to help with load balancer deployments in Nautobot services documentation - #634 - Documentation on plugin capabilities has been clarified.
- #645 - Updated services troubleshooting docs to include "incorrect string value" fix when using Unicode emojis with MySQL as a database backend
- #653 - Fixed systemd unit file for
nautobot-worker
to correctly start/stop/restart - #667 - Fixed various outdated/incorrect places in the documentation for v1.1.0 release.
v1.1.0b1 (2021-07-02)¶
Added¶
- #3 - GraphQL queries can now be saved for later execution
- #17 - MySQL 8.x is now fully supported as a database backend
- #200 - Jobs can be marked as read-only
- #274 - Added config context schemas to optionally validate config and local context data against JSON Schemas
- #297 - Added an anonymous health-checking endpoint at
/health/
using, also introducing anautobot-server health_check
command. - #485 - Applications can define navbar properties through
navigation.py
- #557 -
Prefix
records can now be created using /32 (IPv4) and /128 (IPv6) networks. (Port of NetBox #6545) - #561 - Added autodetection of
mime_type
onexport_templates
provided by Git datasources - #636 - Added custom fields to
JobResult
model, with minor changes to job result detail page
Changed¶
- #431 -
ConfigContext
andExportTemplate
records now must have uniquename
values. This was always the case in NetBox, but was inadvertently un-enforced in earlier versions of Nautobot.
Fixed¶
- #460 - Deleting a record now deletes any associated
RelationshipAssociation
records - #494 - Objects with
status
fields now emit limited choices correctly when performingOPTIONS
metadata API requests
Documentation¶
- #10 - Added a new "Getting Started in the Web UI" section to the documentation to help new users begin learning how to use Nautobot.
- #618 - Fixed typo in release-notes
Housekeeping¶
- #602 - Fixed incorrect requirement to install
toml
Python library before runninginvoke
tasks