Added
- #851 - Added list view with CSV import/export buttons for
CircuitTermination
objects. - #1633 - Added
created
andlast_updated
fields on theVMInterface
model. When migrating to this release, these fields will default toNone
for any pre-existing instances of this model. - #2331 - Added job stdout/stderr redirection to database
JobLogEntry
records. - #2331 - Added support to skip job logs from being written to the database.
- #2901 - Added
get_absolute_url
method onBaseModel
which will attempt to resolve the detail view route for all subclassed models. - #3192 - Added a data migration to migrate existing ScheduledJob instances to support new format.
- #3203 - Added a
nautobot-server build_ui
command for building the web UI - #3237 - Added Node.JS to Docker final image, bundled
node_modules
to speed up rebuilds. - #3615 - Added toggle buttons between Legacy UI and New UI.
- #3637 - Added
pre_delete
signal to nullify the device'sprimary_ip
field/fields if its primary ips are removed from interface'sip_addresses
m2m field. - #3637 - Added
pre_save
signal to catch invalid operations in manual creations ofIPAddressToInterface
. - #3637 - Added
unique_together
for through modelIPAddressToInterface
. - #3651 - Added
home_url
,config_url
, anddocs_url
keys to the/api/plugins/installed-plugins/
REST API endpoint. - #3679 - Added optional
api
argument toBaseModel.get_absolute_url()
. - #3702 - Added basic Redis caching for
TreeModel.display
to reduce redundant queries when listing such objects. - #3708 - Added sorting support to the REST API via the
sort
query parameter. - #3713 - Added
celery_kwargs
field toJobResult
andScheduledJob
models. - #3714 - Added generic test for GET/PUT round-trip in the REST API.
- #3714 - Added support for
{"value": "x"}
format when writing to ChoiceFields in the REST API, making round-trip data easier. - #3715 - Added
NautobotCSVParser
class, providing the ability for the REST API to accept CSV as an input format. - #3715 - Added ability to specify a
parent_bay
when creating a Device via the REST API. - #3715 - Added
APIViewTestCases.CreateObjectViewTestCase.test_recreate_object_csv
generic test, testing the "round-trip" capability of each API endpoint's CSV export and import. - #3715 - Added (temporary)
natural_key_field_names
toIPAddress
,Prefix
,RackReservation
,ScheduledJob
, andService
models. - #3721 - Added App provided model view override.
- #3722 - Added
termination_type
filter toCableFilterSet
. - #3722 - Added
natural_key_slug
field to REST API serializers. - #3736 - Added App provided custom route view.
- #3741 - Added natural-key-slug information to UI detail views.
- #3754 - Added loading widget to the left of the ObjectListTable Buttons after initial data load.
- #3759 - Implemented IPAM Namespace & parenting data migrations.
- #3767 - Added
detail-view-config
API endpoint toModelViewSetMixin
. - #3804 - Added feature to redirect all add and edit views to legacy UI.
- #3840 - Added
bool
return value forNautobot.extras.datasources.git.ensure_git_repository()
to indicate whether the filesystem was changed.
Changed
- #1633 - The base class for all
tags
fields onPrimaryModel
subclasses is nownautobot.core.models.fields.TagsField
rather thantaggit.managers.TaggableManager
. Any apps usingPrimaryModel
as a base class will likely need to generate and run a schema migration to reflect this change. - #2331 - Changed
JobLogEntry.log_level
choices fromdefault
,info
,success
,warning
,failure
to Python default logging levelsdebug
,info
,warning
,error
andcritical
. - #2331 - Changed job logging from custom log methods on the
BaseJob
class to celery'sget_task_logger
logging implementation. - #2569 - Revamped CSV export functionality to use REST API serializers for more self-consistency and reduced boilerplate.
- #2569 - Revised the natural key for
SecretsGroupAssociation
through-table model. - #2569 - Changed behavior of
JobLogEntry.display
REST API field to match the model behavior. - #2799 - Changed REST API versioning to default to latest instead of earliest when unspecified by the client.
- #3042 - Removed all
Nested*Serializer
classes in favor of adepth
-based REST API design. - #3042 - The
?brief=True
REST API parameter has been replaced by a new?depth=<0-10>
API parameter, allowing greater control of the returned data. - #3228 - Removed
run_job
Celery task and updatedBaseJob
to subclass CeleryTask
. - #3449 - Renamed
Relationship
model attributeslug
tokey
. - #3449 - Renamed
Relationship
model attributename
tolabel
. - #3450 - Renamed
ComputedField
model attributeslug
tokey
. - #3465 - Renamed IPAddress
prefix_length
field tomask_length
. - #3465 - Made IPAddress
host
field non-modifiable. - #3527 - Restructured navigation menus to context-centered design for 2.0.
- #3552 - Extracted data tables from upgrading-from-nautobot-v1.md into separate YAML files.
- #3586 - Changed REST API for Device and VirtualMachine to omit
config_context
by default and only include it when requested by using the?include=config_context
query parameter. - #3607 - Changed the default
lookup_field
forNautobotUIViewSet
to"pk"
instead of"slug"
. - #3650 - Updated ui 2.0 jsconfig.json to exclude
node_modules
andbuild
directories. - #3663 - Modified
delete_button
andedit_button
template tags to lookuppk
andslug
without the need to specify the lookup key. - #3679 - Changed
BaseModelSerializer
to inherit fromHyperlinkedModelSerializer
instead ofModelSerializer
. This changed the REST API representation of related objects (at depth 0) from UUIDs to API hyperlinks to improve discoverability and usability of the API. - #3691 - Implemented
Meta.list_display_fields
for all serializers. - #3692 - Updated
JobResult
managerstore_result
method to censor sensitive variables. - #3702 - Changed nested serialization to never include tags, computed fields, relationships, and other M2M fields.
- #3713 - Changed
Job.read_only
field to an informational field set by the job author and removed the ability for administrators to override this field. This field no longer changes the behavior of Nautobot core. - #3715 - Reworked CSV import to be based on the REST API implementation instead of custom forms and views.
- #3715 - Changed the parameters and behavior of
CSVDataField
andCSVFileField
in support of the new CSV import framework. - #3715 - Changed the
user
parameter on the RackReservation REST API to optional; if omitted, the requesting user will now be automatically selected as the owner of any created reservations. - #3742 - Centered the LoadingWidget component in UI.
- #3742 - Lightened the color of the LoadingWidget text to gray-3.
- #3742 - Lightened the color of the skeleton component when loading tables.
- #3744 - A batch of improvements to state handling in the UI to solve loading bugs.
- #3767 - Enhanced error handling for fetcher in React UI
ObjectRetrieveView
. - #3785 - Deprecated
StatusModel
mixin in favor of directly including aStatusField
as needed. - #3840 - Changed Job
class_path
property from<source>/<module>/<ClassName>
to simply<module>.<ClassName>
. - #3840 - Changed GitRepository slugs to use underscores rather than dashes so they can be used as Python module names.
- #3840 - Changed Job
module_name
for Git-derived Jobs to<git_repository_slug>.jobs.<module>
. - #3840 - System-provided Jobs are now enabled by default for running.
- #3840 - Changed return signature for
Nautobot.core.utils.git.GitRepo.checkout()
to include whether the filesystem was changed. - #3840 - Changed
job
filter on JobButton, JobHook, JobResult, and ScheduledJob to be name-based rather than slug-based. - #3840 - Changed
Job.runnable
property to not consider whether thejob_class
is set, as a performance optimization. - #3840 - Moved test Jobs from
nautobot/extras/tests/example_jobs/test_*.py
tonautobot/extras/test_jobs/*.py
to avoid unnecessary loading by theunittest
runner. - #3840 - Changed client-side slug construction (legacy UI) to use underscores rather than dashes.
Dependencies
- #1721 - Removed dependency on
django-cacheops
. - #3672 - Changed
napalm
dependency to 4.x release in order to allow Netmiko 4.x to install. Dependency resolution resulted in removing the following packages:ciscoconfparse
,deprecat
,dnspython
,loguru
,toml
,win32-setctime
.
Fixed
- #3378 - Re-enabled skipped tests.
- #3437 - Fixed the possibility of inadvertently applying the same
Tag
to the same object multiple times by adding appropriate uniqueness constraints on theTaggedItem
through table. - #3518 - Fixed an error seen when running the
extras.0061_collect_roles_from_related_apps_roles
migration. - #3545 - Fixed a bug in Job edit view template where slug was missing, preventing creation from happening.
- #3591 - Fixed a few errors in the v2.0 migration documentation.
- #3592 - Fixed heuristic for duplicate calls to
populate_model_features_registry
causing skipped updates. - #3618 - Fix corrupted
package-lock.json
which was causing test failures. - #3675 - Fixed job edit form silently failing.
- #3687 - Fixed a bug in
Prefix.reparent_ips()
that was too greedy in reparenting IP addresses when child prexies were deeply nested (such as /31) - #3702 - Added some missing
select_related
onDeviceViewSet
andPrefixViewSet
to improve performance. - #3714 - Fixed inability to set null via the REST API on
Interface.mac_address
andVMInterface.mac_address
. - #3714 - Fixed inability to set null via the REST API on
DeviceType.front_image
andDeviceType.rear_image
. - #3714 - Fixed
password
being incorrectly marked as a required field when editing a User via the REST API. - #3715 - Fixed inability to set the
failover_strategy
field as unspecified/blank when creating/updatingDeviceRedundancyGroup
via the REST API. - #3715 - Fixed incorrect interim natural key definition for
Device
andVRF
models. - #3715 - Fixed the possibility of setting values for nonexistent custom fields via the REST API.
- #3715 - Fixed incorrect password-handling logic when creating/updating a
User
via the REST API. - #3716 - Fixed an error when attempting to edit a user via the Nautobot admin UI.
- #3722 - Fixed incorrect filter forms on console-connections, power-connections, and interface-connections list views.
- #3729 - Fixed a bug that references a non-existent Relationship model attribute in Relationship migration file.
- #3731 - Fixed
debugpy
workflow not working with the removal ofmanage.py
. - #3737 - Fixed broken
--cache_test_fixtures
when running tests. - #3740 - Fixed container builds failed resulting from #3731.
- #3741 - Fixed missing time-zone information on various Job-related tests in
nautobot.extras.tests.test_views
. - #3741 - Fixed various cable-termination API serializers incorrectly reporting the
cable
field as writable. - #3768 - Fixed new UI homepage breaks if recent object-changes reference objects that no longer exist.
- #3785 - Fixed undesirable nullability of
status
fields to correctly match their intended usage. - #3786 - Fixed default descriptions of REST API actions in the OpenAPI schema to be more accurate.
- #3792 - Fixed logging output not being suppressed during unit and integration tests.
- #3828 - Fixed a bug caused by #3637 that prevents devices with primary_ip from being deleted.
- #3829 - Fixed build failure caused by registered App missing ui/index.js.
- #3833 - Fixed build failure caused by registered App missing urls.py file or a urlpatterns.
- #3840 - Removed leftover/non-functional
Source
tab from job_approval_request.html. - #3864 - Fixed cases where Device.role was null, incongruent with the enforcement in the API and UI.
Removed
- #1633 - Removed monkey-patching of
taggit.managers.TaggableManager
. - #1633 - Removed
nautobot.extras.utils.is_taggable
; usenautobot.core.models.utils.is_taggable
instead. - #1633 - Removed backward-compatibility with
taggit
1.x Python API; instead ofobject.tags.set(tag1, tag2, tag3)
you must now doobject.tags.set([tag1, tag2, tag3])
. - #1721 - Removed dependency on and usage of
django-cacheops
. - #2331 - Removed custom
BaseJob
logging methods_log
,log
,log_debug
,log_success
,log_info
,log_warning
andlog_failure
. - #2331 - Removed
active_test
andfailed
properties fromBaseJob
class. - #2569 - Removed
csv_headers
andto_csv()
from all models as they are no longer needed. - #2885 - Removed
changelog_url
fromObjectView
's context. - #3228 - Removed atomic transaction from Jobs.
- #3228 - Removed support for
test_*
andpost_run
methods in Jobs. - #3465 - Removed
broadcast
field from IPAddress. - #3527 - Removed
NavMenuButton
and its subclasses as they are not a part of the 2.0 UI. - #3527 - Removed
NavMenuTab.weight
property as the menu tabs/contexts are not reorderable in 2.0. - #3623 - Removed remaining erroneous slug references from tenant.html and tenantgroup.html.
- #3651 - Removed misspelled
verison
key from/api/plugins/installed-plugins
REST API endpoint. - #3679 - Removed explicit
url
field declarations from most REST API serializers as they are now derived automatically. - #3713 - Removed
Job.read_only_override
,JobResult.obj_type
,JobResult.periodic_task_name
, andJobResult.task_id
fields. - #3713 - Removed
NautobotFakeRequest
and associated methods, variables and logic. - #3715 - Removed
LocatableModelCSVFormMixin
,RoleModelCSVFormMixin
,RoleRequiredRoleModelCSVFormMixin
, andStatusModelCSVFormMixin
classes, as they are no longer needed after reworking how CSV import is handled. - #3715 - Removed
bulk_create_form_class
field fromNautobotUIViewSet
as it's no longer used or needed. - #3715 - Removed
model_form
andwidget_attrs
fields fromBulkImportView
as they are no longer used or needed. - #3840 - Removed
Job.slug
,Job.source
, andJob.git_repository
database fields. - #3840 - Removed
source
andslug
filters for Jobs. - #3840 - Removed
get_jobs()
,get_job_classpaths()
,jobs_in_directory()
functions.
Contributors
New Contributors
- @DistantVoyager made their first contribution in #3743
Container Publish Re-Run (diff): https://github.com/nautobot/nautobot/actions/runs/5194587410
Full Changelog: v2.0.0-alpha.3...v2.0.0-beta.1