nautobot 2.1.0__py3-none-any.whl → 2.1.1__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.
- nautobot/__init__.py +1 -3
- nautobot/apps/__init__.py +1 -2
- nautobot/apps/admin.py +0 -1
- nautobot/apps/api.py +0 -1
- nautobot/apps/change_logging.py +0 -1
- nautobot/apps/choices.py +0 -1
- nautobot/apps/datasources.py +0 -1
- nautobot/apps/exceptions.py +0 -1
- nautobot/apps/factory.py +0 -1
- nautobot/apps/filters.py +6 -9
- nautobot/apps/forms.py +1 -2
- nautobot/apps/graphql.py +0 -1
- nautobot/apps/jobs.py +0 -1
- nautobot/apps/models.py +1 -2
- nautobot/apps/querysets.py +0 -1
- nautobot/apps/secrets.py +0 -1
- nautobot/apps/tables.py +0 -1
- nautobot/apps/testing.py +0 -1
- nautobot/apps/ui.py +1 -3
- nautobot/apps/urls.py +0 -1
- nautobot/apps/utils.py +0 -1
- nautobot/apps/views.py +0 -1
- nautobot/circuits/api/serializers.py +1 -1
- nautobot/circuits/api/urls.py +1 -1
- nautobot/circuits/api/views.py +2 -1
- nautobot/circuits/apps.py +1 -1
- nautobot/circuits/choices.py +0 -1
- nautobot/circuits/factory.py +1 -1
- nautobot/circuits/filters.py +2 -1
- nautobot/circuits/forms.py +2 -2
- nautobot/circuits/homepage.py +0 -1
- nautobot/circuits/migrations/0001_initial_part_1.py +3 -1
- nautobot/circuits/migrations/0002_initial_part_2.py +2 -1
- nautobot/circuits/migrations/0003_auto_slug.py +1 -0
- nautobot/circuits/migrations/0005_providernetwork.py +4 -2
- nautobot/circuits/migrations/0013_alter_circuittermination__path.py +1 -0
- nautobot/circuits/migrations/0014_related_name_changes.py +1 -0
- nautobot/circuits/migrations/0016_tagsfield.py +1 -0
- nautobot/circuits/migrations/0018_status_nonnullable.py +1 -0
- nautobot/circuits/models.py +2 -2
- nautobot/circuits/navigation.py +0 -1
- nautobot/circuits/signals.py +3 -2
- nautobot/circuits/tables.py +1 -0
- nautobot/circuits/tests/integration/test_relationships.py +1 -1
- nautobot/circuits/tests/test_api.py +1 -1
- nautobot/circuits/tests/test_urls.py +1 -1
- nautobot/circuits/tests/test_views.py +1 -0
- nautobot/circuits/urls.py +1 -1
- nautobot/circuits/views.py +0 -2
- nautobot/core/__init__.py +0 -1
- nautobot/core/admin.py +3 -5
- nautobot/core/api/__init__.py +0 -1
- nautobot/core/api/metadata.py +4 -6
- nautobot/core/api/pagination.py +2 -2
- nautobot/core/api/parsers.py +1 -3
- nautobot/core/api/renderers.py +0 -1
- nautobot/core/api/schema.py +2 -3
- nautobot/core/api/serializers.py +9 -7
- nautobot/core/api/urls.py +1 -5
- nautobot/core/api/utils.py +4 -6
- nautobot/core/api/versioning.py +1 -1
- nautobot/core/api/views.py +22 -91
- nautobot/core/apps/__init__.py +5 -7
- nautobot/core/authentication.py +1 -1
- nautobot/core/celery/__init__.py +1 -2
- nautobot/core/celery/control.py +0 -2
- nautobot/core/celery/encoders.py +0 -1
- nautobot/core/celery/schedulers.py +1 -2
- nautobot/core/celery/task.py +1 -1
- nautobot/core/checks.py +1 -2
- nautobot/core/choices.py +2 -2
- nautobot/core/cli/__init__.py +2 -3
- nautobot/core/context_processors.py +1 -5
- nautobot/core/factory.py +2 -2
- nautobot/core/filters.py +1 -1
- nautobot/core/forms/fields.py +2 -4
- nautobot/core/forms/forms.py +1 -1
- nautobot/core/forms/search.py +1 -1
- nautobot/core/forms/utils.py +1 -1
- nautobot/core/graphql/__init__.py +2 -3
- nautobot/core/graphql/generators.py +1 -1
- nautobot/core/graphql/schema.py +6 -7
- nautobot/core/graphql/schema_init.py +0 -1
- nautobot/core/graphql/utils.py +1 -2
- nautobot/core/management/commands/generate_test_data.py +4 -6
- nautobot/core/management/commands/makemigrations.py +1 -1
- nautobot/core/management/commands/migrate.py +1 -1
- nautobot/core/management/commands/post_upgrade.py +0 -15
- nautobot/core/management/commands/refresh_content_type_cache.py +1 -2
- nautobot/core/management/commands/send_installation_metrics.py +2 -3
- nautobot/core/management/commands/validate_models.py +1 -1
- nautobot/core/middleware.py +2 -2
- nautobot/core/models/__init__.py +12 -12
- nautobot/core/models/fields.py +1 -1
- nautobot/core/models/generics.py +2 -3
- nautobot/core/models/managers.py +0 -1
- nautobot/core/models/name_color_content_types.py +2 -2
- nautobot/core/models/tree_queries.py +2 -4
- nautobot/core/models/validators.py +1 -1
- nautobot/core/releases.py +1 -1
- nautobot/core/runner/importer.py +2 -25
- nautobot/core/runner/runner.py +2 -2
- nautobot/core/runner/settings.py +1 -1
- nautobot/core/settings.py +9 -22
- nautobot/core/settings_funcs.py +1 -2
- nautobot/core/signals.py +0 -1
- nautobot/core/tables.py +1 -1
- nautobot/core/templates/graphene/graphiql.html +7 -1
- nautobot/core/templates/inc/footer.html +0 -7
- nautobot/core/templates/nautobot_config.py.j2 +0 -4
- nautobot/core/templatetags/bootstrapped_goodies_tags.py +6 -3
- nautobot/core/templatetags/buttons.py +1 -1
- nautobot/core/templatetags/helpers.py +5 -16
- nautobot/core/testing/__init__.py +1 -2
- nautobot/core/testing/api.py +2 -4
- nautobot/core/testing/filters.py +1 -1
- nautobot/core/testing/integration.py +2 -2
- nautobot/core/testing/migrations.py +1 -0
- nautobot/core/testing/mixins.py +1 -2
- nautobot/core/testing/schema.py +1 -1
- nautobot/core/testing/utils.py +3 -3
- nautobot/core/testing/views.py +4 -7
- nautobot/core/tests/integration/test_plugin_home.py +2 -1
- nautobot/core/tests/integration/test_plugin_navbar.py +1 -1
- nautobot/core/tests/nautobot_config.py +3 -3
- nautobot/core/tests/runner.py +3 -4
- nautobot/core/tests/test_api.py +6 -51
- nautobot/core/tests/test_authentication.py +2 -3
- nautobot/core/tests/test_checks.py +1 -2
- nautobot/core/tests/test_config.py +1 -1
- nautobot/core/tests/test_csv.py +3 -3
- nautobot/core/tests/test_factory.py +1 -3
- nautobot/core/tests/test_filters.py +3 -7
- nautobot/core/tests/test_forms.py +3 -6
- nautobot/core/tests/test_graphql.py +13 -14
- nautobot/core/tests/test_jinja_filters.py +4 -4
- nautobot/core/tests/test_jobs.py +1 -1
- nautobot/core/tests/test_models.py +1 -2
- nautobot/core/tests/test_navigations.py +2 -1
- nautobot/core/tests/test_openapi.py +0 -1
- nautobot/core/tests/test_paginator.py +2 -2
- nautobot/core/tests/test_releases.py +2 -2
- nautobot/core/tests/test_tables.py +1 -1
- nautobot/core/tests/test_templatetags_helpers.py +3 -2
- nautobot/core/tests/test_templatetags_netutils.py +1 -2
- nautobot/core/tests/test_utils.py +4 -8
- nautobot/core/tests/test_views.py +5 -2
- nautobot/core/tests/test_views_utils.py +0 -1
- nautobot/core/urls.py +4 -4
- nautobot/core/utils/color.py +1 -1
- nautobot/core/utils/data.py +1 -2
- nautobot/core/utils/filtering.py +4 -5
- nautobot/core/utils/git.py +3 -2
- nautobot/core/utils/logging.py +2 -1
- nautobot/core/utils/migrations.py +1 -0
- nautobot/core/utils/permissions.py +2 -4
- nautobot/core/views/__init__.py +5 -5
- nautobot/core/views/generic.py +4 -4
- nautobot/core/views/mixins.py +11 -12
- nautobot/core/views/renderers.py +1 -1
- nautobot/core/views/utils.py +2 -1
- nautobot/dcim/api/urls.py +1 -1
- nautobot/dcim/api/views.py +6 -5
- nautobot/dcim/apps.py +1 -1
- nautobot/dcim/choices.py +0 -1
- nautobot/dcim/constants.py +0 -1
- nautobot/dcim/elevations.py +1 -2
- nautobot/dcim/factory.py +10 -13
- nautobot/dcim/fields.py +1 -0
- nautobot/dcim/filters/__init__.py +2 -3
- nautobot/dcim/filters/mixins.py +1 -1
- nautobot/dcim/forms.py +10 -12
- nautobot/dcim/graphql/types.py +16 -17
- nautobot/dcim/migrations/0001_initial_part_1.py +4 -2
- nautobot/dcim/migrations/0002_initial_part_2.py +2 -1
- nautobot/dcim/migrations/0003_initial_part_3.py +2 -1
- nautobot/dcim/migrations/0004_initial_part_4.py +2 -1
- nautobot/dcim/migrations/0006_auto_slug.py +1 -0
- nautobot/dcim/migrations/0009_add_natural_indexing.py +1 -0
- nautobot/dcim/migrations/0010_interface_status.py +1 -0
- nautobot/dcim/migrations/0011_interface_status_data_migration.py +1 -0
- nautobot/dcim/migrations/0013_location_location_type.py +4 -2
- nautobot/dcim/migrations/0014_location_status_data_migration.py +1 -0
- nautobot/dcim/migrations/0016_device_components__timestamp_data_migration.py +0 -1
- nautobot/dcim/migrations/0018_device_redundancy_group.py +4 -2
- nautobot/dcim/migrations/0019_device_redundancy_group_data_migration.py +1 -0
- nautobot/dcim/migrations/0022_interface_redundancy_group.py +3 -1
- nautobot/dcim/migrations/0023_interface_redundancy_group_data_migration.py +1 -0
- nautobot/dcim/migrations/0024_move_site_fields_to_location_model.py +2 -1
- nautobot/dcim/migrations/0027_alter_interface_mac_address.py +1 -0
- nautobot/dcim/migrations/0028_alter_device_and_rack_role_add_new_role.py +1 -0
- nautobot/dcim/migrations/0029_device_and_rack_roles_data_migrations.py +1 -0
- nautobot/dcim/migrations/0033_add_tree_managers_and_foreign_keys_pre_data_migration.py +1 -0
- nautobot/dcim/migrations/0034_migrate_region_and_site_data_to_locations.py +1 -2
- nautobot/dcim/migrations/0038_fixup_fks_and_related_names.py +1 -0
- nautobot/dcim/migrations/0039_related_name_changes.py +1 -0
- nautobot/dcim/migrations/0042_alter_location_managers.py +1 -0
- nautobot/dcim/migrations/0044_tagsfield.py +1 -0
- nautobot/dcim/migrations/0047_status_nonnullable.py +1 -0
- nautobot/dcim/migrations/0051_interface_redundancy_group_nullable_status.py +1 -0
- nautobot/dcim/models/cables.py +3 -3
- nautobot/dcim/models/device_component_templates.py +6 -6
- nautobot/dcim/models/devices.py +9 -4
- nautobot/dcim/models/locations.py +6 -1
- nautobot/dcim/models/power.py +1 -1
- nautobot/dcim/models/racks.py +5 -4
- nautobot/dcim/navigation.py +0 -1
- nautobot/dcim/signals.py +3 -2
- nautobot/dcim/tables/__init__.py +5 -4
- nautobot/dcim/tables/cables.py +1 -0
- nautobot/dcim/tables/devices.py +1 -0
- nautobot/dcim/tables/power.py +1 -0
- nautobot/dcim/tables/racks.py +2 -1
- nautobot/dcim/tests/test_api.py +5 -7
- nautobot/dcim/tests/test_cablepaths.py +0 -1
- nautobot/dcim/tests/test_filters.py +14 -12
- nautobot/dcim/tests/test_forms.py +2 -3
- nautobot/dcim/tests/test_migrations.py +2 -2
- nautobot/dcim/tests/test_models.py +2 -2
- nautobot/dcim/tests/test_views.py +7 -8
- nautobot/dcim/urls.py +3 -2
- nautobot/dcim/utils.py +1 -1
- nautobot/dcim/views.py +4 -3
- nautobot/extras/admin.py +2 -1
- nautobot/extras/api/customfields.py +0 -2
- nautobot/extras/api/mixins.py +0 -1
- nautobot/extras/api/serializers.py +4 -4
- nautobot/extras/api/urls.py +1 -1
- nautobot/extras/api/views.py +1 -1
- nautobot/extras/apps.py +3 -4
- nautobot/extras/choices.py +3 -4
- nautobot/extras/context_managers.py +1 -1
- nautobot/extras/datasources/__init__.py +1 -1
- nautobot/extras/datasources/git.py +6 -6
- nautobot/extras/datasources/utils.py +0 -1
- nautobot/extras/factory.py +1 -1
- nautobot/extras/filters/__init__.py +2 -3
- nautobot/extras/filters/customfields.py +0 -1
- nautobot/extras/filters/mixins.py +1 -1
- nautobot/extras/forms/__init__.py +3 -4
- nautobot/extras/forms/base.py +1 -1
- nautobot/extras/forms/forms.py +3 -3
- nautobot/extras/forms/mixins.py +1 -1
- nautobot/extras/graphql/types.py +2 -2
- nautobot/extras/health_checks.py +1 -1
- nautobot/extras/jobs.py +1 -2
- nautobot/extras/management/__init__.py +0 -1
- nautobot/extras/management/commands/refresh_dynamic_group_member_caches.py +1 -1
- nautobot/extras/management/commands/runjob.py +3 -3
- nautobot/extras/management/commands/webhook_receiver.py +1 -2
- nautobot/extras/migrations/0001_initial_part_1.py +2 -1
- nautobot/extras/migrations/0002_initial_part_2.py +2 -1
- nautobot/extras/migrations/0003_initial_part_3.py +1 -0
- nautobot/extras/migrations/0006_graphqlquery.py +2 -1
- nautobot/extras/migrations/0007_configcontextschema.py +3 -1
- nautobot/extras/migrations/0009_computedfield.py +3 -1
- nautobot/extras/migrations/0011_fileattachment_fileproxy.py +3 -1
- nautobot/extras/migrations/0012_healthchecktestmodel.py +2 -1
- nautobot/extras/migrations/0014_auto_slug.py +1 -0
- nautobot/extras/migrations/0015_scheduled_job.py +3 -1
- nautobot/extras/migrations/0016_secret.py +4 -2
- nautobot/extras/migrations/0017_joblogentry.py +2 -1
- nautobot/extras/migrations/0018_joblog_data_migration.py +2 -1
- nautobot/extras/migrations/0021_customfield_changelog_data.py +3 -2
- nautobot/extras/migrations/0022_objectchange_object_datav2.py +1 -0
- nautobot/extras/migrations/0023_job_model.py +4 -2
- nautobot/extras/migrations/0026_job_add_gitrepository_fk.py +1 -0
- nautobot/extras/migrations/0029_dynamicgroup.py +3 -1
- nautobot/extras/migrations/0031_tag_content_types.py +1 -0
- nautobot/extras/migrations/0032_tag_content_types_data_migration.py +1 -0
- nautobot/extras/migrations/0040_dynamicgroup__dynamicgroupmembership.py +2 -1
- nautobot/extras/migrations/0041_jobresult_job_kwargs.py +1 -0
- nautobot/extras/migrations/0043_note.py +3 -1
- nautobot/extras/migrations/0044_add_job_hook.py +3 -1
- nautobot/extras/migrations/0046_populate_custom_field_slug_label.py +1 -0
- nautobot/extras/migrations/0047_enforce_custom_field_slug.py +1 -0
- nautobot/extras/migrations/0051_add_job_task_queues.py +1 -0
- nautobot/extras/migrations/0055_configcontext_dynamic_groups.py +1 -0
- nautobot/extras/migrations/0057_jobbutton.py +3 -1
- nautobot/extras/migrations/0065_configcontext_data_migrations.py +1 -0
- nautobot/extras/migrations/0067_migrate_job_result_status.py +0 -1
- nautobot/extras/migrations/0068_jobresult__add_celery_fields.py +1 -0
- nautobot/extras/migrations/0071_replace_related_names.py +1 -0
- nautobot/extras/migrations/0077_migrate_custom_field_data.py +1 -0
- nautobot/extras/migrations/0078_remove_name_field_and_make_label_field_non_nullable.py +1 -0
- nautobot/extras/migrations/0080_tagsfield.py +1 -0
- nautobot/extras/migrations/0082_rename_relationship_name_to_label.py +1 -0
- nautobot/extras/migrations/0083_ensure_relationship_keys_are_unique.py +1 -0
- nautobot/extras/migrations/0090_joblogentry__log_level_data_migration.py +0 -1
- nautobot/extras/migrations/0095_ensure_note_timestamps_are_unique.py +4 -5
- nautobot/extras/migrations/0097_alter_job_result_remove_result.py +1 -0
- nautobot/extras/migrations/0100_fileproxy_job_result.py +1 -0
- nautobot/extras/migrations/0101_externalintegration.py +3 -1
- nautobot/extras/models/__init__.py +2 -3
- nautobot/extras/models/change_logging.py +0 -1
- nautobot/extras/models/customfields.py +4 -4
- nautobot/extras/models/datasources.py +2 -2
- nautobot/extras/models/groups.py +3 -4
- nautobot/extras/models/jobs.py +12 -6
- nautobot/extras/models/models.py +2 -2
- nautobot/extras/models/relationships.py +3 -4
- nautobot/extras/models/roles.py +1 -1
- nautobot/extras/models/secrets.py +1 -3
- nautobot/extras/models/tags.py +0 -1
- nautobot/extras/navigation.py +0 -1
- nautobot/extras/plugins/__init__.py +6 -7
- nautobot/extras/plugins/tables.py +0 -1
- nautobot/extras/plugins/utils.py +1 -1
- nautobot/extras/plugins/views.py +1 -2
- nautobot/extras/querysets.py +3 -3
- nautobot/extras/signals.py +6 -7
- nautobot/extras/tables.py +4 -4
- nautobot/extras/tasks.py +1 -2
- nautobot/extras/templates/extras/configcontext_edit.html +1 -1
- nautobot/extras/templates/extras/graphqlquery.html +4 -2
- nautobot/extras/templates/extras/secretsgroup_edit.html +40 -45
- nautobot/extras/templatetags/custom_links.py +2 -3
- nautobot/extras/templatetags/job_buttons.py +2 -3
- nautobot/extras/templatetags/log_levels.py +0 -1
- nautobot/extras/templatetags/plugins.py +1 -1
- nautobot/extras/test_jobs/api_test_job.py +1 -2
- nautobot/extras/test_jobs/atomic_transaction.py +1 -2
- nautobot/extras/test_jobs/dry_run.py +1 -2
- nautobot/extras/test_jobs/fail.py +1 -2
- nautobot/extras/test_jobs/field_order.py +1 -1
- nautobot/extras/test_jobs/file_upload_fail.py +1 -2
- nautobot/extras/test_jobs/file_upload_pass.py +1 -2
- nautobot/extras/test_jobs/has_sensitive_variables.py +1 -2
- nautobot/extras/test_jobs/ipaddress_vars.py +1 -4
- nautobot/extras/test_jobs/job_button_receiver.py +1 -2
- nautobot/extras/test_jobs/job_hook_receiver.py +1 -2
- nautobot/extras/test_jobs/job_variables.py +1 -2
- nautobot/extras/test_jobs/location_with_custom_field.py +1 -2
- nautobot/extras/test_jobs/log_redaction.py +1 -2
- nautobot/extras/test_jobs/log_skip_db_logging.py +1 -2
- nautobot/extras/test_jobs/modify_db.py +1 -2
- nautobot/extras/test_jobs/object_var_optional.py +1 -2
- nautobot/extras/test_jobs/object_var_required.py +1 -2
- nautobot/extras/test_jobs/object_vars.py +1 -2
- nautobot/extras/test_jobs/pass.py +1 -2
- nautobot/extras/test_jobs/profiling.py +1 -2
- nautobot/extras/tests/integration/__init__.py +1 -1
- nautobot/extras/tests/integration/test_plugins.py +5 -4
- nautobot/extras/tests/integration/test_tagfilter.py +1 -1
- nautobot/extras/tests/test_api.py +7 -9
- nautobot/extras/tests/test_changelog.py +3 -2
- nautobot/extras/tests/test_context_managers.py +6 -3
- nautobot/extras/tests/test_customfields.py +2 -2
- nautobot/extras/tests/test_datasources.py +1 -1
- nautobot/extras/tests/test_dynamicgroups.py +2 -3
- nautobot/extras/tests/test_filters.py +2 -2
- nautobot/extras/tests/test_forms.py +5 -6
- nautobot/extras/tests/test_git.py +1 -1
- nautobot/extras/tests/test_job_variables.py +0 -1
- nautobot/extras/tests/test_jobs.py +5 -5
- nautobot/extras/tests/test_models.py +2 -2
- nautobot/extras/tests/test_notes.py +0 -1
- nautobot/extras/tests/test_plugins.py +8 -9
- nautobot/extras/tests/test_relationships.py +3 -3
- nautobot/extras/tests/test_tags.py +1 -1
- nautobot/extras/tests/test_views.py +8 -9
- nautobot/extras/tests/test_webhooks.py +4 -5
- nautobot/extras/utils.py +11 -9
- nautobot/extras/views.py +3 -3
- nautobot/generate_secret_key.py +1 -1
- nautobot/ipam/api/serializers.py +1 -2
- nautobot/ipam/api/urls.py +1 -1
- nautobot/ipam/api/views.py +1 -0
- nautobot/ipam/apps.py +2 -1
- nautobot/ipam/factory.py +6 -9
- nautobot/ipam/fields.py +1 -1
- nautobot/ipam/filters.py +4 -3
- nautobot/ipam/formfields.py +1 -2
- nautobot/ipam/forms.py +4 -3
- nautobot/ipam/graphql/types.py +1 -1
- nautobot/ipam/homepage.py +0 -1
- nautobot/ipam/lookups.py +2 -3
- nautobot/ipam/migrations/0002_initial_part_2.py +2 -1
- nautobot/ipam/migrations/0003_remove_max_length.py +1 -0
- nautobot/ipam/migrations/0004_fixup_p2p_broadcast.py +0 -1
- nautobot/ipam/migrations/0005_auto_slug.py +1 -0
- nautobot/ipam/migrations/0010_alter_ipam_role_add_new_role.py +1 -0
- nautobot/ipam/migrations/0011_migrate_ipam_role_data.py +1 -0
- nautobot/ipam/migrations/0020_related_name_changes.py +1 -0
- nautobot/ipam/migrations/0022_aggregate_to_prefix_data_migration.py +1 -2
- nautobot/ipam/migrations/0024_interface_to_ipaddress_m2m.py +2 -1
- nautobot/ipam/migrations/0025_interface_ipaddress_m2m_data_migration.py +1 -0
- nautobot/ipam/migrations/0028_tagsfield.py +1 -0
- nautobot/ipam/migrations/0030_ipam__namespaces.py +3 -1
- nautobot/ipam/migrations/0034_status_nonnullable.py +1 -0
- nautobot/ipam/migrations/0037_data_migration_vlan_group_name_uniqueness.py +0 -1
- nautobot/ipam/models.py +7 -7
- nautobot/ipam/navigation.py +0 -1
- nautobot/ipam/querysets.py +2 -2
- nautobot/ipam/tables.py +4 -3
- nautobot/ipam/tests/test_api.py +2 -2
- nautobot/ipam/tests/test_filters.py +7 -7
- nautobot/ipam/tests/test_migrations.py +1 -2
- nautobot/ipam/tests/test_models.py +2 -2
- nautobot/ipam/tests/test_ordering.py +1 -1
- nautobot/ipam/tests/test_querysets.py +2 -2
- nautobot/ipam/tests/test_views.py +6 -6
- nautobot/ipam/urls.py +1 -0
- nautobot/ipam/utils/migrations.py +0 -1
- nautobot/ipam/views.py +6 -6
- nautobot/project-static/docs/404.html +1 -43
- nautobot/project-static/docs/apps/index.html +1 -43
- nautobot/project-static/docs/apps/nautobot-apps.html +1 -43
- nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +389 -431
- nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +12 -54
- nautobot/project-static/docs/code-reference/nautobot/apps/api.html +2452 -2486
- nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +1 -43
- nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +90 -132
- nautobot/project-static/docs/code-reference/nautobot/apps/config.html +1 -43
- nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +1 -43
- nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +1 -43
- nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +1 -43
- nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +26 -68
- nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +993 -1035
- nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +170 -212
- nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +1789 -1831
- nautobot/project-static/docs/code-reference/nautobot/apps/models.html +961 -1003
- nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +1 -43
- nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +1 -43
- nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +2 -44
- nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +6904 -6946
- nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +974 -1016
- nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +1 -43
- nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +1159 -1197
- nautobot/project-static/docs/code-reference/nautobot/apps/views.html +1796 -1832
- nautobot/project-static/docs/development/apps/api/configuration-view.html +1 -43
- nautobot/project-static/docs/development/apps/api/database-backend-config.html +1 -43
- nautobot/project-static/docs/development/apps/api/models/django-admin.html +1 -43
- nautobot/project-static/docs/development/apps/api/models/global-search.html +1 -43
- nautobot/project-static/docs/development/apps/api/models/graphql.html +1 -43
- nautobot/project-static/docs/development/apps/api/models/index.html +1 -43
- nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +1 -43
- nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +1 -43
- nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +1 -43
- nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +1 -43
- nautobot/project-static/docs/development/apps/api/platform-features/index.html +3 -45
- nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +1 -43
- nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +1 -43
- nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +5 -43
- nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +1 -43
- nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +1 -43
- nautobot/project-static/docs/development/apps/api/prometheus.html +1 -43
- nautobot/project-static/docs/development/apps/api/setup.html +1 -43
- nautobot/project-static/docs/development/apps/api/testing.html +1 -43
- nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +1 -43
- nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +1 -43
- nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +1 -43
- nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +1 -43
- nautobot/project-static/docs/development/apps/api/ui-extensions/object-detail-views.html +1 -43
- nautobot/project-static/docs/development/apps/api/views/base-template.html +1 -43
- nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +6 -48
- nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +1 -43
- nautobot/project-static/docs/development/apps/api/views/help-documentation.html +1 -43
- nautobot/project-static/docs/development/apps/api/views/index.html +1 -43
- nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +1 -43
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +1 -43
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +1 -43
- nautobot/project-static/docs/development/apps/api/views/notes.html +3 -45
- nautobot/project-static/docs/development/apps/api/views/rest-api.html +1 -43
- nautobot/project-static/docs/development/apps/api/views/urls.html +1 -43
- nautobot/project-static/docs/development/apps/api/views/view-overrides.html +13 -5357
- nautobot/project-static/docs/development/apps/index.html +1 -43
- nautobot/project-static/docs/development/apps/migration/code-updates.html +1 -43
- nautobot/project-static/docs/development/apps/migration/dependency-updates.html +1 -43
- nautobot/project-static/docs/development/apps/migration/from-v1.html +1 -44
- nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +1 -43
- nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +1 -43
- nautobot/project-static/docs/development/apps/migration/model-updates/global.html +1 -43
- nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +1 -43
- nautobot/project-static/docs/development/apps/porting-from-netbox.html +1 -43
- nautobot/project-static/docs/development/core/application-registry.html +1 -43
- nautobot/project-static/docs/development/core/best-practices.html +1 -43
- nautobot/project-static/docs/development/core/bootstrap-ui.html +1 -43
- nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +1 -43
- nautobot/project-static/docs/development/core/extending-models.html +1 -43
- nautobot/project-static/docs/development/core/generic-views.html +1 -43
- nautobot/project-static/docs/development/core/getting-started.html +108 -257
- nautobot/project-static/docs/development/core/homepage.html +1 -43
- nautobot/project-static/docs/development/core/index.html +1 -43
- nautobot/project-static/docs/development/core/model-features.html +1 -43
- nautobot/project-static/docs/development/core/natural-keys.html +1 -43
- nautobot/project-static/docs/development/core/navigation-menu.html +1 -43
- nautobot/project-static/docs/development/core/react-ui.html +13 -5640
- nautobot/project-static/docs/development/core/release-checklist.html +4 -52
- nautobot/project-static/docs/development/core/role-internals.html +4 -46
- nautobot/project-static/docs/development/core/style-guide.html +61 -102
- nautobot/project-static/docs/development/core/templates.html +4 -46
- nautobot/project-static/docs/development/core/testing.html +1 -43
- nautobot/project-static/docs/development/core/user-preferences.html +1 -43
- nautobot/project-static/docs/development/index.html +1 -43
- nautobot/project-static/docs/development/jobs/index.html +1 -43
- nautobot/project-static/docs/development/jobs/migration/from-v1.html +1 -43
- nautobot/project-static/docs/development/react-ui.html +3 -3
- nautobot/project-static/docs/index.html +2 -47
- nautobot/project-static/docs/release-notes/index.html +1 -43
- nautobot/project-static/docs/release-notes/version-1.0.html +1 -43
- nautobot/project-static/docs/release-notes/version-1.1.html +1 -43
- nautobot/project-static/docs/release-notes/version-1.2.html +1 -43
- nautobot/project-static/docs/release-notes/version-1.3.html +1 -43
- nautobot/project-static/docs/release-notes/version-1.4.html +1 -43
- nautobot/project-static/docs/release-notes/version-1.5.html +1 -43
- nautobot/project-static/docs/release-notes/version-1.6.html +1 -43
- nautobot/project-static/docs/release-notes/version-2.0.html +1 -43
- nautobot/project-static/docs/release-notes/version-2.1.html +189 -77
- nautobot/project-static/docs/search/search_index.json +1 -1
- nautobot/project-static/docs/sitemap.xml +236 -251
- nautobot/project-static/docs/sitemap.xml.gz +0 -0
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +1 -43
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +4 -46
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +1 -43
- nautobot/project-static/docs/user-guide/administration/configuration/index.html +1 -43
- nautobot/project-static/docs/user-guide/administration/configuration/node-configuration.html +13 -5389
- nautobot/project-static/docs/user-guide/administration/configuration/optional-settings.html +1 -65
- nautobot/project-static/docs/user-guide/administration/configuration/required-settings.html +1 -43
- nautobot/project-static/docs/user-guide/administration/guides/caching.html +1 -43
- nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +1 -43
- nautobot/project-static/docs/user-guide/administration/guides/healthcheck.html +1 -43
- nautobot/project-static/docs/user-guide/administration/guides/permissions.html +1 -43
- nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +1 -43
- nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +1 -43
- nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +1 -43
- nautobot/project-static/docs/user-guide/administration/installation/app-install.html +1 -43
- nautobot/project-static/docs/user-guide/administration/installation/docker.html +1 -43
- nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +1 -43
- nautobot/project-static/docs/user-guide/administration/installation/http-server.html +1 -43
- nautobot/project-static/docs/user-guide/administration/installation/index.html +1 -64
- nautobot/project-static/docs/user-guide/administration/installation/install_system.html +2 -57
- nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +5 -94
- nautobot/project-static/docs/user-guide/administration/installation/selinux-troubleshooting.html +1 -43
- nautobot/project-static/docs/user-guide/administration/installation/services.html +1 -43
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +1 -43
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +1 -43
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +76 -137
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +1 -43
- nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +1 -43
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +1 -43
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +1 -43
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +1 -43
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +1 -43
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +1 -43
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +1 -43
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +1 -43
- nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +2 -44
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +1 -43
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/graphql.html +23 -79
- nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +1 -43
- nautobot/project-static/docs/user-guide/feature-guides/relationships.html +1 -43
- nautobot/project-static/docs/user-guide/index.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/note.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/role.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/secret.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/status.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/tag.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +5 -43
- nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +1 -43
- nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +1 -43
- nautobot/project-static/js/theme.js +0 -5
- nautobot/tenancy/api/urls.py +1 -1
- nautobot/tenancy/api/views.py +1 -0
- nautobot/tenancy/factory.py +2 -2
- nautobot/tenancy/filters/__init__.py +1 -2
- nautobot/tenancy/forms.py +2 -2
- nautobot/tenancy/homepage.py +0 -1
- nautobot/tenancy/migrations/0001_initial.py +2 -1
- nautobot/tenancy/migrations/0002_auto_slug.py +1 -0
- nautobot/tenancy/migrations/0004_change_tree_manager_on_tree_models.py +1 -0
- nautobot/tenancy/migrations/0008_tagsfield.py +1 -0
- nautobot/tenancy/models.py +0 -1
- nautobot/tenancy/navigation.py +0 -1
- nautobot/tenancy/tables.py +1 -0
- nautobot/tenancy/tests/test_filters.py +5 -5
- nautobot/tenancy/urls.py +1 -0
- nautobot/tenancy/views.py +2 -2
- nautobot/users/admin.py +1 -2
- nautobot/users/api/urls.py +1 -1
- nautobot/users/api/views.py +6 -4
- nautobot/users/factory.py +1 -3
- nautobot/users/filters.py +4 -4
- nautobot/users/forms.py +1 -0
- nautobot/users/migrations/0004_alter_user_managers.py +1 -0
- nautobot/users/migrations/0008_make_object_permission_a_changelogged_model.py +22 -0
- nautobot/users/models.py +2 -2
- nautobot/users/tests/test_api.py +7 -6
- nautobot/users/tests/test_filters.py +0 -1
- nautobot/users/tests/test_models.py +0 -1
- nautobot/users/tests/test_password_ui.py +1 -1
- nautobot/users/views.py +2 -2
- nautobot/virtualization/api/urls.py +1 -1
- nautobot/virtualization/api/views.py +2 -1
- nautobot/virtualization/apps.py +1 -1
- nautobot/virtualization/choices.py +0 -1
- nautobot/virtualization/factory.py +1 -1
- nautobot/virtualization/filters.py +1 -1
- nautobot/virtualization/forms.py +6 -6
- nautobot/virtualization/homepage.py +0 -1
- nautobot/virtualization/migrations/0003_vminterface_verbose_name.py +1 -0
- nautobot/virtualization/migrations/0004_auto_slug.py +1 -0
- nautobot/virtualization/migrations/0005_add_natural_indexing.py +1 -0
- nautobot/virtualization/migrations/0006_vminterface_status.py +1 -0
- nautobot/virtualization/migrations/0007_vminterface_status_data_migration.py +1 -0
- nautobot/virtualization/migrations/0011_alter_vminterface_mac_address.py +1 -0
- nautobot/virtualization/migrations/0012_alter_virtualmachine_role_add_new_role.py +1 -0
- nautobot/virtualization/migrations/0013_migrate_virtualmachine_role_data.py +1 -0
- nautobot/virtualization/migrations/0018_related_name_changes.py +1 -0
- nautobot/virtualization/migrations/0021_tagsfield_and_vminterface_to_primarymodel.py +1 -0
- nautobot/virtualization/migrations/0025_status_nonnullable.py +1 -0
- nautobot/virtualization/models.py +1 -2
- nautobot/virtualization/navigation.py +0 -1
- nautobot/virtualization/signals.py +0 -1
- nautobot/virtualization/tables.py +1 -0
- nautobot/virtualization/tests/test_filters.py +3 -3
- nautobot/virtualization/tests/test_models.py +1 -1
- nautobot/virtualization/tests/test_views.py +2 -2
- nautobot/virtualization/urls.py +1 -0
- nautobot/virtualization/views.py +1 -1
- {nautobot-2.1.0.dist-info → nautobot-2.1.1.dist-info}/METADATA +1 -1
- {nautobot-2.1.0.dist-info → nautobot-2.1.1.dist-info}/RECORD +713 -814
- nautobot/core/management/commands/build_ui.py +0 -281
- nautobot/core/templates/base_react.html +0 -55
- nautobot/core/tests/test_cli.py +0 -25
- nautobot/ui/.eslintignore +0 -3
- nautobot/ui/.gitignore +0 -7
- nautobot/ui/.prettierignore +0 -6
- nautobot/ui/.prettierrc +0 -4
- nautobot/ui/README.md +0 -27
- nautobot/ui/config/env.js +0 -102
- nautobot/ui/config/getHttpsConfig.js +0 -68
- nautobot/ui/config/jest/babelTransform.js +0 -14
- nautobot/ui/config/jest/cssTransform.js +0 -12
- nautobot/ui/config/jest/fileTransform.js +0 -38
- nautobot/ui/config/modules.js +0 -151
- nautobot/ui/config/paths.js +0 -67
- nautobot/ui/config/webpack/persistentCache/createEnvironmentHash.js +0 -8
- nautobot/ui/config/webpack.config.js +0 -674
- nautobot/ui/config/webpackDevServer.config.js +0 -127
- nautobot/ui/jest.config.js +0 -35
- nautobot/ui/jsconfig.json +0 -4
- nautobot/ui/package-lock.json +0 -22947
- nautobot/ui/package.json +0 -119
- nautobot/ui/public/index.html +0 -47
- nautobot/ui/public/logo192.png +0 -0
- nautobot/ui/public/logo512.png +0 -0
- nautobot/ui/public/manifest.json +0 -25
- nautobot/ui/public/nautobot_logo.svg +0 -131
- nautobot/ui/public/robots.txt +0 -3
- nautobot/ui/scripts/build.js +0 -224
- nautobot/ui/scripts/start.js +0 -140
- nautobot/ui/scripts/test.js +0 -40
- nautobot/ui/src/App.js +0 -79
- nautobot/ui/src/components/AppFullWidthComponents.js +0 -8
- nautobot/ui/src/components/AppTab.js +0 -40
- nautobot/ui/src/components/Apps.js +0 -60
- nautobot/ui/src/components/FeedbackModal.js +0 -123
- nautobot/ui/src/components/FiltersPanel.js +0 -693
- nautobot/ui/src/components/HomeChangelogPanel.js +0 -98
- nautobot/ui/src/components/HomePanel.js +0 -58
- nautobot/ui/src/components/JobHistoryTable.js +0 -78
- nautobot/ui/src/components/Layout.js +0 -76
- nautobot/ui/src/components/LoadingWidget.js +0 -14
- nautobot/ui/src/components/Navbar.js +0 -204
- nautobot/ui/src/components/NotificationPopover.js +0 -27
- nautobot/ui/src/components/ObjectTable/ObjectListTable.js +0 -300
- nautobot/ui/src/components/ObjectTable/ObjectTable.js +0 -96
- nautobot/ui/src/components/ObjectTable/ObjectTableItem.js +0 -70
- nautobot/ui/src/components/ObjectTable/index.js +0 -3
- nautobot/ui/src/components/Pagination/PageNumberForm.js +0 -228
- nautobot/ui/src/components/Pagination/PageSizeForm.js +0 -65
- nautobot/ui/src/components/Pagination/Pagination.js +0 -67
- nautobot/ui/src/components/Pagination/index.js +0 -3
- nautobot/ui/src/components/ReferenceDataTag.js +0 -35
- nautobot/ui/src/components/Retrieve/RenderChangeLogsTab.js +0 -58
- nautobot/ui/src/components/Retrieve/RenderColumn.js +0 -30
- nautobot/ui/src/components/Retrieve/RenderGroup.js +0 -24
- nautobot/ui/src/components/Retrieve/RenderHeader.js +0 -125
- nautobot/ui/src/components/Retrieve/RenderNotesTab.js +0 -60
- nautobot/ui/src/components/Retrieve/RenderTable.js +0 -33
- nautobot/ui/src/components/Retrieve/RenderTabs.js +0 -56
- nautobot/ui/src/components/Retrieve/index.js +0 -7
- nautobot/ui/src/components/RouterButton.js +0 -10
- nautobot/ui/src/components/RouterLink.js +0 -10
- nautobot/ui/src/components/SidebarNav.js +0 -156
- nautobot/ui/src/components/__tests__/AppFullWidthComponents.test.js +0 -16
- nautobot/ui/src/components/__tests__/AppTab.test.js +0 -21
- nautobot/ui/src/components/__tests__/Apps.test.js +0 -14
- nautobot/ui/src/components/__tests__/Layout.test.js +0 -33
- nautobot/ui/src/components/__tests__/PageSizeForm.test.js +0 -13
- nautobot/ui/src/components/__tests__/Pagination.test.js +0 -43
- nautobot/ui/src/components/__tests__/Table.test.js +0 -39
- nautobot/ui/src/components/__tests__/TableItem.test.js +0 -39
- nautobot/ui/src/components/index.js +0 -4
- nautobot/ui/src/constants/apiPath.js +0 -13
- nautobot/ui/src/constants/icons.js +0 -15
- nautobot/ui/src/constants/size.js +0 -15
- nautobot/ui/src/file_templates/app_imports.js.j2 +0 -7
- nautobot/ui/src/file_templates/jsconfig-base.json +0 -12
- nautobot/ui/src/index.js +0 -65
- nautobot/ui/src/reportWebVitals.js +0 -15
- nautobot/ui/src/router.js +0 -77
- nautobot/ui/src/utils/api.js +0 -160
- nautobot/ui/src/utils/app-import.js +0 -15
- nautobot/ui/src/utils/color.js +0 -15
- nautobot/ui/src/utils/date.js +0 -14
- nautobot/ui/src/utils/index.js +0 -15
- nautobot/ui/src/utils/navigation.js +0 -48
- nautobot/ui/src/utils/session.js +0 -64
- nautobot/ui/src/utils/store.js +0 -242
- nautobot/ui/src/utils/string.js +0 -6
- nautobot/ui/src/utils/url.js +0 -4
- nautobot/ui/src/views/Home.js +0 -142
- nautobot/ui/src/views/InstalledApps.js +0 -80
- nautobot/ui/src/views/Login.js +0 -48
- nautobot/ui/src/views/Logout.js +0 -20
- nautobot/ui/src/views/__tests__/BSCreateViewTemplate.test.js +0 -11
- nautobot/ui/src/views/__tests__/BSListViewTemplate.test.js +0 -107
- nautobot/ui/src/views/__tests__/Login.test.js +0 -15
- nautobot/ui/src/views/generic/GenericView.js +0 -191
- nautobot/ui/src/views/generic/ObjectCreate.js +0 -96
- nautobot/ui/src/views/generic/ObjectList.js +0 -137
- nautobot/ui/src/views/generic/ObjectRetrieve.js +0 -87
- {nautobot-2.1.0.dist-info → nautobot-2.1.1.dist-info}/LICENSE.txt +0 -0
- {nautobot-2.1.0.dist-info → nautobot-2.1.1.dist-info}/WHEEL +0 -0
- {nautobot-2.1.0.dist-info → nautobot-2.1.1.dist-info}/entry_points.txt +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from unittest import mock,
|
|
1
|
+
from unittest import mock, skip, skipIf
|
|
2
2
|
|
|
3
3
|
from django.conf import settings
|
|
4
4
|
from django.contrib.contenttypes.models import ContentType
|
|
@@ -6,25 +6,24 @@ from django.core.exceptions import ValidationError
|
|
|
6
6
|
from django.template import engines
|
|
7
7
|
from django.test import override_settings
|
|
8
8
|
from django.urls import NoReverseMatch, reverse
|
|
9
|
-
|
|
10
9
|
import netaddr
|
|
11
10
|
|
|
12
11
|
from nautobot.circuits.models import Circuit, CircuitType, Provider
|
|
13
12
|
from nautobot.core.celery import app
|
|
14
|
-
from nautobot.core.testing import APIViewTestCases,
|
|
15
|
-
from nautobot.dcim.models import Device, DeviceType,
|
|
13
|
+
from nautobot.core.testing import APIViewTestCases, disable_warnings, extract_page_body, TestCase, ViewTestCases
|
|
14
|
+
from nautobot.dcim.models import Device, DeviceType, Location, LocationType, Manufacturer
|
|
16
15
|
from nautobot.dcim.tests.test_views import create_test_device
|
|
17
|
-
from nautobot.tenancy.models import Tenant, TenantGroup
|
|
18
|
-
from nautobot.tenancy.filters import TenantFilterSet
|
|
19
|
-
from nautobot.tenancy.forms import TenantFilterForm
|
|
20
16
|
from nautobot.extras.choices import CustomFieldTypeChoices, RelationshipTypeChoices
|
|
21
17
|
from nautobot.extras.jobs import get_job
|
|
22
18
|
from nautobot.extras.models import CustomField, Relationship, RelationshipAssociation, Role, Secret, Status
|
|
23
19
|
from nautobot.extras.plugins.exceptions import PluginImproperlyConfigured
|
|
24
20
|
from nautobot.extras.plugins.utils import load_plugin
|
|
25
21
|
from nautobot.extras.plugins.validators import wrap_model_clean_methods
|
|
26
|
-
from nautobot.extras.registry import
|
|
27
|
-
from nautobot.ipam.models import
|
|
22
|
+
from nautobot.extras.registry import DatasourceContent, registry
|
|
23
|
+
from nautobot.ipam.models import IPAddress, Namespace, Prefix
|
|
24
|
+
from nautobot.tenancy.filters import TenantFilterSet
|
|
25
|
+
from nautobot.tenancy.forms import TenantFilterForm
|
|
26
|
+
from nautobot.tenancy.models import Tenant, TenantGroup
|
|
28
27
|
from nautobot.users.models import ObjectPermission
|
|
29
28
|
|
|
30
29
|
from example_plugin import config as example_config
|
|
@@ -15,12 +15,12 @@ from nautobot.core.tables import RelationshipColumn
|
|
|
15
15
|
from nautobot.core.testing import TestCase
|
|
16
16
|
from nautobot.core.testing.models import ModelTestCases
|
|
17
17
|
from nautobot.core.utils.lookup import get_route_for_model
|
|
18
|
-
from nautobot.dcim.models import Device,
|
|
18
|
+
from nautobot.dcim.models import Device, Location, LocationType, Platform, Rack
|
|
19
19
|
from nautobot.dcim.tables import LocationTable
|
|
20
20
|
from nautobot.dcim.tests.test_views import create_test_device
|
|
21
|
-
from nautobot.ipam.models import VLAN, VLANGroup
|
|
22
21
|
from nautobot.extras.choices import RelationshipRequiredSideChoices, RelationshipSideChoices, RelationshipTypeChoices
|
|
23
22
|
from nautobot.extras.models import Relationship, RelationshipAssociation, Status
|
|
23
|
+
from nautobot.ipam.models import VLAN, VLANGroup
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
class RelationshipBaseTest:
|
|
@@ -1368,7 +1368,7 @@ class RequiredRelationshipTestMixin:
|
|
|
1368
1368
|
# Object is updated with the required relationship data (succeeds)
|
|
1369
1369
|
response = self.send_data(
|
|
1370
1370
|
from_model,
|
|
1371
|
-
{
|
|
1371
|
+
{"name": f'{params["create_data"]["name"]} edited', **related_objects_data},
|
|
1372
1372
|
interact_with,
|
|
1373
1373
|
action="edit",
|
|
1374
1374
|
url_kwargs={"pk": newly_created_object.pk},
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from datetime import timedelta
|
|
2
|
+
from unittest import mock
|
|
2
3
|
import urllib.parse
|
|
3
4
|
import uuid
|
|
4
5
|
|
|
@@ -9,13 +10,12 @@ from django.test import override_settings
|
|
|
9
10
|
from django.urls import reverse
|
|
10
11
|
from django.utils import timezone
|
|
11
12
|
from django.utils.html import format_html
|
|
12
|
-
from unittest import mock
|
|
13
13
|
|
|
14
14
|
from nautobot.core.choices import ColorChoices
|
|
15
15
|
from nautobot.core.models.fields import slugify_dashes_to_underscores
|
|
16
|
-
from nautobot.core.testing import
|
|
16
|
+
from nautobot.core.testing import extract_form_failures, extract_page_body, TestCase, ViewTestCases
|
|
17
17
|
from nautobot.core.testing.utils import disable_warnings, post_data
|
|
18
|
-
from nautobot.dcim.models import ConsolePort, Device, DeviceType, Interface,
|
|
18
|
+
from nautobot.dcim.models import ConsolePort, Device, DeviceType, Interface, Location, LocationType, Manufacturer
|
|
19
19
|
from nautobot.dcim.tests import test_views
|
|
20
20
|
from nautobot.extras.choices import (
|
|
21
21
|
CustomFieldTypeChoices,
|
|
@@ -60,7 +60,6 @@ from nautobot.extras.utils import RoleModelsQuery, TaggableClassesQuery
|
|
|
60
60
|
from nautobot.ipam.models import IPAddress, Prefix, VLAN, VLANGroup
|
|
61
61
|
from nautobot.users.models import ObjectPermission
|
|
62
62
|
|
|
63
|
-
|
|
64
63
|
# Use the proper swappable User model
|
|
65
64
|
User = get_user_model()
|
|
66
65
|
|
|
@@ -921,9 +920,9 @@ class SecretsGroupTestCase(
|
|
|
921
920
|
)
|
|
922
921
|
|
|
923
922
|
secrets = (
|
|
924
|
-
Secret.objects.create(name="secret 1", provider="text-file", parameters={"path": "/tmp"}),
|
|
925
|
-
Secret.objects.create(name="secret 2", provider="text-file", parameters={"path": "/tmp"}),
|
|
926
|
-
Secret.objects.create(name="secret 3", provider="text-file", parameters={"path": "/tmp"}),
|
|
923
|
+
Secret.objects.create(name="secret 1", provider="text-file", parameters={"path": "/tmp"}), # noqa: S108 # hardcoded-temp-file -- false positive
|
|
924
|
+
Secret.objects.create(name="secret 2", provider="text-file", parameters={"path": "/tmp"}), # noqa: S108 # hardcoded-temp-file -- false positive
|
|
925
|
+
Secret.objects.create(name="secret 3", provider="text-file", parameters={"path": "/tmp"}), # noqa: S108 # hardcoded-temp-file -- false positive
|
|
927
926
|
)
|
|
928
927
|
|
|
929
928
|
SecretsGroupAssociation.objects.create(
|
|
@@ -1038,7 +1037,7 @@ class ScheduledJobTestCase(
|
|
|
1038
1037
|
def test_only_enabled_is_listed(self):
|
|
1039
1038
|
self.add_permissions("extras.view_scheduledjob")
|
|
1040
1039
|
|
|
1041
|
-
# this should not appear, since it
|
|
1040
|
+
# this should not appear, since it's not enabled
|
|
1042
1041
|
ScheduledJob.objects.create(
|
|
1043
1042
|
enabled=False,
|
|
1044
1043
|
name="test4",
|
|
@@ -2294,7 +2293,7 @@ class RelationshipTestCase(
|
|
|
2294
2293
|
"relationship "VLANs require at least one Device"",
|
|
2295
2294
|
)
|
|
2296
2295
|
for vlan in vlans[:3]:
|
|
2297
|
-
self.assertContains(response,
|
|
2296
|
+
self.assertContains(response, str(vlan))
|
|
2298
2297
|
|
|
2299
2298
|
# Try editing 6 VLANs and adding the required device (succeeds):
|
|
2300
2299
|
response = self.client.post(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import json
|
|
2
|
-
import uuid
|
|
3
1
|
from copy import deepcopy
|
|
2
|
+
import json
|
|
4
3
|
from unittest.mock import patch
|
|
4
|
+
import uuid
|
|
5
5
|
|
|
6
6
|
from django.apps import apps
|
|
7
7
|
from django.contrib.auth import get_user_model
|
|
@@ -17,13 +17,12 @@ from nautobot.dcim.api.serializers import LocationSerializer
|
|
|
17
17
|
from nautobot.dcim.models import Location, LocationType
|
|
18
18
|
from nautobot.extras.choices import ObjectChangeActionChoices
|
|
19
19
|
from nautobot.extras.context_managers import web_request_context
|
|
20
|
-
from nautobot.extras.models import
|
|
20
|
+
from nautobot.extras.models import Tag, Webhook
|
|
21
21
|
from nautobot.extras.models.statuses import Status
|
|
22
22
|
from nautobot.extras.registry import registry
|
|
23
23
|
from nautobot.extras.tasks import process_webhook
|
|
24
24
|
from nautobot.extras.utils import generate_signature
|
|
25
25
|
|
|
26
|
-
|
|
27
26
|
User = get_user_model()
|
|
28
27
|
|
|
29
28
|
|
|
@@ -32,7 +31,7 @@ class WebhookTest(APITestCase):
|
|
|
32
31
|
def setUpTestData(cls):
|
|
33
32
|
location_ct = ContentType.objects.get_for_model(Location)
|
|
34
33
|
MOCK_URL = "http://localhost/"
|
|
35
|
-
MOCK_SECRET = "LOOKATMEIMASECRETSTRING"
|
|
34
|
+
MOCK_SECRET = "LOOKATMEIMASECRETSTRING" # noqa: S105 # hardcoded-password-string -- OK as this is test code
|
|
36
35
|
|
|
37
36
|
webhooks = (
|
|
38
37
|
Webhook.objects.create(
|
nautobot/extras/utils.py
CHANGED
|
@@ -25,7 +25,6 @@ from nautobot.extras.constants import (
|
|
|
25
25
|
)
|
|
26
26
|
from nautobot.extras.registry import registry
|
|
27
27
|
|
|
28
|
-
|
|
29
28
|
logger = logging.getLogger(__name__)
|
|
30
29
|
|
|
31
30
|
|
|
@@ -338,9 +337,9 @@ def refresh_job_model_from_job_class(job_model_class, job_class):
|
|
|
338
337
|
and in that case we need to not import models ourselves.
|
|
339
338
|
"""
|
|
340
339
|
from nautobot.extras.jobs import (
|
|
341
|
-
JobHookReceiver,
|
|
342
340
|
JobButtonReceiver,
|
|
343
|
-
|
|
341
|
+
JobHookReceiver,
|
|
342
|
+
)
|
|
344
343
|
|
|
345
344
|
# Unrecoverable errors
|
|
346
345
|
if len(job_class.__module__) > JOB_MAX_NAME_LENGTH:
|
|
@@ -526,10 +525,17 @@ def migrate_role_data(
|
|
|
526
525
|
to_role_choiceset (ChoiceSet): If `to_role_field` is a choices field, the corresponding ChoiceSet for it
|
|
527
526
|
is_m2m_field (bool): True if the role fields are both ManyToManyFields, else False
|
|
528
527
|
"""
|
|
528
|
+
if from_role_model is not None and from_role_choiceset is not None:
|
|
529
|
+
raise RuntimeError("from_role_model and from_role_choiceset are mutually exclusive")
|
|
530
|
+
if from_role_model is None and from_role_choiceset is None:
|
|
531
|
+
raise RuntimeError("One of from_role_model or from_role_choiceset must be specified and not None")
|
|
532
|
+
if to_role_model is not None and to_role_choiceset is not None:
|
|
533
|
+
raise RuntimeError("to_role_model and to_role_choiceset are mutually exclusive")
|
|
534
|
+
if to_role_model is None and to_role_choiceset is None:
|
|
535
|
+
raise RuntimeError("One of to_role_model or to_role_choiceset must be specified and not None")
|
|
536
|
+
|
|
529
537
|
if from_role_model is not None:
|
|
530
|
-
assert from_role_choiceset is None
|
|
531
538
|
if to_role_model is not None:
|
|
532
|
-
assert to_role_choiceset is None
|
|
533
539
|
# Mapping "from" model instances to corresponding "to" model instances
|
|
534
540
|
roles_translation_mapping = {
|
|
535
541
|
# Use .filter().first(), not .get() because "to" role might not exist, especially on reverse migrations
|
|
@@ -537,7 +543,6 @@ def migrate_role_data(
|
|
|
537
543
|
for from_role in from_role_model.objects.all()
|
|
538
544
|
}
|
|
539
545
|
else:
|
|
540
|
-
assert to_role_choiceset is not None
|
|
541
546
|
# Mapping "from" model instances to corresponding "to" choices
|
|
542
547
|
# We need to use `label` to look up the from_role instance, but `value` is what we set for the to_role_field
|
|
543
548
|
inverted_to_role_choiceset = {label: value for value, label in to_role_choiceset.CHOICES}
|
|
@@ -546,9 +551,7 @@ def migrate_role_data(
|
|
|
546
551
|
for from_role in from_role_model.objects.all()
|
|
547
552
|
}
|
|
548
553
|
else:
|
|
549
|
-
assert from_role_choiceset is not None
|
|
550
554
|
if to_role_model is not None:
|
|
551
|
-
assert to_role_choiceset is None
|
|
552
555
|
# Mapping "from" choices to corresponding "to" model instances
|
|
553
556
|
roles_translation_mapping = {
|
|
554
557
|
# Use .filter().first(), not .get() because "to" role might not exist, especially on reverse migrations
|
|
@@ -556,7 +559,6 @@ def migrate_role_data(
|
|
|
556
559
|
for from_role_value, from_role_label in from_role_choiceset.CHOICES
|
|
557
560
|
}
|
|
558
561
|
else:
|
|
559
|
-
assert to_role_choiceset is not None
|
|
560
562
|
# Mapping "from" choices to corresponding "to" choices; we don't currently use this case, but it should work
|
|
561
563
|
# We need to use `label` to look up the from_role instance, but `value` is what we set for the to_role_field
|
|
562
564
|
inverted_to_role_choiceset = {label: value for value, label in to_role_choiceset.CHOICES}
|
nautobot/extras/views.py
CHANGED
|
@@ -10,7 +10,7 @@ from django.db.models import Count, ProtectedError, Q
|
|
|
10
10
|
from django.forms.utils import pretty_name
|
|
11
11
|
from django.http import Http404, HttpResponse, HttpResponseForbidden
|
|
12
12
|
from django.shortcuts import get_object_or_404, redirect, render
|
|
13
|
-
from django.template.loader import
|
|
13
|
+
from django.template.loader import get_template, TemplateDoesNotExist
|
|
14
14
|
from django.urls import reverse
|
|
15
15
|
from django.utils import timezone
|
|
16
16
|
from django.utils.encoding import iri_to_uri
|
|
@@ -27,10 +27,10 @@ from nautobot.core.tables import ButtonsColumn
|
|
|
27
27
|
from nautobot.core.utils.lookup import get_table_for_model
|
|
28
28
|
from nautobot.core.utils.requests import normalize_querydict
|
|
29
29
|
from nautobot.core.views import generic, viewsets
|
|
30
|
-
from nautobot.core.views.viewsets import NautobotUIViewSet
|
|
31
30
|
from nautobot.core.views.mixins import ObjectPermissionRequiredMixin
|
|
32
31
|
from nautobot.core.views.paginator import EnhancedPaginator, get_paginate_count
|
|
33
32
|
from nautobot.core.views.utils import prepare_cloned_fields
|
|
33
|
+
from nautobot.core.views.viewsets import NautobotUIViewSet
|
|
34
34
|
from nautobot.dcim.models import Device, Rack
|
|
35
35
|
from nautobot.dcim.tables import DeviceTable, RackTable
|
|
36
36
|
from nautobot.extras.tasks import delete_custom_field_data
|
|
@@ -63,6 +63,7 @@ from .models import (
|
|
|
63
63
|
GitRepository,
|
|
64
64
|
GraphQLQuery,
|
|
65
65
|
ImageAttachment,
|
|
66
|
+
Job as JobModel,
|
|
66
67
|
JobButton,
|
|
67
68
|
JobHook,
|
|
68
69
|
JobResult,
|
|
@@ -80,7 +81,6 @@ from .models import (
|
|
|
80
81
|
TaggedItem,
|
|
81
82
|
Webhook,
|
|
82
83
|
)
|
|
83
|
-
from .models import Job as JobModel
|
|
84
84
|
from .registry import registry
|
|
85
85
|
from .tables import RoleTable
|
|
86
86
|
|
nautobot/generate_secret_key.py
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# This script will generate a random 50-character string suitable for use as a SECRET_KEY.
|
|
3
3
|
# shamelessly pulled from https://docs.python.org/3/library/secrets.html#recipes-and-best-practices
|
|
4
|
-
import string
|
|
5
4
|
import secrets
|
|
5
|
+
import string
|
|
6
6
|
|
|
7
7
|
length = 50
|
|
8
8
|
alphabet = string.ascii_letters + string.digits + "!@#$%^&*(-_=+)" # string.punctuation would be an option
|
nautobot/ipam/api/serializers.py
CHANGED
|
@@ -11,9 +11,9 @@ from nautobot.core.api import (
|
|
|
11
11
|
ValidatedModelSerializer,
|
|
12
12
|
)
|
|
13
13
|
from nautobot.extras.api.mixins import TaggedModelSerializerMixin
|
|
14
|
+
from nautobot.ipam import constants
|
|
14
15
|
from nautobot.ipam.api.fields import IPFieldSerializer
|
|
15
16
|
from nautobot.ipam.choices import PrefixTypeChoices, ServiceProtocolChoices
|
|
16
|
-
from nautobot.ipam import constants
|
|
17
17
|
from nautobot.ipam.models import (
|
|
18
18
|
get_default_namespace,
|
|
19
19
|
IPAddress,
|
|
@@ -28,7 +28,6 @@ from nautobot.ipam.models import (
|
|
|
28
28
|
VRF,
|
|
29
29
|
)
|
|
30
30
|
|
|
31
|
-
|
|
32
31
|
#
|
|
33
32
|
# Namespaces
|
|
34
33
|
#
|
nautobot/ipam/api/urls.py
CHANGED
nautobot/ipam/api/views.py
CHANGED
nautobot/ipam/apps.py
CHANGED
|
@@ -15,8 +15,9 @@ class IPAMConfig(NautobotConfig):
|
|
|
15
15
|
super().ready()
|
|
16
16
|
|
|
17
17
|
from graphene_django.converter import convert_django_field, convert_field_to_string
|
|
18
|
+
|
|
18
19
|
from nautobot.ipam.fields import VarbinaryIPField
|
|
19
|
-
import nautobot.ipam.signals # noqa: F401
|
|
20
|
+
import nautobot.ipam.signals # noqa: F401 # unused-import -- but this import installs the signals
|
|
20
21
|
|
|
21
22
|
# Register VarbinaryIPField to be converted to a string type
|
|
22
23
|
convert_django_field.register(VarbinaryIPField)(convert_field_to_string)
|
nautobot/ipam/factory.py
CHANGED
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
import datetime
|
|
2
2
|
import logging
|
|
3
|
+
import math
|
|
3
4
|
|
|
4
5
|
import factory
|
|
5
6
|
import faker
|
|
6
|
-
import math
|
|
7
7
|
|
|
8
8
|
from nautobot.core.factory import (
|
|
9
|
+
get_random_instances,
|
|
9
10
|
NautobotBoolIterator,
|
|
10
11
|
OrganizationalModelFactory,
|
|
11
12
|
PrimaryModelFactory,
|
|
12
|
-
UniqueFaker,
|
|
13
|
-
get_random_instances,
|
|
14
13
|
random_instance,
|
|
14
|
+
UniqueFaker,
|
|
15
15
|
)
|
|
16
16
|
from nautobot.dcim.models import Location
|
|
17
17
|
from nautobot.extras.models import Role, Status
|
|
18
18
|
from nautobot.ipam.choices import PrefixTypeChoices
|
|
19
|
-
from nautobot.ipam.models import IPAddress, Prefix, RIR, RouteTarget, VLAN, VLANGroup, VRF
|
|
19
|
+
from nautobot.ipam.models import IPAddress, Namespace, Prefix, RIR, RouteTarget, VLAN, VLANGroup, VRF
|
|
20
20
|
from nautobot.tenancy.models import Tenant
|
|
21
21
|
|
|
22
|
-
|
|
23
22
|
logger = logging.getLogger(__name__)
|
|
24
23
|
|
|
25
24
|
|
|
@@ -51,7 +50,7 @@ def random_route_distinguisher():
|
|
|
51
50
|
fake = faker.Faker()
|
|
52
51
|
branch = fake.pyint(0, 2)
|
|
53
52
|
if branch == 0:
|
|
54
|
-
# 16-bit ASNs 64496
|
|
53
|
+
# 16-bit ASNs 64496-64511 are reserved for documentation and sample code
|
|
55
54
|
return f"{fake.pyint(64496, 64511)}:{fake.pyint(0, 2**32 - 1)}"
|
|
56
55
|
if branch == 1:
|
|
57
56
|
return f"{fake.ipv4_private()}:{fake.pyint(0, 2**16 - 1)}"
|
|
@@ -201,9 +200,7 @@ class VLANFactory(PrimaryModelFactory):
|
|
|
201
200
|
),
|
|
202
201
|
)
|
|
203
202
|
]
|
|
204
|
-
)[
|
|
205
|
-
:255
|
|
206
|
-
] # truncate to max VLAN.name length just to be safe
|
|
203
|
+
)[:255] # truncate to max VLAN.name length just to be safe
|
|
207
204
|
)
|
|
208
205
|
|
|
209
206
|
status = random_instance(lambda: Status.objects.get_for_model(VLAN), allow_null=False)
|
nautobot/ipam/fields.py
CHANGED
nautobot/ipam/filters.py
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import contextlib
|
|
2
|
-
|
|
3
|
-
import netaddr
|
|
2
|
+
|
|
4
3
|
from django.core.exceptions import ValidationError
|
|
5
4
|
from django.db.models import Q
|
|
5
|
+
import django_filters
|
|
6
|
+
import netaddr
|
|
6
7
|
|
|
7
8
|
from nautobot.core.filters import (
|
|
8
9
|
MultiValueCharFilter,
|
|
@@ -20,6 +21,7 @@ from nautobot.extras.filters import NautobotFilterSet, RoleModelFilterSetMixin,
|
|
|
20
21
|
from nautobot.ipam import choices
|
|
21
22
|
from nautobot.tenancy.filters import TenancyModelFilterSetMixin
|
|
22
23
|
from nautobot.virtualization.models import VirtualMachine, VMInterface
|
|
24
|
+
|
|
23
25
|
from .models import (
|
|
24
26
|
IPAddress,
|
|
25
27
|
IPAddressToInterface,
|
|
@@ -33,7 +35,6 @@ from .models import (
|
|
|
33
35
|
VRF,
|
|
34
36
|
)
|
|
35
37
|
|
|
36
|
-
|
|
37
38
|
__all__ = (
|
|
38
39
|
"IPAddressFilterSet",
|
|
39
40
|
"NamespaceFilterSet",
|
nautobot/ipam/formfields.py
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
from django import forms
|
|
2
2
|
from django.core.exceptions import ValidationError
|
|
3
3
|
from django.core.validators import validate_ipv4_address, validate_ipv6_address
|
|
4
|
-
from netaddr import IPAddress, IPNetwork
|
|
5
|
-
|
|
4
|
+
from netaddr import AddrFormatError, IPAddress, IPNetwork
|
|
6
5
|
|
|
7
6
|
#
|
|
8
7
|
# Form fields
|
nautobot/ipam/forms.py
CHANGED
|
@@ -24,8 +24,8 @@ from nautobot.dcim.form_mixins import (
|
|
|
24
24
|
from nautobot.dcim.models import Device, Location, Rack
|
|
25
25
|
from nautobot.extras.forms import (
|
|
26
26
|
NautobotBulkEditForm,
|
|
27
|
-
NautobotModelForm,
|
|
28
27
|
NautobotFilterForm,
|
|
28
|
+
NautobotModelForm,
|
|
29
29
|
RoleModelBulkEditFormMixin,
|
|
30
30
|
RoleModelFilterFormMixin,
|
|
31
31
|
StatusModelBulkEditFormMixin,
|
|
@@ -35,10 +35,11 @@ from nautobot.extras.forms import (
|
|
|
35
35
|
from nautobot.tenancy.forms import TenancyFilterForm, TenancyForm
|
|
36
36
|
from nautobot.tenancy.models import Tenant
|
|
37
37
|
from nautobot.virtualization.models import Cluster, VirtualMachine
|
|
38
|
-
|
|
38
|
+
|
|
39
|
+
from .choices import IPAddressTypeChoices, IPAddressVersionChoices, PrefixTypeChoices, ServiceProtocolChoices
|
|
39
40
|
from .constants import (
|
|
40
|
-
IPADDRESS_MASK_LENGTH_MIN,
|
|
41
41
|
IPADDRESS_MASK_LENGTH_MAX,
|
|
42
|
+
IPADDRESS_MASK_LENGTH_MIN,
|
|
42
43
|
PREFIX_LENGTH_MAX,
|
|
43
44
|
PREFIX_LENGTH_MIN,
|
|
44
45
|
SERVICE_PORT_MAX,
|
nautobot/ipam/graphql/types.py
CHANGED
|
@@ -2,7 +2,7 @@ import graphene
|
|
|
2
2
|
|
|
3
3
|
from nautobot.core.graphql.types import OptimizedNautobotObjectType
|
|
4
4
|
from nautobot.extras.models import DynamicGroup
|
|
5
|
-
from nautobot.ipam import
|
|
5
|
+
from nautobot.ipam import filters, models
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class IPAddressType(OptimizedNautobotObjectType):
|
nautobot/ipam/homepage.py
CHANGED
nautobot/ipam/lookups.py
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
from django.db import NotSupportedError
|
|
3
|
-
from django.db import connection as _connection
|
|
1
|
+
from django.db import connection as _connection, NotSupportedError
|
|
4
2
|
from django.db.models import Lookup, lookups
|
|
3
|
+
import netaddr
|
|
5
4
|
|
|
6
5
|
|
|
7
6
|
def _mysql_varbin_to_broadcast():
|
|
@@ -8,8 +8,7 @@ from django.utils.timezone import make_aware
|
|
|
8
8
|
from nautobot.core.models.managers import TagsManager
|
|
9
9
|
from nautobot.core.models.utils import serialize_object
|
|
10
10
|
from nautobot.core.utils.migrations import update_object_change_ct_for_replaced_models
|
|
11
|
-
from nautobot.extras import choices as extras_choices
|
|
12
|
-
from nautobot.extras import models as extras_models
|
|
11
|
+
from nautobot.extras import choices as extras_choices, models as extras_models
|
|
13
12
|
from nautobot.extras.constants import CHANGELOG_MAX_OBJECT_REPR
|
|
14
13
|
from nautobot.ipam.choices import PrefixTypeChoices
|
|
15
14
|
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
# Generated by Django 3.2.18 on 2023-03-14 21:24
|
|
2
2
|
|
|
3
|
+
import uuid
|
|
4
|
+
|
|
3
5
|
import django.core.serializers.json
|
|
4
6
|
from django.db import migrations, models
|
|
5
7
|
import django.db.models.deletion
|
|
8
|
+
|
|
6
9
|
import nautobot.extras.models.mixins
|
|
7
10
|
import nautobot.ipam.models
|
|
8
|
-
import uuid
|
|
9
11
|
|
|
10
12
|
|
|
11
13
|
class Migration(migrations.Migration):
|