github nautobot/nautobot v1.4.0-beta.1
v1.4.0-beta.1 - 2022-07-30

latest releases: v1.6.22, v2.2.4, v1.6.21...
pre-release21 months ago

Release Overview

Added

Custom Template (CSS, HTML, JavaScript) on Job Forms (#1865)

New in Beta 1

Jobs can now specify a template_name property and provide a custom template with additional JavaScript and CSS to help with user input on the Job submission form.

You can refer to the Job class metadata attribute documentation on how to build and define this template.

Dark Mode UI (#729)

Nautobot's UI now supports dark mode, both explicitly and via browser preference selection.

The "Theme" link in the footer provides a modal popup to select the preferred theme. This preference is saved per browser via localStorage.

Improved Filter Coverage for DCIM, Virtualization Models

New in Beta 1

The DCIM, Virtualization FilterSets have been updated with over 150 new filters, including hybrid filters that support filtering on both pk and slug (or pk and name where slug is not available). A new filter class NaturalKeyOrPKMultipleChoiceFilter was added to nautobot.utilities.filters to support filtering on multiple fields of a related object. See the Best Practices documentation for more information.

Job Hooks (#2103)

New in Beta 1

Jobs can now be configured to run automatically when a change event occurs on a Nautobot object. Job hooks associate jobs to content types and actions to run jobs when a create, update or delete action occurs on the selected content type. A new job base class JobHookReceiver was introduced that jobs must subclass to be associated with a job hook. See the Job Hooks documentation for more information.

Job Re-Runs (#1875)

New in Beta 1

JobResult records now save the arguments with which the Job was called, allowing for easy re-execution of the Job with the same arguments as before. A "re-run" button has been added to the JobResult list view and detail view.

Location Data Model (#1052)

To locate network information more precisely than a Site defines, you can now define a hierarchy of Location Types (for example, BuildingFloorRoom) and then create Locations corresponding to these types within each Site. Data objects such as devices, prefixes, VLAN groups, etc. can thus be mapped or assigned to Location representing a specific building, wing, floor, room, etc. as appropriate to your needs.

ℹ️ At present, Locations fill the conceptual space between the more abstract Region and Site models and the more concrete Rack Group model. In a future Nautobot release, some or all of these other models may be collapsed into Locations. That is to say, in the future you might not deal with Regions and Sites as distinct models, but instead your Location Type hierarchy might include these higher-level categories, becoming something like Country ← City ← Site ← Building ← Floor ← Room.

Object Detail Tabs (#1000)

A plugin may now define extra tabs which will be appended to the object view's list of tabs.

You can refer to the plugin development guide on how to add tabs to existing object detail views.

Parent Interfaces and Bridge Interfaces (#1455)

Interface and VMInterface models now have parent_interface and bridge keys. An interface of type Virtual can now associate to a parent physical interface on the same device, virtual chassis, or virtual machine, and an interface of any type can specify another interface as its associated bridge interface. (A new Bridge interface type has also been added, but the bridge interface property is not restricted to interfaces of this type.)

Rackview UI - Add Option to Truncate Device Name (#1119)

Users can now toggle device full name and truncated name in the rack elevation view. The truncating function is customizable in nautobot_config.py via defining UI_RACK_VIEW_TRUNCATE_FUNCTION. Default behavior is to split on . and return the first item in the list.

"Save SVG" link presents the same view as what is currently displayed on screen

Current preferred toggle state is preserved across tabs (requires refresh) and persists in-browser until local storage is cleared. This presents a consistent behavior when browsing between multiple racks.

REST API Enhancements (#1463)

New in Beta 1

  • For all models that support Relationships, their corresponding list and detail REST API endpoints now include the option to include data on their associated Relationships and related objects by specifying include=relationships as a query parameter.
  • Relationship associations on a model can be edited by a PATCH to the appropriate nested value, such as "relationships" -> <relationship-slug> -> "source" or "relationships" -> <relationship-slug> -> "destination".
  • For implementers of REST API serializers (core and/or plugins), a new nautobot.extras.api.serializers.NautobotModelSerializer base class has been added. Using this class guarantees support for relationships, custom fields, and computed fields on the serializer, and provides for a streamlined developer experience.

Status Field on Interface, VMInterface Models (#984)

Interface and VMInterface models now support a status. Default statuses that are available to be set are: Active, Planned, Maintenance, Failed, and Decommissioned. During migration all existing interfaces will be set to the status of "Active".

A new version of the /dcim/interfaces/* REST API endpoints have been implemented. By default this endpoint continues to demonstrate the pre-1.4 behavior unless the REST API client explicitly requests API version=1.4. If you continue to use the pre-1.4 API endpoints, status is defaulted to "Active".

Visit the documentation on REST API versioning for more information on using the versioned APIs.

Notes (#767)

New in Beta 1

Primary and Organizational models now support notes. A notes tab has been added to the Object Detail view for all models that inherit the Primary or Organizational base abstract models.

⚠️ Any plugin that inherits from one of these two models and uses the ViewTestCases.PrimaryObjectViewTestCase or ViewTestCases.OrganizationalObjectViewTestCase for their test will need to add the NotesObjectView to the objects URLs. See Plugin Development for more details.

Changed

Dynamic Groups of Dynamic Groups (#1614)

New in Beta 1

Dynamic Groups may now be nested in parent/child relationships. The Dynamic Group edit view now has a "Child Groups" tab that allows one to make other Dynamic Groups of the same content type children of the parent group. Any filters provided by the child groups are used to filter the members from the parent group using one of three operators: "Restrict (AND)", "Include (OR)", or "Exclude (NOT)". This allows for logical parenthetical grouping of nested groups by the operator you choose for that child group association to the parent.

⚠️ The default behavior of Dynamic Groups with an empty filter ({}) has been inverted to include all objects matching the content type by default instead of matching no objects. This was necessary to implement the progressive layering of child filters similarly to how we use filters to reduce desired objects from basic list view filters.

Strict Filter Validation by Default (#1736)

Filtering of object lists in the UI and in the REST API will now report an error if an unknown or unrecognized filter parameter is specified. This is a behavior change from previous Nautobot releases, in which unknown filter parameters would be silently discarded and ignored.

A new configuration setting, STRICT_FILTERING has been added. It defaults to True, enabling strict validation of filter parameters, but can be set to False to disable this validation.

⚠️ Setting STRICT_FILTERING to False can result in unexpected filtering results in the case of user error, for example a request to /api/dcim/devices/?has_primry_ip=false (note the typo primry) will result in a list of all devices, rather than the intended list of only devices that lack a primary IP address. In the case of Jobs or external automation making use of such a filter, this could have wide-ranging consequences.

Moved Registry Template Context (#1945)

The settings_and_registry default context processor was changed to purely settings - the (large) Nautobot application registry dictionary is no longer provided as part of the render context for all templates by default. Added a new registry template tag that can be invoked by specific templates to provide this variable where needed.

v1.4.0b1 (2022-07-30)

Attention:

next and develop introduced conflicting migration numbers during the release cycle. This necessitates reordering the migration in next. If you installed v1.4.0a1 or v1.4.0a2, you will need to roll back a migration before upgrading/installing v1.4.0b1. If you have not installed either v1.4.0a1 or v1.4.0a2 this will not be an issue.

Before upgrading, run: nautobot-server migrate extras 0033_add__optimized_indexing. This will revert to migrations prior to those introduced in 1.4.

Perform the Nautobot upgrade as usual and proceed with post-installation migration.

Data loss may occur from features in earlier alphas!

Added

  • #1463 - Added REST API support for opt-in relationships data on model endpoints; added NautobotModelSerializer base class.
  • #1614 - Added support for nesting of Dynamic Groupsallowing inclusion/exclusion rules of sub-group members
  • #1735 - Added missing filters to model FilterSets for Virtualization models.
  • #1865 - Added support for a custom template on Job forms.
  • #1877 - Add new job base class JobHookReceiver to support triggering job execution from change events.
  • #1883 - Add ability to filter objects by their relationships into the existing FilterSet.
  • #1884 - Add ability to set the relationship filter via the filter form.
  • #2035 - Added change source context to object change context manager.
  • #2051 - Add changelog url for Relationships.
  • #2061 - Add draggable child groups to Dynamic Groups edit view in UI, recompute and hide weights.
  • #2103 - Add job hooks feature.

Changed

  • #2049 - Moved get_changelog_url to a method on objects that support changelogs, updated template context.
  • #2116 - Updated package dependencies: Pillow ~9.1.1 -> ~9.2.0, black ~22.3.0 -> ~22.6.0, coverage 6.4.1 -> 6.4.2, django-cacheops 6.0 -> 6.1, django-cryptography 1.0 -> 1.1, django-debug-toolbar ~3.4.0 -> ~3.5.0, django-extensions ~3.1.5 -> ~3.2.0, drf-yasg ~1.20.0 -> ^1.20.0, importlib-metadata ~4.4 -> ^4.4.0, jsonschema ~4.4.0 -> ~4.8.0, mkdocs 1.3.0 -> 1.3.1, mkdocs ==1.3.0 -> ==1.3.1, mkdocs-include-markdown-plugin ~3.2.3 -> ~3.6.0, mkdocs-include-markdown-plugin ==3.2.3 -> ==3.6.1, social-auth-core ~4.2.0 -> ~4.3.0, svgwrite 1.4.2 -> 1.4.3

Fixed

  • #1710 - Fixed invalid CSS when clicking "Add another" row buttons for formsets on Secrets Groups, Dynamic Groups edit view in the UI.
  • #2069 - Addressed numerous UX improvements for Dynamic Groups of Dynamic Groups feature to ease usability of this feature.
  • #2109 - Fixed Relationship Filters are not Applied with "And" Operator.
  • #2111 - Fixed Invalid filter error thrown for __source with message: “” is not a valid UUID.

Contributors

New Contributors

Full Changelog: v1.4.0-alpha.2...v1.4.0-beta.1

Don't miss a new nautobot release

NewReleases is sending notifications on new releases.