nautobot

Network Source of Truth & Network Automation Platform

APACHE-2.0 License

Downloads
16K
Stars
1K
Committers
251

Bot releases are hidden (Show)

nautobot - v1.5.14 - 2023-03-20

Published by bryanculver over 1 year ago

Added

  • #2618 - Added the ability to stand up a local dev env for SSO using Keycloak.
  • #3033 - Added JobButton model to create single click execution buttons in the web UI to run jobs based on a single object.
  • #3377 - Added additional choices for many data types in nautobot.dcim.

Changed

  • #3434 - Changed the recommended exception to raise to end jobs early.

Fixed

  • #3419 - Fixed test_queryset_to_csv to format data fetched from the model.

Contributors

  • @whitej6
  • @snaselj
  • @alextremblay
  • @Kircheneer
  • @joewesch

New Contributors

Full Changelog: https://github.com/nautobot/nautobot/compare/v1.5.13...v1.5.14

nautobot - v1.5.13 - 2023-03-14

Published by bryanculver over 1 year ago

Added

  • #766 - Added option for apps to extend Nautobot's Prometheus metrics, based on nautobot_capacity_metrics.
  • #3410 - Added -time index for ObjectChange records.

Changed

  • #3410 - Changed Homepage ObjectChange query to not join User or Content Type tables, use record cache for user entries instead.
  • #3416 - Updated Windows development documentation.

Dependencies

  • #3405 - Updated version of pyopenssl in Nautobot dev environment and Docker images to 23.0.0 due to an incompatibility between older versions of pyopenssl and version 39.x of cryptography. This is not a direct dependency of Nautobot so it will not auto-update when upgrading. Please update your local environment as needed.
  • #3405 - Updated cryptography to 39.0.2. This is not a direct dependency of Nautobot so it will not auto-update when upgrading. Please update your local environment as needed.

Fixed

  • #3347 - Fixed (again) Location.parent not populating correctly in the form when editing an existing Location.

Removed

  • #3407 - Removed permission checks for ContentTypeAPIViewSet.

Contributors

  • @glennmatthews
  • @HanlinMiao
  • @Kircheneer
  • @gsnider2195
  • @bryanculver

Full Changelog: https://github.com/nautobot/nautobot/compare/v1.5.12...v1.5.13

nautobot - v1.5.12 - 2023-03-06

Published by bryanculver over 1 year ago

Added

  • #3182 - Added support for assigning Config Context objects via Dynamic Groups.
  • #3219 - Added support for custom fields to Dynamic Groups.
  • #3220 - Added support for relationships to Dynamic Groups.

Changed

  • #3369 - Changed RelationshipModelFilterSetMixin to perform a single OR query including select_related for source_type and destination_type vs. two single queries for each source/destination types.

Dependencies

  • #3388 - Updated GitPython to 3.1.31.
  • #3388 - Updated drf-yasg to 1.21.5. Note: this is automatic for the Nautobot-provided containers, but because our dependency on it goes away in 2.0, it's an optional update for other installations.
  • #3388 - Updated netutils to 1.4.1.

Fixed

  • #3295 - Fixed kombu serialization error on User object that arose when CELERY_RESULT_EXTENDED == True or when enqueue_job was called from within an existing Job.
  • #3318 - Fixed a bug in prefix factory when a /0 ipv6 network is generated by faker.
  • #3341 - Fixed missing get_route_for_model() logic for the ContentType and Group models.
  • #3353 - Fixed a bug in nautobot.extras.forms.mixins.CustomFieldModelFilterFormMixin where the list of custom field names were not being stored on self.custom_fields.
  • #3353 - Fixed a bug in nautobot.utilities.filters.MappedPredicatesFilterMixin (from which SearchFilter inherits) that was preventing q fields from being used in Dynamic Group filters.

Contributors

  • @timizuoebideri1
  • @gsnider2195
  • @jathanism
  • @dsykes16
  • @bile0026

New Contributors

Full Changelog: https://github.com/nautobot/nautobot/compare/v1.5.11...v1.5.12

nautobot - v1.5.11 - 2023-02-20

Published by bryanculver over 1 year ago

Added

  • #3168 - Add device name to bulk interface rename header.
  • #3184 - Added Git 2.0+ as a mandatory dependency in the installation instructions.
  • #3255 - Added --cache-test-fixtures command line argument to Nautobot unit and integration tests.

Changed

  • #3134 - Migrate ModelMultipleChoiceFilters to NaturalKeyOrPKMultipleChoiceFilter.
  • #3224 - Updates to our deprecation policy: Prior-major REST API versions will be dropped upon next-major release.
  • #3264 - Changed DynamicGroup.objects.get_for_object() to be a little more efficient.
  • #3311 - Add Links to Branch Names to README.md.
  • #3314 - Updated developer documentation for user and prototype branching conventions.
  • #3314 - Updated pre-commit hook to validate user namespace prefix on branch name.

Dependencies

  • #3251 - Updated oauthlib to 3.2.2.
  • #3258 - Updated cryptography to 39.0.1.
  • #3320 - Updated django to 3.2.18.
  • #3333 - Updated netutils constraint from ~1.4.0 to ^1.4.0 to permit semver upgrades.

Fixed

  • #2580 - Fixed fragile generic view test.
  • #3187 - Fixed DynamicModelChoiceFields having a generic default label when one is provided.
  • #3274 - Fixed ObjectListViewMixin's filtering when exporting objects in NautobotUIViewSet.
  • #3277 - Fixed incorrect test data in nautobot.extras.tests.test_api.NoteTest.
  • #3278 - Fixed docker development environment error when the Nautobot container tries to start before the database is ready.
  • #3290 - Fixed an issue preventing the inclusion of netutils functions in Django templates.
  • #3308 - Fixed incorrect documentation for object permissions.
  • #3327 - Fixed Azure AD tenant configuration documentation.
  • #3332 - Fixed missing imports in Secrets Providers plugin development documentation.
  • #3335 - Fixed inability to change filtering on custom field (selection) once filter is configured.

Security

  • #3251 - Updated oauthlib to 3.2.2 due to CVE-2022-36087. This is not a direct dependency so will not auto-update when upgrading. Please be sure to upgrade your local environment.
  • #3258 - Updated cryptography to 39.0.1 due to CVE-2023-0286, CVE-2023-23931. This is not a direct dependency so will not auto-update when upgrading. Please be sure to upgrade your local environment.
  • #3320 - Updated django to 3.2.18 due to CVE-2023-24580.

Contributors

  • @jathanism
  • @timizuoebideri1
  • @glennmatthews
  • @gsnider2195
  • @mzbroch
  • @DimasInchidi
  • @HanlinMiao
  • @justinjeffery-ipf
  • @bryanculver
  • @alextremblay
  • @itdependsnetworks

New Contributors

Full Changelog: https://github.com/nautobot/nautobot/compare/v1.5.10...v1.5.11

nautobot - v1.5.10 - 2023-02-06

Published by bryanculver over 1 year ago

Added

  • #3013 - Added CELERY_WORKER_PROMETHEUS_PORTS configuration setting
  • #3013 - Added prometheus HTTP server listening on the worker to expose worker metrics
  • #3013 - Added nautobot_job_duration_seconds counter metric that reports on job execution

Changed

  • #3177 - Updated VLANFactory to generate longer and more "realistic" VLAN names.
  • #3198 - Added dependencies towncrier section, removed extra newline.

Dependencies

  • #3227 - Updated django to 3.2.17.

Fixed

  • #3126 - Fixed interface not raising exception when adding a VLAN from a different site in tagged_vlans.
  • #3153 - Made integration test CableConnectFormTestCase.test_js_functionality more resilient and less prone to erroneous failures.
  • #3177 - Fixed a spurious failure in BulkEditObjectsViewTestCase.test_bulk_edit_objects_with_constrained_permission.
  • #3200 - Added dependencies to the list of valid change fragment types in the documentation.

Security

  • #3227 - Updated django to 3.2.17 due to CVE-2023-23969.

Contributors

  • @timizuoebideri1
  • @glennmatthews
  • @Kircheneer

Full Changelog: https://github.com/nautobot/nautobot/compare/v1.5.9...v1.5.10

nautobot - v2.0.0-alpha.1 - 2022-01-31

Published by bryanculver over 1 year ago

Nautobot v2.0

This document describes all new features and changes in Nautobot 2.0.

If you are a user migrating from Nautobot v1.X, please refer to the "Upgrading from Nautobot v1.X" documentation.

Release Overview

Added

Generic Role Model (#1063)

DeviceRole, RackRole, IPAM Role, and IPAddressRoleChoices have all been merged into a single generic Role model. A role can now be created and associated to one or more of the content-types that previously implemented role as a field. These model content-types include dcim.device, dcim.rack, virtualization.virtualmachine, ipam.ipaddress, ipam.prefix, and ipam.vlan.

Added Site Fields to Location (#2954)

Added Site Model Fields to Location. Location Model now has asn, comments, contact_email, contact_name, contact_phone, facility, latitude, longitude, physical_address, shipping_address and time_zone fields.

Changed

Collapse Region and Site Models into Location (#2517)

Initial Data Migration

The Site and Region models have been removed in v2.0 and have been replaced with Location of specific LocationType. As a result, the existing Site and Region data will be migrated to corresponding LocationType and Location objects. Here is what to expect:

  1. If you do not have any Site and Region instances in your existing database, running this data migration will do nothing.

  2. If you only have Region instances in your existing database, a LocationType named Region will be created and for each legacy Region instance, a corresponding Location instance with the same attributes (name, description, etc.) and hierarchy will be created.

  3. If you only have Site instances in your existing database:

    • A LocationType named Site will be created and every preexisting root level LocationType in your database will be updated to have the new Site LocationType as their parent.

    • For each legacy Site instance, a corresponding Location instance with the same attributes (name, description, tenant, facility, asn, latitude, longitude, etc.) will be created, and any preexisting Locations in your database will be updated to have the appropriate "site" Locations as their parents.

    • Model instances that had a site field (CircuitTermination, Device, PowerPanel, RackGroup, Rack, Prefix, VLANGroup, VLAN, Cluster) assigned and did not have a location attribute assigned will be updated to have their location point to the new Location corresponding to that Site. All other attributes on these models will remain unchanged.

    For Example:

    • We will start with a Site instance with name AMS01 as the base Site for two top-level Location objects with names root-01 and root-02 respectively.

    • During the data migration, a LocationType named Site will be created, and a Location of Site LocationType named AMS01 with all the information (asn, latitude, etc.) from the base Site will be created.

    • The Location objects named root-01 and root-02 will have this AMS01 Location set as their parent.

  4. If you have both Site and Region instances in your existing database:

    • A LocationType named Region will be created.

    • For each legacy Region instance, a corresponding Location instance with the same attributes (name, description, etc.) will be created.

    • A LocationType named Site will be created with the new LocationType named Region set as its parent.

    • Every pre-existing root-level LocationType in your database will be updated to have the new LocationType named Site as its parent.

    • For each legacy Site instance, a corresponding "site" Location instance with the same attributes (name, description, tenant, facility, asn, latitude, longitude, etc.) will be created with its parent set to the corresponding "region" Location if any.

      • If you have Site instances in your database without a Region assigned to them, one additional Location named Global Region of LocationType Region will be created and each Location of LocationType Site created from the legacy region-less Site instances will have the Global Region Location as their parent.
    • Model instances that had a site attribute (CircuitTermination, Device, PowerPanel, RackGroup, Rack, Prefix, VLANGroup, VLAN, Cluster) assigned and did not have a location attribute assigned will be updated to have their location point to the new Location of LocationType Site. All other attributes on these models will remain unchanged.

    For Example:

    • There are two Site instances and one Region instance in your existing database. The Region with name America has one child Site instance named AMS01. And the other Site instance named AUS01 is not associated with any Region (region attribute is set to None).

    • The Site AMS01 is the base Site for two top-level Location objects with names root-01 and root-02 respectively.

    • During the data migration, a LocationType named Region and a Location of this LocationType named America with all the same information will be created.

    • The LocationType named Site with its parent set as the new LocationType Region and a Location of LocationType named AMS01 with all the same information (asn, latitude, etc.) will be created. The Location AMS01 will have Location America as its parent and each - Location root-01 and root-02 will have Location AMS01 as its parent.

    • Finally, the Site instance AUS01, since it does not have a Region instance associated with it, its corresponding Location AUS01 will have a new Location named Global Region of LocationType Region as its parent.

    • In addition, legacy Site instance with name AMS01 also has three Device instances associated with it named ams01-edge-01, ams01-edge-02, and ams01-edge-03.

    • However, ams01-edge-01 only has its site attribute set as Site AMS01 whereas ams01-edge-02 and ams01-edge-03 have both its site and location attributes set Site AMS01 and Location root-01 respectively.

    • During the data migration, ams01-edge-01's location attribute will point to the new Location of LocationType Site with name AMS01 while devices ams01-edge-02 and ams01-edge-03 will remain unchanged.

Collapsed nautobot.utilities into nautobot.core (#2721)

nautobot.utilities no longer exists as a separate Python module or Django app. Its functionality has been collapsed into the nautobot.core app. See details at Python Code Location Changes.

Renamed Database Foreign Keys and Related Names (#2520)

Some Foreign Key fields have been renamed to follow a more self-consistent pattern across the Nautobot app. This change is aimed to offer more clarity and predictability when it comes to related object database operations:

For example in v1.x to create a circuit object with type "circuit-type-1", you would do:

Circuit.objects.create(
    cid="Circuit 1",
    provider="provider-1",
    type="circuit-type-1",
    status="active",
)

and to filter Circuit objects of type "circuit-type-2", you would do:

Circuit.objects.filter(type="circuit-type-2")

Now in v2.x, we have renamed the Foreign Key field type on Circuit Model to circuit_type, because this naming convention made it clearer that this Foregin Key field is pointing to the model CircuitType. The same operations would look like:

Circuit.objects.create(
    cid="Circuit 1",
    provider="provider-1",
    circuit_type="circuit-type-1",
    status="active",
)
Circuit.objects.filter(circuit_type="circuit-type-2")

Check out more Foreign Key related changes documented in the table Renamed Database Fields

In addition to the changes made to Foreign Key fields' own names, some of their related_names are also renamed:

For example in v1.x, to query Circuit objects with CircuitTermination instances located in sites ["ams01", "ams02", "atl03"], you would do:

Circuit.objects.filter(terminations__site__in=["ams01", "ams02", "atl03"])

Now in v2.x, we have renamed the Foreign Key field circuit's related_name attribute terminations on CircuitTermination Model to circuit_terminations, the same operations would look like:

Circuit.objects.filter(circuit_terminations__site__in=["ams01", "ams02", "atl03"])

Check out more related-name changes documented in the table Renamed Database Fields

Renamed Filter Fields (#2804)

Some filter fields have been renamed to reflect their functionalities better.

For example in v1.X, to filter FrontPorts that has a cable attached in the UI or make changes to them via Rest API, you would use the cabled filter:

/dcim/front-ports/?cabled=True

Now in v2.x, you would instead use the has_cable filter which has a more user-friendly name:

/dcim/front-ports/?has_cable=True

Check out the specific changes documented in the table at UI and REST API Filter Changes

Enhanced Filter Fields (#2804)

Many filter fields have been enhanced to enable filtering by both slugs and UUID primary keys.

For example in v1.X, to filter Regions with a specific parent value in the UI or make changes to them via Rest API, you are only able to input slugs as the filter values:

/dcim/regions/?parent=<slug>

Now in v2.x, you are able to filter those Regions by slugs or UUID primary keys:

/dcim/regions/?parent=<slug> or /dcim/regions/?parent=<uuid>

Check out the specific changes documented in the table at UI and REST API Filter Changes

Corrected Filter Fields (#2804)

There were also instances where a foreign-key related field (e.g. console_ports) was incorrectly mapped to a boolean membership filter (e.g. has_console_ports), making it impossible to filter based on specific values of the foreign key:

For example in v1.x:

/dcim/devices/?console_ports=True and /dcim/devices/?has_console_ports=True are functionally the same and this behavior is incorrect.

This has been addressed in v2.x as follows:

console_ports and similar filters are taking foreign key UUIDs as input values and can be used in this format: /dcim/devices/?console_ports=<uuid> whereas has_console_ports and similar filters remain the same.

Check out the specific changes documented in the table at UI and REST API Filter Changes

Generic Role Model (#1063)

The DeviceRole, RackRole, ipam.Role, and IPAddressRoleChoices have all been removed and replaced with a extras.Role model, This means that all references to any of the replaced models and choices now points to this generic role model.

In addition, the role field of the IPAddress model has also been changed from a choice field to a foreign key related field to the extras.Role model.

Removed

Removed Redundant Filter Fields (#2804)

As a part of breaking changes made in v2.X, shadowed filter/filterset fields are being removed throughout Nautobot.

In Nautobot 1.x, for some of the foreign-key related fields:
- The field was shadowed for the purpose of replacing the PK filter with a lookup-based on a more human-readable value (typically slug, if available).
- A PK-based filter was available as well, generally with a name suffixed by _id

Now these two filter fields will be replaced by a single filter field that can support both slugs and UUID primary keys as inputs; As a result, PK-based filters suffixed by _id will no longer be supported in v2.0.

For example in v1.X, to filter Devices with a specific site value in the UI or make changes to them via Rest API with a UUID primary key, you will use:

/dcim/devices/?site_id=<uuid>

Now in v2.x, that format is no longer supported. Instead, you would use:

/dcim/devices/?site=<uuid>

Check out the specific changes documented in the table at UI and REST API Filter Changes

Removed RQ support (#2523)

Support for RQ and django-rq, deprecated since Nautobot 1.1.0, has been fully removed from Nautobot 2.0.

v2.0.0-alpha.1 (2023-01-31)

Added

  • #204 - Added style guide documentation for importing python modules in Nautobot.
  • #1731 - Added missing filters to circuits app.
  • #1733 - Added support for filtering on many more fields to the Tenant and TenantGroup filtersets.
  • #2954 - Added fields (contact_name, latitude, etc.) from Site model to Location model to prepare for merging all sites into locations.
  • #2955 - Added "Region" and "Site" LocationTypes and their respective locations based on existing Site and Region instances.
  • #3132 - Added the ability for apps to register their models for inclusion in the global Nautobot search.

Changed

  • #204 - Changed imports to use module namespaces in utilities/filters.py.
  • #510 - The Region, RackGroup, TenantGroup, and InventoryItem models are now based on django-tree-queries instead of django-mptt. This does change the API for certain tree operations on these models, for example get_ancestors() is now ancestors() and get_descendants() is now descendants().
  • #510 - The UI and REST API for Region, RackGroup, and TenantGroup now provide only the related count of objects (e.g. site_count for Region) that are directly related to each instance. Formerly they provided a cumulative total including objects related to its descendants as well.
  • #510 - Renamed field _depth to tree_depth in the REST API for Region, RackGroup, TenantGroup, and InventoryItem.
  • #510 - Renamed InventoryItem database relation child_items and filter fields child_items and has_child_items to children and has_children respectively.
  • #2163 - JobLogEntry.log_object, JobLogEntry.absolute_url, ScheduledJob.queue, and WebHook.ca_file_path no longer permit null database values; use "" instead if needed.
  • #2822 - Collapsed DeviceRole, RackRole, IPAM Role model and IPAddressRoleChoices into a single generic Role model.
  • #2674 - Updated development dependency black to ~22.10.0.
  • #2721 - Collapsed nautobot.utilities into nautobot.core. Refer to the 2.0 migration guide for details.
  • #2771 - Updated jsonschema version to ~4.17.0.
  • #2788 - Changed REST framework allowed versions logic to support 1.2-1.5 and 2.0+.
  • #2803 - Updated mkdocs-include-markdown-plugin to 3.9.1.
  • #2809 - Renamed tag filter on TenantFilterSet to tags same as elsewhere.
  • #2844 - Updated development dependency mkdocstrings-python to 0.8.0.
  • #2872 - Refactored imports in utilities app to follow new code style.
  • #2883 - Updated django-taggit to 3.1.0.
  • #2942 - Updated django-tree-queries to 0.13.0.
  • #2943 - Updated dependency rich to ~12.6.0.
  • #2955 - Changed CircuitTermination, Device, PowerPanel, RackGroup, Rack, Prefix, VLANGroup, VLAN, Cluster instances associated with existing Site model instances to use the newly created corresponding Locations of LocationType "Site".
  • #2993 - Implemented initial database backend for Celery task results.
  • #3027 - Updated dependencies prometheus-client, django-storages, drf-spectacular, black, django-debug-toolbar, mkdocstrings, mkdocstrings-python, pylint, requests, selenium, watchdog.
  • #3068 - Renamed fields on Circuit model: type to circuit_type, terminations to circuit_terminations, termination_a to circuit_termination_a, and termination_z to circuit_termination_z.
  • #3068 - Renamed reverse-relation circuittermination to circuit_terminations on the CablePath model.
  • #3068 - Renamed group field to vlan_group on VLAN model, renamed ipaddresses to ip_addresses on Service model.
  • #3068 - Renamed group field to tenant_group on Tenant model.
  • #3069 - Renamed foreign key fields and related names in Virtualization and DCIM apps to follow a common naming convention. See v2 upgrade guide for full list of changes.
  • #3177 - Updated VLANFactory to generate longer and more "realistic" VLAN names.

Fixed

  • #1982 - Fixed a UI presentation/validation issue with dynamic-groups using foreign-key filters that aren't explicitly defined in the corresponding FilterForm.
  • #2808 - Fixed incorrectly named filters in circuits app.
  • #3126 - Fixed Interface not raising exception when adding a VLAN from a different Site in tagged_vlans.
  • #3153 - Made integration test CableConnectFormTestCase.test_js_functionality more resilient and less prone to erroneous failures.
  • #3167 - Fixed ObjectChange records not being migrated and legacy_role__name not being a property in Role migrations.
  • #3177 - Fixed a spurious failure in BulkEditObjectsViewTestCase.test_bulk_edit_objects_with_constrained_permission.

Removed

  • #510 - Removed dependency on django-mptt. Models (Region, RackGroup, TenantGroup, InventoryItem) that previously were based on MPTT are now implemented using django-tree-queries instead.
  • #1731 - Removed redundant filters from circuits app.
  • #2163 - Removed unused NullableCharField, NullableCharFieldFilter and MACAddressField (not to be confused with MACAddressCharField, which remains) classes.
  • #2523 - Removed django-rq dependency and support for RQ workers.
  • #2815 - Removed pycryptodome dependency as it is no longer used.
  • #2993 - Removed NAUTOBOT_CELERY_RESULT_BACKEND environment variable used to customize where Celery stores task results.
  • #2993 - Removed optional settings documentation for CELERY_RESULT_BACKEND as it is no longer user-serviceable.
  • #2993 - Removed optional settings documentation for CELERY_RESULT_BACKEND_TRANSPORT_OPTIONS as it is no longer user-serviceable.
  • #3130 - Removed CSS_CLASSES definitions from legacy ChoiceSets.

Contributors

  • @gsnider2195
  • @HanlinMiao
  • @glennmatthews
  • @jathanism
  • @timizuoebideri1

Full Changelog: https://github.com/nautobot/nautobot/compare/v1.5.9...v2.0.0-alpha.1

nautobot - v1.5.9 - 2023-01-26

Published by jathanism over 1 year ago

What's Changed

Changed

  • #3117 - Update Renovate config to batch lockfile updates to next.
  • #3144 - Updated netutils to ~1.4.0
  • #3171 - Increased maximum VLAN name length from 64 characters to 255 characters.

Fixed

  • #3114 - Fixed Navbar scroll through top-level menu in low resolution desktop screens.
  • #3155 - Aligned buttons on device component create page.
  • #3169 - Fixed data mismatch in ScheduledJob causing celery workers to fail when running scheduled jobs created in versions prior to v1.5.8. ⚠ NOTE: If your celery workers are failing on startup after upgrading to v1.5.8, you may need to purge the celery queue with nautobot-server celery purge or nautobot-server celery purge -Q <queues> to purge custom queues.

Contributors

  • @bryanculver
  • @glennmatthews
  • @HanlinMiao
  • @jlixfeld
  • @jathanism
  • @timizuoebideri1

Full Changelog: https://github.com/nautobot/nautobot/compare/v1.5.8...v1.5.9

nautobot - v1.5.8 - 2023-01-23

Published by bryanculver over 1 year ago

Added

  • #3103 - Added Redis troubleshooting section to installation docs.

Changed

  • #3072 - In Nautobot's unit tests, all HTTP requests are now sent with SERVER_NAME set to nautobot.example.com instead of testserver (Django's default) and the test configuration for Nautobot itself sets ALLOWED_HOSTS to expect nautobot.example.com. This is intended to protect against issues such as #3065.
  • #3077 - Updated Nautobot release checklist to reflect current branching and pull request process.
  • #3112 - Converted eligible prefetch_related() to select_related() queries. Users should note a performance gain from this change, but note that cacheops is no longer recommended in v1.5 and this change will likely result in invalid data responses if cacheops remains enabled in your environment. Cacheops will be removed entirely in a future release.
  • #3121 - Updated Config Contexts documentation to denote support for associating by Device Redundancy Group membership.

Fixed

  • #2244 - Fixed an unnecessary and sometimes problematic database access from the Celery worker before it forks off to execute an individual job.
  • #3097 - Fixed scrolling past select dropdown in modals.
  • #3104 - Fixed bug preventing filters from being removed from list views.

Security

  • #3055 - Updated setuptools to 65.5.1 to address CVE-2022-40897. This is not a direct dependency so will not auto-update when upgrading. Please be sure to upgrade your local environment.
  • #3082 - Updated gitpython to ~3.1.30 to address CVE-2022-24439.
  • #3119 - Updated future to 0.18.3 due to CVE-2022-40899. This is not a direct dependency so will not auto-update when upgrading. Please be sure to upgrade your local environment.

Contributors

  • @gsnider2195
  • @glennmatthews
  • @bryanculver
  • @lampwins
  • @itdependsnetworks

Full Changelog: https://github.com/nautobot/nautobot/compare/v1.5.7...v1.5.8

nautobot - v1.5.7 - 2023-01-04

Published by gsnider2195 almost 2 years ago

Fixed

  • #3065 - Rolled back the changes made in 1.5.6 by #3016 to fix a breaking issue with ALLOWED_HOSTS and change-logging.

Security

  • #3074 - Sandboxed rendering of Jinja2 templates is now enforced by default in keeping with Jinja2 best practices. To enable template sandboxing in a Nautobot instance without needing to upgrade, add the following value to your nautobot_config.py and restart your Nautobot services: TEMPLATES[1]["OPTIONS"]["environment"] = "jinja2.sandbox.SandboxedEnvironment"

Contributors

  • @glennmatthews
  • @jathanism

Full Changelog: https://github.com/nautobot/nautobot/compare/v1.5.6...v1.5.7

nautobot - v1.5.6 - 2022-12-26

Published by bryanculver almost 2 years ago

Added

  • #1768 - Added the display of half-depth rack items from the rear face.
  • #2481 - Added clone_fields definition to Custom Field class.
  • #2511 - Added mouseover help text for cable connect buttons on DeviceConsolePortTable, DeviceConsoleServerPortTable, DevicePowerPortTable, DeviceInterfaceTable, DeviceFrontPortTable, DeviceRearPortTable.
  • #2951 - Added change logging when relationships are changed.
  • #2966 - Added device name to rack elevation with images.
  • #3014 - Added support for Git repositories to provide config contexts filtered by Location.
  • #3025 - Added plugin banner test back to ListObjectsViewTestCase and ensured example_plugin installation before running it.

Changed

  • #2589 - Updated all screenshots on the README.md to gifs.
  • #2970 - Updated certifi to 2022.12.7 for CVE-2022-23491. This is a nested dependency so will not auto-update when upgrading. Please be sure to upgrade your local environment.
  • #2994 - Updated mkdocs-material to 8.5.11.
  • #2995 - Updated Poetry lockfile to use new v2 version format (requiring Poetry>=1.3).
  • #2995 - Updated included poetry version in nautobot-dev container to 1.3.1.

Fixed

  • #2898 - Disabled sorting on Computed Field column.
  • #2967 - Fixed inverted device images in dark mode.
  • #2989 - Fixed legacy filters displaying UUIDs instead of user-friendly display names.
  • #2999 - Fixed several missing fields in the UI when bulk-adding components to a list of devices.
  • #3018 - Fixed rendering of Select2 widgets in modal dialogs.
  • #3028 - Fixed filter fields on advanced filter form not being alpha-sorted.
  • #3036 - Fixed MultiValueUUIDFilter's value input field in ObjectListView Advanced FilterSet Form.

Contributors

  • @HanlinMiao
  • @zackt25
  • @bryanculver
  • @glennmatthews
  • @gsnider2195
  • @lschweiss

Full Changelog: https://github.com/nautobot/nautobot/compare/v1.5.5...v1.5.6

nautobot - v1.5.5 - 2022-12-12

Published by bryanculver almost 2 years ago

Changed

  • #2663 - Changed tags field in ConfigContextForm to DynamicModelMultipleChoiceField.

Fixed

  • #2948 - Fixed incorrect assumption in test base that example_plugin would always be installed.
  • #2962 - Fixed an error raised when logging errors about a Secret with an invalid provider.
  • #2963 - Fixed 500 error when combining filtering on relationships with concrete fields.

Contributors

  • @bryanculver
  • @HanlinMiao
  • @glennmatthews
  • @jathanism

Full Changelog: https://github.com/nautobot/nautobot/compare/v1.5.4...v1.5.5

nautobot - v1.5.4 - 2022-12-02

Published by bryanculver almost 2 years ago

Added

  • #86 - Added user-guide for relationships and S3 storage backends.

Fixed

  • #2154 - Fixed SwaggerUI use of Authorization Token, API calls in SwaggerUI now use appropriate token pattern and curl command match the correct pattern.
  • #2931 - Fixed title and breadcrumb rendering in NautobotUIViewSet list views.
  • #2936 - Fixed NautobotUIViewSet views not being able to delete objects.

Contributors

  • @HanlinMiao
  • @whitej6
  • @jeffkala
  • @bryanculver

Full Changelog: https://github.com/nautobot/nautobot/compare/v1.5.3...v1.5.4

nautobot - v1.5.3 - 2022-11-29

Published by bryanculver almost 2 years ago

Fixed

  • #2924 - Fix deprecation warning flag check throwing error on startup with plugins installed.

Full Changelog: https://github.com/nautobot/nautobot/compare/v1.5.2...v1.5.3

nautobot - v1.5.2 - 2022-11-23

Published by bryanculver almost 2 years ago

Added

  • #1273 - Added section "VS Code Remote Debugging Configuration" to development chapter in documentation.
  • #2473 - Added multipart/form-data support to Job run API.
  • #2723 - Added nautobot.apps module to provide a central location for code that is recommended for use by Nautobot apps (plugins).
  • #2723 - Added code reference documentation for the nautobot.apps module.
  • #2759 - Add prometheus metrics for health check results
  • #2798 - Added LOG_DEPRECATION_WARNINGS configuration variable and corresponding environment-variable support.

Changed

  • #2644 - Changed published accepted content types for REST API to remove unsupported types.
  • #2723 - Moved app (plugin) development documentation into its own section.
  • #2723 - Revised "plugin" development documentation to refer to "apps" instead where appropriate.
  • #2779 - Renamed many mixin classes for clarity and consistency. Aliases remain but will raise DeprecationWarning.
  • #2779 - Reorganized filterset code and created nautobot.dcim.filters.mixins, nautobot.extras.filters.mixins, and nautobot.tenancy.filters.mixins submodules.
  • #2798 - Changed logging of Nautobot deprecation warnings to be silent by default (can be enabled with DEBUG or LOG_DEPRECATION_WARNINGS settings).
  • #2814 - Update dependency netutils to ~1.3.0.
  • #2817 - Update docs to not indicate prompt, makes for better use of copy code snippet feature of MkDocs
  • #2838 - Fixed filter selection box colors in dark mode.
  • #2878 - Changed Upstream Workflow Job to continue on error for group, not each specific job.

Fixed

  • #1519 - Extending the model table columns that need to display copy button when hovered over.
  • #2477 - Fixed last login time being updated during maintenance mode when remote user authentication is used.
  • #2744 - Enforced required Relationships when bulk editing or creating objects that have required relationships. Bulk edit via API or UI. Bulk create via API.
  • #2774 - Fixed SiteFactory time_zone attribute to use only pytz.common_timezones.
  • #2795 - Fixed changelog diff data to fall back to object_data when object_data_v2 is not present for both ObjectChange instances.
  • #2816 - Fixed issue where changing the interface mode first required removing tagged_vlans in a different request.
  • #2819 - Adds appropriate invoke task for running docs locally and adds how to run manually.
  • #2833 - Fixed plugin banner issue and breadcrumb rendering issue in NautobotHTMLRenderer.
  • #2837 - Fixed incorrect logic in nautobot.utilities.utils.is_single_choice_field that was causing valid filters to report as invalid.

Contributors

  • @glennmatthews
  • @HanlinMiao
  • @gsnider2195
  • @jifox
  • @matt852
  • @timizuoebideri1
  • @briddo
  • @christhant
  • @bryanculver
  • @joaopsys
  • @Kircheneer
  • @jvanderaa

New Contributors

Full Changelog: https://github.com/nautobot/nautobot/compare/v1.5.1...v1.5.2

nautobot - v1.5.1 (2022-11-14)

Published by jathanism almost 2 years ago

Added

  • #2500 - Added try/except block to catch NoReverseMatch exception in NotesSerializerMixin and return helpful message.
  • #2556 - Revised TODO/FIXME comments for more clarity.
  • #2740 - Added ObjectChangeLogView and ObjectNotesView Viewset mixins and routes.

Changed

  • #1813 - Updated Example_Plugin to use NautobotUIViewSet.

Fixed

  • #2470 - Fixed incorrect automatic generation of Location slugs in the UI.
  • #2757 - Fixed filters on default filter form replaces filters on dynamic filter form on submit
  • #2761 - Fixed failover strategy not being displayed on Device Redundancy Group page.
  • #2789 - Fixed web UI footer margin and swagger UI authorization box size.
  • #2824 - Fixed an issue when filtering on nested related fields for Dynamic Groups.

Contributors

  • @glennmatthews
  • @HanlinMiao
  • @jathanism
  • @smk4664
  • @timizuoebideri1
  • @gsnider2195

Full Changelog: https://github.com/nautobot/nautobot/compare/v1.5.0...v1.5.1

nautobot - v1.5.0 - 2022-11-08

Published by bryanculver almost 2 years ago

Release Overview

Added

Custom Field Grouping (#899)

Custom fields can now be assigned to a free-text "grouping" to improve usability when a large number of custom fields are defined on a given model. In the UI, fields in the same grouping will be grouped together, and groupings can be expanded/collapsed for display purposes.

Device Redundancy Groups (#1892)

Device Redundancy Groups have been added to model groups of distinct devices that perform device clustering or failover high availability functions. This may be used to model whole device redundancy strategies across devices with separate control planes (ex: ASA failover), not devices that share a control plane (ex: stackwise switch stacks), or interface specific redundancy strategies (ex: hsrp). Device Redundancy Groups support grouping an arbitrary number of devices and may be assigned an optional secrets group and one or more optional failover strategies.

Custom Celery Task Queues (#2421)

A new optional job property task_queues has been introduced to allow Nautobot to leverage custom celery queues for jobs. This will allow you to send jobs to specific workers based on which queue is selected. This property can be set on the job class and overridden in the job model, similar to other overridable job fields. If task_queues is not defined on the job class or job model, the job will only be able to use the default queue. A new field has been added to the job run form to allow you to select a queue when you run the job and an optional field task_queue has been added to the REST API job run endpoint for the same purpose.

The default celery queue name has been changed from celery to default. If you have any workers or tasks hard coded to use celery you will need to update those workers/tasks or change the CELERY_TASK_DEFAULT_QUEUE setting in your nautobot_config.py.

Added nautobot-server generate_test_data command (#2536)

A new management command, nautobot-server generate_test_data, has been added that can be used to populate the Nautobot database with various data as a baseline for manual or automated testing. This is now used internally by Nautobot's unit testing suite to create a synthetic data set that looks and feels like real data with randomly-generated values. Most importantly, the objects are created with all of the fields fully and correctly populated, to assert that each object in the database is properly exercising all features.

Be very cautious about running this command on your server instance. It is not intended to be used in production environments and will result in data loss.

Nestable LocationTypes (#2608)

LocationType definitions can now be flagged as nestable. When this flag is set, Locations of this type may nest within one another, similar to how Regions work at present. This allows you to have a variable-depth hierarchy of Locations, for example:

  • Main Campus ("Building Group" location type)
    • West Campus (Building Group)
      • Building A ("Building" location type)
      • Building B (Building)
    • East Campus (Building Group)
      • Building C (Building)
      • Building D (Building)
    • South Campus (Building Group)
      • Western South Campus (Building Group)
        • Building G (Building)
  • Satellite Campus (Building Group)
    • Building Z (Building)

In the above example, only two LocationTypes are defined ("Building Group" and "Building") but the "Building Group" type is flagged as nestable, so one Building Group may contain another Building Group.

Required Relationships (#873)

Relationships can be marked as being required. By default, relationships are not marked as being required.

To mark a relationship as being required, select "Source objects MUST implement this relationship" or conversely "
Destination objects MUST implement this relationship" from the "Required on" field when editing or creating a
relationship:

  • If "Destination objects MUST implement this relationship" is selected, objects of the type selected in "Destination Type" will enforce this relationship when they are created or edited.
  • If "Source objects MUST implement this relationship" is selected, objects of the type selected in "Source Type" will enforce this relationship when they are created or edited.

Changed

Database Query Caching is now Disabled by Default (#1721)

In prior versions of Nautobot, database query caching using the django-cacheops application (aka Cacheops) was enabled by default. This is determined by the default value of the CACHEOPS_ENABLED setting being set to True.

Through much trial and error we ultimately decided that this feature is more trouble than it is worth and we have begun to put more emphasis on improving performance of complex database queries over continuing to rely upon the various benefits and pitfalls of utilizing Cacheops.

As a result, the value of this setting now defaults to False, disabling database query caching entirely for new deployments. Cacheops will be removed entirely in a future release.

Users with existing nautobot_config.py files generated from earlier versions of Nautobot will still have CACHEOPS_ENABLED = True unless they modify or regenerate their configuration. If users no longer desire caching, please be sure to explicitly toggle the value of this setting to False and restart your Nautobot services.

Redesigned List Filtering UI (#1998)

Added a dynamic filter form that allows users to filter object tables/lists by any field and lookup expression combination supported by the corresponding FilterSet and API.


v1.5.0 is unchanged from v1.5.0-beta.1

Added

  • #270 - Added custom fields user guide to documentation.
  • #873 - Made it possible to require Relationships to be included when editing or creating the related models.
  • #899 - Added support for grouping of Custom Fields.
  • #1468 - Added relationship columns to ObjectListTableView and disabled sorting.
  • #1892 - Added DeviceRedundancyGroup model for representing a logical grouping of physical hardware for the purposes of high-availability.
  • #2063 - Added documentation and initial support for custom celery queues.
  • #2064 - Added task_queues job property to support custom celery queues.
  • #2227 - Added generating performance report options to 'invoke unittest'.
  • #2227 - Added invoke performance-test to tasks.py.
  • #2281 - Added test database fixtures for Tag and Status models.
  • #2282 - Added fixture factory for Region, Site, Location, LocationType.
  • #2283 - Added test fixture factories for Prefix and IPAddress models.
  • #2460 - Added search box filter form to generic list views.
  • #2479 - Added factory-boy as development dependency. Added factories for Tenant, TenantGroup, RIR, and Aggregate models. Updated test runner global setup to use these factories to pre-populate baseline data.
  • #2514 - Added test factories for RouteTarget, VRF, Role, VLANGroup, and VLAN models.
  • #2514 - Added OrganizationalModelFactory and PrimaryModelFactory base classes.
  • #2514 - Added TenancyFilterTestCaseMixin class.
  • #2518 - Added base_site and subtree filters to LocationFilterSet, allowing for filtering Locations by their root ancestor or its Site.
  • #2536 - Added nautobot-server generate_test_data command.
  • #2536 - Added TEST_USE_FACTORIES and TEST_FACTORY_SEED optional settings.
  • #2593 - Added StatusFactory and TagFactory classes.
  • #2594 - Added factories for DCIM DeviceRole, DeviceType, Manufacturer, and Platform.
  • #2608 - Added the option for certain LocationTypes to be nestable (similar to Regions).
  • #2617 - Added dynamic filter form support to specialized list views.
  • #2686 - Added test helper method to FilterTestCases to find values suitable for testing multiple choice filters.

Changed

  • #1892 - Updated Device to have device_redundancy_group relationship, device_redundancy_group_priority numeric property.
  • #1892 - Updated ConfigContext to have ManyToManyField to dcim.DeviceRedundancyGroup for the purposes of applying a ConfigContext based upon a Devices DeviceRedundancyGroup membership.
  • #1983 - Updated django-taggit dependency to 3.0.0.
  • #1998 - Added DynamicFilterForm to list views.
  • #2064 - Changed default celery queue name from celery to default.
  • #2170 - Updated django-constance dependency to 2.9.1; updated Jinja2 dependency to 3.1.2; updated black development dependency to 22.8.0.
  • #2282 - Changed unittests to use Site, Region, Location, LocationType fixtures.
  • #2320 - Removed PKs from Tag test database fixture.
  • #2482 - Updated djangorestframework to ~3.14.0, drf-spectacular to 0.24.2.
  • #2483 - Updated mkdocs to 1.4.2 and mkdocs-material to 8.5.8.
  • #2484 - Updated django-debug-toolbar to ~3.7.0
  • #2551 - Updated development dependency on coverage to version 6.5.0.
  • #2562 - Updated django-mptt dependency to 0.14.0.
  • #2597 - Updated GitPython dependency from 3.1.27 to 3.1.29.
  • #2615 - Changed ConfigContextFilterForms schema filter form field to support added filter field on ConfigContextFilterSet.
  • #2615 - Changed BaseNetworkQuerySet and IPAddressQuerySet to search both IPv6 and IPv4 when given search string is ambiguous.
  • #2615 - Changed test_slug_not_modified to ensure no collision on new slug source value as well as changing lookup expression from __contains to __exact.
  • #2615 - Changed DeleteObjectViewTestCase.get_deletable_object to throw a helpful failure message when deletable object not found.
  • #2645 - Updated psycopg2-binary dependency from 2.9.3 to 2.9.5.
  • #2710 - Updated pyuwsgi minimum version from 2.0.20 to 2.0.21.
  • #2711 - Updated Pillow package dependency from 9.2.0 to 9.3.0.
  • #2746 - Changed LocationType test case to not attempt to re-parent a LocationType with descendant Locations.

Fixed

  • #192 - Eliminated Unit Test noisy output.
  • #2266 - Fixed navbar floating over main viewport scrollbar.
  • #2388 - Return "—" instead of "None" when relationship column is empty.
  • #2536 - Made use of test factories optional when using Nautobot test runner.
  • #2555 - Fixed broken accordion for Job list view.
  • #2615 - Fixed ConfigContextFilterSet missing schema filter but existed on form.
  • #2615 - Fixed Device(Form)TestCase flaky test setup possibly not finding a DeviceType with a Manufacturer with associated Platforms that is full depth and 1U height.
  • #2615 - Fixed Location(View)TestCase, RouteTarget(View)TestCase flaky test setup possibly finding names for csv_data that might include commas but not escaped.
  • #2615 - Fixed PrefixFactory may randomly decide to create a child of 2.2.2.2/32.
  • #2615 - Fixed BaseNetworkQuerySet and IPAddressQuerySet only searching non-abbreviated first hextet IPv6 addresses.
  • #2615 - Fixed DynamicFilterLookupExpressionTest, VirtualChassis(Filter)TestCase, Cluster(Filter)TestCase, VirtualMachine(Filter)TestCase had too narrow of a region lookup for supported tests.
  • #2615 - Fixed RackGroup(Model)Test, Prefix(Model)Test, VLANGroup(Model)Test may randomly choose to update to the same site.
  • #2615 - Fixed Tenant(View)TestCase, RIR(View)TestCase may not find deletable objects.
  • #2615 - Fixed VLAN(View)TestCase may not find enough Sites with Locations.
  • #2691 - Fixed hard coded tests that were failing after factory fixtures were integrated.
  • #2746 - Fixed Site latitude, longitude clean method for when valid string value entered.

Removed

  • #2593 - Removed static test fixtures since we're using factories now instead.

Contributors

  • @glennmatthews
  • @HanlinMiao
  • @gsnider2195
  • @jathanism
  • @timizuoebideri1
  • @bryanculver
  • @briddo

Full Changelog: https://github.com/nautobot/nautobot/compare/v1.4.10...v1.5.0

nautobot - v1.5.0-beta.1 - 2022-11-07

Published by bryanculver almost 2 years ago

Release Overview

Added

Custom Field Grouping (#899)

Custom fields can now be assigned to a free-text "grouping" to improve usability when a large number of custom fields are defined on a given model. In the UI, fields in the same grouping will be grouped together, and groupings can be expanded/collapsed for display purposes.

Device Redundancy Groups (#1892)

Device Redundancy Groups have been added to model groups of distinct devices that perform device clustering or failover high availability functions. This may be used to model whole device redundancy strategies across devices with separate control planes (ex: ASA failover), not devices that share a control plane (ex: stackwise switch stacks), or interface specific redundancy strategies (ex: hsrp). Device Redundancy Groups support grouping an arbitrary number of devices and may be assigned an optional secrets group and one or more optional failover strategies.

Custom Celery Task Queues (#2421)

A new optional job property task_queues has been introduced to allow Nautobot to leverage custom celery queues for jobs. This will allow you to send jobs to specific workers based on which queue is selected. This property can be set on the job class and overridden in the job model, similar to other overridable job fields. If task_queues is not defined on the job class or job model, the job will only be able to use the default queue. A new field has been added to the job run form to allow you to select a queue when you run the job and an optional field task_queue has been added to the REST API job run endpoint for the same purpose.

The default celery queue name has been changed from celery to default. If you have any workers or tasks hard coded to use celery you will need to update those workers/tasks or change the CELERY_TASK_DEFAULT_QUEUE setting in your nautobot_config.py.

Added nautobot-server generate_test_data command (#2536)

A new management command, nautobot-server generate_test_data, has been added that can be used to populate the Nautobot database with various data as a baseline for manual or automated testing. This is now used internally by Nautobot's unit testing suite to create a synthetic data set that looks and feels like real data with randomly-generated values. Most importantly, the objects are created with all of the fields fully and correctly populated, to assert that each object in the database is properly exercising all features.

Be very cautious about running this command on your server instance. It is not intended to be used in production environments and will result in data loss.

Nestable LocationTypes (#2608)

LocationType definitions can now be flagged as nestable. When this flag is set, Locations of this type may nest within one another, similar to how Regions work at present. This allows you to have a variable-depth hierarchy of Locations, for example:

  • Main Campus ("Building Group" location type)
    • West Campus (Building Group)
      • Building A ("Building" location type)
      • Building B (Building)
    • East Campus (Building Group)
      • Building C (Building)
      • Building D (Building)
    • South Campus (Building Group)
      • Western South Campus (Building Group)
        • Building G (Building)
  • Satellite Campus (Building Group)
    • Building Z (Building)

In the above example, only two LocationTypes are defined ("Building Group" and "Building") but the "Building Group" type is flagged as nestable, so one Building Group may contain another Building Group.

Required Relationships (#873)

Relationships can be marked as being required. By default, relationships are not marked as being required.

To mark a relationship as being required, select "Source objects MUST implement this relationship" or conversely "
Destination objects MUST implement this relationship" from the "Required on" field when editing or creating a
relationship:

  • If "Destination objects MUST implement this relationship" is selected, objects of the type selected in "Destination Type" will enforce this relationship when they are created or edited.
  • If "Source objects MUST implement this relationship" is selected, objects of the type selected in "Source Type" will enforce this relationship when they are created or edited.

Changed

Database Query Caching is now Disabled by Default (#1721)

In prior versions of Nautobot, database query caching using the django-cacheops application (aka Cacheops) was enabled by default. This is determined by the default value of the CACHEOPS_ENABLED setting being set to True.

Through much trial and error we ultimately decided that this feature is more trouble than it is worth and we have begun to put more emphasis on improving performance of complex database queries over continuing to rely upon the various benefits and pitfalls of utilizing Cacheops.

As a result, the value of this setting now defaults to False, disabling database query caching entirely for new deployments. Cacheops will be removed entirely in a future release.

Users with existing nautobot_config.py files generated from earlier versions of Nautobot will still have CACHEOPS_ENABLED = True unless they modify or regenerate their configuration. If users no longer desire caching, please be sure to explicitly toggle the value of this setting to False and restart your Nautobot services.

Redesigned List Filtering UI (#1998)

Added a dynamic filter form that allows users to filter object tables/lists by any field and lookup expression combination supported by the corresponding FilterSet and API.


v1.5.0-beta.1

Added

  • #270 - Added custom fields user guide to documentation.
  • #873 - Made it possible to require Relationships to be included when editing or creating the related models.
  • #899 - Added support for grouping of Custom Fields.
  • #1468 - Added relationship columns to ObjectListTableView and disabled sorting.
  • #1892 - Added DeviceRedundancyGroup model for representing a logical grouping of physical hardware for the purposes of high-availability.
  • #2063 - Added documentation and initial support for custom celery queues.
  • #2064 - Added task_queues job property to support custom celery queues.
  • #2227 - Added generating performance report options to 'invoke unittest'.
  • #2227 - Added invoke performance-test to tasks.py.
  • #2281 - Added test database fixtures for Tag and Status models.
  • #2282 - Added fixture factory for Region, Site, Location, LocationType.
  • #2283 - Added test fixture factories for Prefix and IPAddress models.
  • #2460 - Added search box filter form to generic list views.
  • #2479 - Added factory-boy as development dependency. Added factories for Tenant, TenantGroup, RIR, and Aggregate models. Updated test runner global setup to use these factories to pre-populate baseline data.
  • #2514 - Added test factories for RouteTarget, VRF, Role, VLANGroup, and VLAN models.
  • #2514 - Added OrganizationalModelFactory and PrimaryModelFactory base classes.
  • #2514 - Added TenancyFilterTestCaseMixin class.
  • #2518 - Added base_site and subtree filters to LocationFilterSet, allowing for filtering Locations by their root ancestor or its Site.
  • #2536 - Added nautobot-server generate_test_data command.
  • #2536 - Added TEST_USE_FACTORIES and TEST_FACTORY_SEED optional settings.
  • #2593 - Added StatusFactory and TagFactory classes.
  • #2594 - Added factories for DCIM DeviceRole, DeviceType, Manufacturer, and Platform.
  • #2608 - Added the option for certain LocationTypes to be nestable (similar to Regions).
  • #2617 - Added dynamic filter form support to specialized list views.
  • #2686 - Added test helper method to FilterTestCases to find values suitable for testing multiple choice filters.

Changed

  • #1892 - Updated Device to have device_redundancy_group relationship, device_redundancy_group_priority numeric property.
  • #1892 - Updated ConfigContext to have ManyToManyField to dcim.DeviceRedundancyGroup for the purposes of applying a ConfigContext based upon a Devices DeviceRedundancyGroup membership.
  • #1983 - Updated django-taggit dependency to 3.0.0.
  • #1998 - Added DynamicFilterForm to list views.
  • #2064 - Changed default celery queue name from celery to default.
  • #2170 - Updated django-constance dependency to 2.9.1; updated Jinja2 dependency to 3.1.2; updated black development dependency to 22.8.0.
  • #2282 - Changed unittests to use Site, Region, Location, LocationType fixtures.
  • #2320 - Removed PKs from Tag test database fixture.
  • #2482 - Updated djangorestframework to ~3.14.0, drf-spectacular to 0.24.2.
  • #2483 - Updated mkdocs to 1.4.2 and mkdocs-material to 8.5.8.
  • #2484 - Updated django-debug-toolbar to ~3.7.0
  • #2551 - Updated development dependency on coverage to version 6.5.0.
  • #2562 - Updated django-mptt dependency to 0.14.0.
  • #2597 - Updated GitPython dependency from 3.1.27 to 3.1.29.
  • #2615 - Changed ConfigContextFilterForms schema filter form field to support added filter field on ConfigContextFilterSet.
  • #2615 - Changed BaseNetworkQuerySet and IPAddressQuerySet to search both IPv6 and IPv4 when given search string is ambiguous.
  • #2615 - Changed test_slug_not_modified to ensure no collision on new slug source value as well as changing lookup expression from __contains to __exact.
  • #2615 - Changed DeleteObjectViewTestCase.get_deletable_object to throw a helpful failure message when deletable object not found.
  • #2645 - Updated psycopg2-binary dependency from 2.9.3 to 2.9.5.
  • #2710 - Updated pyuwsgi minimum version from 2.0.20 to 2.0.21.
  • #2711 - Updated Pillow package dependency from 9.2.0 to 9.3.0.
  • #2746 - Changed LocationType test case to not attempt to re-parent a LocationType with descendant Locations.

Fixed

  • #192 - Eliminated Unit Test noisy output.
  • #2266 - Fixed navbar floating over main viewport scrollbar.
  • #2388 - Return "—" instead of "None" when relationship column is empty.
  • #2536 - Made use of test factories optional when using Nautobot test runner.
  • #2555 - Fixed broken accordion for Job list view.
  • #2615 - Fixed ConfigContextFilterSet missing schema filter but existed on form.
  • #2615 - Fixed Device(Form)TestCase flaky test setup possibly not finding a DeviceType with a Manufacturer with associated Platforms that is full depth and 1U height.
  • #2615 - Fixed Location(View)TestCase, RouteTarget(View)TestCase flaky test setup possibly finding names for csv_data that might include commas but not escaped.
  • #2615 - Fixed PrefixFactory may randomly decide to create a child of 2.2.2.2/32.
  • #2615 - Fixed BaseNetworkQuerySet and IPAddressQuerySet only searching non-abbreviated first hextet IPv6 addresses.
  • #2615 - Fixed DynamicFilterLookupExpressionTest, VirtualChassis(Filter)TestCase, Cluster(Filter)TestCase, VirtualMachine(Filter)TestCase had too narrow of a region lookup for supported tests.
  • #2615 - Fixed RackGroup(Model)Test, Prefix(Model)Test, VLANGroup(Model)Test may randomly choose to update to the same site.
  • #2615 - Fixed Tenant(View)TestCase, RIR(View)TestCase may not find deletable objects.
  • #2615 - Fixed VLAN(View)TestCase may not find enough Sites with Locations.
  • #2691 - Fixed hard coded tests that were failing after factory fixtures were integrated.
  • #2746 - Fixed Site latitude, longitude clean method for when valid string value entered.

Removed

  • #2593 - Removed static test fixtures since we're using factories now instead.

Contributors

  • @glennmatthews
  • @HanlinMiao
  • @gsnider2195
  • @jathanism
  • @timizuoebideri1
  • @bryanculver
  • @briddo

Full Changelog: https://github.com/nautobot/nautobot/compare/v1.4.10...v1.5.0-beta.1

nautobot - v1.4.10 - 2022-11-07

Published by bryanculver almost 2 years ago

Changed

  • #2758 - Changed console logging back to disabled by default when running nautobot-server test ....

Fixed

  • #2755 - Fixed incorrect file permissions on /opt/nautobot/nautobot_config.py in final Docker images.

Contributors

  • @glennmatthews

Full Changelog: https://github.com/nautobot/nautobot/compare/v1.4.9...v1.4.10

nautobot - v1.4.9 - 2022-11-04

Published by HanlinMiao almost 2 years ago

Added

  • #1720 - Added NullableDateField to enable Date Type CustomField to filter on null value.
  • #2685 - Added watchdog dev-dependency explicitly.
  • #2685 - Added watchmedo command to worker container to allow container to restart on file change and documented.

Changed

  • #2658 - Updated plugin development documentation to introduce NautobotUIViewSet as the first approach for the Adding Web UI Views section.
  • #2669 - Blocked changing the parent of a LocationType when it already has Locations using it.
  • #2671 - Changed the published nautobot-dev images to use the same default nautobot_config.py as the published nautobot images, instead of using the Nautobot core development nautobot_config.py file.
  • #2671 - Renamed development/docker-compose.build.yml to development/docker-compose.final.yml to better reflect its meaning.
  • #2671 - Changed the image labels used in the docker-compose development workflow to reduce ambiguity.

Fixed

  • #2406 - Fixed missing HTML element ID for hyperlinks.
  • #2419 - Fixed the null device interface status when a device is created with a device_role associated to an InterfaceTemplate.
  • #2552 - Updated CSS to better account for footer resizing.
  • #2601 - Fixed an issue where a Git repository could provide Jobs even if not marked as a provider of Jobs.
  • #2682 - Fixed test failing when version number contains alpha characters.
  • #2683 - Fixed so that unauthenticated users don't see the version number for Nautobot in the footer.
  • #2684 - Fixed "The results could not be loaded" when filtering ContentTypes in the UI.
  • #2688 - Fixed exception not raised when the interface contains a tagged vlan but mode is not set to tagged.
  • #2702 - Fixed NautobotUIViewSet BulkCreateViewMixin validation error handling and .csv file import issue.
  • #2706 - Fixed a ValidationError that could occur when specifying Site latitude/longitude as a float.
  • #2712 - Updated docs links to include the /projects/core in the url path to link correctly.
  • #2717 - Fixed backwards-compatibility with changes made to TreeNodeMultipleChoiceFilter.
  • #2733 - Fixed bug in run_job_for_testing when no request is provided.
  • #2736 - Fixed incorrect site_url setting for MkDocs.

Contributors

  • @Jonher937
  • @david-kn
  • @gsnider2195
  • @itdependsnetworks
  • @timizuoebideri1
  • @glennmatthews
  • @jathanism
  • @HanlinMiao
  • @michizhou
  • @whitej6

New Contributors

Full Changelog: https://github.com/nautobot/nautobot/compare/v1.4.8...v1.4.9

nautobot - v1.4.8 - 2022-10-31

Published by bryanculver almost 2 years ago

Added

  • #2086 - Added JobResult export feature.
  • #2578 - Added support for the documented environment variables in Nautobot's base settings.py, so that they will be recognized even when using a minimal nautobot_config.py or one that was not generated by nautobot-server init.
  • #2578 - Added documentation of more configuration options in the configuration that is generated by nautobot-server init.
  • #2578 - Added a warning in the documentation about django-cryptography and changing SECRET_KEY.
  • #2590 - Added unit tests for bulk-editing and bulk-deleting all instances of a model.
  • #2619 - Added notes about restarting the Nautobot server after creating relationships, custom fields, and computed fields to show them in GraphQL.
  • #2675 - Added the ability to configure Redis Unix socket connections.
  • #2681 - Added multiple assert failure messages to UpdateObjectViewTestCase.

Changed

  • #2578 - Updated defaults in settings.py to more closely align to the documentation. If you're using a configuration file generated by nautobot-server init, these changes should have no impact, but if you have a manually crafted configuration file, please verify that the configuration of your system is still as expected after upgrading, with a particular focus on the database configuration, SECRET_KEY, and LOGGING.
  • #2578 - Changed the default LOGGING configuration for virtualenv installs to be the same as it is for Nautobot's published Docker images.
  • #2578 - Revised the template for new configurations generated by nautobot-server init to have less redundancy with Nautobot's built-in settings.py.
  • #2585 - Updated dependency django-health-check from 3.16.5 to 3.16.7.
  • #2585 - Updated dependency psycopg2-binary from 2.9.3 to 2.9.4.
  • #2585 - Updated development dependency coverage from 6.4.2 to 6.4.4.
  • #2585 - Updated development dependency invoke from 1.7.1 to 1.7.3.
  • #2585 - Updated development dependency mkdocs-material from 8.4.2 to 8.4.4.
  • #2591 - Updated README.md to include additional information about the Nautobot project.

Fixed

  • #2099 - Fixed PowerFeed Utilization on Rack View not displaying correctly.
  • #2099 - Fixed Total Power Utilization on Rack View not taking into account direct-connected devices.
  • #2099 - Fixed created_updated template adding the end small tag twice.
  • #2146 - Added signals to log when a user logs in and logs out to fix a bug where SSO logins were not being logged.
  • #2426 - Fixed weekly scheduled job executing a day early.
  • #2489 - Fixed custom field regex validation always anchored to beginning of string.
  • #2494 - Fixed custom field regex validation not being enforced on URL custom fields.
  • #2513 - Fixed an issue with DynamicGroup not properly filtering by Region or Location.
  • #2578 - Fixed issue where the documented environment variables for various configuration settings would not be supported if using a minimal nautobot_config.py that was not generated from nautobot-server init.
  • #2632 - Fixed incorrect link from Circuit Type detail view to filtered Circuits table.
  • #2652 - Fixed the issue with Job ObjectChange and Notes not displaying the page header.
  • #2655 - Fixed error when selecting a "related path" from the Cable Trace view.
  • #2661 - Fixed default tagging of Docker images built with invoke buildx.
  • #2677 - Fixed a documentation error by adding an import statement to a code example in nautobot/docs/plugins/development.md.
  • #2690 - Fixed test settings to disable logging when running tests.
  • #2693 - Fixed filtering by tree node objects in nested Dynamic Groups.

Security

  • #2651 - Updated Django minimum version to 3.2.16 due to CVE-2022-41323.

Contributors

  • @glennmatthews
  • @HanlinMiao
  • @timizuoebideri1
  • @jathanism
  • @Dav-C
  • @gsnider2195
  • @jake2184
  • @Kircheneer
  • @smk4664
  • @itdependsnetworks
  • @qduk
  • @Santhusha-bit

New Contributors

Full Changelog: https://github.com/nautobot/nautobot/compare/v1.4.7...v1.4.8