nautobot 2.4.5__py3-none-any.whl → 2.4.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of nautobot might be problematic. Click here for more details.
- nautobot/apps/forms.py +2 -0
- nautobot/circuits/templates/circuits/providernetwork.html +1 -1
- nautobot/circuits/templates/circuits/providernetwork_retrieve.html +2 -55
- nautobot/circuits/views.py +20 -23
- nautobot/cloud/templates/cloud/cloudaccount_retrieve.html +2 -40
- nautobot/cloud/views.py +12 -0
- nautobot/core/api/mixins.py +10 -0
- nautobot/core/api/urls.py +2 -2
- nautobot/core/api/views.py +39 -1
- nautobot/core/celery/encoders.py +2 -2
- nautobot/core/forms/__init__.py +2 -0
- nautobot/core/forms/fields.py +23 -7
- nautobot/core/forms/utils.py +1 -0
- nautobot/core/forms/widgets.py +18 -0
- nautobot/core/jobs/bulk_actions.py +1 -1
- nautobot/core/management/commands/generate_test_data.py +1 -1
- nautobot/core/models/name_color_content_types.py +9 -0
- nautobot/core/models/validators.py +7 -0
- nautobot/core/settings.py +0 -14
- nautobot/core/settings.yaml +0 -28
- nautobot/core/tables.py +6 -1
- nautobot/core/templates/generic/object_retrieve.html +1 -1
- nautobot/core/templates/widgets/sluginput.html +5 -1
- nautobot/core/templatetags/helpers.py +15 -1
- nautobot/core/testing/api.py +18 -0
- nautobot/core/testing/integration.py +6 -2
- nautobot/core/tests/nautobot_config.py +0 -2
- nautobot/core/tests/runner.py +17 -140
- nautobot/core/tests/test_api.py +4 -4
- nautobot/core/tests/test_authentication.py +83 -4
- nautobot/core/tests/test_forms.py +11 -8
- nautobot/core/tests/test_graphql.py +9 -0
- nautobot/core/tests/test_jobs.py +7 -0
- nautobot/core/ui/object_detail.py +47 -3
- nautobot/core/utils/lookup.py +2 -2
- nautobot/dcim/factory.py +2 -0
- nautobot/dcim/filters/__init__.py +5 -0
- nautobot/dcim/forms.py +27 -1
- nautobot/dcim/migrations/0068_alter_softwareimagefile_download_url.py +19 -0
- nautobot/dcim/migrations/0069_softwareimagefile_external_integration.py +25 -0
- nautobot/dcim/models/devices.py +9 -2
- nautobot/dcim/models/locations.py +9 -0
- nautobot/dcim/tables/devices.py +1 -0
- nautobot/dcim/templates/dcim/device_list.html +1 -1
- nautobot/dcim/templates/dcim/devicetype.html +1 -1
- nautobot/dcim/templates/dcim/manufacturer.html +1 -63
- nautobot/dcim/templates/dcim/module_list.html +1 -1
- nautobot/dcim/templates/dcim/moduletype_retrieve.html +1 -1
- nautobot/dcim/templates/dcim/softwareimagefile_retrieve.html +4 -0
- nautobot/dcim/tests/integration/test_module_bay_position.py +125 -0
- nautobot/dcim/tests/test_api.py +74 -31
- nautobot/dcim/tests/test_filters.py +2 -0
- nautobot/dcim/tests/test_models.py +78 -0
- nautobot/dcim/tests/test_views.py +7 -1
- nautobot/dcim/urls.py +1 -45
- nautobot/dcim/views.py +35 -66
- nautobot/extras/choices.py +4 -0
- nautobot/extras/filters/__init__.py +6 -0
- nautobot/extras/forms/forms.py +83 -11
- nautobot/extras/models/customfields.py +10 -9
- nautobot/extras/plugins/marketplace_manifest.yml +18 -0
- nautobot/extras/signals.py +43 -4
- nautobot/extras/tables.py +4 -5
- nautobot/extras/tasks.py +4 -2
- nautobot/extras/templates/extras/contact_retrieve.html +1 -58
- nautobot/extras/templates/extras/exporttemplate.html +1 -53
- nautobot/extras/templates/extras/inc/panel_changelog.html +1 -1
- nautobot/extras/templates/extras/inc/panel_jobhistory.html +1 -1
- nautobot/extras/templates/extras/status.html +1 -37
- nautobot/extras/templates/extras/team_retrieve.html +1 -58
- nautobot/extras/tests/integration/test_notes.py +1 -1
- nautobot/extras/tests/test_api.py +22 -7
- nautobot/extras/tests/test_changelog.py +4 -4
- nautobot/extras/tests/test_customfields.py +27 -0
- nautobot/extras/tests/test_plugins.py +19 -13
- nautobot/extras/tests/test_relationships.py +9 -0
- nautobot/extras/tests/test_tags.py +2 -2
- nautobot/extras/tests/test_views.py +37 -6
- nautobot/extras/urls.py +3 -100
- nautobot/extras/views.py +111 -133
- nautobot/ipam/tables.py +7 -2
- nautobot/ipam/templates/ipam/namespace_retrieve.html +0 -41
- nautobot/ipam/templates/ipam/service.html +2 -46
- nautobot/ipam/templates/ipam/service_edit.html +1 -17
- nautobot/ipam/templates/ipam/service_retrieve.html +7 -0
- nautobot/ipam/tests/migration/__init__.py +0 -0
- nautobot/ipam/tests/migration/test_migrations.py +510 -0
- nautobot/ipam/tests/test_api.py +66 -36
- nautobot/ipam/tests/test_filters.py +0 -10
- nautobot/ipam/tests/test_views.py +44 -2
- nautobot/ipam/urls.py +2 -47
- nautobot/ipam/utils/migrations.py +185 -152
- nautobot/ipam/utils/testing.py +177 -0
- nautobot/ipam/views.py +95 -157
- nautobot/project-static/css/base.css +5 -0
- nautobot/project-static/docs/404.html +0 -2
- nautobot/project-static/docs/apps/index.html +0 -2
- nautobot/project-static/docs/apps/nautobot-apps.html +0 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +0 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +0 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/api.html +0 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +0 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +0 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/config.html +0 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +0 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +0 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/events.html +0 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +0 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +0 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +0 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +62 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +0 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +0 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/models.html +47 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +0 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +0 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +18 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +0 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +70 -5
- nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +0 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +0 -2
- nautobot/project-static/docs/code-reference/nautobot/apps/views.html +0 -2
- nautobot/project-static/docs/development/apps/api/configuration-view.html +0 -2
- nautobot/project-static/docs/development/apps/api/database-backend-config.html +0 -2
- nautobot/project-static/docs/development/apps/api/models/django-admin.html +0 -2
- nautobot/project-static/docs/development/apps/api/models/global-search.html +0 -2
- nautobot/project-static/docs/development/apps/api/models/graphql.html +0 -2
- nautobot/project-static/docs/development/apps/api/models/index.html +0 -2
- nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +0 -2
- nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +0 -2
- nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +0 -2
- nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +0 -2
- nautobot/project-static/docs/development/apps/api/platform-features/index.html +0 -2
- nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +0 -2
- nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +0 -2
- nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +0 -2
- nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +0 -2
- nautobot/project-static/docs/development/apps/api/platform-features/table-extensions.html +0 -2
- nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +0 -2
- nautobot/project-static/docs/development/apps/api/prometheus.html +0 -2
- nautobot/project-static/docs/development/apps/api/setup.html +0 -2
- nautobot/project-static/docs/development/apps/api/testing.html +0 -89
- nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +0 -2
- nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +0 -2
- nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +0 -2
- nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +0 -2
- nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +0 -2
- nautobot/project-static/docs/development/apps/api/views/base-template.html +0 -2
- nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +0 -2
- nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +0 -2
- nautobot/project-static/docs/development/apps/api/views/help-documentation.html +0 -2
- nautobot/project-static/docs/development/apps/api/views/index.html +0 -2
- nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +0 -2
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +0 -2
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +0 -2
- nautobot/project-static/docs/development/apps/api/views/notes.html +0 -2
- nautobot/project-static/docs/development/apps/api/views/rest-api.html +0 -2
- nautobot/project-static/docs/development/apps/api/views/urls.html +0 -2
- nautobot/project-static/docs/development/apps/index.html +0 -2
- nautobot/project-static/docs/development/apps/migration/code-updates.html +0 -2
- nautobot/project-static/docs/development/apps/migration/dependency-updates.html +1 -3
- nautobot/project-static/docs/development/apps/migration/from-v1.html +0 -2
- nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +0 -2
- nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +0 -2
- nautobot/project-static/docs/development/apps/migration/model-updates/global.html +0 -2
- nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +0 -2
- nautobot/project-static/docs/development/apps/migration/ui-component-framework/best-practices.html +0 -2
- nautobot/project-static/docs/development/apps/migration/ui-component-framework/custom-content.html +0 -2
- nautobot/project-static/docs/development/apps/migration/ui-component-framework/index.html +0 -2
- nautobot/project-static/docs/development/apps/migration/ui-component-framework/migration-steps.html +0 -2
- nautobot/project-static/docs/development/apps/porting-from-netbox.html +0 -2
- nautobot/project-static/docs/development/core/application-registry.html +0 -2
- nautobot/project-static/docs/development/core/best-practices.html +3 -5
- nautobot/project-static/docs/development/core/bootstrap-ui.html +0 -2
- nautobot/project-static/docs/development/core/caching.html +0 -2
- nautobot/project-static/docs/development/core/controllers.html +0 -2
- nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +0 -2
- nautobot/project-static/docs/development/core/generic-views.html +0 -2
- nautobot/project-static/docs/development/core/getting-started.html +78 -109
- nautobot/project-static/docs/development/core/homepage.html +0 -2
- nautobot/project-static/docs/development/core/index.html +0 -2
- nautobot/project-static/docs/development/core/minikube-dev-environment-for-k8s-jobs.html +0 -2
- nautobot/project-static/docs/development/core/model-checklist.html +0 -2
- nautobot/project-static/docs/development/core/model-features.html +0 -2
- nautobot/project-static/docs/development/core/natural-keys.html +0 -2
- nautobot/project-static/docs/development/core/navigation-menu.html +0 -2
- nautobot/project-static/docs/development/core/release-checklist.html +1 -3
- nautobot/project-static/docs/development/core/role-internals.html +0 -2
- nautobot/project-static/docs/development/core/settings.html +0 -2
- nautobot/project-static/docs/development/core/style-guide.html +1 -3
- nautobot/project-static/docs/development/core/templates.html +0 -2
- nautobot/project-static/docs/development/core/testing.html +24 -200
- nautobot/project-static/docs/development/core/ui-component-framework.html +0 -2
- nautobot/project-static/docs/development/core/user-preferences.html +0 -2
- nautobot/project-static/docs/development/index.html +0 -2
- nautobot/project-static/docs/development/jobs/index.html +0 -2
- nautobot/project-static/docs/development/jobs/migration/from-v1.html +0 -2
- nautobot/project-static/docs/index.html +0 -2
- nautobot/project-static/docs/media/user-guide/administration/getting-started/nautobot-cloud.png +0 -0
- nautobot/project-static/docs/objects.inv +0 -0
- nautobot/project-static/docs/overview/application_stack.html +1 -3
- nautobot/project-static/docs/overview/design_philosophy.html +0 -2
- nautobot/project-static/docs/release-notes/index.html +0 -2
- nautobot/project-static/docs/release-notes/version-1.0.html +0 -2
- nautobot/project-static/docs/release-notes/version-1.1.html +0 -2
- nautobot/project-static/docs/release-notes/version-1.2.html +0 -2
- nautobot/project-static/docs/release-notes/version-1.3.html +0 -2
- nautobot/project-static/docs/release-notes/version-1.4.html +0 -2
- nautobot/project-static/docs/release-notes/version-1.5.html +0 -2
- nautobot/project-static/docs/release-notes/version-1.6.html +0 -2
- nautobot/project-static/docs/release-notes/version-2.0.html +0 -2
- nautobot/project-static/docs/release-notes/version-2.1.html +0 -2
- nautobot/project-static/docs/release-notes/version-2.2.html +0 -2
- nautobot/project-static/docs/release-notes/version-2.3.html +0 -2
- nautobot/project-static/docs/release-notes/version-2.4.html +364 -3
- nautobot/project-static/docs/search/search_index.json +1 -1
- nautobot/project-static/docs/sitemap.xml +290 -290
- nautobot/project-static/docs/sitemap.xml.gz +0 -0
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +0 -2
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +0 -2
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +0 -2
- nautobot/project-static/docs/user-guide/administration/configuration/index.html +0 -2
- nautobot/project-static/docs/user-guide/administration/configuration/redis.html +0 -2
- nautobot/project-static/docs/user-guide/administration/configuration/settings.html +2 -50
- nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +0 -2
- nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +0 -2
- nautobot/project-static/docs/user-guide/administration/guides/docker.html +0 -2
- nautobot/project-static/docs/user-guide/administration/guides/health-checks.html +0 -2
- nautobot/project-static/docs/user-guide/administration/guides/permissions.html +71 -2
- nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +0 -2
- nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +0 -2
- nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +0 -2
- nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +0 -2
- nautobot/project-static/docs/user-guide/administration/guides/selinux-troubleshooting.html +0 -2
- nautobot/project-static/docs/user-guide/administration/installation/app-install.html +0 -2
- nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +0 -2
- nautobot/project-static/docs/user-guide/administration/installation/http-server.html +3 -3
- nautobot/project-static/docs/user-guide/administration/installation/index.html +257 -18
- nautobot/project-static/docs/user-guide/administration/installation/install_system.html +0 -2
- nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +0 -2
- nautobot/project-static/docs/user-guide/administration/installation/services.html +0 -2
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +0 -2
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +0 -2
- nautobot/project-static/docs/user-guide/administration/security/index.html +0 -2
- nautobot/project-static/docs/user-guide/administration/security/notices.html +0 -2
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +1 -3
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +0 -2
- nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +0 -2
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +0 -2
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +0 -2
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +0 -2
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +0 -2
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +0 -2
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +0 -2
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +0 -2
- nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +2 -4
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +4 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualdevicecontext.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/wireless/index.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/wireless/radioprofile.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/wireless/supporteddatarate.html +0 -2
- nautobot/project-static/docs/user-guide/core-data-model/wireless/wirelessnetwork.html +0 -2
- nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +11 -13
- nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +0 -2
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +8 -10
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +1 -2
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +0 -2
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +40 -27
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +4 -6
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +1 -3
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +77 -7
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +1 -3
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +0 -3
- nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +1 -3
- nautobot/project-static/docs/user-guide/feature-guides/graphql.html +0 -2
- nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +0 -2
- nautobot/project-static/docs/user-guide/feature-guides/relationships.html +0 -2
- nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +0 -2
- nautobot/project-static/docs/user-guide/feature-guides/wireless-networks-and-controllers.html +0 -2
- nautobot/project-static/docs/user-guide/index.html +89 -4
- nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/events.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobqueue.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/kubernetes-job-support.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/note.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/rendering-jinja-templates.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/role.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/secret.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/status.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/tag.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +0 -2
- nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +207 -124
- nautobot/project-static/js/forms.js +88 -37
- nautobot/project-static/js/homepage_layout.js +12 -3
- nautobot/virtualization/forms.py +20 -0
- nautobot/virtualization/templates/virtualization/clustergroup.html +1 -39
- nautobot/virtualization/templates/virtualization/clustertype.html +1 -0
- nautobot/virtualization/tests/test_api.py +14 -3
- nautobot/virtualization/tests/test_views.py +10 -2
- nautobot/virtualization/urls.py +10 -93
- nautobot/virtualization/views.py +33 -72
- {nautobot-2.4.5.dist-info → nautobot-2.4.7.dist-info}/METADATA +6 -5
- {nautobot-2.4.5.dist-info → nautobot-2.4.7.dist-info}/RECORD +407 -402
- {nautobot-2.4.5.dist-info → nautobot-2.4.7.dist-info}/WHEEL +1 -1
- nautobot/core/tests/performance_baselines.yml +0 -8900
- nautobot/dcim/templates/dcim/modulebay_create.html +0 -39
- nautobot/ipam/tests/test_migrations.py +0 -462
- /nautobot/ipam/templates/ipam/{namespace_ipaddresses.html → namespace_ip_addresses.html} +0 -0
- {nautobot-2.4.5.dist-info → nautobot-2.4.7.dist-info}/LICENSE.txt +0 -0
- {nautobot-2.4.5.dist-info → nautobot-2.4.7.dist-info}/NOTICE +0 -0
- {nautobot-2.4.5.dist-info → nautobot-2.4.7.dist-info}/entry_points.txt +0 -0
|
@@ -8498,48 +8498,6 @@
|
|
|
8498
8498
|
</ul>
|
|
8499
8499
|
</nav>
|
|
8500
8500
|
|
|
8501
|
-
</li>
|
|
8502
|
-
|
|
8503
|
-
<li class="md-nav__item">
|
|
8504
|
-
<a href="#performance-tests" class="md-nav__link">
|
|
8505
|
-
<span class="md-ellipsis">
|
|
8506
|
-
Performance Tests
|
|
8507
|
-
</span>
|
|
8508
|
-
</a>
|
|
8509
|
-
|
|
8510
|
-
<nav class="md-nav" aria-label="Performance Tests">
|
|
8511
|
-
<ul class="md-nav__list">
|
|
8512
|
-
|
|
8513
|
-
<li class="md-nav__item">
|
|
8514
|
-
<a href="#running-performance-tests" class="md-nav__link">
|
|
8515
|
-
<span class="md-ellipsis">
|
|
8516
|
-
Running Performance Tests
|
|
8517
|
-
</span>
|
|
8518
|
-
</a>
|
|
8519
|
-
|
|
8520
|
-
</li>
|
|
8521
|
-
|
|
8522
|
-
<li class="md-nav__item">
|
|
8523
|
-
<a href="#gathering-performance-test-baseline-data" class="md-nav__link">
|
|
8524
|
-
<span class="md-ellipsis">
|
|
8525
|
-
Gathering Performance Test Baseline Data
|
|
8526
|
-
</span>
|
|
8527
|
-
</a>
|
|
8528
|
-
|
|
8529
|
-
</li>
|
|
8530
|
-
|
|
8531
|
-
<li class="md-nav__item">
|
|
8532
|
-
<a href="#caveats" class="md-nav__link">
|
|
8533
|
-
<span class="md-ellipsis">
|
|
8534
|
-
Caveats
|
|
8535
|
-
</span>
|
|
8536
|
-
</a>
|
|
8537
|
-
|
|
8538
|
-
</li>
|
|
8539
|
-
|
|
8540
|
-
</ul>
|
|
8541
|
-
</nav>
|
|
8542
|
-
|
|
8543
8501
|
</li>
|
|
8544
8502
|
|
|
8545
8503
|
<li class="md-nav__item">
|
|
@@ -9404,48 +9362,6 @@
|
|
|
9404
9362
|
</ul>
|
|
9405
9363
|
</nav>
|
|
9406
9364
|
|
|
9407
|
-
</li>
|
|
9408
|
-
|
|
9409
|
-
<li class="md-nav__item">
|
|
9410
|
-
<a href="#performance-tests" class="md-nav__link">
|
|
9411
|
-
<span class="md-ellipsis">
|
|
9412
|
-
Performance Tests
|
|
9413
|
-
</span>
|
|
9414
|
-
</a>
|
|
9415
|
-
|
|
9416
|
-
<nav class="md-nav" aria-label="Performance Tests">
|
|
9417
|
-
<ul class="md-nav__list">
|
|
9418
|
-
|
|
9419
|
-
<li class="md-nav__item">
|
|
9420
|
-
<a href="#running-performance-tests" class="md-nav__link">
|
|
9421
|
-
<span class="md-ellipsis">
|
|
9422
|
-
Running Performance Tests
|
|
9423
|
-
</span>
|
|
9424
|
-
</a>
|
|
9425
|
-
|
|
9426
|
-
</li>
|
|
9427
|
-
|
|
9428
|
-
<li class="md-nav__item">
|
|
9429
|
-
<a href="#gathering-performance-test-baseline-data" class="md-nav__link">
|
|
9430
|
-
<span class="md-ellipsis">
|
|
9431
|
-
Gathering Performance Test Baseline Data
|
|
9432
|
-
</span>
|
|
9433
|
-
</a>
|
|
9434
|
-
|
|
9435
|
-
</li>
|
|
9436
|
-
|
|
9437
|
-
<li class="md-nav__item">
|
|
9438
|
-
<a href="#caveats" class="md-nav__link">
|
|
9439
|
-
<span class="md-ellipsis">
|
|
9440
|
-
Caveats
|
|
9441
|
-
</span>
|
|
9442
|
-
</a>
|
|
9443
|
-
|
|
9444
|
-
</li>
|
|
9445
|
-
|
|
9446
|
-
</ul>
|
|
9447
|
-
</nav>
|
|
9448
|
-
|
|
9449
9365
|
</li>
|
|
9450
9366
|
|
|
9451
9367
|
<li class="md-nav__item">
|
|
@@ -9476,10 +9392,11 @@
|
|
|
9476
9392
|
|
|
9477
9393
|
|
|
9478
9394
|
<h1 id="testing-nautobot">Testing Nautobot<a class="headerlink" href="#testing-nautobot" title="Permanent link">¶</a></h1>
|
|
9479
|
-
<p>Best practices for developing and maintaining Nautobot's automated
|
|
9480
|
-
<p>Unit tests are automated tests written and run to ensure that a section of the Nautobot application (known as the "unit") meets its design and behaves as intended and expected. Most commonly as a developer of or contributor to Nautobot you will be writing unit tests to exercise the code you have written. Unit tests are not meant to test how the application behaves, only the individual blocks of code, therefore use of mock data and phony connections is common in unit test code. As a guiding principle, unit tests should be fast, because they will be executed quite often.</p>
|
|
9481
|
-
<p>Integration tests are automated tests written and run to ensure that the Nautobot application behaves as expected when being used as it would be in practice. By contrast to unit tests, where individual units of code are being tested, integration tests rely upon the server code actually running, and web UI clients or API clients to make real connections to the service to exercise actual workflows, such as navigating to the login page, filling out the username/passwords fields, and clicking the "Log In" button.</p>
|
|
9395
|
+
<p>Best practices for developing and maintaining Nautobot's automated test suites.</p>
|
|
9396
|
+
<p><strong>Unit tests</strong> are automated tests written and run to ensure that a section of the Nautobot application (known as the "unit") meets its design and behaves as intended and expected. Most commonly as a developer of or contributor to Nautobot you will be writing unit tests to exercise the code you have written. Unit tests are not meant to test how the application behaves, only the individual blocks of code, therefore use of mock data and phony connections is common in unit test code. As a guiding principle, unit tests should be fast, because they will be executed quite often.</p>
|
|
9397
|
+
<p><strong>Integration tests</strong> are automated tests written and run to ensure that the Nautobot application behaves as expected when being used as it would be in practice. By contrast to unit tests, where individual units of code are being tested, integration tests rely upon the server code actually running, and web UI clients or API clients to make real connections to the service to exercise actual workflows, such as navigating to the login page, filling out the username/passwords fields, and clicking the "Log In" button.</p>
|
|
9482
9398
|
<p>Integration testing is much more involved, and builds on top of the foundation laid by unit testing. As a guiding principle, integration tests should be comprehensive, because they are the last mile to asserting that Nautobot does what it is advertised to do. Without integration testing, we have to do it all manually, and that's no fun for anyone!</p>
|
|
9399
|
+
<p><strong>Migration tests</strong> are automated tests written and run to ensure that Nautobot database migrations (primarily "data" migrations in particular, as opposed to "schema" migrations) correctly handle various data scenarios. These are "before/after" tests that bring the database to a particular historical state, populate data into this database state, then run the database migrations (simulating an in-place update of Nautobot) and verify that the final state of the database is as expected.</p>
|
|
9483
9400
|
<h2 id="tagging-tests">Tagging Tests<a class="headerlink" href="#tagging-tests" title="Permanent link">¶</a></h2>
|
|
9484
9401
|
<p>By Nautobot convention, <strong>unit</strong> tests must be <a href="https://docs.djangoproject.com/en/stable/topics/testing/tools/#tagging-tests">tagged</a> with <code>unit</code>. The base test case class <code>nautobot.core.testing.TestCase</code> has this tag, therefore any test cases inheriting from that class do not need to be explicitly tagged. All existing view and API test cases in the Nautobot test suite inherit from this class.</p>
|
|
9485
9402
|
<p>By Nautobot convention, <strong>integration</strong> tests must be <a href="https://docs.djangoproject.com/en/stable/topics/testing/tools/#tagging-tests">tagged</a> with <code>integration</code>. The base test case class <code>nautobot.core.testing.integration.SeleniumTestCase</code> has this tag, therefore any test cases inheriting from that class do not need to be explicitly tagged. All existing integration test cases in the Nautobot test suite inherit from this class.</p>
|
|
@@ -9487,7 +9404,11 @@
|
|
|
9487
9404
|
<summary>Changed in version 2.0.0</summary>
|
|
9488
9405
|
<p>The base test classes moved from <code>nautobot.utilities.testing</code> to <code>nautobot.core.testing</code>.</p>
|
|
9489
9406
|
</details>
|
|
9490
|
-
<p>
|
|
9407
|
+
<p>Nautobot's Python-based <strong>migration</strong> tests are built around the <code>django-test-migrations</code> library and its <code>MigratorTestCase</code> class, which has the tag <code>migration_test</code>, therefore any test cases inheriting from that class do not need to be explicitly tagged.</p>
|
|
9408
|
+
<div class="admonition info">
|
|
9409
|
+
<p class="admonition-title">Info</p>
|
|
9410
|
+
<p>There are also a set of "holistic" migration tests executable by the <code>invoke migration-test</code> command; these "tests" consist of nothing more than historical SQL dumps (in the <code>development/datasets/</code> directory) of a fully populated database state that can be used to populate an empty database before running a <code>nautobot-server migrate</code> command and confirming that it raises no errors. This sort of test is fairly crude; in most cases writing a specific <code>MigratorTestCase</code> subclass is to be preferred.</p>
|
|
9411
|
+
</div>
|
|
9491
9412
|
<h2 id="base-classes-and-code-location">Base Classes and Code Location<a class="headerlink" href="#base-classes-and-code-location" title="Permanent link">¶</a></h2>
|
|
9492
9413
|
<table>
|
|
9493
9414
|
<thead>
|
|
@@ -9495,6 +9416,7 @@
|
|
|
9495
9416
|
<th>Test Type</th>
|
|
9496
9417
|
<th>Base Class</th>
|
|
9497
9418
|
<th>Code Location</th>
|
|
9419
|
+
<th>Test Execution</th>
|
|
9498
9420
|
</tr>
|
|
9499
9421
|
</thead>
|
|
9500
9422
|
<tbody>
|
|
@@ -9502,16 +9424,24 @@
|
|
|
9502
9424
|
<td>Unit</td>
|
|
9503
9425
|
<td><code>nautobot.core.testing.TestCase</code> or subclass (see below)</td>
|
|
9504
9426
|
<td><code>nautobot/APP/tests/test_*.py</code></td>
|
|
9427
|
+
<td><code>invoke tests</code></td>
|
|
9505
9428
|
</tr>
|
|
9506
9429
|
<tr>
|
|
9507
9430
|
<td>Integration</td>
|
|
9508
9431
|
<td><code>nautobot.core.testing.integration.SeleniumTestCase</code></td>
|
|
9509
9432
|
<td><code>nautobot/APP/tests/integration/test_*.py</code></td>
|
|
9433
|
+
<td><code>invoke tests --tag integration</code></td>
|
|
9434
|
+
</tr>
|
|
9435
|
+
<tr>
|
|
9436
|
+
<td>Migration</td>
|
|
9437
|
+
<td><code>django_test_migrations.contrib.unittest_case.MigratorTestCase</code></td>
|
|
9438
|
+
<td><code>nautobot/APP/tests/migration/test_*.py</code></td>
|
|
9439
|
+
<td><code>invoke tests --tag migration_test</code></td>
|
|
9510
9440
|
</tr>
|
|
9511
9441
|
</tbody>
|
|
9512
9442
|
</table>
|
|
9513
9443
|
<ul>
|
|
9514
|
-
<li>New unit tests <strong>must always</strong> inherit from <code>nautobot.core.testing.TestCase</code> or one of its subclasses. Do not use <code>django.test.TestCase</code>.<ul>
|
|
9444
|
+
<li>New unit tests <strong>must always</strong> inherit from <code>nautobot.core.testing.TestCase</code> or one of its subclasses. Do not use <code>django.test.TestCase</code> or <code>unittest.TestCase</code>.<ul>
|
|
9515
9445
|
<li>API view test cases should generally inherit from one or more of the classes in <code>nautobot.core.testing.api.APIViewTestCases</code>.</li>
|
|
9516
9446
|
<li>Filterset test cases should generally inherit from <code>nautobot.core.testing.filters.FilterTestCases.FilterTestCase</code>.</li>
|
|
9517
9447
|
<li>Form test cases should generally inherit from <code>nautobot.core.testing.forms.FormTestCases.BaseFormTestCase</code>.</li>
|
|
@@ -9525,6 +9455,9 @@
|
|
|
9525
9455
|
<summary>Changed in version 2.0.0</summary>
|
|
9526
9456
|
<p>The base test classes moved from <code>nautobot.utilities.testing</code> to <code>nautobot.core.testing</code>.</p>
|
|
9527
9457
|
</details>
|
|
9458
|
+
<ul>
|
|
9459
|
+
<li>New migration tests <strong>should generally</strong> inherit from <code>django_test_migrations.contrib.unittest_case.MigratorTestCase</code>; if any other base class is used, you <strong>must</strong> explicitly tag it with the <code>migration_test</code> tag.</li>
|
|
9460
|
+
</ul>
|
|
9528
9461
|
<h2 id="generic-filter-tests">Generic Filter Tests<a class="headerlink" href="#generic-filter-tests" title="Permanent link">¶</a></h2>
|
|
9529
9462
|
<details class="version-added">
|
|
9530
9463
|
<summary>Added in version 2.0.0</summary>
|
|
@@ -9577,14 +9510,14 @@
|
|
|
9577
9510
|
<p>In short, we should only have one place in our tests where factories are called, and that's the <code>generate_test_data</code> management command. Individual tests should use standard <code>create()</code> or <code>save()</code> model methods, never factories.</p>
|
|
9578
9511
|
</div>
|
|
9579
9512
|
<h3 id="factory-caching">Factory Caching<a class="headerlink" href="#factory-caching" title="Permanent link">¶</a></h3>
|
|
9580
|
-
<p>To reduce the time taken between multiple test runs, a new argument has been added to the <code>nautobot-server test</code> command: <code>--cache-test-fixtures</code>. When running tests with <code>--cache-test-fixtures</code> for the first time, after the factory data has been generated it will be saved to a <code>factory_dump.json</code> file in the <code>development</code> directory. On subsequent runs of unit or integration tests, if <code>--cache-test-fixtures</code> is again specified (hint: it is included by default when running <code>invoke
|
|
9513
|
+
<p>To reduce the time taken between multiple test runs, a new argument has been added to the <code>nautobot-server test</code> command: <code>--cache-test-fixtures</code>. When running tests with <code>--cache-test-fixtures</code> for the first time, after the factory data has been generated it will be saved to a <code>factory_dump.json</code> file in the <code>development</code> directory. On subsequent runs of unit or integration tests, if <code>--cache-test-fixtures</code> is again specified (hint: it is included by default when running <code>invoke tests</code>), the factory data will be loaded from the file instead of being generated again. This can significantly reduce the time taken to run tests.</p>
|
|
9581
9514
|
<details class="version-changed">
|
|
9582
9515
|
<summary>Changed in version 2.2.7 — Hashing of migrations in the factory dump</summary>
|
|
9583
9516
|
<p>The test runner now calculates a hash of applied database migrations and uses that as a key when creating/locating the factory data file. This serves as a way to avoid inadvertently using cached test data from the wrong branch or wrong set of migrations, and reduces the frequency with which you might need to manually delete the fixture file. For example, the set of migrations present in <code>develop</code> might result in a <code>factory_dump.966e2e1ed4ae5f924d54.json</code>, while those in <code>next</code> might result in <code>factory_dump.72b71317c5f5c047493e.json</code> - both files can coexist, and when you switch between branches during development, the correct one will automatically be selected.</p>
|
|
9584
9517
|
</details>
|
|
9585
9518
|
<details class="version-changed">
|
|
9586
9519
|
<summary>Changed in version 2.3.4 — Factory caching is enabled by default in invoke tasks</summary>
|
|
9587
|
-
<p>Factory caching is now enabled by default with the <code>invoke
|
|
9520
|
+
<p>Factory caching is now enabled by default with the <code>invoke tests</code> command. To bypass it, either use the <code>--no-cache-test-fixtures</code> argument to <code>invoke tests</code>, or manually remove the <code>development/factory_dump.*.json</code> cache file(s).</p>
|
|
9588
9521
|
</details>
|
|
9589
9522
|
<div class="admonition tip">
|
|
9590
9523
|
<p class="admonition-title">Tip</p>
|
|
@@ -9594,113 +9527,6 @@
|
|
|
9594
9527
|
<li>When the definition of a factory is changed or a new factory is added.</li>
|
|
9595
9528
|
</ol>
|
|
9596
9529
|
</div>
|
|
9597
|
-
<h2 id="performance-tests">Performance Tests<a class="headerlink" href="#performance-tests" title="Permanent link">¶</a></h2>
|
|
9598
|
-
<h3 id="running-performance-tests">Running Performance Tests<a class="headerlink" href="#running-performance-tests" title="Permanent link">¶</a></h3>
|
|
9599
|
-
<p>Nautobot uses <a href="https://pypi.org/project/django-slowtests/"><code>django-slowtests</code></a> to run performance tests. To run performance tests, you need to install the <code>django-slowtests</code> package.
|
|
9600
|
-
Once you install the package, you can do <code>invoke performance-test</code> or <code>invoke unittest --performance-test</code> to run unit tests with <code>NautobotPerformanceTestRunner</code>. The invoke commands will automatically add <code>--testrunner nautobot.core.tests.runner.NautobotPerformanceTestRunner</code> to the <code>coverage run</code> command and this flag will replace the default <code>NautobotTestRunner</code> while retaining all its functionalities with the addition of performance evaluation after test runs.</p>
|
|
9601
|
-
<p><code>NautobotPerformanceTestRunner</code> which inherits from <code>DiscoverSlowestTestsRunner</code> will only be available when <code>django-slowtests</code> is installed. The runner measures the time to run unit tests against baselines stored in a designated .yml file (defaults to <code>nautobot/core/tests/performance_baselines.yml</code>) in addition to running the unit tests themselves.</p>
|
|
9602
|
-
<div class="admonition warning">
|
|
9603
|
-
<p class="admonition-title">Warning</p>
|
|
9604
|
-
<p>This functionality requires the installation of the <a href="https://pypi.org/project/django-slowtests/"><code>django-slowtests</code></a> Python package, which is present in Nautobot's own development environment, but is <em>not</em> an inherent dependency of the Nautobot package when installed otherwise, such as into an App's development environment.</p>
|
|
9605
|
-
</div>
|
|
9606
|
-
<div class="admonition info">
|
|
9607
|
-
<p class="admonition-title">Info</p>
|
|
9608
|
-
<p><code>invoke performance-test</code> is enabled when <code>django-slowtests</code> is installed and when called, it will run and evaluate the performance of specific unit tests that are tagged with <code>performance</code> i.e. <code>@tag("performance")</code>. <code>invoke unittest --performance-report</code> and <code>invoke integration-test --performance-report</code> will also be enabled and when called, they will generate a performance report for all the tests ran in the terminal.
|
|
9609
|
-
If performance baselines for tests are not available:</p>
|
|
9610
|
-
</div>
|
|
9611
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>175 abnormally slower tests:
|
|
9612
|
-
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a>Performance baseline for test_account (nautobot.circuits.tests.test_filters.ProviderTestCase) is not available. Test took 0.0758s to run
|
|
9613
|
-
<a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a>Performance baseline for test_asn (nautobot.circuits.tests.test_filters.ProviderTestCase) is not available. Test took 0.0427s to run
|
|
9614
|
-
<a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a>Performance baseline for test_bulk_create_objects (nautobot.circuits.tests.test_api.CircuitTerminationTest) is not available. Test took 0.2900s to run
|
|
9615
|
-
<a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a>Performance baseline for test_bulk_create_objects (nautobot.circuits.tests.test_api.CircuitTest) is not available. Test took 0.2292s to run
|
|
9616
|
-
<a id="__codelineno-2-6" name="__codelineno-2-6" href="#__codelineno-2-6"></a>Performance baseline for test_bulk_create_objects (nautobot.circuits.tests.test_api.CircuitTypeTest) is not available. Test took 0.1596s to run
|
|
9617
|
-
<a id="__codelineno-2-7" name="__codelineno-2-7" href="#__codelineno-2-7"></a>Performance baseline for test_bulk_create_objects (nautobot.circuits.tests.test_api.ProviderNetworkTest) is not available. Test took 0.1897s to run
|
|
9618
|
-
<a id="__codelineno-2-8" name="__codelineno-2-8" href="#__codelineno-2-8"></a>Performance baseline for test_bulk_create_objects (nautobot.circuits.tests.test_api.ProviderTest) is not available. Test took 0.2092s to run
|
|
9619
|
-
<a id="__codelineno-2-9" name="__codelineno-2-9" href="#__codelineno-2-9"></a>Performance baseline for test_bulk_delete_objects (nautobot.circuits.tests.test_api.CircuitTerminationTest) is not available. Test took 0.1168s to run
|
|
9620
|
-
<a id="__codelineno-2-10" name="__codelineno-2-10" href="#__codelineno-2-10"></a>Performance baseline for test_bulk_delete_objects (nautobot.circuits.tests.test_api.CircuitTest) is not available. Test took 0.2762s to run
|
|
9621
|
-
<a id="__codelineno-2-11" name="__codelineno-2-11" href="#__codelineno-2-11"></a>Performance baseline for test_bulk_delete_objects (nautobot.circuits.tests.test_api.CircuitTypeTest) is not available. Test took 0.0663s to run
|
|
9622
|
-
<a id="__codelineno-2-12" name="__codelineno-2-12" href="#__codelineno-2-12"></a>Performance baseline for test_bulk_delete_objects (nautobot.circuits.tests.test_api.ProviderNetworkTest) is not available. Test took 0.0875s to run
|
|
9623
|
-
<a id="__codelineno-2-13" name="__codelineno-2-13" href="#__codelineno-2-13"></a>...
|
|
9624
|
-
</code></pre></div>
|
|
9625
|
-
<div class="admonition info">
|
|
9626
|
-
<p class="admonition-title">Info</p>
|
|
9627
|
-
<p>If performance baselines for tests are available and the time it take to run tests are siginificantly slower than baselines:</p>
|
|
9628
|
-
</div>
|
|
9629
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>12 abnormally slower tests:
|
|
9630
|
-
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a>0.9838s test_bulk_import_objects_with_constrained_permission (nautobot.ipam.tests.test_views.VLANTestCase) is significantly slower than the baseline 0.3692s
|
|
9631
|
-
<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a>1.2548s test_create_multiple_objects_with_constrained_permission (nautobot.dcim.tests.test_views.ConsolePortTestCase) is significantly slower than the baseline 0.5385s
|
|
9632
|
-
<a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a>1.4289s test_create_multiple_objects_with_constrained_permission (nautobot.dcim.tests.test_views.DeviceBayTestCase) is significantly slower than the baseline 0.5616s
|
|
9633
|
-
<a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a>1.1551s test_create_multiple_objects_with_constrained_permission (nautobot.dcim.tests.test_views.InventoryItemTestCase) is significantly slower than the baseline 0.5822s
|
|
9634
|
-
<a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a>1.4712s test_create_multiple_objects_with_constrained_permission (nautobot.dcim.tests.test_views.RearPortTestCase) is significantly slower than the baseline 0.5695s
|
|
9635
|
-
<a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a>1.5958s test_create_multiple_objects_with_constrained_permission (nautobot.virtualization.tests.test_views.VMInterfaceTestCase) is significantly slower than the baseline 1.0020s
|
|
9636
|
-
<a id="__codelineno-3-8" name="__codelineno-3-8" href="#__codelineno-3-8"></a>1.0566s test_create_object_with_constrained_permission (nautobot.virtualization.tests.test_views.VirtualMachineTestCase) is significantly slower than the baseline 0.3627s
|
|
9637
|
-
<a id="__codelineno-3-9" name="__codelineno-3-9" href="#__codelineno-3-9"></a>...
|
|
9638
|
-
</code></pre></div>
|
|
9639
|
-
<div class="admonition info">
|
|
9640
|
-
<p class="admonition-title">Info</p>
|
|
9641
|
-
<p>To output the performance evaluation to a file for later use, i.e. as performance baselines for future test runs, do <code>invoke performance-test --performance-snapshot</code>. This command will collect the <code>names</code> of the test and their <code>execution_time</code> and store them in a .yml file default to <code>report.yml</code>. Subsequently, the data in that file will have to be manually added to the baseline file set at <a href="../../user-guide/administration/configuration/settings.html#test_performance_baseline_file"><code>TEST_PERFORMANCE_BASELINE_FILE</code></a> to be used as baselines in performance tests.</p>
|
|
9642
|
-
</div>
|
|
9643
|
-
<p>Example output of <code>invoke performance-test --performance-snapshot</code>:</p>
|
|
9644
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">tests</span><span class="p">:</span>
|
|
9645
|
-
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test_account (nautobot.circuits.tests.test_filters.ProviderTestCase)</span>
|
|
9646
|
-
<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">0.07075</span>
|
|
9647
|
-
<a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test_asn (nautobot.circuits.tests.test_filters.ProviderTestCase)</span>
|
|
9648
|
-
<a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">0.041262</span>
|
|
9649
|
-
<a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test_cabled (nautobot.circuits.tests.test_filters.CircuitTerminationTestCase)</span>
|
|
9650
|
-
<a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">0.268673</span>
|
|
9651
|
-
<a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test_cid (nautobot.circuits.tests.test_filters.CircuitTestCase)</span>
|
|
9652
|
-
<a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">0.116057</span>
|
|
9653
|
-
<a id="__codelineno-4-10" name="__codelineno-4-10" href="#__codelineno-4-10"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test_circuit_id (nautobot.circuits.tests.test_filters.CircuitTerminationTestCase)</span>
|
|
9654
|
-
<a id="__codelineno-4-11" name="__codelineno-4-11" href="#__codelineno-4-11"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">0.042665</span>
|
|
9655
|
-
<a id="__codelineno-4-12" name="__codelineno-4-12" href="#__codelineno-4-12"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test_commit_rate (nautobot.circuits.tests.test_filters.CircuitTestCase)</span>
|
|
9656
|
-
<a id="__codelineno-4-13" name="__codelineno-4-13" href="#__codelineno-4-13"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">0.047894</span>
|
|
9657
|
-
<a id="__codelineno-4-14" name="__codelineno-4-14" href="#__codelineno-4-14"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test_connected (nautobot.circuits.tests.test_filters.CircuitTerminationTestCase)</span>
|
|
9658
|
-
<a id="__codelineno-4-15" name="__codelineno-4-15" href="#__codelineno-4-15"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">0.056196</span>
|
|
9659
|
-
<a id="__codelineno-4-16" name="__codelineno-4-16" href="#__codelineno-4-16"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test_id (nautobot.circuits.tests.test_filters.CircuitTerminationTestCase)</span>
|
|
9660
|
-
<a id="__codelineno-4-17" name="__codelineno-4-17" href="#__codelineno-4-17"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">0.03598</span>
|
|
9661
|
-
<a id="__codelineno-4-18" name="__codelineno-4-18" href="#__codelineno-4-18"></a><span class="nn">...</span>
|
|
9662
|
-
</code></pre></div>
|
|
9663
|
-
<h3 id="gathering-performance-test-baseline-data">Gathering Performance Test Baseline Data<a class="headerlink" href="#gathering-performance-test-baseline-data" title="Permanent link">¶</a></h3>
|
|
9664
|
-
<p><code>TEST_PERFORMANCE_BASELINE_FILE</code> specifies the file in which performance baselines are stored, defaults to <code>nautobot/core/tests/performance_baselines.yml</code>. Currently, only baselines for those unit tests tagged with <code>performance</code> are stored.</p>
|
|
9665
|
-
<p>You can add baselines for your own test to <code>nautobot/core/tests/performance_baselines.yml</code> or have your own baseline yaml file for performance testing by specifying a different file path for <code>TEST_PERFORMANCE_BASELINE_FILE</code> in an App's development/test <code>nautobot_config.py</code>, and store the output of <code>invoke performance-test --performance-snapshot</code> in that file.
|
|
9666
|
-
<code>--performance-snapshot</code> flag will store the results of your performance test to a new <code>report.yml</code> and all you need to do is copy/paste the results to the file set by <code>TEST_PERFORMANCE_BASELINE_FILE</code>. Now you have baselines for your own tests!</p>
|
|
9667
|
-
<p>Example output of <code>invoke performance-test --performance-snapshot</code>:</p>
|
|
9668
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">tests</span><span class="p">:</span>
|
|
9669
|
-
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test_account (nautobot.circuits.tests.test_filters.ProviderTestCase)</span>
|
|
9670
|
-
<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">0.07075</span>
|
|
9671
|
-
<a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test_asn (nautobot.circuits.tests.test_filters.ProviderTestCase)</span>
|
|
9672
|
-
<a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">0.041262</span>
|
|
9673
|
-
<a id="__codelineno-5-6" name="__codelineno-5-6" href="#__codelineno-5-6"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test_cabled (nautobot.circuits.tests.test_filters.CircuitTerminationTestCase)</span>
|
|
9674
|
-
<a id="__codelineno-5-7" name="__codelineno-5-7" href="#__codelineno-5-7"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">0.268673</span>
|
|
9675
|
-
<a id="__codelineno-5-8" name="__codelineno-5-8" href="#__codelineno-5-8"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test_cid (nautobot.circuits.tests.test_filters.CircuitTestCase)</span>
|
|
9676
|
-
<a id="__codelineno-5-9" name="__codelineno-5-9" href="#__codelineno-5-9"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">0.116057</span>
|
|
9677
|
-
<a id="__codelineno-5-10" name="__codelineno-5-10" href="#__codelineno-5-10"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test_circuit_id (nautobot.circuits.tests.test_filters.CircuitTerminationTestCase)</span>
|
|
9678
|
-
<a id="__codelineno-5-11" name="__codelineno-5-11" href="#__codelineno-5-11"></a><span class="nn">...</span>
|
|
9679
|
-
</code></pre></div>
|
|
9680
|
-
<p>if you decide to run <code>invoke unittest --performance-test</code> which will run tests that currently do not have their baselines present in the file, your output could look something like this:</p>
|
|
9681
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>175 abnormally slower tests:
|
|
9682
|
-
<a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a>Performance baseline for test_account (nautobot.circuits.tests.test_filters.ProviderTestCase) is not available. Test took 0.0758s to run
|
|
9683
|
-
<a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a>Performance baseline for test_asn (nautobot.circuits.tests.test_filters.ProviderTestCase) is not available. Test took 0.0427s to run
|
|
9684
|
-
<a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a>Performance baseline for test_bulk_create_objects (nautobot.circuits.tests.test_api.CircuitTerminationTest) is not available. Test took 0.2900s to run
|
|
9685
|
-
<a id="__codelineno-6-5" name="__codelineno-6-5" href="#__codelineno-6-5"></a>Performance baseline for test_bulk_create_objects (nautobot.circuits.tests.test_api.CircuitTest) is not available. Test took 0.2292s to run
|
|
9686
|
-
<a id="__codelineno-6-6" name="__codelineno-6-6" href="#__codelineno-6-6"></a>Performance baseline for test_bulk_create_objects (nautobot.circuits.tests.test_api.CircuitTypeTest) is not available. Test took 0.1596s to run
|
|
9687
|
-
<a id="__codelineno-6-7" name="__codelineno-6-7" href="#__codelineno-6-7"></a>Performance baseline for test_bulk_create_objects (nautobot.circuits.tests.test_api.ProviderNetworkTest) is not available. Test took 0.1897s to run
|
|
9688
|
-
<a id="__codelineno-6-8" name="__codelineno-6-8" href="#__codelineno-6-8"></a>Performance baseline for test_bulk_create_objects (nautobot.circuits.tests.test_api.ProviderTest) is not available. Test took 0.2092s to run
|
|
9689
|
-
<a id="__codelineno-6-9" name="__codelineno-6-9" href="#__codelineno-6-9"></a>Performance baseline for test_bulk_delete_objects (nautobot.circuits.tests.test_api.CircuitTerminationTest) is not available. Test took 0.1168s to run
|
|
9690
|
-
<a id="__codelineno-6-10" name="__codelineno-6-10" href="#__codelineno-6-10"></a>Performance baseline for test_bulk_delete_objects (nautobot.circuits.tests.test_api.CircuitTest) is not available. Test took 0.2762s to run
|
|
9691
|
-
<a id="__codelineno-6-11" name="__codelineno-6-11" href="#__codelineno-6-11"></a>Performance baseline for test_bulk_delete_objects (nautobot.circuits.tests.test_api.CircuitTypeTest) is not available. Test took 0.0663s to run
|
|
9692
|
-
<a id="__codelineno-6-12" name="__codelineno-6-12" href="#__codelineno-6-12"></a>Performance baseline for test_bulk_delete_objects (nautobot.circuits.tests.test_api.ProviderNetworkTest) is not available. Test took 0.0875s to run
|
|
9693
|
-
<a id="__codelineno-6-13" name="__codelineno-6-13" href="#__codelineno-6-13"></a>...
|
|
9694
|
-
</code></pre></div>
|
|
9695
|
-
<h3 id="caveats">Caveats<a class="headerlink" href="#caveats" title="Permanent link">¶</a></h3>
|
|
9696
|
-
<div class="admonition warning">
|
|
9697
|
-
<p class="admonition-title">Warning</p>
|
|
9698
|
-
<p><code>django-slowtests</code> is only a <em>development</em> dependency of Nautobot. You cannot run performance tests in a production deployment of Nautobot unless you directly <code>pip install django-slowtests</code> into such a deployment.</p>
|
|
9699
|
-
</div>
|
|
9700
|
-
<div class="admonition info">
|
|
9701
|
-
<p class="admonition-title">Info</p>
|
|
9702
|
-
<p>Because Apps also commonly use Nautobot's default test runner <code>NautobotTestRunner</code>, in order to use <code>NautobotPerformanceTestRunner</code> you need to add <code>django-slowtests</code> as a part of your App dev dependencies.</p>
|
|
9703
|
-
</div>
|
|
9704
9530
|
<h2 id="test-code-style">Test Code Style<a class="headerlink" href="#test-code-style" title="Permanent link">¶</a></h2>
|
|
9705
9531
|
<ul>
|
|
9706
9532
|
<li>Use more specific/feature-rich test assertion methods where available (e.g. <code>self.assertInHTML(fragment, html)</code> rather than <code>self.assertTrue(re.search(fragment, html))</code> or <code>assert re.search(fragment, html) is not None</code>).</li>
|
|
@@ -9854,8 +9680,6 @@ If performance baselines for tests are not available:</p>
|
|
|
9854
9680
|
|
|
9855
9681
|
<script src="../../assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
9856
9682
|
|
|
9857
|
-
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
9858
|
-
|
|
9859
9683
|
|
|
9860
9684
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
9861
9685
|
document$.subscribe(() => { lightbox.reload() });
|
|
@@ -11182,8 +11182,6 @@ It integrates with <code>django_tables2</code> and provides extensive customizat
|
|
|
11182
11182
|
|
|
11183
11183
|
<script src="../../assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
11184
11184
|
|
|
11185
|
-
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
11186
|
-
|
|
11187
11185
|
|
|
11188
11186
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
11189
11187
|
document$.subscribe(() => { lightbox.reload() });
|
|
@@ -9348,8 +9348,6 @@
|
|
|
9348
9348
|
|
|
9349
9349
|
<script src="../../assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
9350
9350
|
|
|
9351
|
-
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
9352
|
-
|
|
9353
9351
|
|
|
9354
9352
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
9355
9353
|
document$.subscribe(() => { lightbox.reload() });
|
|
@@ -9256,8 +9256,6 @@
|
|
|
9256
9256
|
|
|
9257
9257
|
<script src="../assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
9258
9258
|
|
|
9259
|
-
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
9260
|
-
|
|
9261
9259
|
|
|
9262
9260
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
9263
9261
|
document$.subscribe(() => { lightbox.reload() });
|
|
@@ -10939,8 +10939,6 @@ Another example of using the nested reference would be to access <a href="../../
|
|
|
10939
10939
|
|
|
10940
10940
|
<script src="../../assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
10941
10941
|
|
|
10942
|
-
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
10943
|
-
|
|
10944
10942
|
|
|
10945
10943
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
10946
10944
|
document$.subscribe(() => { lightbox.reload() });
|
|
@@ -9822,8 +9822,6 @@
|
|
|
9822
9822
|
|
|
9823
9823
|
<script src="../../../assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
9824
9824
|
|
|
9825
|
-
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
9826
|
-
|
|
9827
9825
|
|
|
9828
9826
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
9829
9827
|
document$.subscribe(() => { lightbox.reload() });
|
|
@@ -9467,8 +9467,6 @@ Learn how <a href="apps/index.html">Nautobot Apps</a> can expand Nautobot's func
|
|
|
9467
9467
|
|
|
9468
9468
|
<script src="assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
9469
9469
|
|
|
9470
|
-
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
9471
|
-
|
|
9472
9470
|
|
|
9473
9471
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
9474
9472
|
document$.subscribe(() => { lightbox.reload() });
|
nautobot/project-static/docs/media/user-guide/administration/getting-started/nautobot-cloud.png
ADDED
|
Binary file
|
|
Binary file
|
|
@@ -9267,7 +9267,7 @@
|
|
|
9267
9267
|
</tr>
|
|
9268
9268
|
<tr>
|
|
9269
9269
|
<td>Application</td>
|
|
9270
|
-
<td><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M11.146 0h3.924v18.166c-2.013.382-3.491.535-5.096.535-4.791 0-7.288-2.166-7.288-6.32 0-4.002 2.65-6.6 6.753-6.6.637 0 1.121.05 1.707.203zm0 9.143a3.9 3.9 0 0 0-1.325-.204c-1.988 0-3.134 1.223-3.134 3.365 0 2.09 1.096 3.236 3.109 3.236.433 0 .79-.025 1.35-.102V9.142zM21.314 6.06v9.098c0 3.134-.229 4.638-.917 5.937-.637 1.249-1.478 2.039-3.211 2.905l-3.644-1.733c1.733-.815 2.574-1.53 3.109-2.625.561-1.121.739-2.421.739-5.835V6.059zM17.39.021h3.924v4.026H17.39z"/></svg></span> Django <br> <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19.14 7.5A2.86 2.86 0 0 1 22 10.36v3.78A2.86 2.86 0 0 1 19.14 17H12c0 .39.32.96.71.96H17v1.68a2.86 2.86 0 0 1-2.86 2.86H9.86A2.86 2.86 0 0 1 7 19.64v-3.75a2.85 2.85 0 0 1 2.86-2.85h5.25a2.85 2.85 0 0 0 2.85-2.86V7.5zm-4.28 11.79c-.4 0-.72.3-.72.89s.32.71.72.71a.71.71 0 0 0 .71-.71c0-.59-.32-.89-.71-.89m-10-1.79A2.86 2.86 0 0 1 2 14.64v-3.78A2.86 2.86 0 0 1 4.86 8H12c0-.39-.32-.96-.71-.96H7V5.36A2.86 2.86 0 0 1 9.86 2.5h4.28A2.86 2.86 0 0 1 17 5.36v3.75a2.85 2.85 0 0 1-2.86 2.85H8.89a2.85 2.85 0 0 0-2.85 2.86v2.68zM9.14 5.71c.4 0 .72-.3.72-.89s-.32-.71-.72-.71c-.39 0-.71.12-.71.71s.32.89.71.89"/></svg></span> Python 3.9 - 3.12 supported</td>
|
|
9270
|
+
<td><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M11.146 0h3.924v18.166c-2.013.382-3.491.535-5.096.535-4.791 0-7.288-2.166-7.288-6.32 0-4.002 2.65-6.6 6.753-6.6.637 0 1.121.05 1.707.203zm0 9.143a3.9 3.9 0 0 0-1.325-.204c-1.988 0-3.134 1.223-3.134 3.365 0 2.09 1.096 3.236 3.109 3.236.433 0 .79-.025 1.35-.102V9.142zM21.314 6.06v9.098c0 3.134-.229 4.638-.917 5.937-.637 1.249-1.478 2.039-3.211 2.905l-3.644-1.733c1.733-.815 2.574-1.53 3.109-2.625.561-1.121.739-2.421.739-5.835V6.059zM17.39.021h3.924v4.026H17.39z"/></svg></span> Django <br> <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19.14 7.5A2.86 2.86 0 0 1 22 10.36v3.78A2.86 2.86 0 0 1 19.14 17H12c0 .39.32.96.71.96H17v1.68a2.86 2.86 0 0 1-2.86 2.86H9.86A2.86 2.86 0 0 1 7 19.64v-3.75a2.85 2.85 0 0 1 2.86-2.85h5.25a2.85 2.85 0 0 0 2.85-2.86V7.5zm-4.28 11.79c-.4 0-.72.3-.72.89s.32.71.72.71a.71.71 0 0 0 .71-.71c0-.59-.32-.89-.71-.89m-10-1.79A2.86 2.86 0 0 1 2 14.64v-3.78A2.86 2.86 0 0 1 4.86 8H12c0-.39-.32-.96-.71-.96H7V5.36A2.86 2.86 0 0 1 9.86 2.5h4.28A2.86 2.86 0 0 1 17 5.36v3.75a2.85 2.85 0 0 1-2.86 2.85H8.89a2.85 2.85 0 0 0-2.85 2.86v2.68zM9.14 5.71c.4 0 .72-.3.72-.89s-.32-.71-.72-.71c-.39 0-.71.12-.71.71s.32.89.71.89"/></svg></span> Python 3.9.2 - 3.12 supported</td>
|
|
9271
9271
|
</tr>
|
|
9272
9272
|
<tr>
|
|
9273
9273
|
<td>Database</td>
|
|
@@ -9467,8 +9467,6 @@
|
|
|
9467
9467
|
|
|
9468
9468
|
<script src="../assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
9469
9469
|
|
|
9470
|
-
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
9471
|
-
|
|
9472
9470
|
|
|
9473
9471
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
9474
9472
|
document$.subscribe(() => { lightbox.reload() });
|
|
@@ -9405,8 +9405,6 @@
|
|
|
9405
9405
|
|
|
9406
9406
|
<script src="../assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
9407
9407
|
|
|
9408
|
-
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
9409
|
-
|
|
9410
9408
|
|
|
9411
9409
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
9412
9410
|
document$.subscribe(() => { lightbox.reload() });
|
|
@@ -9509,8 +9509,6 @@
|
|
|
9509
9509
|
|
|
9510
9510
|
<script src="../assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
9511
9511
|
|
|
9512
|
-
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
9513
|
-
|
|
9514
9512
|
|
|
9515
9513
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
9516
9514
|
document$.subscribe(() => { lightbox.reload() });
|
|
@@ -11328,8 +11328,6 @@
|
|
|
11328
11328
|
|
|
11329
11329
|
<script src="../assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
11330
11330
|
|
|
11331
|
-
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
11332
|
-
|
|
11333
11331
|
|
|
11334
11332
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
11335
11333
|
document$.subscribe(() => { lightbox.reload() });
|
|
@@ -10818,8 +10818,6 @@
|
|
|
10818
10818
|
|
|
10819
10819
|
<script src="../assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
10820
10820
|
|
|
10821
|
-
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
10822
|
-
|
|
10823
10821
|
|
|
10824
10822
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
10825
10823
|
document$.subscribe(() => { lightbox.reload() });
|
|
@@ -11525,8 +11525,6 @@
|
|
|
11525
11525
|
|
|
11526
11526
|
<script src="../assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
11527
11527
|
|
|
11528
|
-
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
11529
|
-
|
|
11530
11528
|
|
|
11531
11529
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
11532
11530
|
document$.subscribe(() => { lightbox.reload() });
|
|
@@ -11692,8 +11692,6 @@
|
|
|
11692
11692
|
|
|
11693
11693
|
<script src="../assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
11694
11694
|
|
|
11695
|
-
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
11696
|
-
|
|
11697
11695
|
|
|
11698
11696
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
11699
11697
|
document$.subscribe(() => { lightbox.reload() });
|
|
@@ -12167,8 +12167,6 @@
|
|
|
12167
12167
|
|
|
12168
12168
|
<script src="../assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
12169
12169
|
|
|
12170
|
-
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
12171
|
-
|
|
12172
12170
|
|
|
12173
12171
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
12174
12172
|
document$.subscribe(() => { lightbox.reload() });
|
|
@@ -13197,8 +13197,6 @@ relationship:</p>
|
|
|
13197
13197
|
|
|
13198
13198
|
<script src="../assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
13199
13199
|
|
|
13200
|
-
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
13201
|
-
|
|
13202
13200
|
|
|
13203
13201
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
13204
13202
|
document$.subscribe(() => { lightbox.reload() });
|
|
@@ -12815,8 +12815,6 @@
|
|
|
12815
12815
|
|
|
12816
12816
|
<script src="../assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
12817
12817
|
|
|
12818
|
-
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
12819
|
-
|
|
12820
12818
|
|
|
12821
12819
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
12822
12820
|
document$.subscribe(() => { lightbox.reload() });
|
|
@@ -13500,8 +13500,6 @@
|
|
|
13500
13500
|
|
|
13501
13501
|
<script src="../assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
13502
13502
|
|
|
13503
|
-
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
13504
|
-
|
|
13505
13503
|
|
|
13506
13504
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
13507
13505
|
document$.subscribe(() => { lightbox.reload() });
|
|
@@ -11598,8 +11598,6 @@
|
|
|
11598
11598
|
|
|
11599
11599
|
<script src="../assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
11600
11600
|
|
|
11601
|
-
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
11602
|
-
|
|
11603
11601
|
|
|
11604
11602
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
11605
11603
|
document$.subscribe(() => { lightbox.reload() });
|
|
@@ -11518,8 +11518,6 @@
|
|
|
11518
11518
|
|
|
11519
11519
|
<script src="../assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
11520
11520
|
|
|
11521
|
-
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
11522
|
-
|
|
11523
11521
|
|
|
11524
11522
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
11525
11523
|
document$.subscribe(() => { lightbox.reload() });
|
|
@@ -12666,8 +12666,6 @@
|
|
|
12666
12666
|
|
|
12667
12667
|
<script src="../assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
12668
12668
|
|
|
12669
|
-
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
12670
|
-
|
|
12671
12669
|
|
|
12672
12670
|
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
|
|
12673
12671
|
document$.subscribe(() => { lightbox.reload() });
|