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
|
@@ -1346,12 +1346,1166 @@
|
|
|
1346
1346
|
|
|
1347
1347
|
|
|
1348
1348
|
<label class="md-nav__link" for="__nav_2_8" id="__nav_2_8_label" tabindex="0">
|
|
1349
|
+
Model Details
|
|
1350
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1351
|
+
</label>
|
|
1352
|
+
|
|
1353
|
+
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_8_label" aria-expanded="false">
|
|
1354
|
+
<label class="md-nav__title" for="__nav_2_8">
|
|
1355
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1356
|
+
Model Details
|
|
1357
|
+
</label>
|
|
1358
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
1359
|
+
|
|
1360
|
+
|
|
1361
|
+
|
|
1362
|
+
|
|
1363
|
+
|
|
1364
|
+
|
|
1365
|
+
|
|
1366
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
1367
|
+
|
|
1368
|
+
|
|
1369
|
+
|
|
1370
|
+
|
|
1371
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_1" >
|
|
1372
|
+
|
|
1373
|
+
|
|
1374
|
+
|
|
1375
|
+
<label class="md-nav__link" for="__nav_2_8_1" id="__nav_2_8_1_label" tabindex="0">
|
|
1376
|
+
Circuits
|
|
1377
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1378
|
+
</label>
|
|
1379
|
+
|
|
1380
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_1_label" aria-expanded="false">
|
|
1381
|
+
<label class="md-nav__title" for="__nav_2_8_1">
|
|
1382
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1383
|
+
Circuits
|
|
1384
|
+
</label>
|
|
1385
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
1386
|
+
|
|
1387
|
+
|
|
1388
|
+
|
|
1389
|
+
|
|
1390
|
+
|
|
1391
|
+
|
|
1392
|
+
<li class="md-nav__item">
|
|
1393
|
+
<a href="../models/circuits/circuit.html" class="md-nav__link">
|
|
1394
|
+
Circuit
|
|
1395
|
+
</a>
|
|
1396
|
+
</li>
|
|
1397
|
+
|
|
1398
|
+
|
|
1399
|
+
|
|
1400
|
+
|
|
1401
|
+
|
|
1402
|
+
|
|
1403
|
+
|
|
1404
|
+
|
|
1405
|
+
|
|
1406
|
+
<li class="md-nav__item">
|
|
1407
|
+
<a href="../models/circuits/circuittermination.html" class="md-nav__link">
|
|
1408
|
+
Circuit Termination
|
|
1409
|
+
</a>
|
|
1410
|
+
</li>
|
|
1411
|
+
|
|
1412
|
+
|
|
1413
|
+
|
|
1414
|
+
|
|
1415
|
+
|
|
1416
|
+
|
|
1417
|
+
|
|
1418
|
+
|
|
1419
|
+
|
|
1420
|
+
<li class="md-nav__item">
|
|
1421
|
+
<a href="../models/circuits/circuittype.html" class="md-nav__link">
|
|
1422
|
+
Circuit Type
|
|
1423
|
+
</a>
|
|
1424
|
+
</li>
|
|
1425
|
+
|
|
1426
|
+
|
|
1427
|
+
|
|
1428
|
+
|
|
1429
|
+
|
|
1430
|
+
|
|
1431
|
+
|
|
1432
|
+
|
|
1433
|
+
|
|
1434
|
+
<li class="md-nav__item">
|
|
1435
|
+
<a href="../models/circuits/provider.html" class="md-nav__link">
|
|
1436
|
+
Circuit Provider
|
|
1437
|
+
</a>
|
|
1438
|
+
</li>
|
|
1439
|
+
|
|
1440
|
+
|
|
1441
|
+
|
|
1442
|
+
|
|
1443
|
+
|
|
1444
|
+
|
|
1445
|
+
|
|
1446
|
+
|
|
1447
|
+
|
|
1448
|
+
<li class="md-nav__item">
|
|
1449
|
+
<a href="../models/circuits/providernetwork.html" class="md-nav__link">
|
|
1450
|
+
Circuit Provider Network
|
|
1451
|
+
</a>
|
|
1452
|
+
</li>
|
|
1453
|
+
|
|
1454
|
+
|
|
1455
|
+
|
|
1456
|
+
|
|
1457
|
+
</ul>
|
|
1458
|
+
</nav>
|
|
1459
|
+
</li>
|
|
1460
|
+
|
|
1461
|
+
|
|
1462
|
+
|
|
1463
|
+
|
|
1464
|
+
|
|
1465
|
+
|
|
1466
|
+
|
|
1467
|
+
|
|
1468
|
+
|
|
1469
|
+
|
|
1470
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
1471
|
+
|
|
1472
|
+
|
|
1473
|
+
|
|
1474
|
+
|
|
1475
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_2" >
|
|
1476
|
+
|
|
1477
|
+
|
|
1478
|
+
|
|
1479
|
+
<label class="md-nav__link" for="__nav_2_8_2" id="__nav_2_8_2_label" tabindex="0">
|
|
1480
|
+
DCIM
|
|
1481
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1482
|
+
</label>
|
|
1483
|
+
|
|
1484
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_2_label" aria-expanded="false">
|
|
1485
|
+
<label class="md-nav__title" for="__nav_2_8_2">
|
|
1486
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1487
|
+
DCIM
|
|
1488
|
+
</label>
|
|
1489
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
1490
|
+
|
|
1491
|
+
|
|
1492
|
+
|
|
1493
|
+
|
|
1494
|
+
|
|
1495
|
+
|
|
1496
|
+
<li class="md-nav__item">
|
|
1497
|
+
<a href="../models/dcim/cable.html" class="md-nav__link">
|
|
1498
|
+
Cable
|
|
1499
|
+
</a>
|
|
1500
|
+
</li>
|
|
1501
|
+
|
|
1502
|
+
|
|
1503
|
+
|
|
1504
|
+
|
|
1505
|
+
|
|
1506
|
+
|
|
1507
|
+
|
|
1508
|
+
|
|
1509
|
+
|
|
1510
|
+
<li class="md-nav__item">
|
|
1511
|
+
<a href="../models/dcim/consoleport.html" class="md-nav__link">
|
|
1512
|
+
Console Port
|
|
1513
|
+
</a>
|
|
1514
|
+
</li>
|
|
1515
|
+
|
|
1516
|
+
|
|
1517
|
+
|
|
1518
|
+
|
|
1519
|
+
|
|
1520
|
+
|
|
1521
|
+
|
|
1522
|
+
|
|
1523
|
+
|
|
1524
|
+
<li class="md-nav__item">
|
|
1525
|
+
<a href="../models/dcim/consoleporttemplate.html" class="md-nav__link">
|
|
1526
|
+
Console Port Template
|
|
1527
|
+
</a>
|
|
1528
|
+
</li>
|
|
1529
|
+
|
|
1530
|
+
|
|
1531
|
+
|
|
1532
|
+
|
|
1533
|
+
|
|
1534
|
+
|
|
1535
|
+
|
|
1536
|
+
|
|
1537
|
+
|
|
1538
|
+
<li class="md-nav__item">
|
|
1539
|
+
<a href="../models/dcim/consoleserverport.html" class="md-nav__link">
|
|
1540
|
+
Console Server Port
|
|
1541
|
+
</a>
|
|
1542
|
+
</li>
|
|
1543
|
+
|
|
1544
|
+
|
|
1545
|
+
|
|
1546
|
+
|
|
1547
|
+
|
|
1548
|
+
|
|
1549
|
+
|
|
1550
|
+
|
|
1551
|
+
|
|
1552
|
+
<li class="md-nav__item">
|
|
1553
|
+
<a href="../models/dcim/consoleserverporttemplate.html" class="md-nav__link">
|
|
1554
|
+
Console Server Port Template
|
|
1555
|
+
</a>
|
|
1556
|
+
</li>
|
|
1557
|
+
|
|
1558
|
+
|
|
1559
|
+
|
|
1560
|
+
|
|
1561
|
+
|
|
1562
|
+
|
|
1563
|
+
|
|
1564
|
+
|
|
1565
|
+
|
|
1566
|
+
<li class="md-nav__item">
|
|
1567
|
+
<a href="../models/dcim/device.html" class="md-nav__link">
|
|
1568
|
+
Device
|
|
1569
|
+
</a>
|
|
1570
|
+
</li>
|
|
1571
|
+
|
|
1572
|
+
|
|
1573
|
+
|
|
1574
|
+
|
|
1575
|
+
|
|
1576
|
+
|
|
1577
|
+
|
|
1578
|
+
|
|
1579
|
+
|
|
1580
|
+
<li class="md-nav__item">
|
|
1581
|
+
<a href="../models/dcim/devicebay.html" class="md-nav__link">
|
|
1582
|
+
Device Bay
|
|
1583
|
+
</a>
|
|
1584
|
+
</li>
|
|
1585
|
+
|
|
1586
|
+
|
|
1587
|
+
|
|
1588
|
+
|
|
1589
|
+
|
|
1590
|
+
|
|
1591
|
+
|
|
1592
|
+
|
|
1593
|
+
|
|
1594
|
+
<li class="md-nav__item">
|
|
1595
|
+
<a href="../models/dcim/devicebaytemplate.html" class="md-nav__link">
|
|
1596
|
+
Device Bay Template
|
|
1597
|
+
</a>
|
|
1598
|
+
</li>
|
|
1599
|
+
|
|
1600
|
+
|
|
1601
|
+
|
|
1602
|
+
|
|
1603
|
+
|
|
1604
|
+
|
|
1605
|
+
|
|
1606
|
+
|
|
1607
|
+
|
|
1608
|
+
<li class="md-nav__item">
|
|
1609
|
+
<a href="../models/dcim/deviceredundancygroup.html" class="md-nav__link">
|
|
1610
|
+
Device Redundancy Group
|
|
1611
|
+
</a>
|
|
1612
|
+
</li>
|
|
1613
|
+
|
|
1614
|
+
|
|
1615
|
+
|
|
1616
|
+
|
|
1617
|
+
|
|
1618
|
+
|
|
1619
|
+
|
|
1620
|
+
|
|
1621
|
+
|
|
1622
|
+
<li class="md-nav__item">
|
|
1623
|
+
<a href="../models/dcim/devicetype.html" class="md-nav__link">
|
|
1624
|
+
Device Type
|
|
1625
|
+
</a>
|
|
1626
|
+
</li>
|
|
1627
|
+
|
|
1628
|
+
|
|
1629
|
+
|
|
1630
|
+
|
|
1631
|
+
|
|
1632
|
+
|
|
1633
|
+
|
|
1634
|
+
|
|
1635
|
+
|
|
1636
|
+
<li class="md-nav__item">
|
|
1637
|
+
<a href="../models/dcim/frontport.html" class="md-nav__link">
|
|
1638
|
+
Front Port
|
|
1639
|
+
</a>
|
|
1640
|
+
</li>
|
|
1641
|
+
|
|
1642
|
+
|
|
1643
|
+
|
|
1644
|
+
|
|
1645
|
+
|
|
1646
|
+
|
|
1647
|
+
|
|
1648
|
+
|
|
1649
|
+
|
|
1650
|
+
<li class="md-nav__item">
|
|
1651
|
+
<a href="../models/dcim/frontporttemplate.html" class="md-nav__link">
|
|
1652
|
+
Front Port Template
|
|
1653
|
+
</a>
|
|
1654
|
+
</li>
|
|
1655
|
+
|
|
1656
|
+
|
|
1657
|
+
|
|
1658
|
+
|
|
1659
|
+
|
|
1660
|
+
|
|
1661
|
+
|
|
1662
|
+
|
|
1663
|
+
|
|
1664
|
+
<li class="md-nav__item">
|
|
1665
|
+
<a href="../models/dcim/interface.html" class="md-nav__link">
|
|
1666
|
+
Interface
|
|
1667
|
+
</a>
|
|
1668
|
+
</li>
|
|
1669
|
+
|
|
1670
|
+
|
|
1671
|
+
|
|
1672
|
+
|
|
1673
|
+
|
|
1674
|
+
|
|
1675
|
+
|
|
1676
|
+
|
|
1677
|
+
|
|
1678
|
+
<li class="md-nav__item">
|
|
1679
|
+
<a href="../models/dcim/interfacetemplate.html" class="md-nav__link">
|
|
1680
|
+
Interface Template
|
|
1681
|
+
</a>
|
|
1682
|
+
</li>
|
|
1683
|
+
|
|
1684
|
+
|
|
1685
|
+
|
|
1686
|
+
|
|
1687
|
+
|
|
1688
|
+
|
|
1689
|
+
|
|
1690
|
+
|
|
1691
|
+
|
|
1692
|
+
<li class="md-nav__item">
|
|
1693
|
+
<a href="../models/dcim/inventoryitem.html" class="md-nav__link">
|
|
1694
|
+
Inventory Item
|
|
1695
|
+
</a>
|
|
1696
|
+
</li>
|
|
1697
|
+
|
|
1698
|
+
|
|
1699
|
+
|
|
1700
|
+
|
|
1701
|
+
|
|
1702
|
+
|
|
1703
|
+
|
|
1704
|
+
|
|
1705
|
+
|
|
1706
|
+
<li class="md-nav__item">
|
|
1707
|
+
<a href="../models/dcim/location.html" class="md-nav__link">
|
|
1708
|
+
Location
|
|
1709
|
+
</a>
|
|
1710
|
+
</li>
|
|
1711
|
+
|
|
1712
|
+
|
|
1713
|
+
|
|
1714
|
+
|
|
1715
|
+
|
|
1716
|
+
|
|
1717
|
+
|
|
1718
|
+
|
|
1719
|
+
|
|
1720
|
+
<li class="md-nav__item">
|
|
1721
|
+
<a href="../models/dcim/locationtype.html" class="md-nav__link">
|
|
1722
|
+
Location Type
|
|
1723
|
+
</a>
|
|
1724
|
+
</li>
|
|
1725
|
+
|
|
1726
|
+
|
|
1727
|
+
|
|
1728
|
+
|
|
1729
|
+
|
|
1730
|
+
|
|
1731
|
+
|
|
1732
|
+
|
|
1733
|
+
|
|
1734
|
+
<li class="md-nav__item">
|
|
1735
|
+
<a href="../models/dcim/manufacturer.html" class="md-nav__link">
|
|
1736
|
+
Manufacturer
|
|
1737
|
+
</a>
|
|
1738
|
+
</li>
|
|
1739
|
+
|
|
1740
|
+
|
|
1741
|
+
|
|
1742
|
+
|
|
1743
|
+
|
|
1744
|
+
|
|
1745
|
+
|
|
1746
|
+
|
|
1747
|
+
|
|
1748
|
+
<li class="md-nav__item">
|
|
1749
|
+
<a href="../models/dcim/platform.html" class="md-nav__link">
|
|
1750
|
+
Platform
|
|
1751
|
+
</a>
|
|
1752
|
+
</li>
|
|
1753
|
+
|
|
1754
|
+
|
|
1755
|
+
|
|
1756
|
+
|
|
1757
|
+
|
|
1758
|
+
|
|
1759
|
+
|
|
1760
|
+
|
|
1761
|
+
|
|
1762
|
+
<li class="md-nav__item">
|
|
1763
|
+
<a href="../models/dcim/powerfeed.html" class="md-nav__link">
|
|
1764
|
+
Power Feed
|
|
1765
|
+
</a>
|
|
1766
|
+
</li>
|
|
1767
|
+
|
|
1768
|
+
|
|
1769
|
+
|
|
1770
|
+
|
|
1771
|
+
|
|
1772
|
+
|
|
1773
|
+
|
|
1774
|
+
|
|
1775
|
+
|
|
1776
|
+
<li class="md-nav__item">
|
|
1777
|
+
<a href="../models/dcim/poweroutlet.html" class="md-nav__link">
|
|
1778
|
+
Power Outlet
|
|
1779
|
+
</a>
|
|
1780
|
+
</li>
|
|
1781
|
+
|
|
1782
|
+
|
|
1783
|
+
|
|
1784
|
+
|
|
1785
|
+
|
|
1786
|
+
|
|
1787
|
+
|
|
1788
|
+
|
|
1789
|
+
|
|
1790
|
+
<li class="md-nav__item">
|
|
1791
|
+
<a href="../models/dcim/poweroutlettemplate.html" class="md-nav__link">
|
|
1792
|
+
Power Outlet Template
|
|
1793
|
+
</a>
|
|
1794
|
+
</li>
|
|
1795
|
+
|
|
1796
|
+
|
|
1797
|
+
|
|
1798
|
+
|
|
1799
|
+
|
|
1800
|
+
|
|
1801
|
+
|
|
1802
|
+
|
|
1803
|
+
|
|
1804
|
+
<li class="md-nav__item">
|
|
1805
|
+
<a href="../models/dcim/powerpanel.html" class="md-nav__link">
|
|
1806
|
+
Power Panel
|
|
1807
|
+
</a>
|
|
1808
|
+
</li>
|
|
1809
|
+
|
|
1810
|
+
|
|
1811
|
+
|
|
1812
|
+
|
|
1813
|
+
|
|
1814
|
+
|
|
1815
|
+
|
|
1816
|
+
|
|
1817
|
+
|
|
1818
|
+
<li class="md-nav__item">
|
|
1819
|
+
<a href="../models/dcim/powerport.html" class="md-nav__link">
|
|
1820
|
+
Power Port
|
|
1821
|
+
</a>
|
|
1822
|
+
</li>
|
|
1823
|
+
|
|
1824
|
+
|
|
1825
|
+
|
|
1826
|
+
|
|
1827
|
+
|
|
1828
|
+
|
|
1829
|
+
|
|
1830
|
+
|
|
1831
|
+
|
|
1832
|
+
<li class="md-nav__item">
|
|
1833
|
+
<a href="../models/dcim/powerporttemplate.html" class="md-nav__link">
|
|
1834
|
+
Power Port Template
|
|
1835
|
+
</a>
|
|
1836
|
+
</li>
|
|
1837
|
+
|
|
1838
|
+
|
|
1839
|
+
|
|
1840
|
+
|
|
1841
|
+
|
|
1842
|
+
|
|
1843
|
+
|
|
1844
|
+
|
|
1845
|
+
|
|
1846
|
+
<li class="md-nav__item">
|
|
1847
|
+
<a href="../models/dcim/rack.html" class="md-nav__link">
|
|
1848
|
+
Rack
|
|
1849
|
+
</a>
|
|
1850
|
+
</li>
|
|
1851
|
+
|
|
1852
|
+
|
|
1853
|
+
|
|
1854
|
+
|
|
1855
|
+
|
|
1856
|
+
|
|
1857
|
+
|
|
1858
|
+
|
|
1859
|
+
|
|
1860
|
+
<li class="md-nav__item">
|
|
1861
|
+
<a href="../models/dcim/rackgroup.html" class="md-nav__link">
|
|
1862
|
+
Rack Group
|
|
1863
|
+
</a>
|
|
1864
|
+
</li>
|
|
1865
|
+
|
|
1866
|
+
|
|
1867
|
+
|
|
1868
|
+
|
|
1869
|
+
|
|
1870
|
+
|
|
1871
|
+
|
|
1872
|
+
|
|
1873
|
+
|
|
1874
|
+
<li class="md-nav__item">
|
|
1875
|
+
<a href="../models/dcim/rackreservation.html" class="md-nav__link">
|
|
1876
|
+
Rack Reservation
|
|
1877
|
+
</a>
|
|
1878
|
+
</li>
|
|
1879
|
+
|
|
1880
|
+
|
|
1881
|
+
|
|
1882
|
+
|
|
1883
|
+
|
|
1884
|
+
|
|
1885
|
+
|
|
1886
|
+
|
|
1887
|
+
|
|
1888
|
+
<li class="md-nav__item">
|
|
1889
|
+
<a href="../models/dcim/rearport.html" class="md-nav__link">
|
|
1890
|
+
Rear Port
|
|
1891
|
+
</a>
|
|
1892
|
+
</li>
|
|
1893
|
+
|
|
1894
|
+
|
|
1895
|
+
|
|
1896
|
+
|
|
1897
|
+
|
|
1898
|
+
|
|
1899
|
+
|
|
1900
|
+
|
|
1901
|
+
|
|
1902
|
+
<li class="md-nav__item">
|
|
1903
|
+
<a href="../models/dcim/rearporttemplate.html" class="md-nav__link">
|
|
1904
|
+
Rear Port Template
|
|
1905
|
+
</a>
|
|
1906
|
+
</li>
|
|
1907
|
+
|
|
1908
|
+
|
|
1909
|
+
|
|
1910
|
+
|
|
1911
|
+
|
|
1912
|
+
|
|
1913
|
+
|
|
1914
|
+
|
|
1915
|
+
|
|
1916
|
+
<li class="md-nav__item">
|
|
1917
|
+
<a href="../models/dcim/virtualchassis.html" class="md-nav__link">
|
|
1918
|
+
Virtual Chassis
|
|
1919
|
+
</a>
|
|
1920
|
+
</li>
|
|
1921
|
+
|
|
1922
|
+
|
|
1923
|
+
|
|
1924
|
+
|
|
1925
|
+
</ul>
|
|
1926
|
+
</nav>
|
|
1927
|
+
</li>
|
|
1928
|
+
|
|
1929
|
+
|
|
1930
|
+
|
|
1931
|
+
|
|
1932
|
+
|
|
1933
|
+
|
|
1934
|
+
|
|
1935
|
+
|
|
1936
|
+
|
|
1937
|
+
|
|
1938
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
1939
|
+
|
|
1940
|
+
|
|
1941
|
+
|
|
1942
|
+
|
|
1943
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_3" >
|
|
1944
|
+
|
|
1945
|
+
|
|
1946
|
+
|
|
1947
|
+
<label class="md-nav__link" for="__nav_2_8_3" id="__nav_2_8_3_label" tabindex="0">
|
|
1948
|
+
Extras
|
|
1949
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1950
|
+
</label>
|
|
1951
|
+
|
|
1952
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_3_label" aria-expanded="false">
|
|
1953
|
+
<label class="md-nav__title" for="__nav_2_8_3">
|
|
1954
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1955
|
+
Extras
|
|
1956
|
+
</label>
|
|
1957
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
1958
|
+
|
|
1959
|
+
|
|
1960
|
+
|
|
1961
|
+
|
|
1962
|
+
|
|
1963
|
+
|
|
1964
|
+
<li class="md-nav__item">
|
|
1965
|
+
<a href="../models/extras/configcontext.html" class="md-nav__link">
|
|
1966
|
+
Config Context
|
|
1967
|
+
</a>
|
|
1968
|
+
</li>
|
|
1969
|
+
|
|
1970
|
+
|
|
1971
|
+
|
|
1972
|
+
|
|
1973
|
+
|
|
1974
|
+
|
|
1975
|
+
|
|
1976
|
+
|
|
1977
|
+
|
|
1978
|
+
<li class="md-nav__item">
|
|
1979
|
+
<a href="../models/extras/configcontextschema.html" class="md-nav__link">
|
|
1980
|
+
Config Context Schema
|
|
1981
|
+
</a>
|
|
1982
|
+
</li>
|
|
1983
|
+
|
|
1984
|
+
|
|
1985
|
+
|
|
1986
|
+
|
|
1987
|
+
|
|
1988
|
+
|
|
1989
|
+
|
|
1990
|
+
|
|
1991
|
+
|
|
1992
|
+
<li class="md-nav__item">
|
|
1993
|
+
<a href="../models/extras/graphqlquery.html" class="md-nav__link">
|
|
1994
|
+
GraphQL Query
|
|
1995
|
+
</a>
|
|
1996
|
+
</li>
|
|
1997
|
+
|
|
1998
|
+
|
|
1999
|
+
|
|
2000
|
+
|
|
2001
|
+
|
|
2002
|
+
|
|
2003
|
+
|
|
2004
|
+
|
|
2005
|
+
|
|
2006
|
+
<li class="md-nav__item">
|
|
2007
|
+
<a href="../models/extras/imageattachment.html" class="md-nav__link">
|
|
2008
|
+
Image Attachment
|
|
2009
|
+
</a>
|
|
2010
|
+
</li>
|
|
2011
|
+
|
|
2012
|
+
|
|
2013
|
+
|
|
2014
|
+
|
|
2015
|
+
|
|
2016
|
+
|
|
2017
|
+
|
|
2018
|
+
|
|
2019
|
+
|
|
2020
|
+
<li class="md-nav__item">
|
|
2021
|
+
<a href="../models/extras/job.html" class="md-nav__link">
|
|
2022
|
+
Job
|
|
2023
|
+
</a>
|
|
2024
|
+
</li>
|
|
2025
|
+
|
|
2026
|
+
|
|
2027
|
+
|
|
2028
|
+
|
|
2029
|
+
|
|
2030
|
+
|
|
2031
|
+
|
|
2032
|
+
|
|
2033
|
+
|
|
2034
|
+
<li class="md-nav__item">
|
|
2035
|
+
<a href="../models/extras/joblogentry.html" class="md-nav__link">
|
|
2036
|
+
Job Log Entry
|
|
2037
|
+
</a>
|
|
2038
|
+
</li>
|
|
2039
|
+
|
|
2040
|
+
|
|
2041
|
+
|
|
2042
|
+
|
|
2043
|
+
|
|
2044
|
+
|
|
2045
|
+
|
|
2046
|
+
|
|
2047
|
+
|
|
2048
|
+
<li class="md-nav__item">
|
|
2049
|
+
<a href="../models/extras/jobresult.html" class="md-nav__link">
|
|
2050
|
+
Job Result
|
|
2051
|
+
</a>
|
|
2052
|
+
</li>
|
|
2053
|
+
|
|
2054
|
+
|
|
2055
|
+
|
|
2056
|
+
|
|
2057
|
+
|
|
2058
|
+
|
|
2059
|
+
|
|
2060
|
+
|
|
2061
|
+
|
|
2062
|
+
<li class="md-nav__item">
|
|
2063
|
+
<a href="../models/extras/role.html" class="md-nav__link">
|
|
2064
|
+
Role
|
|
2065
|
+
</a>
|
|
2066
|
+
</li>
|
|
2067
|
+
|
|
2068
|
+
|
|
2069
|
+
|
|
2070
|
+
|
|
2071
|
+
|
|
2072
|
+
|
|
2073
|
+
|
|
2074
|
+
|
|
2075
|
+
|
|
2076
|
+
<li class="md-nav__item">
|
|
2077
|
+
<a href="../models/extras/secret.html" class="md-nav__link">
|
|
2078
|
+
Secret
|
|
2079
|
+
</a>
|
|
2080
|
+
</li>
|
|
2081
|
+
|
|
2082
|
+
|
|
2083
|
+
|
|
2084
|
+
|
|
2085
|
+
|
|
2086
|
+
|
|
2087
|
+
|
|
2088
|
+
|
|
2089
|
+
|
|
2090
|
+
<li class="md-nav__item">
|
|
2091
|
+
<a href="../models/extras/secretsgroup.html" class="md-nav__link">
|
|
2092
|
+
Secrets group
|
|
2093
|
+
</a>
|
|
2094
|
+
</li>
|
|
2095
|
+
|
|
2096
|
+
|
|
2097
|
+
|
|
2098
|
+
|
|
2099
|
+
</ul>
|
|
2100
|
+
</nav>
|
|
2101
|
+
</li>
|
|
2102
|
+
|
|
2103
|
+
|
|
2104
|
+
|
|
2105
|
+
|
|
2106
|
+
|
|
2107
|
+
|
|
2108
|
+
|
|
2109
|
+
|
|
2110
|
+
|
|
2111
|
+
|
|
2112
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
2113
|
+
|
|
2114
|
+
|
|
2115
|
+
|
|
2116
|
+
|
|
2117
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_4" >
|
|
2118
|
+
|
|
2119
|
+
|
|
2120
|
+
|
|
2121
|
+
<label class="md-nav__link" for="__nav_2_8_4" id="__nav_2_8_4_label" tabindex="0">
|
|
2122
|
+
IPAM
|
|
2123
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2124
|
+
</label>
|
|
2125
|
+
|
|
2126
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_4_label" aria-expanded="false">
|
|
2127
|
+
<label class="md-nav__title" for="__nav_2_8_4">
|
|
2128
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2129
|
+
IPAM
|
|
2130
|
+
</label>
|
|
2131
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
2132
|
+
|
|
2133
|
+
|
|
2134
|
+
|
|
2135
|
+
|
|
2136
|
+
|
|
2137
|
+
|
|
2138
|
+
<li class="md-nav__item">
|
|
2139
|
+
<a href="../models/ipam/ipaddress.html" class="md-nav__link">
|
|
2140
|
+
IP Address
|
|
2141
|
+
</a>
|
|
2142
|
+
</li>
|
|
2143
|
+
|
|
2144
|
+
|
|
2145
|
+
|
|
2146
|
+
|
|
2147
|
+
|
|
2148
|
+
|
|
2149
|
+
|
|
2150
|
+
|
|
2151
|
+
|
|
2152
|
+
<li class="md-nav__item">
|
|
2153
|
+
<a href="../models/ipam/prefix.html" class="md-nav__link">
|
|
2154
|
+
Prefix
|
|
2155
|
+
</a>
|
|
2156
|
+
</li>
|
|
2157
|
+
|
|
2158
|
+
|
|
2159
|
+
|
|
2160
|
+
|
|
2161
|
+
|
|
2162
|
+
|
|
2163
|
+
|
|
2164
|
+
|
|
2165
|
+
|
|
2166
|
+
<li class="md-nav__item">
|
|
2167
|
+
<a href="../models/ipam/rir.html" class="md-nav__link">
|
|
2168
|
+
Rir
|
|
2169
|
+
</a>
|
|
2170
|
+
</li>
|
|
2171
|
+
|
|
2172
|
+
|
|
2173
|
+
|
|
2174
|
+
|
|
2175
|
+
|
|
2176
|
+
|
|
2177
|
+
|
|
2178
|
+
|
|
2179
|
+
|
|
2180
|
+
<li class="md-nav__item">
|
|
2181
|
+
<a href="../models/ipam/routetarget.html" class="md-nav__link">
|
|
2182
|
+
Route Target
|
|
2183
|
+
</a>
|
|
2184
|
+
</li>
|
|
2185
|
+
|
|
2186
|
+
|
|
2187
|
+
|
|
2188
|
+
|
|
2189
|
+
|
|
2190
|
+
|
|
2191
|
+
|
|
2192
|
+
|
|
2193
|
+
|
|
2194
|
+
<li class="md-nav__item">
|
|
2195
|
+
<a href="../models/ipam/service.html" class="md-nav__link">
|
|
2196
|
+
Service
|
|
2197
|
+
</a>
|
|
2198
|
+
</li>
|
|
2199
|
+
|
|
2200
|
+
|
|
2201
|
+
|
|
2202
|
+
|
|
2203
|
+
|
|
2204
|
+
|
|
2205
|
+
|
|
2206
|
+
|
|
2207
|
+
|
|
2208
|
+
<li class="md-nav__item">
|
|
2209
|
+
<a href="../models/ipam/vlan.html" class="md-nav__link">
|
|
2210
|
+
VLAN
|
|
2211
|
+
</a>
|
|
2212
|
+
</li>
|
|
2213
|
+
|
|
2214
|
+
|
|
2215
|
+
|
|
2216
|
+
|
|
2217
|
+
|
|
2218
|
+
|
|
2219
|
+
|
|
2220
|
+
|
|
2221
|
+
|
|
2222
|
+
<li class="md-nav__item">
|
|
2223
|
+
<a href="../models/ipam/vlangroup.html" class="md-nav__link">
|
|
2224
|
+
VLAN Group
|
|
2225
|
+
</a>
|
|
2226
|
+
</li>
|
|
2227
|
+
|
|
2228
|
+
|
|
2229
|
+
|
|
2230
|
+
|
|
2231
|
+
|
|
2232
|
+
|
|
2233
|
+
|
|
2234
|
+
|
|
2235
|
+
|
|
2236
|
+
<li class="md-nav__item">
|
|
2237
|
+
<a href="../models/ipam/vrf.html" class="md-nav__link">
|
|
2238
|
+
VRF
|
|
2239
|
+
</a>
|
|
2240
|
+
</li>
|
|
2241
|
+
|
|
2242
|
+
|
|
2243
|
+
|
|
2244
|
+
|
|
2245
|
+
</ul>
|
|
2246
|
+
</nav>
|
|
2247
|
+
</li>
|
|
2248
|
+
|
|
2249
|
+
|
|
2250
|
+
|
|
2251
|
+
|
|
2252
|
+
|
|
2253
|
+
|
|
2254
|
+
|
|
2255
|
+
|
|
2256
|
+
|
|
2257
|
+
|
|
2258
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
2259
|
+
|
|
2260
|
+
|
|
2261
|
+
|
|
2262
|
+
|
|
2263
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_5" >
|
|
2264
|
+
|
|
2265
|
+
|
|
2266
|
+
|
|
2267
|
+
<label class="md-nav__link" for="__nav_2_8_5" id="__nav_2_8_5_label" tabindex="0">
|
|
2268
|
+
Tenancy
|
|
2269
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2270
|
+
</label>
|
|
2271
|
+
|
|
2272
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_5_label" aria-expanded="false">
|
|
2273
|
+
<label class="md-nav__title" for="__nav_2_8_5">
|
|
2274
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2275
|
+
Tenancy
|
|
2276
|
+
</label>
|
|
2277
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
2278
|
+
|
|
2279
|
+
|
|
2280
|
+
|
|
2281
|
+
|
|
2282
|
+
|
|
2283
|
+
|
|
2284
|
+
<li class="md-nav__item">
|
|
2285
|
+
<a href="../models/tenancy/tenant.html" class="md-nav__link">
|
|
2286
|
+
Tenant
|
|
2287
|
+
</a>
|
|
2288
|
+
</li>
|
|
2289
|
+
|
|
2290
|
+
|
|
2291
|
+
|
|
2292
|
+
|
|
2293
|
+
|
|
2294
|
+
|
|
2295
|
+
|
|
2296
|
+
|
|
2297
|
+
|
|
2298
|
+
<li class="md-nav__item">
|
|
2299
|
+
<a href="../models/tenancy/tenantgroup.html" class="md-nav__link">
|
|
2300
|
+
Tenant Group
|
|
2301
|
+
</a>
|
|
2302
|
+
</li>
|
|
2303
|
+
|
|
2304
|
+
|
|
2305
|
+
|
|
2306
|
+
|
|
2307
|
+
</ul>
|
|
2308
|
+
</nav>
|
|
2309
|
+
</li>
|
|
2310
|
+
|
|
2311
|
+
|
|
2312
|
+
|
|
2313
|
+
|
|
2314
|
+
|
|
2315
|
+
|
|
2316
|
+
|
|
2317
|
+
|
|
2318
|
+
|
|
2319
|
+
|
|
2320
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
2321
|
+
|
|
2322
|
+
|
|
2323
|
+
|
|
2324
|
+
|
|
2325
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_6" >
|
|
2326
|
+
|
|
2327
|
+
|
|
2328
|
+
|
|
2329
|
+
<label class="md-nav__link" for="__nav_2_8_6" id="__nav_2_8_6_label" tabindex="0">
|
|
2330
|
+
Users
|
|
2331
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2332
|
+
</label>
|
|
2333
|
+
|
|
2334
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_6_label" aria-expanded="false">
|
|
2335
|
+
<label class="md-nav__title" for="__nav_2_8_6">
|
|
2336
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2337
|
+
Users
|
|
2338
|
+
</label>
|
|
2339
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
2340
|
+
|
|
2341
|
+
|
|
2342
|
+
|
|
2343
|
+
|
|
2344
|
+
|
|
2345
|
+
|
|
2346
|
+
<li class="md-nav__item">
|
|
2347
|
+
<a href="../models/users/objectpermission.html" class="md-nav__link">
|
|
2348
|
+
Object Permission
|
|
2349
|
+
</a>
|
|
2350
|
+
</li>
|
|
2351
|
+
|
|
2352
|
+
|
|
2353
|
+
|
|
2354
|
+
|
|
2355
|
+
|
|
2356
|
+
|
|
2357
|
+
|
|
2358
|
+
|
|
2359
|
+
|
|
2360
|
+
<li class="md-nav__item">
|
|
2361
|
+
<a href="../models/users/token.html" class="md-nav__link">
|
|
2362
|
+
Token
|
|
2363
|
+
</a>
|
|
2364
|
+
</li>
|
|
2365
|
+
|
|
2366
|
+
|
|
2367
|
+
|
|
2368
|
+
|
|
2369
|
+
</ul>
|
|
2370
|
+
</nav>
|
|
2371
|
+
</li>
|
|
2372
|
+
|
|
2373
|
+
|
|
2374
|
+
|
|
2375
|
+
|
|
2376
|
+
|
|
2377
|
+
|
|
2378
|
+
|
|
2379
|
+
|
|
2380
|
+
|
|
2381
|
+
|
|
2382
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
2383
|
+
|
|
2384
|
+
|
|
2385
|
+
|
|
2386
|
+
|
|
2387
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_7" >
|
|
2388
|
+
|
|
2389
|
+
|
|
2390
|
+
|
|
2391
|
+
<label class="md-nav__link" for="__nav_2_8_7" id="__nav_2_8_7_label" tabindex="0">
|
|
2392
|
+
Virtualization
|
|
2393
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2394
|
+
</label>
|
|
2395
|
+
|
|
2396
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_7_label" aria-expanded="false">
|
|
2397
|
+
<label class="md-nav__title" for="__nav_2_8_7">
|
|
2398
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2399
|
+
Virtualization
|
|
2400
|
+
</label>
|
|
2401
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
2402
|
+
|
|
2403
|
+
|
|
2404
|
+
|
|
2405
|
+
|
|
2406
|
+
|
|
2407
|
+
|
|
2408
|
+
<li class="md-nav__item">
|
|
2409
|
+
<a href="../models/virtualization/cluster.html" class="md-nav__link">
|
|
2410
|
+
Cluster
|
|
2411
|
+
</a>
|
|
2412
|
+
</li>
|
|
2413
|
+
|
|
2414
|
+
|
|
2415
|
+
|
|
2416
|
+
|
|
2417
|
+
|
|
2418
|
+
|
|
2419
|
+
|
|
2420
|
+
|
|
2421
|
+
|
|
2422
|
+
<li class="md-nav__item">
|
|
2423
|
+
<a href="../models/virtualization/clustergroup.html" class="md-nav__link">
|
|
2424
|
+
Cluster Group
|
|
2425
|
+
</a>
|
|
2426
|
+
</li>
|
|
2427
|
+
|
|
2428
|
+
|
|
2429
|
+
|
|
2430
|
+
|
|
2431
|
+
|
|
2432
|
+
|
|
2433
|
+
|
|
2434
|
+
|
|
2435
|
+
|
|
2436
|
+
<li class="md-nav__item">
|
|
2437
|
+
<a href="../models/virtualization/clustertype.html" class="md-nav__link">
|
|
2438
|
+
Cluster Type
|
|
2439
|
+
</a>
|
|
2440
|
+
</li>
|
|
2441
|
+
|
|
2442
|
+
|
|
2443
|
+
|
|
2444
|
+
|
|
2445
|
+
|
|
2446
|
+
|
|
2447
|
+
|
|
2448
|
+
|
|
2449
|
+
|
|
2450
|
+
<li class="md-nav__item">
|
|
2451
|
+
<a href="../models/virtualization/virtualmachine.html" class="md-nav__link">
|
|
2452
|
+
Virtual Machine
|
|
2453
|
+
</a>
|
|
2454
|
+
</li>
|
|
2455
|
+
|
|
2456
|
+
|
|
2457
|
+
|
|
2458
|
+
|
|
2459
|
+
|
|
2460
|
+
|
|
2461
|
+
|
|
2462
|
+
|
|
2463
|
+
|
|
2464
|
+
<li class="md-nav__item">
|
|
2465
|
+
<a href="../models/virtualization/vminterface.html" class="md-nav__link">
|
|
2466
|
+
VM Interface
|
|
2467
|
+
</a>
|
|
2468
|
+
</li>
|
|
2469
|
+
|
|
2470
|
+
|
|
2471
|
+
|
|
2472
|
+
|
|
2473
|
+
</ul>
|
|
2474
|
+
</nav>
|
|
2475
|
+
</li>
|
|
2476
|
+
|
|
2477
|
+
|
|
2478
|
+
|
|
2479
|
+
|
|
2480
|
+
</ul>
|
|
2481
|
+
</nav>
|
|
2482
|
+
</li>
|
|
2483
|
+
|
|
2484
|
+
|
|
2485
|
+
|
|
2486
|
+
|
|
2487
|
+
|
|
2488
|
+
|
|
2489
|
+
|
|
2490
|
+
|
|
2491
|
+
|
|
2492
|
+
|
|
2493
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
2494
|
+
|
|
2495
|
+
|
|
2496
|
+
|
|
2497
|
+
|
|
2498
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_9" >
|
|
2499
|
+
|
|
2500
|
+
|
|
2501
|
+
|
|
2502
|
+
<label class="md-nav__link" for="__nav_2_9" id="__nav_2_9_label" tabindex="0">
|
|
1349
2503
|
Additional Features
|
|
1350
2504
|
<span class="md-nav__icon md-icon"></span>
|
|
1351
2505
|
</label>
|
|
1352
2506
|
|
|
1353
|
-
<nav class="md-nav" data-md-level="2" aria-labelledby="
|
|
1354
|
-
<label class="md-nav__title" for="
|
|
2507
|
+
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_9_label" aria-expanded="false">
|
|
2508
|
+
<label class="md-nav__title" for="__nav_2_9">
|
|
1355
2509
|
<span class="md-nav__icon md-icon"></span>
|
|
1356
2510
|
Additional Features
|
|
1357
2511
|
</label>
|
|
@@ -1683,17 +2837,17 @@
|
|
|
1683
2837
|
|
|
1684
2838
|
|
|
1685
2839
|
|
|
1686
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
2840
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_10" >
|
|
1687
2841
|
|
|
1688
2842
|
|
|
1689
2843
|
|
|
1690
|
-
<label class="md-nav__link" for="
|
|
2844
|
+
<label class="md-nav__link" for="__nav_2_10" id="__nav_2_10_label" tabindex="0">
|
|
1691
2845
|
REST API
|
|
1692
2846
|
<span class="md-nav__icon md-icon"></span>
|
|
1693
2847
|
</label>
|
|
1694
2848
|
|
|
1695
|
-
<nav class="md-nav" data-md-level="2" aria-labelledby="
|
|
1696
|
-
<label class="md-nav__title" for="
|
|
2849
|
+
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_10_label" aria-expanded="false">
|
|
2850
|
+
<label class="md-nav__title" for="__nav_2_10">
|
|
1697
2851
|
<span class="md-nav__icon md-icon"></span>
|
|
1698
2852
|
REST API
|
|
1699
2853
|
</label>
|
|
@@ -1741,6 +2895,20 @@
|
|
|
1741
2895
|
|
|
1742
2896
|
|
|
1743
2897
|
|
|
2898
|
+
|
|
2899
|
+
|
|
2900
|
+
|
|
2901
|
+
|
|
2902
|
+
|
|
2903
|
+
<li class="md-nav__item">
|
|
2904
|
+
<a href="../rest-api/ui-related-endpoints.html" class="md-nav__link">
|
|
2905
|
+
UI Endpoints
|
|
2906
|
+
</a>
|
|
2907
|
+
</li>
|
|
2908
|
+
|
|
2909
|
+
|
|
2910
|
+
|
|
2911
|
+
|
|
1744
2912
|
</ul>
|
|
1745
2913
|
</nav>
|
|
1746
2914
|
</li>
|
|
@@ -1759,17 +2927,17 @@
|
|
|
1759
2927
|
|
|
1760
2928
|
|
|
1761
2929
|
|
|
1762
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
2930
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_11" >
|
|
1763
2931
|
|
|
1764
2932
|
|
|
1765
2933
|
|
|
1766
|
-
<label class="md-nav__link" for="
|
|
2934
|
+
<label class="md-nav__link" for="__nav_2_11" id="__nav_2_11_label" tabindex="0">
|
|
1767
2935
|
GraphQL API
|
|
1768
2936
|
<span class="md-nav__icon md-icon"></span>
|
|
1769
2937
|
</label>
|
|
1770
2938
|
|
|
1771
|
-
<nav class="md-nav" data-md-level="2" aria-labelledby="
|
|
1772
|
-
<label class="md-nav__title" for="
|
|
2939
|
+
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_11_label" aria-expanded="false">
|
|
2940
|
+
<label class="md-nav__title" for="__nav_2_11">
|
|
1773
2941
|
<span class="md-nav__icon md-icon"></span>
|
|
1774
2942
|
GraphQL API
|
|
1775
2943
|
</label>
|
|
@@ -2330,6 +3498,13 @@
|
|
|
2330
3498
|
Install markdownlint-cli
|
|
2331
3499
|
</a>
|
|
2332
3500
|
|
|
3501
|
+
</li>
|
|
3502
|
+
|
|
3503
|
+
<li class="md-nav__item">
|
|
3504
|
+
<a href="#install-npm" class="md-nav__link">
|
|
3505
|
+
Install npm
|
|
3506
|
+
</a>
|
|
3507
|
+
|
|
2333
3508
|
</li>
|
|
2334
3509
|
|
|
2335
3510
|
<li class="md-nav__item">
|
|
@@ -2410,6 +3585,20 @@
|
|
|
2410
3585
|
Starting the Development Server
|
|
2411
3586
|
</a>
|
|
2412
3587
|
|
|
3588
|
+
</li>
|
|
3589
|
+
|
|
3590
|
+
<li class="md-nav__item">
|
|
3591
|
+
<a href="#starting-the-nodejs-server" class="md-nav__link">
|
|
3592
|
+
Starting the Node.js Server
|
|
3593
|
+
</a>
|
|
3594
|
+
|
|
3595
|
+
</li>
|
|
3596
|
+
|
|
3597
|
+
<li class="md-nav__item">
|
|
3598
|
+
<a href="#starting-the-storybook-server" class="md-nav__link">
|
|
3599
|
+
Starting the Storybook Server
|
|
3600
|
+
</a>
|
|
3601
|
+
|
|
2413
3602
|
</li>
|
|
2414
3603
|
|
|
2415
3604
|
<li class="md-nav__item">
|
|
@@ -3291,6 +4480,13 @@
|
|
|
3291
4480
|
Install markdownlint-cli
|
|
3292
4481
|
</a>
|
|
3293
4482
|
|
|
4483
|
+
</li>
|
|
4484
|
+
|
|
4485
|
+
<li class="md-nav__item">
|
|
4486
|
+
<a href="#install-npm" class="md-nav__link">
|
|
4487
|
+
Install npm
|
|
4488
|
+
</a>
|
|
4489
|
+
|
|
3294
4490
|
</li>
|
|
3295
4491
|
|
|
3296
4492
|
<li class="md-nav__item">
|
|
@@ -3371,6 +4567,20 @@
|
|
|
3371
4567
|
Starting the Development Server
|
|
3372
4568
|
</a>
|
|
3373
4569
|
|
|
4570
|
+
</li>
|
|
4571
|
+
|
|
4572
|
+
<li class="md-nav__item">
|
|
4573
|
+
<a href="#starting-the-nodejs-server" class="md-nav__link">
|
|
4574
|
+
Starting the Node.js Server
|
|
4575
|
+
</a>
|
|
4576
|
+
|
|
4577
|
+
</li>
|
|
4578
|
+
|
|
4579
|
+
<li class="md-nav__item">
|
|
4580
|
+
<a href="#starting-the-storybook-server" class="md-nav__link">
|
|
4581
|
+
Starting the Storybook Server
|
|
4582
|
+
</a>
|
|
4583
|
+
|
|
3374
4584
|
</li>
|
|
3375
4585
|
|
|
3376
4586
|
<li class="md-nav__item">
|
|
@@ -3690,25 +4900,28 @@
|
|
|
3690
4900
|
<a id="__codelineno-17-14" name="__codelineno-17-14" href="#__codelineno-17-14"></a> destroy Destroy all containers and volumes.
|
|
3691
4901
|
<a id="__codelineno-17-15" name="__codelineno-17-15" href="#__codelineno-17-15"></a> docker-push Tags and pushes docker images to the appropriate repos, intended for release use only.
|
|
3692
4902
|
<a id="__codelineno-17-16" name="__codelineno-17-16" href="#__codelineno-17-16"></a> dumpdata Dump data from database to db_output file.
|
|
3693
|
-
<a id="__codelineno-17-17" name="__codelineno-17-17" href="#__codelineno-17-17"></a>
|
|
3694
|
-
<a id="__codelineno-17-18" name="__codelineno-17-18" href="#__codelineno-17-18"></a>
|
|
3695
|
-
<a id="__codelineno-17-19" name="__codelineno-17-19" href="#__codelineno-17-19"></a>
|
|
3696
|
-
<a id="__codelineno-17-20" name="__codelineno-17-20" href="#__codelineno-17-20"></a>
|
|
3697
|
-
<a id="__codelineno-17-21" name="__codelineno-17-21" href="#__codelineno-17-21"></a>
|
|
3698
|
-
<a id="__codelineno-17-22" name="__codelineno-17-22" href="#__codelineno-17-22"></a>
|
|
3699
|
-
<a id="__codelineno-17-23" name="__codelineno-17-23" href="#__codelineno-17-23"></a>
|
|
3700
|
-
<a id="__codelineno-17-24" name="__codelineno-17-24" href="#__codelineno-17-24"></a>
|
|
3701
|
-
<a id="__codelineno-17-25" name="__codelineno-17-25" href="#__codelineno-17-25"></a>
|
|
3702
|
-
<a id="__codelineno-17-26" name="__codelineno-17-26" href="#__codelineno-17-26"></a>
|
|
3703
|
-
<a id="__codelineno-17-27" name="__codelineno-17-27" href="#__codelineno-17-27"></a>
|
|
3704
|
-
<a id="__codelineno-17-28" name="__codelineno-17-28" href="#__codelineno-17-28"></a>
|
|
3705
|
-
<a id="__codelineno-17-29" name="__codelineno-17-29" href="#__codelineno-17-29"></a>
|
|
3706
|
-
<a id="__codelineno-17-30" name="__codelineno-17-30" href="#__codelineno-17-30"></a>
|
|
3707
|
-
<a id="__codelineno-17-31" name="__codelineno-17-31" href="#__codelineno-17-31"></a>
|
|
3708
|
-
<a id="__codelineno-17-32" name="__codelineno-17-32" href="#__codelineno-17-32"></a>
|
|
3709
|
-
<a id="__codelineno-17-33" name="__codelineno-17-33" href="#__codelineno-17-33"></a>
|
|
3710
|
-
<a id="__codelineno-17-34" name="__codelineno-17-34" href="#__codelineno-17-34"></a>
|
|
3711
|
-
<a id="__codelineno-17-35" name="__codelineno-17-35" href="#__codelineno-17-35"></a>
|
|
4903
|
+
<a id="__codelineno-17-17" name="__codelineno-17-17" href="#__codelineno-17-17"></a> eslint Check for ESLint rule compliance and other style issues.
|
|
4904
|
+
<a id="__codelineno-17-18" name="__codelineno-17-18" href="#__codelineno-17-18"></a> flake8 Check for PEP8 compliance and other style issues.
|
|
4905
|
+
<a id="__codelineno-17-19" name="__codelineno-17-19" href="#__codelineno-17-19"></a> hadolint Check Dockerfile for hadolint compliance and other style issues.
|
|
4906
|
+
<a id="__codelineno-17-20" name="__codelineno-17-20" href="#__codelineno-17-20"></a> integration-test Run Nautobot integration tests.
|
|
4907
|
+
<a id="__codelineno-17-21" name="__codelineno-17-21" href="#__codelineno-17-21"></a> loaddata Load data from file.
|
|
4908
|
+
<a id="__codelineno-17-22" name="__codelineno-17-22" href="#__codelineno-17-22"></a> makemigrations Perform makemigrations operation in Django.
|
|
4909
|
+
<a id="__codelineno-17-23" name="__codelineno-17-23" href="#__codelineno-17-23"></a> markdownlint Lint Markdown files.
|
|
4910
|
+
<a id="__codelineno-17-24" name="__codelineno-17-24" href="#__codelineno-17-24"></a> migrate Perform migrate operation in Django.
|
|
4911
|
+
<a id="__codelineno-17-25" name="__codelineno-17-25" href="#__codelineno-17-25"></a> nbshell Launch an interactive Nautobot shell.
|
|
4912
|
+
<a id="__codelineno-17-26" name="__codelineno-17-26" href="#__codelineno-17-26"></a> performance-test Run Nautobot performance tests.
|
|
4913
|
+
<a id="__codelineno-17-27" name="__codelineno-17-27" href="#__codelineno-17-27"></a> post-upgrade Performs Nautobot common post-upgrade operations using a single entrypoint.
|
|
4914
|
+
<a id="__codelineno-17-28" name="__codelineno-17-28" href="#__codelineno-17-28"></a> prettier Check Node.JS code style with Prettier.
|
|
4915
|
+
<a id="__codelineno-17-29" name="__codelineno-17-29" href="#__codelineno-17-29"></a> pylint Perform static analysis of Nautobot code.
|
|
4916
|
+
<a id="__codelineno-17-30" name="__codelineno-17-30" href="#__codelineno-17-30"></a> restart Gracefully restart containers.
|
|
4917
|
+
<a id="__codelineno-17-31" name="__codelineno-17-31" href="#__codelineno-17-31"></a> serve-docs Runs local instance of mkdocs serve (ctrl-c to stop).
|
|
4918
|
+
<a id="__codelineno-17-32" name="__codelineno-17-32" href="#__codelineno-17-32"></a> start Start Nautobot and its dependencies in detached mode.
|
|
4919
|
+
<a id="__codelineno-17-33" name="__codelineno-17-33" href="#__codelineno-17-33"></a> stop Stop Nautobot and its dependencies.
|
|
4920
|
+
<a id="__codelineno-17-34" name="__codelineno-17-34" href="#__codelineno-17-34"></a> tests Run all linters and unit tests.
|
|
4921
|
+
<a id="__codelineno-17-35" name="__codelineno-17-35" href="#__codelineno-17-35"></a> unittest Run Nautobot unit tests.
|
|
4922
|
+
<a id="__codelineno-17-36" name="__codelineno-17-36" href="#__codelineno-17-36"></a> unittest-coverage Report on code test coverage as measured by 'invoke unittest'.
|
|
4923
|
+
<a id="__codelineno-17-37" name="__codelineno-17-37" href="#__codelineno-17-37"></a> unittest-ui Run Nautobot UI unit tests.
|
|
4924
|
+
<a id="__codelineno-17-38" name="__codelineno-17-38" href="#__codelineno-17-38"></a> vscode Launch Visual Studio Code with the appropriate Environment variables to run in a container.
|
|
3712
4925
|
</code></pre></div>
|
|
3713
4926
|
<h4 id="using-docker-with-invoke">Using Docker with Invoke<a class="headerlink" href="#using-docker-with-invoke" title="Permanent link">¶</a></h4>
|
|
3714
4927
|
<p>A development environment can be easily started up from the root of the project using the following commands:</p>
|
|
@@ -3720,13 +4933,13 @@
|
|
|
3720
4933
|
</ul>
|
|
3721
4934
|
<p>Additional useful commands for the development environment:</p>
|
|
3722
4935
|
<ul>
|
|
3723
|
-
<li><code>invoke start [-s servicename]</code> - Starts Docker containers for Nautobot, PostgreSQL, Redis, Celery, and Celery Beat (or a specific container/service, such as <code>invoke start -s redis</code>) to run in the background with debug disabled</li>
|
|
4936
|
+
<li><code>invoke start [-s servicename]</code> - Starts Docker containers for Nautobot, PostgreSQL, Redis, NGINX, Node.js, Celery, and Celery Beat (or a specific container/service, such as <code>invoke start -s redis</code>) to run in the background with debug disabled</li>
|
|
3724
4937
|
<li><code>invoke cli [-s servicename]</code> - Launch a <code>bash</code> shell inside the specified service container (if none is specified, defaults to the Nautobot container)</li>
|
|
3725
4938
|
<li><code>invoke stop [-s servicename]</code> - Stops all containers (or a specific container/service) created by <code>invoke start</code></li>
|
|
3726
4939
|
</ul>
|
|
3727
4940
|
<div class="admonition note">
|
|
3728
4941
|
<p class="admonition-title">Note</p>
|
|
3729
|
-
<p>The mkdocs
|
|
4942
|
+
<p>The <code>mkdocs</code> and <code>storybook</code> containers (see later) are not started automatically by <code>invoke start</code> or <code>invoke debug</code>. If desired, these may be started manually with <code>invoke start -s mkdocs</code> or <code>invoke start -s storybook</code> as appropriate.</p>
|
|
3730
4943
|
</div>
|
|
3731
4944
|
<div class="admonition tip">
|
|
3732
4945
|
<p class="admonition-title">Tip</p>
|
|
@@ -3771,11 +4984,19 @@
|
|
|
3771
4984
|
<p><a href="https://github.com/igorshubovych/markdownlint-cli">markdownlint-cli</a> is a tool used to validate and lint Markdown files, such as Nautobot's documentation, to ensure that they are correctly constructed. On macOS with <a href="https://brew.sh/">Homebrew</a> you can install markdownlint-cli by running:</p>
|
|
3772
4985
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a>brew install markdownlint-cli
|
|
3773
4986
|
</code></pre></div>
|
|
4987
|
+
<h4 id="install-npm">Install npm<a class="headerlink" href="#install-npm" title="Permanent link">¶</a></h4>
|
|
4988
|
+
<p><a href="https://www.npmjs.com/">npm</a> is the tool used to install and compile the Nautobot front-end UI. On macOS with <a href="https://brew.sh">Homebrew</a> you can install npm by running:</p>
|
|
4989
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a>brew install npm
|
|
4990
|
+
</code></pre></div>
|
|
4991
|
+
<p>You should then move to the <code>nautobot_ui/</code> subdirectory and run <code>npm install</code> to install all of the JS dependencies for local development of the Nautobot UI:</p>
|
|
4992
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a>npm install
|
|
4993
|
+
</code></pre></div>
|
|
4994
|
+
<p>Be sure to switch back to the base directory of the repository after you do this.</p>
|
|
3774
4995
|
<h4 id="creating-a-python-virtual-environment">Creating a Python Virtual Environment<a class="headerlink" href="#creating-a-python-virtual-environment" title="Permanent link">¶</a></h4>
|
|
3775
4996
|
<p>A Python <a href="https://docs.python.org/3/tutorial/venv.html">virtual environment</a> (or <em>virtualenv</em>) is like a container for a set of Python packages. A virtualenv allow you to build environments suited to specific projects without interfering with system packages or other projects. When installed per the documentation, Nautobot uses a virtual environment in production.</p>
|
|
3776
4997
|
<p>For Nautobot development, we have selected Poetry, which will transparently create a virtualenv for you, automatically install all dependencies required for Nautobot to operate, and will also install the <code>nautobot-server</code> CLI command that you will utilize to interact with Nautobot from here on out.</p>
|
|
3777
4998
|
<p>Bootstrap your virtual environment using <code>poetry install</code>:</p>
|
|
3778
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
4999
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a>poetry install
|
|
3779
5000
|
</code></pre></div>
|
|
3780
5001
|
<div class="admonition hint">
|
|
3781
5002
|
<p class="admonition-title">Hint</p>
|
|
@@ -3783,44 +5004,44 @@
|
|
|
3783
5004
|
</div>
|
|
3784
5005
|
<p>This will create automatically create a virtualenv in your home directory, which houses a virtual copy of the Python executable and its related libraries and tooling. When running Nautobot for development, it will be run using the Python binary at found within the virtualenv.</p>
|
|
3785
5006
|
<p>Once created, you may activate the virtual environment using <code>poetry shell</code>:</p>
|
|
3786
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5007
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a>poetry shell
|
|
3787
5008
|
</code></pre></div>
|
|
3788
5009
|
<p>Example output:</p>
|
|
3789
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
3790
|
-
<a id="__codelineno-
|
|
3791
|
-
<a id="__codelineno-
|
|
3792
|
-
<a id="__codelineno-
|
|
5010
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a>Spawning shell within /home/example/.cache/pypoetry/virtualenvs/nautobot-Ams_xyDt-py3.8
|
|
5011
|
+
<a id="__codelineno-25-2" name="__codelineno-25-2" href="#__codelineno-25-2"></a>
|
|
5012
|
+
<a id="__codelineno-25-3" name="__codelineno-25-3" href="#__codelineno-25-3"></a>. /home/example/.cache/pypoetry/virtualenvs/nautobot-Ams_xyDt-py3.8/bin/activate
|
|
5013
|
+
<a id="__codelineno-25-4" name="__codelineno-25-4" href="#__codelineno-25-4"></a>(nautobot-Ams_xyDt-py3.8) $
|
|
3793
5014
|
</code></pre></div>
|
|
3794
5015
|
<p>Notice that the console prompt changes to indicate the active environment. This updates the necessary system environment variables to ensure that any Python scripts are run within the virtual environment.</p>
|
|
3795
5016
|
<p>Observe also that the <code>python</code> interpreter is bound within the virtualenv:</p>
|
|
3796
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5017
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a>which python
|
|
3797
5018
|
</code></pre></div>
|
|
3798
5019
|
<p>Example output:</p>
|
|
3799
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5020
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a>(nautobot-Ams_xyDt-py3.8) $ /home/example/.cache/pypoetry/virtualenvs/nautobot-Ams_xyDt-py3.8/bin/python
|
|
3800
5021
|
</code></pre></div>
|
|
3801
5022
|
<p>To exit the virtual shell, use <code>exit</code>:</p>
|
|
3802
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5023
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-28-1" name="__codelineno-28-1" href="#__codelineno-28-1"></a>exit
|
|
3803
5024
|
</code></pre></div>
|
|
3804
5025
|
<p>Example output:</p>
|
|
3805
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5026
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-29-1" name="__codelineno-29-1" href="#__codelineno-29-1"></a>$
|
|
3806
5027
|
</code></pre></div>
|
|
3807
5028
|
<h4 id="working-with-poetry">Working with Poetry<a class="headerlink" href="#working-with-poetry" title="Permanent link">¶</a></h4>
|
|
3808
5029
|
<p>Poetry automatically installs your dependencies. However, if you need to install any additional dependencies this can be done with <code>pip</code>. For example, if you really like using <code>ipython</code> for development:</p>
|
|
3809
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5030
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-30-1" name="__codelineno-30-1" href="#__codelineno-30-1"></a>pip3 install ipython
|
|
3810
5031
|
</code></pre></div>
|
|
3811
5032
|
<p>Example output:</p>
|
|
3812
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
3813
|
-
<a id="__codelineno-
|
|
3814
|
-
<a id="__codelineno-
|
|
5033
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-31-1" name="__codelineno-31-1" href="#__codelineno-31-1"></a>Collecting ipython
|
|
5034
|
+
<a id="__codelineno-31-2" name="__codelineno-31-2" href="#__codelineno-31-2"></a> Using cached ipython-7.20.0-py3-none-any.whl (784 kB)
|
|
5035
|
+
<a id="__codelineno-31-3" name="__codelineno-31-3" href="#__codelineno-31-3"></a> ...
|
|
3815
5036
|
</code></pre></div>
|
|
3816
5037
|
<ul>
|
|
3817
5038
|
<li>Install verify that you have the proper dependencies installed and are in the virtual environment via Poetry. This also ensures that you have the proper mkdocs themes installed.</li>
|
|
3818
5039
|
</ul>
|
|
3819
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
3820
|
-
<a id="__codelineno-
|
|
5040
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-32-1" name="__codelineno-32-1" href="#__codelineno-32-1"></a>poetry<span class="w"> </span>shell
|
|
5041
|
+
<a id="__codelineno-32-2" name="__codelineno-32-2" href="#__codelineno-32-2"></a>poetry<span class="w"> </span>install
|
|
3821
5042
|
</code></pre></div>
|
|
3822
5043
|
<p>It may not always be convenient to enter into the virtual shell just to run programs. You may also execute a given command ad hoc within the project's virtual shell by using <code>poetry run</code>:</p>
|
|
3823
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5044
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-33-1" name="__codelineno-33-1" href="#__codelineno-33-1"></a>poetry run mkdocs serve
|
|
3824
5045
|
</code></pre></div>
|
|
3825
5046
|
<p>Check out the <a href="https://python-poetry.org/docs/basic-usage/">Poetry usage guide</a> for more tips.</p>
|
|
3826
5047
|
<h4 id="configuring-nautobot">Configuring Nautobot<a class="headerlink" href="#configuring-nautobot" title="Permanent link">¶</a></h4>
|
|
@@ -3835,23 +5056,23 @@
|
|
|
3835
5056
|
<p>Nautobot's configuration file is <code>nautobot_config.py</code>.</p>
|
|
3836
5057
|
<h5 id="initializing-a-config">Initializing a Config<a class="headerlink" href="#initializing-a-config" title="Permanent link">¶</a></h5>
|
|
3837
5058
|
<p>You may also initialize a new configuration using <code>nautobot-server init</code>:</p>
|
|
3838
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5059
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-34-1" name="__codelineno-34-1" href="#__codelineno-34-1"></a>nautobot-server init
|
|
3839
5060
|
</code></pre></div>
|
|
3840
5061
|
<p>Example output:</p>
|
|
3841
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5062
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-35-1" name="__codelineno-35-1" href="#__codelineno-35-1"></a>Configuration file created at '/home/example/.nautobot/nautobot_config.py'
|
|
3842
5063
|
</code></pre></div>
|
|
3843
5064
|
<p>You may also specify alternate file locations. Please refer to <a href="../configuration/index.html">Configuring Nautobot</a> for how to do that.</p>
|
|
3844
5065
|
<h5 id="using-the-development-config">Using the Development Config<a class="headerlink" href="#using-the-development-config" title="Permanent link">¶</a></h5>
|
|
3845
5066
|
<p>A <code>nautobot_config.py</code> suitable for development purposes can be found at <code>development/nautobot_config.py</code>. You may customize the values there or utilize environment variables to override the default values.</p>
|
|
3846
5067
|
<p>If you want to use this file, initialize a config first, then copy this file to the default location Nautobot expects to find its config:</p>
|
|
3847
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5068
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-36-1" name="__codelineno-36-1" href="#__codelineno-36-1"></a>cp development/nautobot_config.py ~/.nautobot/nautobot_config.py
|
|
3848
5069
|
</code></pre></div>
|
|
3849
5070
|
<h5 id="required-settings">Required Settings<a class="headerlink" href="#required-settings" title="Permanent link">¶</a></h5>
|
|
3850
5071
|
<p>A newly created configuration includes sane defaults. If you need to customize them, edit your <code>nautobot_config.py</code> and update the following settings as required:</p>
|
|
3851
5072
|
<ul>
|
|
3852
5073
|
<li><a href="../configuration/required-settings.html#allowed_hosts"><code>ALLOWED_HOSTS</code></a>: This can be set to <code>["*"]</code> for development purposes and must be set if <code>DEBUG=False</code></li>
|
|
3853
5074
|
<li><a href="../configuration/required-settings.html#databases"><code>DATABASES</code></a>: Database connection parameters, if different from the defaults</li>
|
|
3854
|
-
<li><strong>Redis settings</strong>: Redis configuration requires multiple settings
|
|
5075
|
+
<li><strong>Redis settings</strong>: Redis configuration requires multiple settings. The defaults should be fine for development.</li>
|
|
3855
5076
|
<li><a href="../configuration/optional-settings.html#debug"><code>DEBUG</code></a>: Set to <code>True</code> to enable verbose exception logging and, if installed, the <a href="https://django-debug-toolbar.readthedocs.io/en/latest/">Django debug toolbar</a></li>
|
|
3856
5077
|
<li><a href="../configuration/optional-settings.html#extra-applications"><code>EXTRA_INSTALLED_APPS</code></a>: Optionally provide a list of extra Django apps/plugins you may desire to use for development</li>
|
|
3857
5078
|
</ul>
|
|
@@ -3895,23 +5116,69 @@
|
|
|
3895
5116
|
</tbody>
|
|
3896
5117
|
</table>
|
|
3897
5118
|
<p>For example:</p>
|
|
3898
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5119
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-37-1" name="__codelineno-37-1" href="#__codelineno-37-1"></a>nautobot-server runserver
|
|
3899
5120
|
</code></pre></div>
|
|
3900
5121
|
<p>Example output:</p>
|
|
3901
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
3902
|
-
<a id="__codelineno-
|
|
3903
|
-
<a id="__codelineno-
|
|
3904
|
-
<a id="__codelineno-
|
|
3905
|
-
<a id="__codelineno-
|
|
3906
|
-
<a id="__codelineno-
|
|
3907
|
-
<a id="__codelineno-
|
|
5122
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-38-1" name="__codelineno-38-1" href="#__codelineno-38-1"></a>Performing system checks...
|
|
5123
|
+
<a id="__codelineno-38-2" name="__codelineno-38-2" href="#__codelineno-38-2"></a>
|
|
5124
|
+
<a id="__codelineno-38-3" name="__codelineno-38-3" href="#__codelineno-38-3"></a>System check identified no issues (0 silenced).
|
|
5125
|
+
<a id="__codelineno-38-4" name="__codelineno-38-4" href="#__codelineno-38-4"></a>November 18, 2020 - 15:52:31
|
|
5126
|
+
<a id="__codelineno-38-5" name="__codelineno-38-5" href="#__codelineno-38-5"></a>Django version 3.1, using settings 'nautobot.core.settings'
|
|
5127
|
+
<a id="__codelineno-38-6" name="__codelineno-38-6" href="#__codelineno-38-6"></a>Starting development server at http://127.0.0.1:8080/
|
|
5128
|
+
<a id="__codelineno-38-7" name="__codelineno-38-7" href="#__codelineno-38-7"></a>Quit the server with CONTROL-C.
|
|
3908
5129
|
</code></pre></div>
|
|
3909
5130
|
<div class="admonition warning">
|
|
3910
5131
|
<p class="admonition-title">Warning</p>
|
|
3911
5132
|
<p>Do not use <code>poetry run nautobot-server runserver</code> as it will crash unless you also pass the <code>--noreload</code> flag, which somewhat defeats the purpose of using the development server. It is recommended to use <code>nautobot-server runserver</code> from within an active virtualenv (e.g. <code>poetry shell</code>). This is a <a href="https://github.com/python-poetry/poetry/issues/2435">known issue with Django and Poetry</a>.</p>
|
|
3912
5133
|
</div>
|
|
3913
5134
|
<p>Please see the <a href="https://docs.djangoproject.com/en/stable/ref/django-admin/#runserver">official Django documentation on <code>runserver</code></a> for more information.</p>
|
|
3914
|
-
<
|
|
5135
|
+
<div class="admonition note">
|
|
5136
|
+
<p class="admonition-title">Note</p>
|
|
5137
|
+
<p>When first started in Docker Compose, the Nautobot development server container will automatically install dependencies for building the React UI for Nautobot, then build this UI. This may take several minutes before the server becomes ready to accept web connections.</p>
|
|
5138
|
+
</div>
|
|
5139
|
+
<p>You can connect to the development server at <code>localhost:8080</code>, but normally you'll want to connect to the Node.js server instead (see below).</p>
|
|
5140
|
+
<h3 id="starting-the-nodejs-server">Starting the Node.js Server<a class="headerlink" href="#starting-the-nodejs-server" title="Permanent link">¶</a></h3>
|
|
5141
|
+
<p>In development, you should run a Node.js server instance as well. This will handle automatically rebuilding the UI when you make changes in the <code>nautobot/ui</code> directory.</p>
|
|
5142
|
+
<table>
|
|
5143
|
+
<thead>
|
|
5144
|
+
<tr>
|
|
5145
|
+
<th>Docker Compose Workflow</th>
|
|
5146
|
+
<th>Virtual Environment Workflow</th>
|
|
5147
|
+
</tr>
|
|
5148
|
+
</thead>
|
|
5149
|
+
<tbody>
|
|
5150
|
+
<tr>
|
|
5151
|
+
<td><code>invoke start</code></td>
|
|
5152
|
+
<td><code>cd nautobot/ui; npm run start</code></td>
|
|
5153
|
+
</tr>
|
|
5154
|
+
</tbody>
|
|
5155
|
+
</table>
|
|
5156
|
+
<div class="admonition note">
|
|
5157
|
+
<p class="admonition-title">Note</p>
|
|
5158
|
+
<p>In the Docker Compose workflow, the Node.js server will delay starting until the Nautobot development server has finished the initial UI build, which may take several minutes. This is normal.</p>
|
|
5159
|
+
</div>
|
|
5160
|
+
<p>You can connect to the Node.js server at <code>localhost:3000</code>.</p>
|
|
5161
|
+
<h3 id="starting-the-storybook-server">Starting the Storybook Server<a class="headerlink" href="#starting-the-storybook-server" title="Permanent link">¶</a></h3>
|
|
5162
|
+
<p>When working on the UI, you may find it useful to run a <a href="https://storybook.js.org/">Storybook</a> instance that provides interactive documentation of the <code>nautobot-ui</code> library used by Nautobot's user interface.</p>
|
|
5163
|
+
<table>
|
|
5164
|
+
<thead>
|
|
5165
|
+
<tr>
|
|
5166
|
+
<th>Docker Compose Workflow</th>
|
|
5167
|
+
<th>Virtual Environment Workflow</th>
|
|
5168
|
+
</tr>
|
|
5169
|
+
</thead>
|
|
5170
|
+
<tbody>
|
|
5171
|
+
<tr>
|
|
5172
|
+
<td><code>invoke start -s storybook</code></td>
|
|
5173
|
+
<td><code>TODO</code></td>
|
|
5174
|
+
</tr>
|
|
5175
|
+
</tbody>
|
|
5176
|
+
</table>
|
|
5177
|
+
<div class="admonition note">
|
|
5178
|
+
<p class="admonition-title">Note</p>
|
|
5179
|
+
<p>This container is not started by default when using <code>invoke start</code>. You must individually start it using <code>invoke start -s storybook</code>.</p>
|
|
5180
|
+
</div>
|
|
5181
|
+
<p>You can connect to Storybook at <code>localhost:6006</code>.</p>
|
|
3915
5182
|
<h3 id="starting-the-worker-server">Starting the Worker Server<a class="headerlink" href="#starting-the-worker-server" title="Permanent link">¶</a></h3>
|
|
3916
5183
|
<p>In order to run Nautobot Jobs or anything that requires a worker you must start a Celery worker.</p>
|
|
3917
5184
|
<p>The worker is started in Docker Workflow with <a href="https://pythonhosted.org/watchdog/">watchdog</a> and can be setup to be started with watchdog in the Virtual Environment Workflow. Watchdog provides a similar experience to the Django lightweight HTTP/WSGI for restarting your application automatically. Watchdog can watch for changes on your filesystem, this is helpful when adjusting existing Python files to not have to restart the celery worker when testing jobs.</p>
|
|
@@ -3951,21 +5218,21 @@
|
|
|
3951
5218
|
</tbody>
|
|
3952
5219
|
</table>
|
|
3953
5220
|
<p>For example:</p>
|
|
3954
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5221
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-39-1" name="__codelineno-39-1" href="#__codelineno-39-1"></a>nautobot-server<span class="w"> </span>nbshell
|
|
3955
5222
|
</code></pre></div>
|
|
3956
5223
|
<p>Example output:</p>
|
|
3957
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
3958
|
-
<a id="__codelineno-
|
|
3959
|
-
<a id="__codelineno-
|
|
3960
|
-
<a id="__codelineno-
|
|
3961
|
-
<a id="__codelineno-
|
|
3962
|
-
<a id="__codelineno-
|
|
3963
|
-
<a id="__codelineno-
|
|
3964
|
-
<a id="__codelineno-
|
|
3965
|
-
<a id="__codelineno-
|
|
3966
|
-
<a id="__codelineno-
|
|
3967
|
-
<a id="__codelineno-
|
|
3968
|
-
<a id="__codelineno-
|
|
5224
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-40-1" name="__codelineno-40-1" href="#__codelineno-40-1"></a># Shell Plus Model Imports
|
|
5225
|
+
<a id="__codelineno-40-2" name="__codelineno-40-2" href="#__codelineno-40-2"></a>...
|
|
5226
|
+
<a id="__codelineno-40-3" name="__codelineno-40-3" href="#__codelineno-40-3"></a># Shell Plus Django Imports
|
|
5227
|
+
<a id="__codelineno-40-4" name="__codelineno-40-4" href="#__codelineno-40-4"></a>...
|
|
5228
|
+
<a id="__codelineno-40-5" name="__codelineno-40-5" href="#__codelineno-40-5"></a># Django version 3.2.16
|
|
5229
|
+
<a id="__codelineno-40-6" name="__codelineno-40-6" href="#__codelineno-40-6"></a># Nautobot version 2.0.0a0
|
|
5230
|
+
<a id="__codelineno-40-7" name="__codelineno-40-7" href="#__codelineno-40-7"></a># Example Nautobot App version 1.0.0
|
|
5231
|
+
<a id="__codelineno-40-8" name="__codelineno-40-8" href="#__codelineno-40-8"></a>Python 3.8.16 (default, Mar 23 2023, 04:48:11)
|
|
5232
|
+
<a id="__codelineno-40-9" name="__codelineno-40-9" href="#__codelineno-40-9"></a>[GCC 10.2.1 20210110] on linux
|
|
5233
|
+
<a id="__codelineno-40-10" name="__codelineno-40-10" href="#__codelineno-40-10"></a>Type "help", "copyright", "credits" or "license" for more information.
|
|
5234
|
+
<a id="__codelineno-40-11" name="__codelineno-40-11" href="#__codelineno-40-11"></a>(InteractiveConsole)
|
|
5235
|
+
<a id="__codelineno-40-12" name="__codelineno-40-12" href="#__codelineno-40-12"></a>>>>
|
|
3969
5236
|
</code></pre></div>
|
|
3970
5237
|
<h3 id="post-upgrade-operations">Post-upgrade Operations<a class="headerlink" href="#post-upgrade-operations" title="Permanent link">¶</a></h3>
|
|
3971
5238
|
<p>There will be times where you're working with the bleeding edge of Nautobot from the <code>develop</code> branch or feature branches and will need to pull in database changes or run server operations.</p>
|
|
@@ -3992,22 +5259,22 @@
|
|
|
3992
5259
|
</div>
|
|
3993
5260
|
<p>Sometimes when files are renamed, moved, or deleted and you've been working in the same environment for a while, you can encounter weird behavior. If this happens, don't panic and nuke your environment.</p>
|
|
3994
5261
|
<p>First, use <code>pip3</code> to explicitly uninstall the Nautobot package from the environment:</p>
|
|
3995
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5262
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-41-1" name="__codelineno-41-1" href="#__codelineno-41-1"></a>pip3 uninstall -y nautobot
|
|
3996
5263
|
</code></pre></div>
|
|
3997
5264
|
<p>Example output:</p>
|
|
3998
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
3999
|
-
<a id="__codelineno-
|
|
4000
|
-
<a id="__codelineno-
|
|
5265
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-42-1" name="__codelineno-42-1" href="#__codelineno-42-1"></a>Found existing installation: nautobot 1.0.0b2
|
|
5266
|
+
<a id="__codelineno-42-2" name="__codelineno-42-2" href="#__codelineno-42-2"></a>Uninstalling nautobot-1.0.0b2:
|
|
5267
|
+
<a id="__codelineno-42-3" name="__codelineno-42-3" href="#__codelineno-42-3"></a> Successfully uninstalled nautobot-1.0.0b2
|
|
4001
5268
|
</code></pre></div>
|
|
4002
5269
|
<p>Then try to just have Poetry do the right thing by telling it to install again:</p>
|
|
4003
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5270
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-43-1" name="__codelineno-43-1" href="#__codelineno-43-1"></a>poetry install
|
|
4004
5271
|
</code></pre></div>
|
|
4005
5272
|
<p>Example output:</p>
|
|
4006
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
4007
|
-
<a id="__codelineno-
|
|
4008
|
-
<a id="__codelineno-
|
|
4009
|
-
<a id="__codelineno-
|
|
4010
|
-
<a id="__codelineno-
|
|
5273
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-44-1" name="__codelineno-44-1" href="#__codelineno-44-1"></a>Installing dependencies from lock file
|
|
5274
|
+
<a id="__codelineno-44-2" name="__codelineno-44-2" href="#__codelineno-44-2"></a>
|
|
5275
|
+
<a id="__codelineno-44-3" name="__codelineno-44-3" href="#__codelineno-44-3"></a>No dependencies to install or update
|
|
5276
|
+
<a id="__codelineno-44-4" name="__codelineno-44-4" href="#__codelineno-44-4"></a>
|
|
5277
|
+
<a id="__codelineno-44-5" name="__codelineno-44-5" href="#__codelineno-44-5"></a>Installing the current project: nautobot (1.0.0-beta.2)
|
|
4011
5278
|
</code></pre></div>
|
|
4012
5279
|
<h3 id="running-tests">Running Tests<a class="headerlink" href="#running-tests" title="Permanent link">¶</a></h3>
|
|
4013
5280
|
<p>Throughout the course of development, it's a good idea to occasionally run Nautobot's test suite to catch any potential errors. Tests come in two primary flavors: Unit tests and integration tests.</p>
|
|
@@ -4125,7 +5392,7 @@
|
|
|
4125
5392
|
</tbody>
|
|
4126
5393
|
</table>
|
|
4127
5394
|
<h3 id="verifying-code-style-and-static-analysis">Verifying Code Style and Static Analysis<a class="headerlink" href="#verifying-code-style-and-static-analysis" title="Permanent link">¶</a></h3>
|
|
4128
|
-
<p>To enforce best practices around consistent <a href="style-guide.html">coding style</a>, Nautobot uses <a href="https://flake8.pycqa.org/">Flake8</a
|
|
5395
|
+
<p>To enforce best practices around consistent <a href="style-guide.html">coding style</a>, Nautobot uses <a href="https://flake8.pycqa.org/">Flake8</a>, <a href="https://black.readthedocs.io/">Black</a>, <a href="https://eslint.org">ESLint</a>, and <a href="https://prettier.io">Prettier</a>. Additionally, <a href="https://en.wikipedia.org/wiki/Static_program_analysis">static analysis</a> of Nautobot code is performed by <a href="https://pylint.pycqa.org/en/latest/">Pylint</a>. You should run all of these commands and ensure that they pass fully with regard to your code changes before opening a pull request upstream.</p>
|
|
4129
5396
|
<table>
|
|
4130
5397
|
<thead>
|
|
4131
5398
|
<tr>
|
|
@@ -4143,6 +5410,14 @@
|
|
|
4143
5410
|
<td><code>black</code></td>
|
|
4144
5411
|
</tr>
|
|
4145
5412
|
<tr>
|
|
5413
|
+
<td><code>invoke eslint</code></td>
|
|
5414
|
+
<td><code>npx eslint .</code></td>
|
|
5415
|
+
</tr>
|
|
5416
|
+
<tr>
|
|
5417
|
+
<td><code>invoke prettier</code></td>
|
|
5418
|
+
<td><code>npx prettier -c .</code></td>
|
|
5419
|
+
</tr>
|
|
5420
|
+
<tr>
|
|
4146
5421
|
<td><code>invoke pylint</code></td>
|
|
4147
5422
|
<td><code>nautobot-server pylint nautobot tasks.py && nautobot-server pylint --recursive development/ examples/</code></td>
|
|
4148
5423
|
</tr>
|
|
@@ -4237,8 +5512,8 @@
|
|
|
4237
5512
|
</table>
|
|
4238
5513
|
<h2 id="submitting-pull-requests">Submitting Pull Requests<a class="headerlink" href="#submitting-pull-requests" title="Permanent link">¶</a></h2>
|
|
4239
5514
|
<p>Once you're happy with your work and have verified that all tests pass, commit your changes and push it upstream to your fork. Always provide descriptive (but not excessively verbose) commit messages. When working on a specific issue, be sure to reference it.</p>
|
|
4240
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
4241
|
-
<a id="__codelineno-
|
|
5515
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-45-1" name="__codelineno-45-1" href="#__codelineno-45-1"></a>git commit -m "Closes #1234: Add IPv5 support"
|
|
5516
|
+
<a id="__codelineno-45-2" name="__codelineno-45-2" href="#__codelineno-45-2"></a>git push origin
|
|
4242
5517
|
</code></pre></div>
|
|
4243
5518
|
<p>Once your fork has the new commit, submit a <a href="https://github.com/nautobot/nautobot/compare">pull request</a> to the Nautobot repo to propose the changes. Be sure to provide a detailed accounting of the changes being made and the reasons for doing so.</p>
|
|
4244
5519
|
<p>Once submitted, a maintainer will review your pull request and either merge it or request changes. If changes are needed, you can make them via new commits to your fork: The pull request will update automatically.</p>
|
|
@@ -4250,11 +5525,11 @@
|
|
|
4250
5525
|
<p>Below are common issues you might encounter in your development environment and how to address them.</p>
|
|
4251
5526
|
<h3 id="fatal-sorry-too-many-clients-already">FATAL: sorry, too many clients already<a class="headerlink" href="#fatal-sorry-too-many-clients-already" title="Permanent link">¶</a></h3>
|
|
4252
5527
|
<p>When using <code>nautobot-server runserver</code> to do development you might run into a traceback that looks something like this:</p>
|
|
4253
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
4254
|
-
<a id="__codelineno-
|
|
5528
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-46-1" name="__codelineno-46-1" href="#__codelineno-46-1"></a>Exception Type: OperationalError at /extras/tags/
|
|
5529
|
+
<a id="__codelineno-46-2" name="__codelineno-46-2" href="#__codelineno-46-2"></a>Exception Value: FATAL: sorry, too many clients already
|
|
4255
5530
|
</code></pre></div>
|
|
4256
5531
|
<p>The <code>runserver</code> development server is multi-threaded by default, which means that every request is creating its own connection. If you are doing some local testing or development that is resulting in a lot of connections to the database, pass <code>--nothreading</code> to the runserver command to disable threading:</p>
|
|
4257
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
5532
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-47-1" name="__codelineno-47-1" href="#__codelineno-47-1"></a>nautobot-server runserver --nothreading
|
|
4258
5533
|
</code></pre></div>
|
|
4259
5534
|
|
|
4260
5535
|
|