nautobot 2.0.0a3__py3-none-any.whl → 2.0.0b1__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/apps/api.py +6 -8
- nautobot/apps/forms.py +0 -2
- nautobot/apps/ui.py +0 -8
- nautobot/circuits/api/serializers.py +9 -117
- nautobot/circuits/api/urls.py +1 -1
- nautobot/circuits/api/views.py +0 -1
- nautobot/circuits/forms.py +0 -65
- nautobot/circuits/migrations/0014_related_name_changes.py +1 -1
- nautobot/circuits/migrations/0016_tagsfield.py +34 -0
- nautobot/circuits/migrations/0017_fixup_null_statuses.py +22 -0
- nautobot/circuits/migrations/0018_status_nonnullable.py +22 -0
- nautobot/circuits/models.py +3 -87
- nautobot/circuits/navigation.py +14 -69
- nautobot/circuits/signals.py +0 -2
- nautobot/circuits/tables.py +39 -1
- nautobot/circuits/tests/integration/test_relationships.py +9 -9
- nautobot/circuits/tests/test_api.py +4 -8
- nautobot/circuits/tests/test_filters.py +10 -4
- nautobot/circuits/tests/test_models.py +5 -1
- nautobot/circuits/tests/test_views.py +27 -5
- nautobot/circuits/views.py +18 -10
- nautobot/core/api/__init__.py +8 -2
- nautobot/core/api/fields.py +15 -6
- nautobot/core/api/filter_backends.py +3 -2
- nautobot/core/api/metadata.py +237 -30
- nautobot/core/api/mixins.py +94 -0
- nautobot/core/api/pagination.py +4 -0
- nautobot/core/api/parsers.py +154 -0
- nautobot/core/api/renderers.py +153 -2
- nautobot/core/api/schema.py +46 -2
- nautobot/core/api/serializers.py +377 -35
- nautobot/core/api/urls.py +11 -3
- nautobot/core/api/utils.py +174 -2
- nautobot/core/api/versioning.py +32 -10
- nautobot/core/api/views.py +266 -72
- nautobot/core/apps/__init__.py +138 -220
- nautobot/core/celery/__init__.py +112 -41
- nautobot/core/celery/backends.py +19 -12
- nautobot/core/celery/control.py +46 -0
- nautobot/core/celery/encoders.py +53 -0
- nautobot/core/celery/log.py +38 -0
- nautobot/core/celery/schedulers.py +23 -4
- nautobot/core/celery/task.py +1 -16
- nautobot/core/checks.py +0 -27
- nautobot/core/choices.py +0 -113
- nautobot/core/{cli.py → cli/__init__.py} +1 -1
- nautobot/core/cli/__main__.py +3 -0
- nautobot/core/constants.py +0 -24
- nautobot/core/context_processors.py +12 -0
- nautobot/core/filters.py +2 -2
- nautobot/core/forms/__init__.py +0 -4
- nautobot/core/forms/fields.py +38 -65
- nautobot/core/forms/forms.py +4 -1
- nautobot/core/forms/utils.py +0 -52
- nautobot/core/graphql/schema.py +4 -27
- nautobot/core/jobs/__init__.py +75 -0
- nautobot/core/management/commands/build_ui.py +255 -0
- nautobot/core/management/commands/generate_test_data.py +3 -2
- nautobot/core/management/commands/post_upgrade.py +24 -24
- nautobot/core/models/__init__.py +26 -1
- nautobot/core/models/fields.py +24 -5
- nautobot/core/models/generics.py +2 -42
- nautobot/core/models/managers.py +5 -0
- nautobot/core/models/name_color_content_types.py +0 -14
- nautobot/core/models/tree_queries.py +14 -4
- nautobot/core/models/utils.py +5 -6
- nautobot/core/models/validators.py +17 -8
- nautobot/core/releases.py +8 -10
- nautobot/core/settings.py +80 -42
- nautobot/core/tables.py +5 -5
- nautobot/core/tasks.py +4 -7
- nautobot/core/templates/base.html +1 -49
- nautobot/core/templates/base_django.html +49 -0
- nautobot/core/templates/base_react.html +55 -0
- nautobot/core/templates/buttons/export.html +6 -4
- nautobot/core/templates/generic/object_bulk_create.html +10 -21
- nautobot/core/templates/generic/object_list.html +3 -1
- nautobot/core/templates/generic/object_retrieve_plugin_full_width.html +3 -0
- nautobot/core/templates/inc/footer.html +1 -0
- nautobot/core/templates/inc/javascript.html +0 -14
- nautobot/core/templates/inc/nav_menu.html +28 -33
- nautobot/core/templates/inc/object_details_advanced_panel.html +13 -0
- nautobot/core/templates/inc/relationships_table_rows.html +2 -2
- nautobot/core/templates/nautobot_config.py.j2 +8 -20
- nautobot/core/templates/plugin_template/__init__.py-tpl +1 -2
- nautobot/core/templates/rest_framework/api.html +8 -0
- nautobot/core/templatetags/buttons.py +32 -28
- nautobot/core/testing/__init__.py +47 -44
- nautobot/core/testing/api.py +362 -47
- nautobot/core/testing/filters.py +1 -1
- nautobot/core/testing/migrations.py +2 -0
- nautobot/core/testing/mixins.py +22 -9
- nautobot/core/testing/schema.py +2 -1
- nautobot/core/testing/views.py +21 -46
- nautobot/core/tests/integration/test_filters.py +17 -8
- nautobot/core/tests/integration/test_navbar.py +11 -34
- nautobot/core/tests/integration/test_plugin_navbar.py +9 -103
- nautobot/core/tests/nautobot_config.py +2 -3
- nautobot/core/tests/test_api.py +290 -21
- nautobot/core/tests/test_checks.py +0 -7
- nautobot/core/tests/test_filters.py +107 -59
- nautobot/core/tests/test_forms.py +26 -92
- nautobot/core/tests/test_graphql.py +110 -77
- nautobot/core/tests/test_logging.py +4 -0
- nautobot/core/tests/test_managers.py +3 -1
- nautobot/core/tests/test_models.py +2 -0
- nautobot/core/tests/test_paginator.py +3 -1
- nautobot/core/tests/test_releases.py +12 -12
- nautobot/core/tests/test_templatetags_helpers.py +4 -4
- nautobot/core/tests/test_utils.py +32 -68
- nautobot/core/tests/test_views.py +12 -15
- nautobot/core/utils/data.py +17 -0
- nautobot/core/utils/deprecation.py +9 -6
- nautobot/core/utils/filtering.py +8 -3
- nautobot/core/utils/git.py +12 -4
- nautobot/core/utils/lookup.py +3 -1
- nautobot/core/utils/requests.py +1 -104
- nautobot/core/views/__init__.py +1 -0
- nautobot/core/views/generic.py +75 -110
- nautobot/core/views/mixins.py +52 -61
- nautobot/core/views/renderers.py +6 -7
- nautobot/core/views/utils.py +80 -0
- nautobot/dcim/api/serializers.py +160 -667
- nautobot/dcim/api/urls.py +1 -1
- nautobot/dcim/api/views.py +7 -44
- nautobot/dcim/choices.py +2 -0
- nautobot/dcim/filters/__init__.py +21 -0
- nautobot/dcim/form_mixins.py +1 -27
- nautobot/dcim/forms.py +19 -765
- nautobot/dcim/migrations/0024_alter_device_and_rack_role_add_new_role.py +2 -1
- nautobot/dcim/migrations/0025_device_and_rack_roles_data_migrations.py +19 -13
- nautobot/dcim/migrations/0027_remove_device_role_and_rack_role.py +1 -1
- nautobot/dcim/migrations/0028_rename_foreignkey_fields.py +1 -1
- nautobot/dcim/migrations/0030_migrate_region_and_site_data_to_locations.py +2 -2
- nautobot/dcim/migrations/0035_related_name_changes.py +1 -1
- nautobot/dcim/migrations/0036_remove_region_and_site.py +1 -1
- nautobot/dcim/migrations/0040_tagsfield.py +109 -0
- nautobot/dcim/migrations/{0040_ipam__namespaces.py → 0041_ipam__namespaces.py} +1 -1
- nautobot/dcim/migrations/0042_fixup_null_statuses.py +51 -0
- nautobot/dcim/migrations/0043_status_nonnullable.py +72 -0
- nautobot/dcim/models/cables.py +3 -33
- nautobot/dcim/models/device_component_templates.py +6 -0
- nautobot/dcim/models/device_components.py +12 -198
- nautobot/dcim/models/devices.py +30 -143
- nautobot/dcim/models/locations.py +3 -64
- nautobot/dcim/models/power.py +3 -50
- nautobot/dcim/models/racks.py +7 -84
- nautobot/dcim/navigation.py +141 -467
- nautobot/dcim/signals.py +0 -2
- nautobot/dcim/tables/locations.py +2 -2
- nautobot/dcim/tables/power.py +1 -2
- nautobot/dcim/templates/dcim/console_port_connection_list.html +7 -0
- nautobot/dcim/templates/dcim/devicetype.html +2 -2
- nautobot/dcim/templates/dcim/interface_connection_list.html +7 -0
- nautobot/dcim/templates/dcim/location.html +16 -1
- nautobot/dcim/templates/dcim/locationtype.html +15 -0
- nautobot/dcim/templates/dcim/power_port_connection_list.html +7 -0
- nautobot/dcim/templates/dcim/rackgroup.html +0 -12
- nautobot/dcim/tests/test_api.py +166 -81
- nautobot/dcim/tests/test_cablepaths.py +41 -35
- nautobot/dcim/tests/test_filters.py +67 -23
- nautobot/dcim/tests/test_forms.py +5 -205
- nautobot/dcim/tests/test_graphql.py +7 -2
- nautobot/dcim/tests/test_migrations.py +6 -11
- nautobot/dcim/tests/test_models.py +182 -110
- nautobot/dcim/tests/test_natural_ordering.py +11 -8
- nautobot/dcim/tests/test_signals.py +6 -3
- nautobot/dcim/tests/test_views.py +197 -175
- nautobot/dcim/urls.py +11 -16
- nautobot/dcim/views.py +7 -134
- nautobot/docs/additional-features/caching.md +6 -87
- nautobot/docs/additional-features/job-scheduling-and-approvals.md +3 -0
- nautobot/docs/additional-features/jobs.md +177 -195
- nautobot/docs/administration/nautobot-server.md +6 -21
- nautobot/docs/administration/replicating-nautobot.md +0 -10
- nautobot/docs/configuration/optional-settings.md +32 -41
- nautobot/docs/configuration/required-settings.md +11 -52
- nautobot/docs/development/application-registry.md +2 -13
- nautobot/docs/development/extending-models.md +15 -17
- nautobot/docs/development/generic-views.md +0 -2
- nautobot/docs/development/getting-started.md +55 -5
- nautobot/docs/development/navigation-menu.md +22 -93
- nautobot/docs/development/react-ui.md +105 -0
- nautobot/docs/development/role-internals.md +1 -3
- nautobot/docs/development/style-guide.md +6 -4
- nautobot/docs/index.md +3 -2
- nautobot/docs/installation/migrating-from-netbox.md +11 -42
- nautobot/docs/installation/nautobot.md +1 -1
- nautobot/docs/installation/tables/v2-api-behavior-changes.yaml +70 -0
- nautobot/docs/installation/tables/v2-api-removed-fields.yaml +142 -0
- nautobot/docs/installation/tables/v2-api-renamed-fields.yaml +124 -0
- nautobot/docs/installation/tables/v2-code-location-changes.yaml +241 -0
- nautobot/docs/installation/tables/v2-code-removals.yaml +67 -0
- nautobot/docs/installation/tables/v2-database-behavior-changes.yaml +37 -0
- nautobot/docs/installation/tables/v2-database-removed-fields.yaml +166 -0
- nautobot/docs/installation/tables/v2-database-renamed-fields.yaml +340 -0
- nautobot/docs/installation/tables/v2-filters-corrected-fields.yaml +28 -0
- nautobot/docs/installation/tables/v2-filters-enhanced-fields.yaml +241 -0
- nautobot/docs/installation/tables/v2-filters-removed-fields.yaml +553 -0
- nautobot/docs/installation/tables/v2-filters-renamed-fields.yaml +223 -0
- nautobot/docs/installation/tables/v2-logging-renamed-loggers.yaml +23 -0
- nautobot/docs/installation/upgrading-from-nautobot-v1.md +170 -747
- nautobot/docs/models/dcim/device.md +3 -0
- nautobot/docs/models/dcim/deviceredundancygroup.md +3 -3
- nautobot/docs/models/extras/computedfield.md +4 -4
- nautobot/docs/models/extras/gitrepository.md +3 -0
- nautobot/docs/models/extras/job.md +1 -0
- nautobot/docs/models/extras/jobbutton.md +18 -13
- nautobot/docs/models/extras/jobhook.md +7 -4
- nautobot/docs/models/extras/jobresult.md +6 -2
- nautobot/docs/models/extras/relationship.md +2 -2
- nautobot/docs/models/extras/status.md +6 -19
- nautobot/docs/models/ipam/ipaddress.md +3 -0
- nautobot/docs/models/virtualization/virtualmachine.md +3 -0
- nautobot/docs/plugins/development.md +83 -21
- nautobot/docs/release-notes/version-1.5.md +53 -0
- nautobot/docs/release-notes/version-2.0.md +180 -0
- nautobot/docs/requirements.txt +1 -0
- nautobot/docs/rest-api/overview.md +384 -215
- nautobot/docs/rest-api/ui-related-endpoints.md +9 -0
- nautobot/extras/admin.py +3 -5
- nautobot/extras/api/customfields.py +15 -39
- nautobot/extras/api/fields.py +0 -11
- nautobot/extras/api/mixins.py +45 -0
- nautobot/extras/api/relationships.py +63 -158
- nautobot/extras/api/serializers.py +165 -700
- nautobot/extras/api/urls.py +1 -1
- nautobot/extras/api/views.py +294 -280
- nautobot/extras/apps.py +4 -7
- nautobot/extras/choices.py +11 -9
- nautobot/extras/constants.py +9 -3
- nautobot/extras/datasources/__init__.py +2 -0
- nautobot/extras/datasources/git.py +135 -186
- nautobot/extras/datasources/registry.py +25 -35
- nautobot/extras/filters/__init__.py +20 -19
- nautobot/extras/filters/mixins.py +4 -4
- nautobot/extras/forms/forms.py +63 -127
- nautobot/extras/forms/mixins.py +23 -51
- nautobot/extras/health_checks.py +0 -33
- nautobot/extras/jobs.py +387 -565
- nautobot/extras/management/commands/runjob.py +24 -62
- nautobot/extras/managers.py +30 -7
- nautobot/extras/migrations/0058_jobresult_add_time_status_idxs.py +38 -0
- nautobot/extras/migrations/{0058_joblogentry_scheduledjob_webhook_data_migration.py → 0059_joblogentry_scheduledjob_webhook_data_migration.py} +1 -1
- nautobot/extras/migrations/{0059_alter_joblogentry_scheduledjob_webhook_fields.py → 0060_alter_joblogentry_scheduledjob_webhook_fields.py} +1 -1
- nautobot/extras/migrations/{0060_role_and_alter_status.py → 0061_role_and_alter_status.py} +1 -7
- nautobot/extras/migrations/{0061_collect_roles_from_related_apps_roles.py → 0062_collect_roles_from_related_apps_roles.py} +33 -32
- nautobot/extras/migrations/{0062_alter_role_options.py → 0063_alter_role_options.py} +1 -1
- nautobot/extras/migrations/{0063_alter_configcontext_and_add_new_role.py → 0064_alter_configcontext_and_add_new_role.py} +1 -1
- nautobot/extras/migrations/0065_configcontext_data_migrations.py +44 -0
- nautobot/extras/migrations/{0065_rename_configcontext_role.py → 0066_rename_configcontext_role.py} +1 -1
- nautobot/extras/migrations/{0066_jobresult__add_celery_fields.py → 0067_jobresult__add_celery_fields.py} +36 -2
- nautobot/extras/migrations/{0067_created_datetime.py → 0068_created_datetime.py} +1 -1
- nautobot/extras/migrations/{0068_remove_site_and_region_attributes_from_config_context.py → 0069_remove_site_and_region_attributes_from_config_context.py} +1 -1
- nautobot/extras/migrations/{0069_replace_related_names.py → 0070_replace_related_names.py} +1 -1
- nautobot/extras/migrations/{0070_rename_model_fields.py → 0071_rename_model_fields.py} +1 -1
- nautobot/extras/migrations/0072_job__unique_name_data_migration.py +86 -0
- nautobot/extras/migrations/{0072_job__unique_name.py → 0073_job__unique_name.py} +13 -9
- nautobot/extras/migrations/{0073_remove_gitrepository_fields.py → 0074_remove_gitrepository_fields.py} +1 -1
- nautobot/extras/migrations/{0074_rename_slug_to_key_for_custom_field.py → 0075_rename_slug_to_key_for_custom_field.py} +1 -1
- nautobot/extras/migrations/{0075_migrate_custom_field_data.py → 0076_migrate_custom_field_data.py} +1 -1
- nautobot/extras/migrations/{0076_remove_name_field_and_make_label_field_non_nullable.py → 0077_remove_name_field_and_make_label_field_non_nullable.py} +1 -1
- nautobot/extras/migrations/{0077_remove_slug.py → 0078_remove_slug.py} +1 -5
- nautobot/extras/migrations/0079_tagsfield.py +28 -0
- nautobot/extras/migrations/0080_rename_relationship_slug_to_key.py +17 -0
- nautobot/extras/migrations/0081_rename_relationship_name_to_label.py +29 -0
- nautobot/extras/migrations/0082_ensure_relationship_keys_are_unique.py +43 -0
- nautobot/extras/migrations/0083_rename_computed_field_slug_to_key.py +21 -0
- nautobot/extras/migrations/0084_taggeditem_cleanup.py +43 -0
- nautobot/extras/migrations/0085_taggeditem_uniqueness.py +22 -0
- nautobot/extras/migrations/0086_job__celery_task_fields__dryrun_support.py +81 -0
- nautobot/extras/migrations/0087_job__commit_default_data_migration.py +26 -0
- nautobot/extras/migrations/0088_joblogentry__log_level_default.py +17 -0
- nautobot/extras/migrations/0089_joblogentry__log_level_data_migration.py +34 -0
- nautobot/extras/migrations/0090_scheduledjob__data_migration.py +57 -0
- nautobot/extras/models/__init__.py +2 -3
- nautobot/extras/models/change_logging.py +0 -36
- nautobot/extras/models/customfields.py +39 -33
- nautobot/extras/models/datasources.py +48 -50
- nautobot/extras/models/groups.py +5 -6
- nautobot/extras/models/jobs.py +189 -321
- nautobot/extras/models/mixins.py +0 -71
- nautobot/extras/models/models.py +0 -19
- nautobot/extras/models/relationships.py +19 -13
- nautobot/extras/models/roles.py +0 -34
- nautobot/extras/models/secrets.py +2 -26
- nautobot/extras/models/statuses.py +6 -5
- nautobot/extras/models/tags.py +2 -17
- nautobot/extras/navigation.py +89 -307
- nautobot/extras/plugins/__init__.py +3 -120
- nautobot/extras/plugins/utils.py +0 -3
- nautobot/extras/plugins/validators.py +5 -4
- nautobot/extras/plugins/views.py +16 -3
- nautobot/extras/querysets.py +1 -7
- nautobot/extras/registry.py +3 -0
- nautobot/extras/signals.py +26 -60
- nautobot/extras/tables.py +34 -40
- nautobot/extras/tasks.py +0 -12
- nautobot/extras/templates/extras/configcontext.html +1 -1
- nautobot/extras/templates/extras/configcontextschema.html +16 -1
- nautobot/extras/templates/extras/customfield.html +0 -13
- nautobot/extras/templates/extras/gitrepository.html +3 -3
- nautobot/extras/templates/extras/inc/jobresult.html +10 -0
- nautobot/extras/templates/extras/inc/panel_jobhistory.html +1 -1
- nautobot/extras/templates/extras/job.html +35 -25
- nautobot/extras/templates/extras/job_approval_request.html +15 -30
- nautobot/extras/templates/extras/job_detail.html +13 -31
- nautobot/extras/templates/extras/job_edit.html +15 -17
- nautobot/extras/templates/extras/jobresult.html +24 -6
- nautobot/extras/templates/extras/scheduledjob.html +2 -2
- nautobot/extras/templates/extras/secret.html +28 -0
- nautobot/extras/templatetags/job_buttons.py +1 -0
- nautobot/extras/{tests/example_jobs → test_jobs}/api_test_job.py +13 -6
- nautobot/extras/test_jobs/atomic_transaction.py +53 -0
- nautobot/extras/test_jobs/dry_run.py +29 -0
- nautobot/extras/{tests/example_jobs/test_duplicate_name.py → test_jobs/duplicate_name.py} +4 -0
- nautobot/extras/test_jobs/duplicate_name2.py +9 -0
- nautobot/extras/test_jobs/fail.py +23 -0
- nautobot/extras/{tests/example_jobs/test_field_default.py → test_jobs/field_default.py} +4 -0
- nautobot/extras/{tests/example_jobs/test_field_order.py → test_jobs/field_order.py} +4 -0
- nautobot/extras/{tests/example_jobs/test_file_upload_fail.py → test_jobs/file_upload_fail.py} +11 -6
- nautobot/extras/test_jobs/file_upload_pass.py +25 -0
- nautobot/extras/test_jobs/has_sensitive_variables.py +25 -0
- nautobot/extras/test_jobs/ipaddress_vars.py +66 -0
- nautobot/extras/test_jobs/job_button_receiver.py +28 -0
- nautobot/extras/test_jobs/job_hook_receiver.py +29 -0
- nautobot/extras/test_jobs/job_variables.py +88 -0
- nautobot/extras/test_jobs/location_with_custom_field.py +45 -0
- nautobot/extras/test_jobs/log_redaction.py +20 -0
- nautobot/extras/test_jobs/log_skip_db_logging.py +17 -0
- nautobot/extras/test_jobs/modify_db.py +25 -0
- nautobot/extras/{tests/example_jobs/test_no_field_order.py → test_jobs/no_field_order.py} +4 -0
- nautobot/extras/test_jobs/object_var_optional.py +21 -0
- nautobot/extras/test_jobs/object_var_required.py +21 -0
- nautobot/extras/test_jobs/object_vars.py +26 -0
- nautobot/extras/test_jobs/pass.py +25 -0
- nautobot/extras/test_jobs/profiling.py +32 -0
- nautobot/extras/test_jobs/read_only_job.py +15 -0
- nautobot/extras/{tests/example_jobs/test_required_args.py → test_jobs/required_args.py} +4 -0
- nautobot/extras/{tests/example_jobs/test_soft_time_limit_greater_than_time_limit.py → test_jobs/soft_time_limit_greater_than_time_limit.py} +5 -1
- nautobot/extras/{tests/example_jobs/test_task_queues.py → test_jobs/task_queues.py} +5 -1
- nautobot/extras/tests/integration/test_computedfields.py +1 -1
- nautobot/extras/tests/integration/test_configcontextschema.py +5 -3
- nautobot/extras/tests/integration/test_customfields.py +4 -2
- nautobot/extras/tests/integration/test_dynamicgroups.py +1 -1
- nautobot/extras/tests/integration/test_jobs.py +25 -27
- nautobot/extras/tests/integration/test_notes.py +8 -4
- nautobot/extras/tests/integration/test_relationships.py +2 -2
- nautobot/extras/tests/test_api.py +649 -642
- nautobot/extras/tests/test_changelog.py +3 -3
- nautobot/extras/tests/test_context_managers.py +5 -3
- nautobot/extras/tests/test_customfields.py +92 -50
- nautobot/extras/tests/test_datasources.py +189 -112
- nautobot/extras/tests/test_dynamicgroups.py +7 -8
- nautobot/extras/tests/test_filters.py +137 -89
- nautobot/extras/tests/test_forms.py +73 -75
- nautobot/extras/tests/{test_scripts.py → test_job_variables.py} +43 -49
- nautobot/extras/tests/test_jobs.py +262 -263
- nautobot/extras/tests/test_migrations.py +4 -3
- nautobot/extras/tests/test_models.py +116 -161
- nautobot/extras/tests/test_plugins.py +38 -60
- nautobot/extras/tests/test_relationships.py +167 -120
- nautobot/extras/tests/test_tags.py +6 -11
- nautobot/extras/tests/test_utils.py +31 -1
- nautobot/extras/tests/test_views.py +201 -145
- nautobot/extras/tests/test_webhooks.py +6 -2
- nautobot/extras/urls.py +42 -42
- nautobot/extras/utils.py +137 -163
- nautobot/extras/views.py +78 -152
- nautobot/ipam/api/fields.py +17 -0
- nautobot/ipam/api/serializers.py +58 -164
- nautobot/ipam/api/urls.py +1 -1
- nautobot/ipam/api/views.py +3 -2
- nautobot/ipam/apps.py +1 -2
- nautobot/ipam/filters.py +1 -10
- nautobot/ipam/forms.py +4 -177
- nautobot/ipam/lookups.py +1 -0
- nautobot/ipam/management/commands/__init__.py +0 -0
- nautobot/ipam/management/commands/fix_prefix_broadcast.py +17 -0
- nautobot/ipam/migrations/0010_alter_ipam_role_add_new_role.py +1 -1
- nautobot/ipam/migrations/0011_migrate_ipam_role_data.py +32 -38
- nautobot/ipam/migrations/0020_related_name_changes.py +1 -1
- nautobot/ipam/migrations/0022_aggregate_to_prefix_data_migration.py +2 -2
- nautobot/ipam/migrations/0028_tagsfield.py +44 -0
- nautobot/ipam/migrations/0029_ip_address_to_interface_uniqueness_constraints.py +18 -0
- nautobot/ipam/migrations/{0028_ipam__namespaces.py → 0030_ipam__namespaces.py} +77 -28
- nautobot/ipam/migrations/0031_ipam__prefix__add_parent.py +58 -0
- nautobot/ipam/migrations/0032_ipam__namespaces_finish.py +63 -0
- nautobot/ipam/migrations/0033_fixup_null_statuses.py +26 -0
- nautobot/ipam/migrations/0034_status_nonnullable.py +36 -0
- nautobot/ipam/models.py +100 -236
- nautobot/ipam/navigation.py +36 -181
- nautobot/ipam/querysets.py +20 -25
- nautobot/ipam/signals.py +49 -6
- nautobot/ipam/tables.py +10 -3
- nautobot/ipam/templates/ipam/namespace_ipaddresses.html +11 -0
- nautobot/ipam/templates/ipam/namespace_prefixes.html +11 -0
- nautobot/ipam/templates/ipam/namespace_retrieve.html +17 -4
- nautobot/ipam/templates/ipam/namespace_vrfs.html +11 -0
- nautobot/ipam/templates/ipam/prefix.html +1 -1
- nautobot/ipam/templates/ipam/vlangroup.html +0 -13
- nautobot/ipam/templates/ipam/vrf_edit.html +6 -0
- nautobot/ipam/tests/integration/test_prefixes.py +3 -26
- nautobot/ipam/tests/test_api.py +22 -19
- nautobot/ipam/tests/test_filters.py +59 -23
- nautobot/ipam/tests/test_migrations.py +6 -10
- nautobot/ipam/tests/test_models.py +323 -198
- nautobot/ipam/tests/test_ordering.py +2 -2
- nautobot/ipam/tests/test_querysets.py +44 -24
- nautobot/ipam/tests/test_views.py +73 -26
- nautobot/ipam/urls.py +16 -0
- nautobot/ipam/{utils.py → utils/__init__.py} +2 -2
- nautobot/ipam/utils/migrations.py +713 -0
- nautobot/ipam/views.py +137 -20
- nautobot/project-static/docs/404.html +1178 -10
- nautobot/project-static/docs/additional-features/caching.html +1224 -159
- nautobot/project-static/docs/additional-features/change-logging.html +1180 -12
- nautobot/project-static/docs/additional-features/config-contexts.html +1180 -12
- nautobot/project-static/docs/additional-features/graphql.html +1179 -11
- nautobot/project-static/docs/additional-features/healthcheck.html +1180 -12
- nautobot/project-static/docs/additional-features/job-scheduling-and-approvals.html +1184 -12
- nautobot/project-static/docs/additional-features/jobs.html +1514 -328
- nautobot/project-static/docs/additional-features/napalm.html +1180 -12
- nautobot/project-static/docs/additional-features/prometheus-metrics.html +1180 -12
- nautobot/project-static/docs/additional-features/template-filters.html +1180 -12
- nautobot/project-static/docs/administration/celery-queues.html +1178 -10
- nautobot/project-static/docs/administration/nautobot-server.html +1451 -304
- nautobot/project-static/docs/administration/nautobot-shell.html +1178 -10
- nautobot/project-static/docs/administration/permissions.html +1178 -10
- nautobot/project-static/docs/administration/replicating-nautobot.html +1262 -113
- nautobot/project-static/docs/apps/index.html +1178 -10
- nautobot/project-static/docs/apps/nautobot-apps.html +1178 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +1580 -426
- nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +1178 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/api.html +3481 -1838
- nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +1178 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/config.html +1178 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +1185 -11
- nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +1719 -551
- nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +2062 -930
- nautobot/project-static/docs/code-reference/nautobot/apps/models.html +1946 -659
- nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +1180 -12
- nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +1189 -21
- nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +9283 -6218
- nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +2734 -2122
- nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +1178 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/views.html +2337 -1300
- nautobot/project-static/docs/configuration/authentication/ldap.html +1178 -10
- nautobot/project-static/docs/configuration/authentication/remote.html +1178 -10
- nautobot/project-static/docs/configuration/authentication/sso.html +1178 -10
- nautobot/project-static/docs/configuration/index.html +1178 -10
- nautobot/project-static/docs/configuration/optional-settings.html +1311 -160
- nautobot/project-static/docs/configuration/required-settings.html +1312 -211
- nautobot/project-static/docs/core-functionality/circuits.html +1178 -10
- nautobot/project-static/docs/core-functionality/device-types.html +1178 -10
- nautobot/project-static/docs/core-functionality/devices.html +1182 -10
- nautobot/project-static/docs/core-functionality/ipam.html +1182 -10
- nautobot/project-static/docs/core-functionality/power.html +1178 -10
- nautobot/project-static/docs/core-functionality/secrets.html +1178 -10
- nautobot/project-static/docs/core-functionality/services.html +1178 -10
- nautobot/project-static/docs/core-functionality/sites-and-racks.html +1178 -10
- nautobot/project-static/docs/core-functionality/tenancy.html +1178 -10
- nautobot/project-static/docs/core-functionality/virtualization.html +1182 -10
- nautobot/project-static/docs/core-functionality/vlans.html +1179 -11
- nautobot/project-static/docs/development/application-registry.html +1190 -42
- nautobot/project-static/docs/development/best-practices.html +1178 -10
- nautobot/project-static/docs/development/docker-compose-advanced-use-cases.html +1178 -10
- nautobot/project-static/docs/development/extending-models.html +1238 -83
- nautobot/project-static/docs/development/generic-views.html +1180 -14
- nautobot/project-static/docs/development/getting-started.html +1365 -90
- nautobot/project-static/docs/development/homepage.html +1178 -10
- nautobot/project-static/docs/development/index.html +1178 -10
- nautobot/project-static/docs/development/model-features.html +1178 -10
- nautobot/project-static/docs/development/natural-keys.html +1178 -10
- nautobot/project-static/docs/development/navigation-menu.html +1215 -125
- nautobot/project-static/docs/development/react-ui.html +4199 -0
- nautobot/project-static/docs/development/release-checklist.html +1178 -10
- nautobot/project-static/docs/development/role-internals.html +1179 -12
- nautobot/project-static/docs/development/style-guide.html +1188 -19
- nautobot/project-static/docs/development/templates.html +1178 -10
- nautobot/project-static/docs/development/testing.html +1178 -10
- nautobot/project-static/docs/development/user-preferences.html +1178 -10
- nautobot/project-static/docs/docker/index.html +1178 -10
- nautobot/project-static/docs/index.html +1183 -12
- nautobot/project-static/docs/installation/centos.html +1178 -10
- nautobot/project-static/docs/installation/external-authentication.html +1178 -10
- nautobot/project-static/docs/installation/http-server.html +1178 -10
- nautobot/project-static/docs/installation/index.html +1178 -10
- nautobot/project-static/docs/installation/migrating-from-netbox.html +1305 -189
- nautobot/project-static/docs/installation/migrating-from-postgresql.html +1178 -10
- nautobot/project-static/docs/installation/nautobot.html +1179 -11
- nautobot/project-static/docs/installation/region-and-site-data-migration-guide.html +1178 -10
- nautobot/project-static/docs/installation/selinux-troubleshooting.html +1178 -10
- nautobot/project-static/docs/installation/services.html +1178 -10
- nautobot/project-static/docs/installation/tables/v2-api-behavior-changes.yaml +70 -0
- nautobot/project-static/docs/installation/tables/v2-api-removed-fields.yaml +142 -0
- nautobot/project-static/docs/installation/tables/v2-api-renamed-fields.yaml +124 -0
- nautobot/project-static/docs/installation/tables/v2-code-location-changes.yaml +241 -0
- nautobot/project-static/docs/installation/tables/v2-code-removals.yaml +67 -0
- nautobot/project-static/docs/installation/tables/v2-database-behavior-changes.yaml +37 -0
- nautobot/project-static/docs/installation/tables/v2-database-removed-fields.yaml +166 -0
- nautobot/project-static/docs/installation/tables/v2-database-renamed-fields.yaml +340 -0
- nautobot/project-static/docs/installation/tables/v2-filters-corrected-fields.yaml +28 -0
- nautobot/project-static/docs/installation/tables/v2-filters-enhanced-fields.yaml +241 -0
- nautobot/project-static/docs/installation/tables/v2-filters-removed-fields.yaml +553 -0
- nautobot/project-static/docs/installation/tables/v2-filters-renamed-fields.yaml +223 -0
- nautobot/project-static/docs/installation/tables/v2-logging-renamed-loggers.yaml +23 -0
- nautobot/project-static/docs/installation/ubuntu.html +1178 -10
- nautobot/project-static/docs/installation/upgrading-from-nautobot-v1.html +3823 -2152
- nautobot/project-static/docs/installation/upgrading.html +1178 -10
- nautobot/project-static/docs/models/circuits/circuit.html +1293 -103
- nautobot/project-static/docs/models/circuits/circuittermination.html +1293 -103
- nautobot/project-static/docs/models/circuits/circuittype.html +1293 -103
- nautobot/project-static/docs/models/circuits/provider.html +1293 -103
- nautobot/project-static/docs/models/circuits/providernetwork.html +1293 -103
- nautobot/project-static/docs/models/dcim/cable.html +1324 -103
- nautobot/project-static/docs/models/dcim/consoleport.html +1293 -103
- nautobot/project-static/docs/models/dcim/consoleporttemplate.html +1293 -103
- nautobot/project-static/docs/models/dcim/consoleserverport.html +1293 -103
- nautobot/project-static/docs/models/dcim/consoleserverporttemplate.html +1293 -103
- nautobot/project-static/docs/models/dcim/device.html +1326 -132
- nautobot/project-static/docs/models/dcim/devicebay.html +1293 -103
- nautobot/project-static/docs/models/dcim/devicebaytemplate.html +1293 -103
- nautobot/project-static/docs/models/dcim/deviceredundancygroup.html +1379 -97
- nautobot/project-static/docs/models/dcim/devicetype.html +1293 -103
- nautobot/project-static/docs/models/dcim/frontport.html +1293 -103
- nautobot/project-static/docs/models/dcim/frontporttemplate.html +1293 -103
- nautobot/project-static/docs/models/dcim/interface.html +1293 -103
- nautobot/project-static/docs/models/dcim/interfacetemplate.html +1293 -103
- nautobot/project-static/docs/models/dcim/inventoryitem.html +1293 -103
- nautobot/project-static/docs/models/dcim/location.html +1293 -103
- nautobot/project-static/docs/models/dcim/locationtype.html +1293 -103
- nautobot/project-static/docs/models/dcim/manufacturer.html +1292 -102
- nautobot/project-static/docs/models/dcim/platform.html +1272 -82
- nautobot/project-static/docs/models/dcim/powerfeed.html +1270 -80
- nautobot/project-static/docs/models/dcim/poweroutlet.html +1272 -82
- nautobot/project-static/docs/models/dcim/poweroutlettemplate.html +1272 -82
- nautobot/project-static/docs/models/dcim/powerpanel.html +1270 -80
- nautobot/project-static/docs/models/dcim/powerport.html +1272 -82
- nautobot/project-static/docs/models/dcim/powerporttemplate.html +1272 -82
- nautobot/project-static/docs/models/dcim/rack.html +1272 -82
- nautobot/project-static/docs/models/dcim/rackgroup.html +1272 -82
- nautobot/project-static/docs/models/dcim/rackreservation.html +1272 -82
- nautobot/project-static/docs/models/dcim/rearport.html +1286 -96
- nautobot/project-static/docs/models/dcim/rearporttemplate.html +1286 -96
- nautobot/project-static/docs/models/dcim/region.html +1178 -10
- nautobot/project-static/docs/models/dcim/site.html +1178 -10
- nautobot/project-static/docs/models/dcim/virtualchassis.html +1284 -94
- nautobot/project-static/docs/models/extras/computedfield.html +1184 -16
- nautobot/project-static/docs/models/extras/configcontext.html +1314 -86
- nautobot/project-static/docs/models/extras/configcontextschema.html +1276 -86
- nautobot/project-static/docs/models/extras/customfield.html +1180 -12
- nautobot/project-static/docs/models/extras/customlink.html +1180 -12
- nautobot/project-static/docs/models/extras/dynamicgroup.html +1180 -12
- nautobot/project-static/docs/models/extras/exporttemplate.html +1180 -12
- nautobot/project-static/docs/models/extras/gitrepository.html +1184 -12
- nautobot/project-static/docs/models/extras/graphqlquery.html +1321 -86
- nautobot/project-static/docs/models/extras/imageattachment.html +1276 -86
- nautobot/project-static/docs/models/extras/job.html +1277 -86
- nautobot/project-static/docs/models/extras/jobbutton.html +1201 -29
- nautobot/project-static/docs/models/extras/jobhook.html +1188 -16
- nautobot/project-static/docs/models/extras/joblogentry.html +1274 -84
- nautobot/project-static/docs/models/extras/jobresult.html +1364 -169
- nautobot/project-static/docs/models/extras/note.html +1180 -12
- nautobot/project-static/docs/models/extras/relationship.html +1182 -14
- nautobot/project-static/docs/models/extras/role.html +1320 -86
- nautobot/project-static/docs/models/extras/secret.html +1314 -86
- nautobot/project-static/docs/models/extras/secretsgroup.html +1276 -86
- nautobot/project-static/docs/models/extras/status.html +1188 -59
- nautobot/project-static/docs/models/extras/tag.html +1180 -12
- nautobot/project-static/docs/models/extras/webhook.html +1180 -12
- nautobot/project-static/docs/models/ipam/ipaddress.html +1327 -102
- nautobot/project-static/docs/models/ipam/prefix.html +1276 -86
- nautobot/project-static/docs/models/ipam/rir.html +1276 -86
- nautobot/project-static/docs/models/ipam/routetarget.html +1276 -86
- nautobot/project-static/docs/models/ipam/service.html +1276 -86
- nautobot/project-static/docs/models/ipam/vlan.html +1276 -86
- nautobot/project-static/docs/models/ipam/vlangroup.html +1276 -86
- nautobot/project-static/docs/models/ipam/vrf.html +1276 -86
- nautobot/project-static/docs/models/tenancy/tenant.html +1276 -86
- nautobot/project-static/docs/models/tenancy/tenantgroup.html +1276 -86
- nautobot/project-static/docs/models/users/objectpermission.html +1314 -86
- nautobot/project-static/docs/models/users/token.html +1276 -86
- nautobot/project-static/docs/models/virtualization/cluster.html +1276 -86
- nautobot/project-static/docs/models/virtualization/clustergroup.html +1276 -86
- nautobot/project-static/docs/models/virtualization/clustertype.html +1276 -86
- nautobot/project-static/docs/models/virtualization/virtualmachine.html +1321 -127
- nautobot/project-static/docs/models/virtualization/vminterface.html +1276 -86
- nautobot/project-static/docs/objects.inv +0 -0
- nautobot/project-static/docs/plugins/development.html +1726 -495
- nautobot/project-static/docs/plugins/index.html +1178 -10
- nautobot/project-static/docs/plugins/porting-from-netbox.html +1178 -10
- nautobot/project-static/docs/release-notes/index.html +1178 -10
- nautobot/project-static/docs/release-notes/version-1.0.html +1178 -10
- nautobot/project-static/docs/release-notes/version-1.1.html +1178 -10
- nautobot/project-static/docs/release-notes/version-1.2.html +1178 -10
- nautobot/project-static/docs/release-notes/version-1.3.html +1178 -10
- nautobot/project-static/docs/release-notes/version-1.4.html +1178 -10
- nautobot/project-static/docs/release-notes/version-1.5.html +1608 -225
- nautobot/project-static/docs/release-notes/version-2.0.html +1547 -47
- nautobot/project-static/docs/requirements.txt +1 -0
- nautobot/project-static/docs/rest-api/authentication.html +1179 -11
- nautobot/project-static/docs/rest-api/filtering.html +1178 -10
- nautobot/project-static/docs/rest-api/overview.html +1841 -446
- nautobot/project-static/docs/rest-api/ui-related-endpoints.html +4057 -0
- nautobot/project-static/docs/search/search_index.json +1 -1
- nautobot/project-static/docs/sitemap.xml +197 -187
- nautobot/project-static/docs/sitemap.xml.gz +0 -0
- nautobot/project-static/docs/user-guides/custom-fields.html +1178 -10
- nautobot/project-static/docs/user-guides/getting-started/creating-devices.html +1178 -10
- nautobot/project-static/docs/user-guides/getting-started/index.html +1178 -10
- nautobot/project-static/docs/user-guides/getting-started/interfaces.html +1178 -10
- nautobot/project-static/docs/user-guides/getting-started/ipam.html +1178 -10
- nautobot/project-static/docs/user-guides/getting-started/platforms.html +1178 -10
- nautobot/project-static/docs/user-guides/getting-started/regions.html +1178 -10
- nautobot/project-static/docs/user-guides/getting-started/search-bar.html +1178 -10
- nautobot/project-static/docs/user-guides/getting-started/tenants.html +1178 -10
- nautobot/project-static/docs/user-guides/getting-started/vlans-and-vlan-groups.html +1178 -10
- nautobot/project-static/docs/user-guides/git-data-source.html +1178 -10
- nautobot/project-static/docs/user-guides/graphql.html +1178 -10
- nautobot/project-static/docs/user-guides/relationships.html +1178 -10
- nautobot/project-static/docs/user-guides/s3-django-storage.html +1178 -10
- nautobot/project-static/js/forms.js +16 -9
- nautobot/project-static/js/theme.js +5 -0
- nautobot/tenancy/api/serializers.py +4 -32
- nautobot/tenancy/api/urls.py +1 -1
- nautobot/tenancy/forms.py +0 -28
- nautobot/tenancy/migrations/0008_tagsfield.py +19 -0
- nautobot/tenancy/models.py +0 -25
- nautobot/tenancy/navigation.py +6 -39
- nautobot/tenancy/templates/tenancy/tenant.html +12 -12
- nautobot/tenancy/templates/tenancy/tenantgroup.html +1 -1
- nautobot/tenancy/tests/test_api.py +1 -3
- nautobot/tenancy/tests/test_filters.py +10 -5
- nautobot/tenancy/views.py +0 -2
- nautobot/ui/.eslintignore +6 -0
- nautobot/ui/.gitignore +10 -0
- nautobot/ui/.prettierignore +9 -0
- nautobot/ui/.prettierrc +4 -0
- nautobot/ui/README.md +33 -0
- nautobot/ui/app_imports.js.j2 +7 -0
- nautobot/ui/craco.config.js +46 -0
- nautobot/ui/jsconfig-base.json +11 -0
- nautobot/ui/jsconfig.json +5 -0
- nautobot/ui/lib/nautobot-craco-alias-plugin.js +40 -0
- nautobot/ui/package-lock.json +21451 -0
- nautobot/ui/package.json +70 -0
- nautobot/ui/public/index.html +47 -0
- nautobot/ui/public/logo192.png +0 -0
- nautobot/ui/public/logo512.png +0 -0
- nautobot/ui/public/manifest.json +25 -0
- nautobot/ui/public/nautobot_logo.svg +131 -0
- nautobot/ui/public/robots.txt +3 -0
- nautobot/ui/src/App.js +71 -0
- nautobot/ui/src/components/AppFullWidthComponents.js +8 -0
- nautobot/ui/src/components/AppTab.js +40 -0
- nautobot/ui/src/components/Apps.js +60 -0
- nautobot/ui/src/components/HomeChangelogPanel.js +98 -0
- nautobot/ui/src/components/HomePanel.js +58 -0
- nautobot/ui/src/components/JobHistoryTable.js +78 -0
- nautobot/ui/src/components/Layout.js +53 -0
- nautobot/ui/src/components/LoadingWidget.js +25 -0
- nautobot/ui/src/components/Navbar.js +116 -0
- nautobot/ui/src/components/NotificationPopover.js +27 -0
- nautobot/ui/src/components/ObjectListTable.js +209 -0
- nautobot/ui/src/components/ReferenceDataTag.js +35 -0
- nautobot/ui/src/components/RouterButton.js +10 -0
- nautobot/ui/src/components/RouterLink.js +10 -0
- nautobot/ui/src/components/SidebarNav.js +147 -0
- nautobot/ui/src/components/Table.js +48 -0
- nautobot/ui/src/components/TableItem.js +71 -0
- nautobot/ui/src/components/__tests__/AppFullWidthComponents.test.js +16 -0
- nautobot/ui/src/components/__tests__/AppTab.test.js +21 -0
- nautobot/ui/src/components/__tests__/Apps.test.js +14 -0
- nautobot/ui/src/components/__tests__/Layout.test.js +33 -0
- nautobot/ui/src/components/__tests__/Table.test.js +36 -0
- nautobot/ui/src/components/__tests__/TableItem.test.js +37 -0
- nautobot/ui/src/components/__tests__/paginator.test.js +43 -0
- nautobot/ui/src/components/__tests__/paginator_form.test.js +13 -0
- nautobot/ui/src/components/pagination.js +93 -0
- nautobot/ui/src/components/paginator.js +79 -0
- nautobot/ui/src/components/paginator_form.js +43 -0
- nautobot/ui/src/components/usePagination.js +57 -0
- nautobot/ui/src/constants/apiPath.js +10 -0
- nautobot/ui/src/constants/icons.js +15 -0
- nautobot/ui/src/constants/size.js +15 -0
- nautobot/ui/src/index.js +65 -0
- nautobot/ui/src/reportWebVitals.js +15 -0
- nautobot/ui/src/router.js +77 -0
- nautobot/ui/src/utils/api.js +131 -0
- nautobot/ui/src/utils/app-import.js +15 -0
- nautobot/ui/src/utils/color.js +15 -0
- nautobot/ui/src/utils/date.js +14 -0
- nautobot/ui/src/utils/index.js +15 -0
- nautobot/ui/src/utils/navigation.js +32 -0
- nautobot/ui/src/utils/session.js +64 -0
- nautobot/ui/src/utils/store.js +242 -0
- nautobot/ui/src/utils/string.js +6 -0
- nautobot/ui/src/utils/url.js +4 -0
- nautobot/ui/src/views/Home.js +138 -0
- nautobot/ui/src/views/InstalledApps.js +80 -0
- nautobot/ui/src/views/Login.js +48 -0
- nautobot/ui/src/views/Logout.js +20 -0
- nautobot/ui/src/views/__tests__/BSCreateViewTemplate.test.js +11 -0
- nautobot/ui/src/views/__tests__/BSListViewTemplate.test.js +107 -0
- nautobot/ui/src/views/__tests__/Login.test.js +15 -0
- nautobot/ui/src/views/generic/GenericView.js +142 -0
- nautobot/ui/src/views/generic/ObjectCreate.js +96 -0
- nautobot/ui/src/views/generic/ObjectList.js +127 -0
- nautobot/ui/src/views/generic/ObjectRetrieve.js +551 -0
- nautobot/users/admin.py +1 -1
- nautobot/users/api/serializers.py +51 -61
- nautobot/users/api/urls.py +1 -1
- nautobot/users/api/views.py +53 -2
- nautobot/users/tests/test_api.py +110 -25
- nautobot/virtualization/api/serializers.py +18 -130
- nautobot/virtualization/api/urls.py +1 -1
- nautobot/virtualization/api/views.py +1 -22
- nautobot/virtualization/forms.py +13 -99
- nautobot/virtualization/migrations/0012_alter_virtualmachine_role_add_new_role.py +1 -1
- nautobot/virtualization/migrations/0013_migrate_virtualmachine_role_data.py +18 -11
- nautobot/virtualization/migrations/0015_rename_foreignkey_fields.py +1 -1
- nautobot/virtualization/migrations/0018_related_name_changes.py +1 -1
- nautobot/virtualization/migrations/0021_tagsfield_and_vminterface_to_primarymodel.py +39 -0
- nautobot/virtualization/migrations/0022_vminterface_timestamps_data_migration.py +17 -0
- nautobot/virtualization/migrations/{0021_ipam__namespaces.py → 0023_ipam__namespaces.py} +2 -2
- nautobot/virtualization/migrations/0024_fixup_null_statuses.py +25 -0
- nautobot/virtualization/migrations/0025_status_nonnullable.py +29 -0
- nautobot/virtualization/models.py +31 -123
- nautobot/virtualization/navigation.py +18 -99
- nautobot/virtualization/templates/virtualization/virtualmachine.html +2 -1
- nautobot/virtualization/templates/virtualization/virtualmachine_edit.html +6 -0
- nautobot/virtualization/tests/test_api.py +25 -26
- nautobot/virtualization/tests/test_filters.py +41 -15
- nautobot/virtualization/tests/test_models.py +31 -7
- nautobot/virtualization/tests/test_views.py +42 -25
- nautobot/virtualization/views.py +7 -6
- {nautobot-2.0.0a3.dist-info → nautobot-2.0.0b1.dist-info}/METADATA +3 -7
- {nautobot-2.0.0a3.dist-info → nautobot-2.0.0b1.dist-info}/RECORD +744 -602
- {nautobot-2.0.0a3.dist-info → nautobot-2.0.0b1.dist-info}/WHEEL +1 -1
- nautobot/circuits/api/nested_serializers.py +0 -69
- nautobot/core/templates/plugin_template/navigation.py-tpl +0 -22
- nautobot/dcim/api/nested_serializers.py +0 -356
- nautobot/dcim/templates/dcim/device_import.html +0 -5
- nautobot/dcim/templates/dcim/device_import_child.html +0 -5
- nautobot/dcim/templates/dcim/inc/device_import_header.html +0 -4
- nautobot/extras/api/nested_serializers.py +0 -353
- nautobot/extras/migrations/0064_configcontext_data_migrations.py +0 -41
- nautobot/extras/migrations/0071_job__unique_name_data_migration.py +0 -46
- nautobot/extras/reports.py +0 -60
- nautobot/extras/scripts.py +0 -72
- nautobot/extras/tests/example_jobs/script_variables.py +0 -67
- nautobot/extras/tests/example_jobs/test_duplicate_name2.py +0 -5
- nautobot/extras/tests/example_jobs/test_fail.py +0 -16
- nautobot/extras/tests/example_jobs/test_file_upload_pass.py +0 -20
- nautobot/extras/tests/example_jobs/test_ipaddress_vars.py +0 -52
- nautobot/extras/tests/example_jobs/test_job_button_receiver.py +0 -21
- nautobot/extras/tests/example_jobs/test_job_hook_receiver.py +0 -20
- nautobot/extras/tests/example_jobs/test_location_with_custom_field.py +0 -35
- nautobot/extras/tests/example_jobs/test_log_redaction.py +0 -14
- nautobot/extras/tests/example_jobs/test_modify_db.py +0 -18
- nautobot/extras/tests/example_jobs/test_object_var_optional.py +0 -14
- nautobot/extras/tests/example_jobs/test_object_var_required.py +0 -14
- nautobot/extras/tests/example_jobs/test_object_vars.py +0 -29
- nautobot/extras/tests/example_jobs/test_pass.py +0 -19
- nautobot/extras/tests/example_jobs/test_read_only_fail.py +0 -24
- nautobot/extras/tests/example_jobs/test_read_only_no_commit_field.py +0 -10
- nautobot/extras/tests/example_jobs/test_read_only_pass.py +0 -22
- nautobot/ipam/api/nested_serializers.py +0 -159
- nautobot/ipam/migrations/0029_ipam__prefix__add_parent.py +0 -31
- nautobot/ipam/migrations/0030_ipam__prefix__data_migration.py +0 -13
- nautobot/ipam/migrations/0031_ipam__ipaddress__add_parent.py +0 -41
- nautobot/ipam/migrations/0032_ipam__ipaddress__data_migration.py +0 -11
- nautobot/tenancy/api/nested_serializers.py +0 -31
- nautobot/users/api/nested_serializers.py +0 -67
- nautobot/virtualization/api/nested_serializers.py +0 -65
- /nautobot/extras/{tests/example_jobs → test_jobs}/__init__.py +0 -0
- /nautobot/{dcim/models/sites.py → ipam/management/__init__.py} +0 -0
- {nautobot-2.0.0a3.dist-info → nautobot-2.0.0b1.dist-info}/LICENSE.txt +0 -0
- {nautobot-2.0.0a3.dist-info → nautobot-2.0.0b1.dist-info}/entry_points.txt +0 -0
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<link rel="canonical" href="https://docs.nautobot.com/projects/core/en/stable/additional-features/caching.html">
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
<link rel="prev" href="../
|
|
14
|
+
<link rel="prev" href="../models/virtualization/vminterface.html">
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
<link rel="next" href="change-logging.html">
|
|
@@ -1336,6 +1336,1160 @@
|
|
|
1336
1336
|
|
|
1337
1337
|
|
|
1338
1338
|
|
|
1339
|
+
|
|
1340
|
+
|
|
1341
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
1342
|
+
|
|
1343
|
+
|
|
1344
|
+
|
|
1345
|
+
|
|
1346
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8" >
|
|
1347
|
+
|
|
1348
|
+
|
|
1349
|
+
|
|
1350
|
+
<label class="md-nav__link" for="__nav_2_8" id="__nav_2_8_label" tabindex="0">
|
|
1351
|
+
Model Details
|
|
1352
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1353
|
+
</label>
|
|
1354
|
+
|
|
1355
|
+
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_8_label" aria-expanded="false">
|
|
1356
|
+
<label class="md-nav__title" for="__nav_2_8">
|
|
1357
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1358
|
+
Model Details
|
|
1359
|
+
</label>
|
|
1360
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
1361
|
+
|
|
1362
|
+
|
|
1363
|
+
|
|
1364
|
+
|
|
1365
|
+
|
|
1366
|
+
|
|
1367
|
+
|
|
1368
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
1369
|
+
|
|
1370
|
+
|
|
1371
|
+
|
|
1372
|
+
|
|
1373
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_1" >
|
|
1374
|
+
|
|
1375
|
+
|
|
1376
|
+
|
|
1377
|
+
<label class="md-nav__link" for="__nav_2_8_1" id="__nav_2_8_1_label" tabindex="0">
|
|
1378
|
+
Circuits
|
|
1379
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1380
|
+
</label>
|
|
1381
|
+
|
|
1382
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_1_label" aria-expanded="false">
|
|
1383
|
+
<label class="md-nav__title" for="__nav_2_8_1">
|
|
1384
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1385
|
+
Circuits
|
|
1386
|
+
</label>
|
|
1387
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
1388
|
+
|
|
1389
|
+
|
|
1390
|
+
|
|
1391
|
+
|
|
1392
|
+
|
|
1393
|
+
|
|
1394
|
+
<li class="md-nav__item">
|
|
1395
|
+
<a href="../models/circuits/circuit.html" class="md-nav__link">
|
|
1396
|
+
Circuit
|
|
1397
|
+
</a>
|
|
1398
|
+
</li>
|
|
1399
|
+
|
|
1400
|
+
|
|
1401
|
+
|
|
1402
|
+
|
|
1403
|
+
|
|
1404
|
+
|
|
1405
|
+
|
|
1406
|
+
|
|
1407
|
+
|
|
1408
|
+
<li class="md-nav__item">
|
|
1409
|
+
<a href="../models/circuits/circuittermination.html" class="md-nav__link">
|
|
1410
|
+
Circuit Termination
|
|
1411
|
+
</a>
|
|
1412
|
+
</li>
|
|
1413
|
+
|
|
1414
|
+
|
|
1415
|
+
|
|
1416
|
+
|
|
1417
|
+
|
|
1418
|
+
|
|
1419
|
+
|
|
1420
|
+
|
|
1421
|
+
|
|
1422
|
+
<li class="md-nav__item">
|
|
1423
|
+
<a href="../models/circuits/circuittype.html" class="md-nav__link">
|
|
1424
|
+
Circuit Type
|
|
1425
|
+
</a>
|
|
1426
|
+
</li>
|
|
1427
|
+
|
|
1428
|
+
|
|
1429
|
+
|
|
1430
|
+
|
|
1431
|
+
|
|
1432
|
+
|
|
1433
|
+
|
|
1434
|
+
|
|
1435
|
+
|
|
1436
|
+
<li class="md-nav__item">
|
|
1437
|
+
<a href="../models/circuits/provider.html" class="md-nav__link">
|
|
1438
|
+
Circuit Provider
|
|
1439
|
+
</a>
|
|
1440
|
+
</li>
|
|
1441
|
+
|
|
1442
|
+
|
|
1443
|
+
|
|
1444
|
+
|
|
1445
|
+
|
|
1446
|
+
|
|
1447
|
+
|
|
1448
|
+
|
|
1449
|
+
|
|
1450
|
+
<li class="md-nav__item">
|
|
1451
|
+
<a href="../models/circuits/providernetwork.html" class="md-nav__link">
|
|
1452
|
+
Circuit Provider Network
|
|
1453
|
+
</a>
|
|
1454
|
+
</li>
|
|
1455
|
+
|
|
1456
|
+
|
|
1457
|
+
|
|
1458
|
+
|
|
1459
|
+
</ul>
|
|
1460
|
+
</nav>
|
|
1461
|
+
</li>
|
|
1462
|
+
|
|
1463
|
+
|
|
1464
|
+
|
|
1465
|
+
|
|
1466
|
+
|
|
1467
|
+
|
|
1468
|
+
|
|
1469
|
+
|
|
1470
|
+
|
|
1471
|
+
|
|
1472
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
1473
|
+
|
|
1474
|
+
|
|
1475
|
+
|
|
1476
|
+
|
|
1477
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_2" >
|
|
1478
|
+
|
|
1479
|
+
|
|
1480
|
+
|
|
1481
|
+
<label class="md-nav__link" for="__nav_2_8_2" id="__nav_2_8_2_label" tabindex="0">
|
|
1482
|
+
DCIM
|
|
1483
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1484
|
+
</label>
|
|
1485
|
+
|
|
1486
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_2_label" aria-expanded="false">
|
|
1487
|
+
<label class="md-nav__title" for="__nav_2_8_2">
|
|
1488
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1489
|
+
DCIM
|
|
1490
|
+
</label>
|
|
1491
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
1492
|
+
|
|
1493
|
+
|
|
1494
|
+
|
|
1495
|
+
|
|
1496
|
+
|
|
1497
|
+
|
|
1498
|
+
<li class="md-nav__item">
|
|
1499
|
+
<a href="../models/dcim/cable.html" class="md-nav__link">
|
|
1500
|
+
Cable
|
|
1501
|
+
</a>
|
|
1502
|
+
</li>
|
|
1503
|
+
|
|
1504
|
+
|
|
1505
|
+
|
|
1506
|
+
|
|
1507
|
+
|
|
1508
|
+
|
|
1509
|
+
|
|
1510
|
+
|
|
1511
|
+
|
|
1512
|
+
<li class="md-nav__item">
|
|
1513
|
+
<a href="../models/dcim/consoleport.html" class="md-nav__link">
|
|
1514
|
+
Console Port
|
|
1515
|
+
</a>
|
|
1516
|
+
</li>
|
|
1517
|
+
|
|
1518
|
+
|
|
1519
|
+
|
|
1520
|
+
|
|
1521
|
+
|
|
1522
|
+
|
|
1523
|
+
|
|
1524
|
+
|
|
1525
|
+
|
|
1526
|
+
<li class="md-nav__item">
|
|
1527
|
+
<a href="../models/dcim/consoleporttemplate.html" class="md-nav__link">
|
|
1528
|
+
Console Port Template
|
|
1529
|
+
</a>
|
|
1530
|
+
</li>
|
|
1531
|
+
|
|
1532
|
+
|
|
1533
|
+
|
|
1534
|
+
|
|
1535
|
+
|
|
1536
|
+
|
|
1537
|
+
|
|
1538
|
+
|
|
1539
|
+
|
|
1540
|
+
<li class="md-nav__item">
|
|
1541
|
+
<a href="../models/dcim/consoleserverport.html" class="md-nav__link">
|
|
1542
|
+
Console Server Port
|
|
1543
|
+
</a>
|
|
1544
|
+
</li>
|
|
1545
|
+
|
|
1546
|
+
|
|
1547
|
+
|
|
1548
|
+
|
|
1549
|
+
|
|
1550
|
+
|
|
1551
|
+
|
|
1552
|
+
|
|
1553
|
+
|
|
1554
|
+
<li class="md-nav__item">
|
|
1555
|
+
<a href="../models/dcim/consoleserverporttemplate.html" class="md-nav__link">
|
|
1556
|
+
Console Server Port Template
|
|
1557
|
+
</a>
|
|
1558
|
+
</li>
|
|
1559
|
+
|
|
1560
|
+
|
|
1561
|
+
|
|
1562
|
+
|
|
1563
|
+
|
|
1564
|
+
|
|
1565
|
+
|
|
1566
|
+
|
|
1567
|
+
|
|
1568
|
+
<li class="md-nav__item">
|
|
1569
|
+
<a href="../models/dcim/device.html" class="md-nav__link">
|
|
1570
|
+
Device
|
|
1571
|
+
</a>
|
|
1572
|
+
</li>
|
|
1573
|
+
|
|
1574
|
+
|
|
1575
|
+
|
|
1576
|
+
|
|
1577
|
+
|
|
1578
|
+
|
|
1579
|
+
|
|
1580
|
+
|
|
1581
|
+
|
|
1582
|
+
<li class="md-nav__item">
|
|
1583
|
+
<a href="../models/dcim/devicebay.html" class="md-nav__link">
|
|
1584
|
+
Device Bay
|
|
1585
|
+
</a>
|
|
1586
|
+
</li>
|
|
1587
|
+
|
|
1588
|
+
|
|
1589
|
+
|
|
1590
|
+
|
|
1591
|
+
|
|
1592
|
+
|
|
1593
|
+
|
|
1594
|
+
|
|
1595
|
+
|
|
1596
|
+
<li class="md-nav__item">
|
|
1597
|
+
<a href="../models/dcim/devicebaytemplate.html" class="md-nav__link">
|
|
1598
|
+
Device Bay Template
|
|
1599
|
+
</a>
|
|
1600
|
+
</li>
|
|
1601
|
+
|
|
1602
|
+
|
|
1603
|
+
|
|
1604
|
+
|
|
1605
|
+
|
|
1606
|
+
|
|
1607
|
+
|
|
1608
|
+
|
|
1609
|
+
|
|
1610
|
+
<li class="md-nav__item">
|
|
1611
|
+
<a href="../models/dcim/deviceredundancygroup.html" class="md-nav__link">
|
|
1612
|
+
Device Redundancy Group
|
|
1613
|
+
</a>
|
|
1614
|
+
</li>
|
|
1615
|
+
|
|
1616
|
+
|
|
1617
|
+
|
|
1618
|
+
|
|
1619
|
+
|
|
1620
|
+
|
|
1621
|
+
|
|
1622
|
+
|
|
1623
|
+
|
|
1624
|
+
<li class="md-nav__item">
|
|
1625
|
+
<a href="../models/dcim/devicetype.html" class="md-nav__link">
|
|
1626
|
+
Device Type
|
|
1627
|
+
</a>
|
|
1628
|
+
</li>
|
|
1629
|
+
|
|
1630
|
+
|
|
1631
|
+
|
|
1632
|
+
|
|
1633
|
+
|
|
1634
|
+
|
|
1635
|
+
|
|
1636
|
+
|
|
1637
|
+
|
|
1638
|
+
<li class="md-nav__item">
|
|
1639
|
+
<a href="../models/dcim/frontport.html" class="md-nav__link">
|
|
1640
|
+
Front Port
|
|
1641
|
+
</a>
|
|
1642
|
+
</li>
|
|
1643
|
+
|
|
1644
|
+
|
|
1645
|
+
|
|
1646
|
+
|
|
1647
|
+
|
|
1648
|
+
|
|
1649
|
+
|
|
1650
|
+
|
|
1651
|
+
|
|
1652
|
+
<li class="md-nav__item">
|
|
1653
|
+
<a href="../models/dcim/frontporttemplate.html" class="md-nav__link">
|
|
1654
|
+
Front Port Template
|
|
1655
|
+
</a>
|
|
1656
|
+
</li>
|
|
1657
|
+
|
|
1658
|
+
|
|
1659
|
+
|
|
1660
|
+
|
|
1661
|
+
|
|
1662
|
+
|
|
1663
|
+
|
|
1664
|
+
|
|
1665
|
+
|
|
1666
|
+
<li class="md-nav__item">
|
|
1667
|
+
<a href="../models/dcim/interface.html" class="md-nav__link">
|
|
1668
|
+
Interface
|
|
1669
|
+
</a>
|
|
1670
|
+
</li>
|
|
1671
|
+
|
|
1672
|
+
|
|
1673
|
+
|
|
1674
|
+
|
|
1675
|
+
|
|
1676
|
+
|
|
1677
|
+
|
|
1678
|
+
|
|
1679
|
+
|
|
1680
|
+
<li class="md-nav__item">
|
|
1681
|
+
<a href="../models/dcim/interfacetemplate.html" class="md-nav__link">
|
|
1682
|
+
Interface Template
|
|
1683
|
+
</a>
|
|
1684
|
+
</li>
|
|
1685
|
+
|
|
1686
|
+
|
|
1687
|
+
|
|
1688
|
+
|
|
1689
|
+
|
|
1690
|
+
|
|
1691
|
+
|
|
1692
|
+
|
|
1693
|
+
|
|
1694
|
+
<li class="md-nav__item">
|
|
1695
|
+
<a href="../models/dcim/inventoryitem.html" class="md-nav__link">
|
|
1696
|
+
Inventory Item
|
|
1697
|
+
</a>
|
|
1698
|
+
</li>
|
|
1699
|
+
|
|
1700
|
+
|
|
1701
|
+
|
|
1702
|
+
|
|
1703
|
+
|
|
1704
|
+
|
|
1705
|
+
|
|
1706
|
+
|
|
1707
|
+
|
|
1708
|
+
<li class="md-nav__item">
|
|
1709
|
+
<a href="../models/dcim/location.html" class="md-nav__link">
|
|
1710
|
+
Location
|
|
1711
|
+
</a>
|
|
1712
|
+
</li>
|
|
1713
|
+
|
|
1714
|
+
|
|
1715
|
+
|
|
1716
|
+
|
|
1717
|
+
|
|
1718
|
+
|
|
1719
|
+
|
|
1720
|
+
|
|
1721
|
+
|
|
1722
|
+
<li class="md-nav__item">
|
|
1723
|
+
<a href="../models/dcim/locationtype.html" class="md-nav__link">
|
|
1724
|
+
Location Type
|
|
1725
|
+
</a>
|
|
1726
|
+
</li>
|
|
1727
|
+
|
|
1728
|
+
|
|
1729
|
+
|
|
1730
|
+
|
|
1731
|
+
|
|
1732
|
+
|
|
1733
|
+
|
|
1734
|
+
|
|
1735
|
+
|
|
1736
|
+
<li class="md-nav__item">
|
|
1737
|
+
<a href="../models/dcim/manufacturer.html" class="md-nav__link">
|
|
1738
|
+
Manufacturer
|
|
1739
|
+
</a>
|
|
1740
|
+
</li>
|
|
1741
|
+
|
|
1742
|
+
|
|
1743
|
+
|
|
1744
|
+
|
|
1745
|
+
|
|
1746
|
+
|
|
1747
|
+
|
|
1748
|
+
|
|
1749
|
+
|
|
1750
|
+
<li class="md-nav__item">
|
|
1751
|
+
<a href="../models/dcim/platform.html" class="md-nav__link">
|
|
1752
|
+
Platform
|
|
1753
|
+
</a>
|
|
1754
|
+
</li>
|
|
1755
|
+
|
|
1756
|
+
|
|
1757
|
+
|
|
1758
|
+
|
|
1759
|
+
|
|
1760
|
+
|
|
1761
|
+
|
|
1762
|
+
|
|
1763
|
+
|
|
1764
|
+
<li class="md-nav__item">
|
|
1765
|
+
<a href="../models/dcim/powerfeed.html" class="md-nav__link">
|
|
1766
|
+
Power Feed
|
|
1767
|
+
</a>
|
|
1768
|
+
</li>
|
|
1769
|
+
|
|
1770
|
+
|
|
1771
|
+
|
|
1772
|
+
|
|
1773
|
+
|
|
1774
|
+
|
|
1775
|
+
|
|
1776
|
+
|
|
1777
|
+
|
|
1778
|
+
<li class="md-nav__item">
|
|
1779
|
+
<a href="../models/dcim/poweroutlet.html" class="md-nav__link">
|
|
1780
|
+
Power Outlet
|
|
1781
|
+
</a>
|
|
1782
|
+
</li>
|
|
1783
|
+
|
|
1784
|
+
|
|
1785
|
+
|
|
1786
|
+
|
|
1787
|
+
|
|
1788
|
+
|
|
1789
|
+
|
|
1790
|
+
|
|
1791
|
+
|
|
1792
|
+
<li class="md-nav__item">
|
|
1793
|
+
<a href="../models/dcim/poweroutlettemplate.html" class="md-nav__link">
|
|
1794
|
+
Power Outlet Template
|
|
1795
|
+
</a>
|
|
1796
|
+
</li>
|
|
1797
|
+
|
|
1798
|
+
|
|
1799
|
+
|
|
1800
|
+
|
|
1801
|
+
|
|
1802
|
+
|
|
1803
|
+
|
|
1804
|
+
|
|
1805
|
+
|
|
1806
|
+
<li class="md-nav__item">
|
|
1807
|
+
<a href="../models/dcim/powerpanel.html" class="md-nav__link">
|
|
1808
|
+
Power Panel
|
|
1809
|
+
</a>
|
|
1810
|
+
</li>
|
|
1811
|
+
|
|
1812
|
+
|
|
1813
|
+
|
|
1814
|
+
|
|
1815
|
+
|
|
1816
|
+
|
|
1817
|
+
|
|
1818
|
+
|
|
1819
|
+
|
|
1820
|
+
<li class="md-nav__item">
|
|
1821
|
+
<a href="../models/dcim/powerport.html" class="md-nav__link">
|
|
1822
|
+
Power Port
|
|
1823
|
+
</a>
|
|
1824
|
+
</li>
|
|
1825
|
+
|
|
1826
|
+
|
|
1827
|
+
|
|
1828
|
+
|
|
1829
|
+
|
|
1830
|
+
|
|
1831
|
+
|
|
1832
|
+
|
|
1833
|
+
|
|
1834
|
+
<li class="md-nav__item">
|
|
1835
|
+
<a href="../models/dcim/powerporttemplate.html" class="md-nav__link">
|
|
1836
|
+
Power Port Template
|
|
1837
|
+
</a>
|
|
1838
|
+
</li>
|
|
1839
|
+
|
|
1840
|
+
|
|
1841
|
+
|
|
1842
|
+
|
|
1843
|
+
|
|
1844
|
+
|
|
1845
|
+
|
|
1846
|
+
|
|
1847
|
+
|
|
1848
|
+
<li class="md-nav__item">
|
|
1849
|
+
<a href="../models/dcim/rack.html" class="md-nav__link">
|
|
1850
|
+
Rack
|
|
1851
|
+
</a>
|
|
1852
|
+
</li>
|
|
1853
|
+
|
|
1854
|
+
|
|
1855
|
+
|
|
1856
|
+
|
|
1857
|
+
|
|
1858
|
+
|
|
1859
|
+
|
|
1860
|
+
|
|
1861
|
+
|
|
1862
|
+
<li class="md-nav__item">
|
|
1863
|
+
<a href="../models/dcim/rackgroup.html" class="md-nav__link">
|
|
1864
|
+
Rack Group
|
|
1865
|
+
</a>
|
|
1866
|
+
</li>
|
|
1867
|
+
|
|
1868
|
+
|
|
1869
|
+
|
|
1870
|
+
|
|
1871
|
+
|
|
1872
|
+
|
|
1873
|
+
|
|
1874
|
+
|
|
1875
|
+
|
|
1876
|
+
<li class="md-nav__item">
|
|
1877
|
+
<a href="../models/dcim/rackreservation.html" class="md-nav__link">
|
|
1878
|
+
Rack Reservation
|
|
1879
|
+
</a>
|
|
1880
|
+
</li>
|
|
1881
|
+
|
|
1882
|
+
|
|
1883
|
+
|
|
1884
|
+
|
|
1885
|
+
|
|
1886
|
+
|
|
1887
|
+
|
|
1888
|
+
|
|
1889
|
+
|
|
1890
|
+
<li class="md-nav__item">
|
|
1891
|
+
<a href="../models/dcim/rearport.html" class="md-nav__link">
|
|
1892
|
+
Rear Port
|
|
1893
|
+
</a>
|
|
1894
|
+
</li>
|
|
1895
|
+
|
|
1896
|
+
|
|
1897
|
+
|
|
1898
|
+
|
|
1899
|
+
|
|
1900
|
+
|
|
1901
|
+
|
|
1902
|
+
|
|
1903
|
+
|
|
1904
|
+
<li class="md-nav__item">
|
|
1905
|
+
<a href="../models/dcim/rearporttemplate.html" class="md-nav__link">
|
|
1906
|
+
Rear Port Template
|
|
1907
|
+
</a>
|
|
1908
|
+
</li>
|
|
1909
|
+
|
|
1910
|
+
|
|
1911
|
+
|
|
1912
|
+
|
|
1913
|
+
|
|
1914
|
+
|
|
1915
|
+
|
|
1916
|
+
|
|
1917
|
+
|
|
1918
|
+
<li class="md-nav__item">
|
|
1919
|
+
<a href="../models/dcim/virtualchassis.html" class="md-nav__link">
|
|
1920
|
+
Virtual Chassis
|
|
1921
|
+
</a>
|
|
1922
|
+
</li>
|
|
1923
|
+
|
|
1924
|
+
|
|
1925
|
+
|
|
1926
|
+
|
|
1927
|
+
</ul>
|
|
1928
|
+
</nav>
|
|
1929
|
+
</li>
|
|
1930
|
+
|
|
1931
|
+
|
|
1932
|
+
|
|
1933
|
+
|
|
1934
|
+
|
|
1935
|
+
|
|
1936
|
+
|
|
1937
|
+
|
|
1938
|
+
|
|
1939
|
+
|
|
1940
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
1941
|
+
|
|
1942
|
+
|
|
1943
|
+
|
|
1944
|
+
|
|
1945
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_3" >
|
|
1946
|
+
|
|
1947
|
+
|
|
1948
|
+
|
|
1949
|
+
<label class="md-nav__link" for="__nav_2_8_3" id="__nav_2_8_3_label" tabindex="0">
|
|
1950
|
+
Extras
|
|
1951
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1952
|
+
</label>
|
|
1953
|
+
|
|
1954
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_3_label" aria-expanded="false">
|
|
1955
|
+
<label class="md-nav__title" for="__nav_2_8_3">
|
|
1956
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1957
|
+
Extras
|
|
1958
|
+
</label>
|
|
1959
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
1960
|
+
|
|
1961
|
+
|
|
1962
|
+
|
|
1963
|
+
|
|
1964
|
+
|
|
1965
|
+
|
|
1966
|
+
<li class="md-nav__item">
|
|
1967
|
+
<a href="../models/extras/configcontext.html" class="md-nav__link">
|
|
1968
|
+
Config Context
|
|
1969
|
+
</a>
|
|
1970
|
+
</li>
|
|
1971
|
+
|
|
1972
|
+
|
|
1973
|
+
|
|
1974
|
+
|
|
1975
|
+
|
|
1976
|
+
|
|
1977
|
+
|
|
1978
|
+
|
|
1979
|
+
|
|
1980
|
+
<li class="md-nav__item">
|
|
1981
|
+
<a href="../models/extras/configcontextschema.html" class="md-nav__link">
|
|
1982
|
+
Config Context Schema
|
|
1983
|
+
</a>
|
|
1984
|
+
</li>
|
|
1985
|
+
|
|
1986
|
+
|
|
1987
|
+
|
|
1988
|
+
|
|
1989
|
+
|
|
1990
|
+
|
|
1991
|
+
|
|
1992
|
+
|
|
1993
|
+
|
|
1994
|
+
<li class="md-nav__item">
|
|
1995
|
+
<a href="../models/extras/graphqlquery.html" class="md-nav__link">
|
|
1996
|
+
GraphQL Query
|
|
1997
|
+
</a>
|
|
1998
|
+
</li>
|
|
1999
|
+
|
|
2000
|
+
|
|
2001
|
+
|
|
2002
|
+
|
|
2003
|
+
|
|
2004
|
+
|
|
2005
|
+
|
|
2006
|
+
|
|
2007
|
+
|
|
2008
|
+
<li class="md-nav__item">
|
|
2009
|
+
<a href="../models/extras/imageattachment.html" class="md-nav__link">
|
|
2010
|
+
Image Attachment
|
|
2011
|
+
</a>
|
|
2012
|
+
</li>
|
|
2013
|
+
|
|
2014
|
+
|
|
2015
|
+
|
|
2016
|
+
|
|
2017
|
+
|
|
2018
|
+
|
|
2019
|
+
|
|
2020
|
+
|
|
2021
|
+
|
|
2022
|
+
<li class="md-nav__item">
|
|
2023
|
+
<a href="../models/extras/job.html" class="md-nav__link">
|
|
2024
|
+
Job
|
|
2025
|
+
</a>
|
|
2026
|
+
</li>
|
|
2027
|
+
|
|
2028
|
+
|
|
2029
|
+
|
|
2030
|
+
|
|
2031
|
+
|
|
2032
|
+
|
|
2033
|
+
|
|
2034
|
+
|
|
2035
|
+
|
|
2036
|
+
<li class="md-nav__item">
|
|
2037
|
+
<a href="../models/extras/joblogentry.html" class="md-nav__link">
|
|
2038
|
+
Job Log Entry
|
|
2039
|
+
</a>
|
|
2040
|
+
</li>
|
|
2041
|
+
|
|
2042
|
+
|
|
2043
|
+
|
|
2044
|
+
|
|
2045
|
+
|
|
2046
|
+
|
|
2047
|
+
|
|
2048
|
+
|
|
2049
|
+
|
|
2050
|
+
<li class="md-nav__item">
|
|
2051
|
+
<a href="../models/extras/jobresult.html" class="md-nav__link">
|
|
2052
|
+
Job Result
|
|
2053
|
+
</a>
|
|
2054
|
+
</li>
|
|
2055
|
+
|
|
2056
|
+
|
|
2057
|
+
|
|
2058
|
+
|
|
2059
|
+
|
|
2060
|
+
|
|
2061
|
+
|
|
2062
|
+
|
|
2063
|
+
|
|
2064
|
+
<li class="md-nav__item">
|
|
2065
|
+
<a href="../models/extras/role.html" class="md-nav__link">
|
|
2066
|
+
Role
|
|
2067
|
+
</a>
|
|
2068
|
+
</li>
|
|
2069
|
+
|
|
2070
|
+
|
|
2071
|
+
|
|
2072
|
+
|
|
2073
|
+
|
|
2074
|
+
|
|
2075
|
+
|
|
2076
|
+
|
|
2077
|
+
|
|
2078
|
+
<li class="md-nav__item">
|
|
2079
|
+
<a href="../models/extras/secret.html" class="md-nav__link">
|
|
2080
|
+
Secret
|
|
2081
|
+
</a>
|
|
2082
|
+
</li>
|
|
2083
|
+
|
|
2084
|
+
|
|
2085
|
+
|
|
2086
|
+
|
|
2087
|
+
|
|
2088
|
+
|
|
2089
|
+
|
|
2090
|
+
|
|
2091
|
+
|
|
2092
|
+
<li class="md-nav__item">
|
|
2093
|
+
<a href="../models/extras/secretsgroup.html" class="md-nav__link">
|
|
2094
|
+
Secrets group
|
|
2095
|
+
</a>
|
|
2096
|
+
</li>
|
|
2097
|
+
|
|
2098
|
+
|
|
2099
|
+
|
|
2100
|
+
|
|
2101
|
+
</ul>
|
|
2102
|
+
</nav>
|
|
2103
|
+
</li>
|
|
2104
|
+
|
|
2105
|
+
|
|
2106
|
+
|
|
2107
|
+
|
|
2108
|
+
|
|
2109
|
+
|
|
2110
|
+
|
|
2111
|
+
|
|
2112
|
+
|
|
2113
|
+
|
|
2114
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
2115
|
+
|
|
2116
|
+
|
|
2117
|
+
|
|
2118
|
+
|
|
2119
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_4" >
|
|
2120
|
+
|
|
2121
|
+
|
|
2122
|
+
|
|
2123
|
+
<label class="md-nav__link" for="__nav_2_8_4" id="__nav_2_8_4_label" tabindex="0">
|
|
2124
|
+
IPAM
|
|
2125
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2126
|
+
</label>
|
|
2127
|
+
|
|
2128
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_4_label" aria-expanded="false">
|
|
2129
|
+
<label class="md-nav__title" for="__nav_2_8_4">
|
|
2130
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2131
|
+
IPAM
|
|
2132
|
+
</label>
|
|
2133
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
2134
|
+
|
|
2135
|
+
|
|
2136
|
+
|
|
2137
|
+
|
|
2138
|
+
|
|
2139
|
+
|
|
2140
|
+
<li class="md-nav__item">
|
|
2141
|
+
<a href="../models/ipam/ipaddress.html" class="md-nav__link">
|
|
2142
|
+
IP Address
|
|
2143
|
+
</a>
|
|
2144
|
+
</li>
|
|
2145
|
+
|
|
2146
|
+
|
|
2147
|
+
|
|
2148
|
+
|
|
2149
|
+
|
|
2150
|
+
|
|
2151
|
+
|
|
2152
|
+
|
|
2153
|
+
|
|
2154
|
+
<li class="md-nav__item">
|
|
2155
|
+
<a href="../models/ipam/prefix.html" class="md-nav__link">
|
|
2156
|
+
Prefix
|
|
2157
|
+
</a>
|
|
2158
|
+
</li>
|
|
2159
|
+
|
|
2160
|
+
|
|
2161
|
+
|
|
2162
|
+
|
|
2163
|
+
|
|
2164
|
+
|
|
2165
|
+
|
|
2166
|
+
|
|
2167
|
+
|
|
2168
|
+
<li class="md-nav__item">
|
|
2169
|
+
<a href="../models/ipam/rir.html" class="md-nav__link">
|
|
2170
|
+
Rir
|
|
2171
|
+
</a>
|
|
2172
|
+
</li>
|
|
2173
|
+
|
|
2174
|
+
|
|
2175
|
+
|
|
2176
|
+
|
|
2177
|
+
|
|
2178
|
+
|
|
2179
|
+
|
|
2180
|
+
|
|
2181
|
+
|
|
2182
|
+
<li class="md-nav__item">
|
|
2183
|
+
<a href="../models/ipam/routetarget.html" class="md-nav__link">
|
|
2184
|
+
Route Target
|
|
2185
|
+
</a>
|
|
2186
|
+
</li>
|
|
2187
|
+
|
|
2188
|
+
|
|
2189
|
+
|
|
2190
|
+
|
|
2191
|
+
|
|
2192
|
+
|
|
2193
|
+
|
|
2194
|
+
|
|
2195
|
+
|
|
2196
|
+
<li class="md-nav__item">
|
|
2197
|
+
<a href="../models/ipam/service.html" class="md-nav__link">
|
|
2198
|
+
Service
|
|
2199
|
+
</a>
|
|
2200
|
+
</li>
|
|
2201
|
+
|
|
2202
|
+
|
|
2203
|
+
|
|
2204
|
+
|
|
2205
|
+
|
|
2206
|
+
|
|
2207
|
+
|
|
2208
|
+
|
|
2209
|
+
|
|
2210
|
+
<li class="md-nav__item">
|
|
2211
|
+
<a href="../models/ipam/vlan.html" class="md-nav__link">
|
|
2212
|
+
VLAN
|
|
2213
|
+
</a>
|
|
2214
|
+
</li>
|
|
2215
|
+
|
|
2216
|
+
|
|
2217
|
+
|
|
2218
|
+
|
|
2219
|
+
|
|
2220
|
+
|
|
2221
|
+
|
|
2222
|
+
|
|
2223
|
+
|
|
2224
|
+
<li class="md-nav__item">
|
|
2225
|
+
<a href="../models/ipam/vlangroup.html" class="md-nav__link">
|
|
2226
|
+
VLAN Group
|
|
2227
|
+
</a>
|
|
2228
|
+
</li>
|
|
2229
|
+
|
|
2230
|
+
|
|
2231
|
+
|
|
2232
|
+
|
|
2233
|
+
|
|
2234
|
+
|
|
2235
|
+
|
|
2236
|
+
|
|
2237
|
+
|
|
2238
|
+
<li class="md-nav__item">
|
|
2239
|
+
<a href="../models/ipam/vrf.html" class="md-nav__link">
|
|
2240
|
+
VRF
|
|
2241
|
+
</a>
|
|
2242
|
+
</li>
|
|
2243
|
+
|
|
2244
|
+
|
|
2245
|
+
|
|
2246
|
+
|
|
2247
|
+
</ul>
|
|
2248
|
+
</nav>
|
|
2249
|
+
</li>
|
|
2250
|
+
|
|
2251
|
+
|
|
2252
|
+
|
|
2253
|
+
|
|
2254
|
+
|
|
2255
|
+
|
|
2256
|
+
|
|
2257
|
+
|
|
2258
|
+
|
|
2259
|
+
|
|
2260
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
2261
|
+
|
|
2262
|
+
|
|
2263
|
+
|
|
2264
|
+
|
|
2265
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_5" >
|
|
2266
|
+
|
|
2267
|
+
|
|
2268
|
+
|
|
2269
|
+
<label class="md-nav__link" for="__nav_2_8_5" id="__nav_2_8_5_label" tabindex="0">
|
|
2270
|
+
Tenancy
|
|
2271
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2272
|
+
</label>
|
|
2273
|
+
|
|
2274
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_5_label" aria-expanded="false">
|
|
2275
|
+
<label class="md-nav__title" for="__nav_2_8_5">
|
|
2276
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2277
|
+
Tenancy
|
|
2278
|
+
</label>
|
|
2279
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
2280
|
+
|
|
2281
|
+
|
|
2282
|
+
|
|
2283
|
+
|
|
2284
|
+
|
|
2285
|
+
|
|
2286
|
+
<li class="md-nav__item">
|
|
2287
|
+
<a href="../models/tenancy/tenant.html" class="md-nav__link">
|
|
2288
|
+
Tenant
|
|
2289
|
+
</a>
|
|
2290
|
+
</li>
|
|
2291
|
+
|
|
2292
|
+
|
|
2293
|
+
|
|
2294
|
+
|
|
2295
|
+
|
|
2296
|
+
|
|
2297
|
+
|
|
2298
|
+
|
|
2299
|
+
|
|
2300
|
+
<li class="md-nav__item">
|
|
2301
|
+
<a href="../models/tenancy/tenantgroup.html" class="md-nav__link">
|
|
2302
|
+
Tenant Group
|
|
2303
|
+
</a>
|
|
2304
|
+
</li>
|
|
2305
|
+
|
|
2306
|
+
|
|
2307
|
+
|
|
2308
|
+
|
|
2309
|
+
</ul>
|
|
2310
|
+
</nav>
|
|
2311
|
+
</li>
|
|
2312
|
+
|
|
2313
|
+
|
|
2314
|
+
|
|
2315
|
+
|
|
2316
|
+
|
|
2317
|
+
|
|
2318
|
+
|
|
2319
|
+
|
|
2320
|
+
|
|
2321
|
+
|
|
2322
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
2323
|
+
|
|
2324
|
+
|
|
2325
|
+
|
|
2326
|
+
|
|
2327
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_6" >
|
|
2328
|
+
|
|
2329
|
+
|
|
2330
|
+
|
|
2331
|
+
<label class="md-nav__link" for="__nav_2_8_6" id="__nav_2_8_6_label" tabindex="0">
|
|
2332
|
+
Users
|
|
2333
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2334
|
+
</label>
|
|
2335
|
+
|
|
2336
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_6_label" aria-expanded="false">
|
|
2337
|
+
<label class="md-nav__title" for="__nav_2_8_6">
|
|
2338
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2339
|
+
Users
|
|
2340
|
+
</label>
|
|
2341
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
2342
|
+
|
|
2343
|
+
|
|
2344
|
+
|
|
2345
|
+
|
|
2346
|
+
|
|
2347
|
+
|
|
2348
|
+
<li class="md-nav__item">
|
|
2349
|
+
<a href="../models/users/objectpermission.html" class="md-nav__link">
|
|
2350
|
+
Object Permission
|
|
2351
|
+
</a>
|
|
2352
|
+
</li>
|
|
2353
|
+
|
|
2354
|
+
|
|
2355
|
+
|
|
2356
|
+
|
|
2357
|
+
|
|
2358
|
+
|
|
2359
|
+
|
|
2360
|
+
|
|
2361
|
+
|
|
2362
|
+
<li class="md-nav__item">
|
|
2363
|
+
<a href="../models/users/token.html" class="md-nav__link">
|
|
2364
|
+
Token
|
|
2365
|
+
</a>
|
|
2366
|
+
</li>
|
|
2367
|
+
|
|
2368
|
+
|
|
2369
|
+
|
|
2370
|
+
|
|
2371
|
+
</ul>
|
|
2372
|
+
</nav>
|
|
2373
|
+
</li>
|
|
2374
|
+
|
|
2375
|
+
|
|
2376
|
+
|
|
2377
|
+
|
|
2378
|
+
|
|
2379
|
+
|
|
2380
|
+
|
|
2381
|
+
|
|
2382
|
+
|
|
2383
|
+
|
|
2384
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
2385
|
+
|
|
2386
|
+
|
|
2387
|
+
|
|
2388
|
+
|
|
2389
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_7" >
|
|
2390
|
+
|
|
2391
|
+
|
|
2392
|
+
|
|
2393
|
+
<label class="md-nav__link" for="__nav_2_8_7" id="__nav_2_8_7_label" tabindex="0">
|
|
2394
|
+
Virtualization
|
|
2395
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2396
|
+
</label>
|
|
2397
|
+
|
|
2398
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_7_label" aria-expanded="false">
|
|
2399
|
+
<label class="md-nav__title" for="__nav_2_8_7">
|
|
2400
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2401
|
+
Virtualization
|
|
2402
|
+
</label>
|
|
2403
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
2404
|
+
|
|
2405
|
+
|
|
2406
|
+
|
|
2407
|
+
|
|
2408
|
+
|
|
2409
|
+
|
|
2410
|
+
<li class="md-nav__item">
|
|
2411
|
+
<a href="../models/virtualization/cluster.html" class="md-nav__link">
|
|
2412
|
+
Cluster
|
|
2413
|
+
</a>
|
|
2414
|
+
</li>
|
|
2415
|
+
|
|
2416
|
+
|
|
2417
|
+
|
|
2418
|
+
|
|
2419
|
+
|
|
2420
|
+
|
|
2421
|
+
|
|
2422
|
+
|
|
2423
|
+
|
|
2424
|
+
<li class="md-nav__item">
|
|
2425
|
+
<a href="../models/virtualization/clustergroup.html" class="md-nav__link">
|
|
2426
|
+
Cluster Group
|
|
2427
|
+
</a>
|
|
2428
|
+
</li>
|
|
2429
|
+
|
|
2430
|
+
|
|
2431
|
+
|
|
2432
|
+
|
|
2433
|
+
|
|
2434
|
+
|
|
2435
|
+
|
|
2436
|
+
|
|
2437
|
+
|
|
2438
|
+
<li class="md-nav__item">
|
|
2439
|
+
<a href="../models/virtualization/clustertype.html" class="md-nav__link">
|
|
2440
|
+
Cluster Type
|
|
2441
|
+
</a>
|
|
2442
|
+
</li>
|
|
2443
|
+
|
|
2444
|
+
|
|
2445
|
+
|
|
2446
|
+
|
|
2447
|
+
|
|
2448
|
+
|
|
2449
|
+
|
|
2450
|
+
|
|
2451
|
+
|
|
2452
|
+
<li class="md-nav__item">
|
|
2453
|
+
<a href="../models/virtualization/virtualmachine.html" class="md-nav__link">
|
|
2454
|
+
Virtual Machine
|
|
2455
|
+
</a>
|
|
2456
|
+
</li>
|
|
2457
|
+
|
|
2458
|
+
|
|
2459
|
+
|
|
2460
|
+
|
|
2461
|
+
|
|
2462
|
+
|
|
2463
|
+
|
|
2464
|
+
|
|
2465
|
+
|
|
2466
|
+
<li class="md-nav__item">
|
|
2467
|
+
<a href="../models/virtualization/vminterface.html" class="md-nav__link">
|
|
2468
|
+
VM Interface
|
|
2469
|
+
</a>
|
|
2470
|
+
</li>
|
|
2471
|
+
|
|
2472
|
+
|
|
2473
|
+
|
|
2474
|
+
|
|
2475
|
+
</ul>
|
|
2476
|
+
</nav>
|
|
2477
|
+
</li>
|
|
2478
|
+
|
|
2479
|
+
|
|
2480
|
+
|
|
2481
|
+
|
|
2482
|
+
</ul>
|
|
2483
|
+
</nav>
|
|
2484
|
+
</li>
|
|
2485
|
+
|
|
2486
|
+
|
|
2487
|
+
|
|
2488
|
+
|
|
2489
|
+
|
|
2490
|
+
|
|
2491
|
+
|
|
2492
|
+
|
|
1339
2493
|
|
|
1340
2494
|
|
|
1341
2495
|
|
|
@@ -1345,17 +2499,17 @@
|
|
|
1345
2499
|
|
|
1346
2500
|
|
|
1347
2501
|
|
|
1348
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
2502
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_9" checked>
|
|
1349
2503
|
|
|
1350
2504
|
|
|
1351
2505
|
|
|
1352
|
-
<label class="md-nav__link" for="
|
|
2506
|
+
<label class="md-nav__link" for="__nav_2_9" id="__nav_2_9_label" tabindex="0">
|
|
1353
2507
|
Additional Features
|
|
1354
2508
|
<span class="md-nav__icon md-icon"></span>
|
|
1355
2509
|
</label>
|
|
1356
2510
|
|
|
1357
|
-
<nav class="md-nav" data-md-level="2" aria-labelledby="
|
|
1358
|
-
<label class="md-nav__title" for="
|
|
2511
|
+
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_9_label" aria-expanded="true">
|
|
2512
|
+
<label class="md-nav__title" for="__nav_2_9">
|
|
1359
2513
|
<span class="md-nav__icon md-icon"></span>
|
|
1360
2514
|
Additional Features
|
|
1361
2515
|
</label>
|
|
@@ -1420,25 +2574,11 @@
|
|
|
1420
2574
|
CACHES and django-redis
|
|
1421
2575
|
</a>
|
|
1422
2576
|
|
|
1423
|
-
</li>
|
|
1424
|
-
|
|
1425
|
-
<li class="md-nav__item">
|
|
1426
|
-
<a href="#django-cacheops" class="md-nav__link">
|
|
1427
|
-
Django Cacheops
|
|
1428
|
-
</a>
|
|
1429
|
-
|
|
1430
2577
|
</li>
|
|
1431
2578
|
|
|
1432
2579
|
</ul>
|
|
1433
2580
|
</nav>
|
|
1434
2581
|
|
|
1435
|
-
</li>
|
|
1436
|
-
|
|
1437
|
-
<li class="md-nav__item">
|
|
1438
|
-
<a href="#invalidating-cached-data" class="md-nav__link">
|
|
1439
|
-
Invalidating Cached Data
|
|
1440
|
-
</a>
|
|
1441
|
-
|
|
1442
2582
|
</li>
|
|
1443
2583
|
|
|
1444
2584
|
<li class="md-nav__item">
|
|
@@ -1462,13 +2602,6 @@
|
|
|
1462
2602
|
django-redis Sentinel Configuration
|
|
1463
2603
|
</a>
|
|
1464
2604
|
|
|
1465
|
-
</li>
|
|
1466
|
-
|
|
1467
|
-
<li class="md-nav__item">
|
|
1468
|
-
<a href="#django-cacheops-sentinel-configuration" class="md-nav__link">
|
|
1469
|
-
django-cacheops Sentinel Configuration
|
|
1470
|
-
</a>
|
|
1471
|
-
|
|
1472
2605
|
</li>
|
|
1473
2606
|
|
|
1474
2607
|
<li class="md-nav__item">
|
|
@@ -1809,17 +2942,17 @@
|
|
|
1809
2942
|
|
|
1810
2943
|
|
|
1811
2944
|
|
|
1812
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
2945
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_10" >
|
|
1813
2946
|
|
|
1814
2947
|
|
|
1815
2948
|
|
|
1816
|
-
<label class="md-nav__link" for="
|
|
2949
|
+
<label class="md-nav__link" for="__nav_2_10" id="__nav_2_10_label" tabindex="0">
|
|
1817
2950
|
REST API
|
|
1818
2951
|
<span class="md-nav__icon md-icon"></span>
|
|
1819
2952
|
</label>
|
|
1820
2953
|
|
|
1821
|
-
<nav class="md-nav" data-md-level="2" aria-labelledby="
|
|
1822
|
-
<label class="md-nav__title" for="
|
|
2954
|
+
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_10_label" aria-expanded="false">
|
|
2955
|
+
<label class="md-nav__title" for="__nav_2_10">
|
|
1823
2956
|
<span class="md-nav__icon md-icon"></span>
|
|
1824
2957
|
REST API
|
|
1825
2958
|
</label>
|
|
@@ -1867,6 +3000,20 @@
|
|
|
1867
3000
|
|
|
1868
3001
|
|
|
1869
3002
|
|
|
3003
|
+
|
|
3004
|
+
|
|
3005
|
+
|
|
3006
|
+
|
|
3007
|
+
|
|
3008
|
+
<li class="md-nav__item">
|
|
3009
|
+
<a href="../rest-api/ui-related-endpoints.html" class="md-nav__link">
|
|
3010
|
+
UI Endpoints
|
|
3011
|
+
</a>
|
|
3012
|
+
</li>
|
|
3013
|
+
|
|
3014
|
+
|
|
3015
|
+
|
|
3016
|
+
|
|
1870
3017
|
</ul>
|
|
1871
3018
|
</nav>
|
|
1872
3019
|
</li>
|
|
@@ -1885,17 +3032,17 @@
|
|
|
1885
3032
|
|
|
1886
3033
|
|
|
1887
3034
|
|
|
1888
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
3035
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_11" >
|
|
1889
3036
|
|
|
1890
3037
|
|
|
1891
3038
|
|
|
1892
|
-
<label class="md-nav__link" for="
|
|
3039
|
+
<label class="md-nav__link" for="__nav_2_11" id="__nav_2_11_label" tabindex="0">
|
|
1893
3040
|
GraphQL API
|
|
1894
3041
|
<span class="md-nav__icon md-icon"></span>
|
|
1895
3042
|
</label>
|
|
1896
3043
|
|
|
1897
|
-
<nav class="md-nav" data-md-level="2" aria-labelledby="
|
|
1898
|
-
<label class="md-nav__title" for="
|
|
3044
|
+
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_11_label" aria-expanded="false">
|
|
3045
|
+
<label class="md-nav__title" for="__nav_2_11">
|
|
1899
3046
|
<span class="md-nav__icon md-icon"></span>
|
|
1900
3047
|
GraphQL API
|
|
1901
3048
|
</label>
|
|
@@ -2897,25 +4044,11 @@
|
|
|
2897
4044
|
CACHES and django-redis
|
|
2898
4045
|
</a>
|
|
2899
4046
|
|
|
2900
|
-
</li>
|
|
2901
|
-
|
|
2902
|
-
<li class="md-nav__item">
|
|
2903
|
-
<a href="#django-cacheops" class="md-nav__link">
|
|
2904
|
-
Django Cacheops
|
|
2905
|
-
</a>
|
|
2906
|
-
|
|
2907
4047
|
</li>
|
|
2908
4048
|
|
|
2909
4049
|
</ul>
|
|
2910
4050
|
</nav>
|
|
2911
4051
|
|
|
2912
|
-
</li>
|
|
2913
|
-
|
|
2914
|
-
<li class="md-nav__item">
|
|
2915
|
-
<a href="#invalidating-cached-data" class="md-nav__link">
|
|
2916
|
-
Invalidating Cached Data
|
|
2917
|
-
</a>
|
|
2918
|
-
|
|
2919
4052
|
</li>
|
|
2920
4053
|
|
|
2921
4054
|
<li class="md-nav__item">
|
|
@@ -2939,13 +4072,6 @@
|
|
|
2939
4072
|
django-redis Sentinel Configuration
|
|
2940
4073
|
</a>
|
|
2941
4074
|
|
|
2942
|
-
</li>
|
|
2943
|
-
|
|
2944
|
-
<li class="md-nav__item">
|
|
2945
|
-
<a href="#django-cacheops-sentinel-configuration" class="md-nav__link">
|
|
2946
|
-
django-cacheops Sentinel Configuration
|
|
2947
|
-
</a>
|
|
2948
|
-
|
|
2949
4075
|
</li>
|
|
2950
4076
|
|
|
2951
4077
|
<li class="md-nav__item">
|
|
@@ -2989,48 +4115,22 @@
|
|
|
2989
4115
|
<p>To cache something is to save the result of an expensive calculation so that you don’t have to perform the calculation next time.</p>
|
|
2990
4116
|
<p>Nautobot makes extensive use of caching; this is not a simple topic but it's a useful one for a Nautobot administrator to understand, so read on if you please.</p>
|
|
2991
4117
|
<h2 id="how-it-works">How it Works<a class="headerlink" href="#how-it-works" title="Permanent link">¶</a></h2>
|
|
2992
|
-
<
|
|
2993
|
-
<
|
|
2994
|
-
<p
|
|
2995
|
-
<p>Query caching is now disabled by default, and will be removed as a supported option in a future release.</p>
|
|
4118
|
+
<div class="admonition version-removed">
|
|
4119
|
+
<p class="admonition-title">Removed in version 2.0.0</p>
|
|
4120
|
+
<p><code>django-cacheops</code> has been removed as a Nautobot dependency and is no longer used.</p>
|
|
2996
4121
|
</div>
|
|
2997
|
-
<p>If a change is made to any of the objects returned by the cached query within that time, or if the timeout expires, the cached results are automatically invalidated and the next request for those results will be sent to the database.</p>
|
|
2998
4122
|
<p>Caching is a complex topic and there are some important details to clarify with how caching is implemented and configured in Nautobot.</p>
|
|
2999
4123
|
<h3 id="caching-in-django">Caching in Django<a class="headerlink" href="#caching-in-django" title="Permanent link">¶</a></h3>
|
|
3000
|
-
<p>Django includes
|
|
4124
|
+
<p>Django includes its own <a href="https://docs.djangoproject.com/en/stable/topics/cache/">cache framework</a>. Nautobot uses this cache framework in a limited number of cases.</p>
|
|
3001
4125
|
<h3 id="caches-and-django-redis"><code>CACHES</code> and <code>django-redis</code><a class="headerlink" href="#caches-and-django-redis" title="Permanent link">¶</a></h3>
|
|
3002
|
-
<p>The <a href="../configuration/required-settings.html#caches"><code>CACHES</code></a> setting is used to, among other things, configure Django's built-in caching.
|
|
4126
|
+
<p>The <a href="../configuration/required-settings.html#caches"><code>CACHES</code></a> setting is used to, among other things, configure Django's built-in caching. <em>This is a required setting</em>. Here's why:</p>
|
|
3003
4127
|
<p>Nautobot uses the <a href="https://github.com/jazzband/django-redis"><code>django-redis</code></a> Django plugin which allows it to use Redis as a backend for caching and session storage. This is used to provide a concurrent write lock for preventing race conditions when allocating IP address objects.</p>
|
|
3004
4128
|
<p><code>django-redis</code> <em>also</em> uses the <a href="../configuration/required-settings.html#caches"><code>CACHES</code></a> setting, in its case to simplify the configuration for establishing concurrent write locks.</p>
|
|
3005
|
-
<p>Again: <strong><code>CACHES</code> is not used for Django's built-in caching at this time, but it is still a required setting for <code>django-redis</code> to function properly.</strong></p>
|
|
3006
|
-
<h3 id="django-cacheops">Django Cacheops<a class="headerlink" href="#django-cacheops" title="Permanent link">¶</a></h3>
|
|
3007
|
-
<p>Cacheops (aka <a href="https://github.com/Suor/django-cacheops"><code>django-cacheops</code></a>) is a Django plugin that does some very advanced caching, but <em>does not leverage the built-in cache framework</em>. Instead it uses a technique called <a href="https://en.wikipedia.org/wiki/Monkey_patch">"monkey patching"</a>. By monkey patching, a library can inject its own functionality into the core code behind the scenes.</p>
|
|
3008
|
-
<p>This technique allows Cacheops to do more advanced caching operations that are not provided by the Django built-in cache framework without requiring Nautobot to also include some elaborate code of its own. This is accomplished by intercepting calls to the underlying queryset methods that get and set cached results in Redis.</p>
|
|
3009
|
-
<p>For this purpose, Cacheops has its own <code>CACHEOPS_*</code> settings required to configure it that are not related to the <code>CACHES</code> setting.</p>
|
|
3010
|
-
<p>For more information on the required settings needed to configure Cacheops, please see the <a href="../configuration/required-settings.html#caching">Caching section of the required settings documentation</a>.</p>
|
|
3011
|
-
<p>The optional settings include:</p>
|
|
3012
|
-
<ul>
|
|
3013
|
-
<li><a href="../configuration/optional-settings.html#cacheops_defaults"><code>CACHEOPS_DEFAULTS</code></a>: To define the cache timeout value (Defaults to 15 minutes)</li>
|
|
3014
|
-
<li><a href="../configuration/optional-settings.html#cacheops_enabled"><code>CACHEOPS_ENABLED</code></a> : To turn on/off caching (Defaults to <code>False</code>)</li>
|
|
3015
|
-
</ul>
|
|
3016
|
-
<h2 id="invalidating-cached-data">Invalidating Cached Data<a class="headerlink" href="#invalidating-cached-data" title="Permanent link">¶</a></h2>
|
|
3017
|
-
<p>Although caching is performed automatically and rarely requires administrative intervention, Nautobot provides the <code>invalidate</code> management command to force invalidation of cached results. This command can reference a specific object my its type and UUID:</p>
|
|
3018
|
-
<blockquote>
|
|
3019
|
-
<p>Run these commands as the Nautobot user</p>
|
|
3020
|
-
</blockquote>
|
|
3021
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>nautobot-server invalidate dcim.Device.84ae706d-c189-4d13-a898-9737648e34b3
|
|
3022
|
-
</code></pre></div>
|
|
3023
|
-
<p>Alternatively, it can also delete all cached results for an object type:</p>
|
|
3024
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>nautobot-server invalidate dcim.Device
|
|
3025
|
-
</code></pre></div>
|
|
3026
|
-
<p>Finally, calling it with the <code>all</code> argument will force invalidation of the entire cache database:</p>
|
|
3027
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>nautobot-server invalidate all
|
|
3028
|
-
</code></pre></div>
|
|
3029
4129
|
<h2 id="high-availability-caching">High Availability Caching<a class="headerlink" href="#high-availability-caching" title="Permanent link">¶</a></h2>
|
|
3030
|
-
<p><a href="https://redis.io/">Redis</a> provides two different methods to achieve high availability: The first is <a href="https://redis.io/topics/sentinel">Redis Sentinel</a> and the second is the newer <a href="https://redis.io/topics/cluster-tutorial">Redis Clustering</a> feature.
|
|
4130
|
+
<p><a href="https://redis.io/">Redis</a> provides two different methods to achieve high availability: The first is <a href="https://redis.io/topics/sentinel">Redis Sentinel</a> and the second is the newer <a href="https://redis.io/topics/cluster-tutorial">Redis Clustering</a> feature. Currently, Nautobot only supports Redis Sentinel for high availability.</p>
|
|
3031
4131
|
<h3 id="using-redis-sentinel">Using Redis Sentinel<a class="headerlink" href="#using-redis-sentinel" title="Permanent link">¶</a></h3>
|
|
3032
4132
|
<p>The installation/configuration of the <a href="https://redis.io/topics/sentinel">Redis Sentinel</a> cluster itself is outside the scope of this document, this section is intended to provide the steps necessary to configure Nautobot to connect to a Sentinel cluster.</p>
|
|
3033
|
-
<p>We need to configure <code>django-redis</code
|
|
4133
|
+
<p>We need to configure <code>django-redis</code> and <code>celery</code> to use Sentinel. Each library is configured differently, so please pay close attention to the details.</p>
|
|
3034
4134
|
<h4 id="django-redis-sentinel-configuration"><code>django-redis</code> Sentinel Configuration<a class="headerlink" href="#django-redis-sentinel-configuration" title="Permanent link">¶</a></h4>
|
|
3035
4135
|
<p>Notable settings:</p>
|
|
3036
4136
|
<ul>
|
|
@@ -3041,63 +4141,28 @@ of the Redis server and port for each sentinel instance to connect to</li>
|
|
|
3041
4141
|
<li><code>PASSWORD</code>: The redis password (if set), the <code>SENTINEL_KWARGS["password"]</code> setting is the password for Sentinel</li>
|
|
3042
4142
|
</ul>
|
|
3043
4143
|
<p>Example:</p>
|
|
3044
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
3045
|
-
<a id="__codelineno-
|
|
3046
|
-
<a id="__codelineno-
|
|
3047
|
-
<a id="__codelineno-
|
|
3048
|
-
<a id="__codelineno-
|
|
3049
|
-
<a id="__codelineno-
|
|
3050
|
-
<a id="__codelineno-
|
|
3051
|
-
<a id="__codelineno-
|
|
3052
|
-
<a id="__codelineno-
|
|
3053
|
-
<a id="__codelineno-
|
|
3054
|
-
<a id="__codelineno-
|
|
3055
|
-
<a id="__codelineno-
|
|
3056
|
-
<a id="__codelineno-
|
|
3057
|
-
<a id="__codelineno-
|
|
3058
|
-
<a id="__codelineno-
|
|
3059
|
-
<a id="__codelineno-
|
|
3060
|
-
<a id="__codelineno-
|
|
3061
|
-
<a id="__codelineno-
|
|
3062
|
-
<a id="__codelineno-
|
|
3063
|
-
<a id="__codelineno-
|
|
4144
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="n">DJANGO_REDIS_CONNECTION_FACTORY</span> <span class="o">=</span> <span class="s2">"django_redis.pool.SentinelConnectionFactory"</span>
|
|
4145
|
+
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="n">CACHES</span> <span class="o">=</span> <span class="p">{</span>
|
|
4146
|
+
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="s2">"default"</span><span class="p">:</span> <span class="p">{</span>
|
|
4147
|
+
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="s2">"BACKEND"</span><span class="p">:</span> <span class="s2">"django_redis.cache.RedisCache"</span><span class="p">,</span>
|
|
4148
|
+
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="s2">"LOCATION"</span><span class="p">:</span> <span class="s2">"redis://nautobot/0"</span><span class="p">,</span> <span class="c1"># in this context 'nautobot' is the redis master/service name</span>
|
|
4149
|
+
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="s2">"OPTIONS"</span><span class="p">:</span> <span class="p">{</span>
|
|
4150
|
+
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="s2">"CLIENT_CLASS"</span><span class="p">:</span> <span class="s2">"django_redis.client.SentinelClient"</span><span class="p">,</span>
|
|
4151
|
+
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a> <span class="s2">"CONNECTION_POOL_CLASS"</span><span class="p">:</span> <span class="s2">"redis.sentinel.SentinelConnectionPool"</span><span class="p">,</span>
|
|
4152
|
+
<a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a> <span class="s2">"PASSWORD"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span>
|
|
4153
|
+
<a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a> <span class="s2">"SENTINEL_KWARGS"</span><span class="p">:</span> <span class="p">{</span>
|
|
4154
|
+
<a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a> <span class="s2">"password"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span> <span class="c1"># likely the same password from above</span>
|
|
4155
|
+
<a id="__codelineno-0-12" name="__codelineno-0-12" href="#__codelineno-0-12"></a> <span class="p">},</span>
|
|
4156
|
+
<a id="__codelineno-0-13" name="__codelineno-0-13" href="#__codelineno-0-13"></a> <span class="s2">"SENTINELS"</span><span class="p">:</span> <span class="p">[</span>
|
|
4157
|
+
<a id="__codelineno-0-14" name="__codelineno-0-14" href="#__codelineno-0-14"></a> <span class="p">(</span><span class="s2">"mysentinel.redis.example.com"</span><span class="p">,</span> <span class="mi">26379</span><span class="p">),</span>
|
|
4158
|
+
<a id="__codelineno-0-15" name="__codelineno-0-15" href="#__codelineno-0-15"></a> <span class="p">(</span><span class="s2">"othersentinel.redis.example.com"</span><span class="p">,</span> <span class="mi">26379</span><span class="p">),</span>
|
|
4159
|
+
<a id="__codelineno-0-16" name="__codelineno-0-16" href="#__codelineno-0-16"></a> <span class="p">(</span><span class="s2">"thirdsentinel.redis.example.com"</span><span class="p">,</span> <span class="mi">26379</span><span class="p">)</span>
|
|
4160
|
+
<a id="__codelineno-0-17" name="__codelineno-0-17" href="#__codelineno-0-17"></a> <span class="p">],</span>
|
|
4161
|
+
<a id="__codelineno-0-18" name="__codelineno-0-18" href="#__codelineno-0-18"></a> <span class="p">},</span>
|
|
4162
|
+
<a id="__codelineno-0-19" name="__codelineno-0-19" href="#__codelineno-0-19"></a> <span class="p">},</span>
|
|
4163
|
+
<a id="__codelineno-0-20" name="__codelineno-0-20" href="#__codelineno-0-20"></a><span class="p">}</span>
|
|
3064
4164
|
</code></pre></div>
|
|
3065
4165
|
<p>For more details on configuring django-redis with Redis Sentinel, please see the documentation for <a href="https://github.com/jazzband/django-redis#use-the-sentinel-connection-factory">Django Redis</a>.</p>
|
|
3066
|
-
<h4 id="django-cacheops-sentinel-configuration"><code>django-cacheops</code> Sentinel Configuration<a class="headerlink" href="#django-cacheops-sentinel-configuration" title="Permanent link">¶</a></h4>
|
|
3067
|
-
<p>Notable settings:</p>
|
|
3068
|
-
<ul>
|
|
3069
|
-
<li><code>locations</code>: List of tuples or tuple of tuples with each inner tuple containing the name or IP address
|
|
3070
|
-
of the Redis server and port for each sentinel instance to connect to</li>
|
|
3071
|
-
<li><code>service_name</code>: the master/service name in redis sentinel</li>
|
|
3072
|
-
<li>Additional parameters may be specified in the <code>CACHEOPS_SENTINEL</code> dictionary which are passed directly to Sentinel</li>
|
|
3073
|
-
</ul>
|
|
3074
|
-
<div class="admonition note">
|
|
3075
|
-
<p class="admonition-title">Note</p>
|
|
3076
|
-
<p><code>locations</code> for <code>django-cacheops</code> has a different meaning than the <code>LOCATION</code> value for <code>django-redis</code></p>
|
|
3077
|
-
</div>
|
|
3078
|
-
<div class="admonition warning">
|
|
3079
|
-
<p class="admonition-title">Warning</p>
|
|
3080
|
-
<p><a href="../configuration/required-settings.html#cacheops_redis"><code>CACHEOPS_REDIS</code></a> and <a href="../configuration/required-settings.html#cacheops_sentinel"><code>CACHEOPS_SENTINEL</code></a> are mutually exclusive and will result in an error if both are set.</p>
|
|
3081
|
-
</div>
|
|
3082
|
-
<p>Example:</p>
|
|
3083
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="n">CACHEOPS_REDIS</span> <span class="o">=</span> <span class="kc">False</span>
|
|
3084
|
-
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="n">CACHEOPS_SENTINEL</span> <span class="o">=</span> <span class="p">{</span>
|
|
3085
|
-
<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a> <span class="s2">"db"</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
|
|
3086
|
-
<a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a> <span class="s2">"locations"</span><span class="p">:</span> <span class="p">[</span>
|
|
3087
|
-
<a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a> <span class="p">(</span><span class="s2">"mysentinel.redis.example.com"</span><span class="p">,</span> <span class="mi">26379</span><span class="p">),</span>
|
|
3088
|
-
<a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a> <span class="p">(</span><span class="s2">"othersentinel.redis.example.com"</span><span class="p">,</span> <span class="mi">26379</span><span class="p">),</span>
|
|
3089
|
-
<a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a> <span class="p">(</span><span class="s2">"thirdsentinel.redis.example.com"</span><span class="p">,</span> <span class="mi">26379</span><span class="p">)</span>
|
|
3090
|
-
<a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a> <span class="p">],</span>
|
|
3091
|
-
<a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a> <span class="s2">"service_name"</span><span class="p">:</span> <span class="s2">"nautobot"</span><span class="p">,</span>
|
|
3092
|
-
<a id="__codelineno-4-10" name="__codelineno-4-10" href="#__codelineno-4-10"></a> <span class="s2">"socket_timeout"</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span>
|
|
3093
|
-
<a id="__codelineno-4-11" name="__codelineno-4-11" href="#__codelineno-4-11"></a> <span class="s2">"sentinel_kwargs"</span><span class="p">:</span> <span class="p">{</span>
|
|
3094
|
-
<a id="__codelineno-4-12" name="__codelineno-4-12" href="#__codelineno-4-12"></a> <span class="s2">"password"</span><span class="p">:</span> <span class="s2">""</span>
|
|
3095
|
-
<a id="__codelineno-4-13" name="__codelineno-4-13" href="#__codelineno-4-13"></a> <span class="p">},</span>
|
|
3096
|
-
<a id="__codelineno-4-14" name="__codelineno-4-14" href="#__codelineno-4-14"></a> <span class="s2">"password"</span><span class="p">:</span> <span class="s2">""</span><span class="p">,</span>
|
|
3097
|
-
<a id="__codelineno-4-15" name="__codelineno-4-15" href="#__codelineno-4-15"></a> <span class="c1"># Everything else is passed to `Sentinel()`</span>
|
|
3098
|
-
<a id="__codelineno-4-16" name="__codelineno-4-16" href="#__codelineno-4-16"></a><span class="p">}</span>
|
|
3099
|
-
</code></pre></div>
|
|
3100
|
-
<p>For more details on how to configure Cacheops to use Redis Sentinel see the documentation for <a href="https://github.com/Suor/django-cacheops#setup">Cacheops setup</a>.</p>
|
|
3101
4166
|
<h4 id="celery-sentinel-configuration"><code>celery</code> Sentinel Configuration<a class="headerlink" href="#celery-sentinel-configuration" title="Permanent link">¶</a></h4>
|
|
3102
4167
|
<div class="admonition note">
|
|
3103
4168
|
<p class="admonition-title">Note</p>
|
|
@@ -3111,22 +4176,22 @@ of the Redis server and port for each sentinel instance to connect to</li>
|
|
|
3111
4176
|
<li><a href="../configuration/optional-settings.html#celery_result_backend_transport_options"><code>CELERY_RESULT_BACKEND_TRANSPORT_OPTIONS</code></a></li>
|
|
3112
4177
|
</ul>
|
|
3113
4178
|
<p>By default Nautobot configures the celery broker and results backend with the same settings, so this pattern is mirrored here.</p>
|
|
3114
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
3115
|
-
<a id="__codelineno-
|
|
3116
|
-
<a id="__codelineno-
|
|
3117
|
-
<a id="__codelineno-
|
|
3118
|
-
<a id="__codelineno-
|
|
3119
|
-
<a id="__codelineno-
|
|
3120
|
-
<a id="__codelineno-
|
|
3121
|
-
<a id="__codelineno-
|
|
3122
|
-
<a id="__codelineno-
|
|
3123
|
-
<a id="__codelineno-
|
|
3124
|
-
<a id="__codelineno-
|
|
3125
|
-
<a id="__codelineno-
|
|
3126
|
-
<a id="__codelineno-
|
|
3127
|
-
<a id="__codelineno-
|
|
3128
|
-
<a id="__codelineno-
|
|
3129
|
-
<a id="__codelineno-
|
|
4179
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="n">redis_password</span> <span class="o">=</span> <span class="s2">""</span>
|
|
4180
|
+
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="n">sentinel_password</span> <span class="o">=</span> <span class="s2">""</span>
|
|
4181
|
+
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a>
|
|
4182
|
+
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="n">CELERY_BROKER_URL</span> <span class="o">=</span> <span class="p">(</span>
|
|
4183
|
+
<a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a> <span class="sa">f</span><span class="s2">"sentinel://:</span><span class="si">{</span><span class="n">redis_password</span><span class="si">}</span><span class="s2">@mysentinel.redis.example.com:26379;"</span>
|
|
4184
|
+
<a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a> <span class="sa">f</span><span class="s2">"sentinel://:</span><span class="si">{</span><span class="n">redis_password</span><span class="si">}</span><span class="s2">@othersentinel.redis.example.com:26379;"</span>
|
|
4185
|
+
<a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a> <span class="c1"># The final entry must not have the `;` delimiter</span>
|
|
4186
|
+
<a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a> <span class="sa">f</span><span class="s2">"sentinel://:</span><span class="si">{</span><span class="n">redis_password</span><span class="si">}</span><span class="s2">@thirdsentinel.redis.example.com:26379"</span>
|
|
4187
|
+
<a id="__codelineno-1-9" name="__codelineno-1-9" href="#__codelineno-1-9"></a><span class="p">)</span>
|
|
4188
|
+
<a id="__codelineno-1-10" name="__codelineno-1-10" href="#__codelineno-1-10"></a><span class="n">CELERY_BROKER_TRANSPORT_OPTIONS</span> <span class="o">=</span> <span class="p">{</span>
|
|
4189
|
+
<a id="__codelineno-1-11" name="__codelineno-1-11" href="#__codelineno-1-11"></a> <span class="s2">"master_name"</span><span class="p">:</span> <span class="s2">"nautobot"</span><span class="p">,</span>
|
|
4190
|
+
<a id="__codelineno-1-12" name="__codelineno-1-12" href="#__codelineno-1-12"></a> <span class="s2">"sentinel_kwargs"</span><span class="p">:</span> <span class="p">{</span><span class="s2">"password"</span><span class="p">:</span> <span class="n">sentinel_password</span><span class="p">},</span>
|
|
4191
|
+
<a id="__codelineno-1-13" name="__codelineno-1-13" href="#__codelineno-1-13"></a><span class="p">}</span>
|
|
4192
|
+
<a id="__codelineno-1-14" name="__codelineno-1-14" href="#__codelineno-1-14"></a>
|
|
4193
|
+
<a id="__codelineno-1-15" name="__codelineno-1-15" href="#__codelineno-1-15"></a><span class="n">CELERY_RESULT_BACKEND</span> <span class="o">=</span> <span class="n">CELERY_BROKER_URL</span>
|
|
4194
|
+
<a id="__codelineno-1-16" name="__codelineno-1-16" href="#__codelineno-1-16"></a><span class="n">CELERY_RESULT_BACKEND_TRANSPORT_OPTIONS</span> <span class="o">=</span> <span class="n">CELERY_BROKER_TRANSPORT_OPTIONS</span>
|
|
3130
4195
|
</code></pre></div>
|
|
3131
4196
|
<p>Please see the official Celery documentation for more information on how to <a href="https://docs.celeryq.dev/en/stable/getting-started/backends-and-brokers/redis.html?highlight=sentinel#configuration">configure Celery to use Redis Sentinel</a>.</p>
|
|
3132
4197
|
<p>Please also see the <a href="../configuration/required-settings.html#task-queuing-with-celery">Nautobot documentation on required settings for Celery</a> for additional information.</p>
|