nautobot 2.4.0b1__py3-none-any.whl → 2.4.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of nautobot might be problematic. Click here for more details.
- nautobot/apps/__init__.py +1 -1
- nautobot/apps/api.py +8 -8
- nautobot/apps/change_logging.py +2 -2
- nautobot/apps/choices.py +4 -4
- nautobot/apps/events.py +3 -3
- nautobot/apps/factory.py +2 -2
- nautobot/apps/filters.py +1 -1
- nautobot/apps/forms.py +20 -20
- nautobot/apps/graphql.py +2 -2
- nautobot/apps/jobs.py +8 -8
- nautobot/apps/models.py +19 -19
- nautobot/apps/tables.py +1 -1
- nautobot/apps/testing.py +10 -10
- nautobot/apps/ui.py +2 -2
- nautobot/apps/utils.py +7 -7
- nautobot/apps/views.py +7 -7
- nautobot/circuits/api/serializers.py +1 -0
- nautobot/circuits/api/views.py +4 -8
- nautobot/circuits/tables.py +2 -1
- nautobot/circuits/templates/circuits/circuit_create.html +1 -7
- nautobot/circuits/tests/integration/test_circuits_bulk_operations.py +43 -0
- nautobot/circuits/tests/integration/test_relationships.py +1 -1
- nautobot/circuits/views.py +3 -3
- nautobot/cloud/api/views.py +6 -10
- nautobot/cloud/models.py +1 -1
- nautobot/cloud/views.py +0 -16
- nautobot/core/api/constants.py +11 -0
- nautobot/core/api/fields.py +5 -5
- nautobot/core/api/filter_backends.py +3 -9
- nautobot/core/api/schema.py +13 -2
- nautobot/core/api/serializers.py +40 -34
- nautobot/core/api/views.py +56 -4
- nautobot/core/apps/__init__.py +0 -5
- nautobot/core/celery/log.py +4 -4
- nautobot/core/celery/schedulers.py +2 -2
- nautobot/core/choices.py +2 -2
- nautobot/core/events/__init__.py +3 -3
- nautobot/core/filters.py +67 -35
- nautobot/core/forms/__init__.py +19 -19
- nautobot/core/forms/fields.py +14 -11
- nautobot/core/forms/forms.py +33 -2
- nautobot/core/graphql/types.py +1 -1
- nautobot/core/jobs/__init__.py +28 -7
- nautobot/core/jobs/bulk_actions.py +285 -0
- nautobot/core/jobs/cleanup.py +48 -12
- nautobot/core/jobs/groups.py +1 -1
- nautobot/core/management/commands/validate_models.py +1 -1
- nautobot/core/models/__init__.py +3 -1
- nautobot/core/models/query_functions.py +2 -2
- nautobot/core/models/tree_queries.py +6 -3
- nautobot/core/settings.py +29 -2
- nautobot/core/settings.yaml +21 -0
- nautobot/core/tables.py +79 -61
- nautobot/core/templates/about.html +67 -0
- nautobot/core/templates/generic/object_bulk_destroy.html +1 -1
- nautobot/core/templates/inc/media.html +3 -0
- nautobot/core/templates/inc/nav_menu.html +1 -0
- nautobot/core/templates/inc/tenancy_form_panel.html +9 -0
- nautobot/core/templates/inc/tenant_table_row.html +11 -0
- nautobot/core/templates/nautobot_config.py.j2 +13 -0
- nautobot/core/templates/search.html +7 -0
- nautobot/core/templates/utilities/render_jinja2.html +1 -1
- nautobot/core/templates/utilities/templatetags/tag.html +1 -1
- nautobot/core/templates/utilities/theme_preview.html +7 -0
- nautobot/core/templatetags/helpers.py +11 -2
- nautobot/core/testing/__init__.py +8 -8
- nautobot/core/testing/api.py +170 -15
- nautobot/core/testing/filters.py +45 -10
- nautobot/core/testing/forms.py +2 -0
- nautobot/core/testing/integration.py +514 -5
- nautobot/core/testing/mixins.py +7 -2
- nautobot/core/testing/views.py +44 -29
- nautobot/core/tests/integration/test_app_home.py +0 -1
- nautobot/core/tests/integration/test_app_navbar.py +0 -1
- nautobot/core/tests/integration/test_filters.py +0 -2
- nautobot/core/tests/integration/test_home.py +0 -1
- nautobot/core/tests/integration/test_navbar.py +0 -1
- nautobot/core/tests/integration/test_view_authentication.py +1 -0
- nautobot/core/tests/runner.py +1 -1
- nautobot/core/tests/test_api.py +98 -1
- nautobot/core/tests/test_csv.py +25 -3
- nautobot/core/tests/test_filters.py +209 -246
- nautobot/core/tests/test_forms.py +1 -0
- nautobot/core/tests/test_jobs.py +492 -1
- nautobot/core/tests/test_models.py +9 -0
- nautobot/core/tests/test_settings_schema.py +7 -0
- nautobot/core/tests/test_tables.py +100 -0
- nautobot/core/tests/test_utils.py +63 -1
- nautobot/core/tests/test_views.py +30 -3
- nautobot/core/ui/nav.py +1 -0
- nautobot/core/ui/object_detail.py +15 -1
- nautobot/core/urls.py +11 -0
- nautobot/core/utils/git.py +7 -2
- nautobot/core/utils/lookup.py +11 -8
- nautobot/core/utils/querysets.py +64 -0
- nautobot/core/utils/requests.py +24 -9
- nautobot/core/views/__init__.py +42 -0
- nautobot/core/views/generic.py +131 -197
- nautobot/core/views/mixins.py +136 -41
- nautobot/core/views/renderers.py +6 -6
- nautobot/core/views/utils.py +2 -2
- nautobot/dcim/api/serializers.py +56 -64
- nautobot/dcim/api/views.py +47 -113
- nautobot/dcim/constants.py +6 -13
- nautobot/dcim/factory.py +6 -1
- nautobot/dcim/filters/__init__.py +31 -2
- nautobot/dcim/forms.py +48 -17
- nautobot/dcim/graphql/types.py +2 -2
- nautobot/dcim/migrations/0067_controllermanageddevicegroup_tenant.py +25 -0
- nautobot/dcim/models/__init__.py +1 -1
- nautobot/dcim/models/device_component_templates.py +2 -2
- nautobot/dcim/models/device_components.py +22 -20
- nautobot/dcim/models/devices.py +10 -1
- nautobot/dcim/models/locations.py +3 -3
- nautobot/dcim/models/power.py +6 -5
- nautobot/dcim/models/racks.py +4 -4
- nautobot/dcim/tables/__init__.py +3 -3
- nautobot/dcim/tables/devices.py +9 -6
- nautobot/dcim/tables/devicetypes.py +2 -2
- nautobot/dcim/tables/racks.py +1 -1
- nautobot/dcim/templates/dcim/cable.html +1 -1
- nautobot/dcim/templates/dcim/controller_create.html +1 -7
- nautobot/dcim/templates/dcim/controller_retrieve.html +1 -9
- nautobot/dcim/templates/dcim/controllermanageddevicegroup_create.html +2 -0
- nautobot/dcim/templates/dcim/controllermanageddevicegroup_retrieve.html +5 -0
- nautobot/dcim/templates/dcim/device/base.html +1 -1
- nautobot/dcim/templates/dcim/device.html +3 -11
- nautobot/dcim/templates/dcim/device_component.html +1 -1
- nautobot/dcim/templates/dcim/device_edit.html +36 -37
- nautobot/dcim/templates/dcim/devicetype.html +1 -1
- nautobot/dcim/templates/dcim/location.html +2 -10
- nautobot/dcim/templates/dcim/location_edit.html +1 -7
- nautobot/dcim/templates/dcim/locationtype.html +1 -1
- nautobot/dcim/templates/dcim/locationtype_retrieve.html +1 -1
- nautobot/dcim/templates/dcim/manufacturer.html +1 -1
- nautobot/dcim/templates/dcim/platform.html +1 -1
- nautobot/dcim/templates/dcim/powerfeed.html +1 -1
- nautobot/dcim/templates/dcim/powerpanel.html +1 -1
- nautobot/dcim/templates/dcim/rack.html +2 -10
- nautobot/dcim/templates/dcim/rack_edit.html +1 -7
- nautobot/dcim/templates/dcim/rackgroup.html +1 -1
- nautobot/dcim/templates/dcim/rackreservation.html +3 -11
- nautobot/dcim/templates/dcim/virtualchassis.html +1 -1
- nautobot/dcim/templates/dcim/virtualdevicecontext_retrieve.html +1 -9
- nautobot/dcim/templates/dcim/virtualdevicecontext_update.html +1 -7
- nautobot/dcim/tests/integration/test_controller.py +62 -0
- nautobot/dcim/tests/integration/test_controller_managed_device_group.py +71 -0
- nautobot/dcim/tests/integration/test_device_bulk_operations.py +30 -0
- nautobot/dcim/tests/integration/test_location_bulk_operations.py +43 -0
- nautobot/dcim/tests/test_api.py +16 -5
- nautobot/dcim/tests/test_filters.py +33 -0
- nautobot/dcim/tests/test_forms.py +51 -2
- nautobot/dcim/tests/test_graphql.py +52 -0
- nautobot/dcim/tests/test_jobs.py +118 -0
- nautobot/dcim/tests/test_models.py +52 -9
- nautobot/dcim/tests/test_views.py +30 -84
- nautobot/dcim/views.py +13 -28
- nautobot/extras/api/customfields.py +2 -2
- nautobot/extras/api/serializers.py +123 -85
- nautobot/extras/api/views.py +33 -30
- nautobot/extras/constants.py +3 -0
- nautobot/extras/datasources/git.py +125 -0
- nautobot/extras/filters/__init__.py +8 -6
- nautobot/extras/forms/base.py +2 -2
- nautobot/extras/forms/forms.py +139 -31
- nautobot/extras/forms/mixins.py +14 -6
- nautobot/extras/group_sync.py +3 -3
- nautobot/extras/health_checks.py +1 -2
- nautobot/extras/jobs.py +85 -18
- nautobot/extras/managers.py +3 -1
- nautobot/extras/migrations/0018_joblog_data_migration.py +7 -9
- nautobot/extras/migrations/0120_job_is_singleton_job_is_singleton_override.py +22 -0
- nautobot/extras/migrations/0121_alter_team_contacts.py +17 -0
- nautobot/extras/migrations/0122_add_graphqlquery_owner_content_type.py +34 -0
- nautobot/extras/models/__init__.py +1 -1
- nautobot/extras/models/contacts.py +1 -1
- nautobot/extras/models/customfields.py +41 -23
- nautobot/extras/models/datasources.py +85 -0
- nautobot/extras/models/groups.py +11 -9
- nautobot/extras/models/jobs.py +23 -4
- nautobot/extras/models/models.py +17 -2
- nautobot/extras/models/relationships.py +17 -5
- nautobot/extras/plugins/__init__.py +13 -2
- nautobot/extras/plugins/marketplace_manifest.yml +84 -79
- nautobot/extras/plugins/tables.py +16 -14
- nautobot/extras/plugins/views.py +65 -69
- nautobot/extras/registry.py +1 -1
- nautobot/extras/secrets/__init__.py +2 -2
- nautobot/extras/signals.py +15 -1
- nautobot/extras/tables.py +7 -5
- nautobot/extras/templates/extras/computedfield.html +1 -1
- nautobot/extras/templates/extras/configcontext.html +1 -1
- nautobot/extras/templates/extras/configcontextschema.html +1 -1
- nautobot/extras/templates/extras/customfield.html +1 -1
- nautobot/extras/templates/extras/customlink.html +1 -1
- nautobot/extras/templates/extras/dynamicgroup.html +2 -10
- nautobot/extras/templates/extras/exporttemplate.html +1 -1
- nautobot/extras/templates/extras/gitrepository.html +1 -1
- nautobot/extras/templates/extras/graphqlquery.html +1 -1
- nautobot/extras/templates/extras/job_detail.html +17 -1
- nautobot/extras/templates/extras/job_edit.html +1 -0
- nautobot/extras/templates/extras/jobbutton_retrieve.html +1 -1
- nautobot/extras/templates/extras/jobhook.html +1 -1
- nautobot/extras/templates/extras/jobqueue_retrieve.html +1 -9
- nautobot/extras/templates/extras/jobresult.html +1 -1
- nautobot/extras/templates/extras/marketplace.html +29 -11
- nautobot/extras/templates/extras/objectchange.html +1 -1
- nautobot/extras/templates/extras/plugin_detail.html +33 -16
- nautobot/extras/templates/extras/plugins_tiles.html +21 -10
- nautobot/extras/templates/extras/relationship.html +1 -63
- nautobot/extras/templates/extras/role_retrieve.html +1 -1
- nautobot/extras/templates/extras/scheduledjob.html +1 -1
- nautobot/extras/templates/extras/secret.html +1 -1
- nautobot/extras/templates/extras/secretsgroup.html +1 -1
- nautobot/extras/templates/extras/status.html +1 -1
- nautobot/extras/templates/extras/tag.html +1 -1
- nautobot/extras/templates/extras/webhook.html +1 -1
- nautobot/extras/templatetags/job_buttons.py +4 -4
- nautobot/extras/test_jobs/api_test_job.py +1 -1
- nautobot/extras/test_jobs/atomic_transaction.py +2 -2
- nautobot/extras/test_jobs/dry_run.py +1 -1
- nautobot/extras/test_jobs/fail.py +5 -5
- nautobot/extras/test_jobs/file_output.py +1 -1
- nautobot/extras/test_jobs/file_upload_fail.py +1 -1
- nautobot/extras/test_jobs/file_upload_pass.py +1 -1
- nautobot/extras/test_jobs/ipaddress_vars.py +3 -1
- nautobot/extras/test_jobs/jobs_module/jobs_submodule/jobs.py +1 -1
- nautobot/extras/test_jobs/location_with_custom_field.py +1 -1
- nautobot/extras/test_jobs/log_redaction.py +1 -1
- nautobot/extras/test_jobs/log_skip_db_logging.py +1 -1
- nautobot/extras/test_jobs/modify_db.py +1 -1
- nautobot/extras/test_jobs/object_var_optional.py +1 -1
- nautobot/extras/test_jobs/object_var_required.py +1 -1
- nautobot/extras/test_jobs/object_vars.py +1 -1
- nautobot/extras/test_jobs/pass.py +3 -3
- nautobot/extras/test_jobs/profiling.py +1 -1
- nautobot/extras/test_jobs/relative_import.py +3 -3
- nautobot/extras/test_jobs/singleton.py +16 -0
- nautobot/extras/test_jobs/soft_time_limit_greater_than_time_limit.py +1 -1
- nautobot/extras/test_jobs/task_queues.py +1 -1
- nautobot/extras/tests/git_data/01-valid-files/graphql_queries/device_interfaces.gql +8 -0
- nautobot/extras/tests/git_data/01-valid-files/graphql_queries/device_names.gql +5 -0
- nautobot/extras/tests/git_data/02-invalid-files/graphql_queries/bad_device_names.gql +5 -0
- nautobot/extras/tests/git_helper.py +9 -1
- nautobot/extras/tests/integration/__init__.py +29 -16
- nautobot/extras/tests/integration/test_plugin_banner.py +0 -2
- nautobot/extras/tests/test_api.py +19 -13
- nautobot/extras/tests/test_customfields.py +50 -52
- nautobot/extras/tests/test_datasources.py +29 -1
- nautobot/extras/tests/test_dynamicgroups.py +1 -1
- nautobot/extras/tests/test_filters.py +6 -6
- nautobot/extras/tests/test_forms.py +33 -1
- nautobot/extras/tests/test_jobs.py +178 -32
- nautobot/extras/tests/test_models.py +299 -10
- nautobot/extras/tests/test_plugins.py +62 -9
- nautobot/extras/tests/test_relationships.py +120 -9
- nautobot/extras/tests/test_utils.py +22 -1
- nautobot/extras/tests/test_views.py +56 -194
- nautobot/extras/utils.py +20 -10
- nautobot/extras/views.py +85 -110
- nautobot/ipam/api/fields.py +3 -3
- nautobot/ipam/api/serializers.py +41 -33
- nautobot/ipam/api/views.py +68 -117
- nautobot/ipam/factory.py +1 -1
- nautobot/ipam/filters.py +3 -2
- nautobot/ipam/lookups.py +101 -62
- nautobot/ipam/models.py +74 -18
- nautobot/ipam/querysets.py +2 -2
- nautobot/ipam/tables.py +25 -9
- nautobot/ipam/templates/ipam/ipaddress.html +2 -10
- nautobot/ipam/templates/ipam/ipaddress_bulk_add.html +1 -7
- nautobot/ipam/templates/ipam/ipaddress_edit.html +1 -7
- nautobot/ipam/templates/ipam/prefix.html +2 -10
- nautobot/ipam/templates/ipam/prefix_edit.html +1 -7
- nautobot/ipam/templates/ipam/rir.html +1 -1
- nautobot/ipam/templates/ipam/routetarget.html +1 -1
- nautobot/ipam/templates/ipam/service.html +1 -1
- nautobot/ipam/templates/ipam/vlan.html +2 -10
- nautobot/ipam/templates/ipam/vlan_edit.html +1 -7
- nautobot/ipam/templates/ipam/vlangroup.html +1 -1
- nautobot/ipam/templates/ipam/vrf.html +1 -1
- nautobot/ipam/templates/ipam/vrf_edit.html +1 -7
- nautobot/ipam/tests/test_api.py +436 -3
- nautobot/ipam/tests/test_forms.py +49 -47
- nautobot/ipam/tests/test_migrations.py +30 -30
- nautobot/ipam/tests/test_models.py +119 -34
- nautobot/ipam/tests/test_querysets.py +63 -1
- nautobot/ipam/tests/test_utils.py +41 -2
- nautobot/ipam/tests/test_views.py +3 -0
- nautobot/ipam/utils/__init__.py +54 -17
- nautobot/ipam/views.py +61 -87
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.css.map +1 -1
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.min.css.map +1 -1
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.css +40 -2
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.css.map +1 -1
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.min.css +1 -1
- nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.min.css.map +1 -1
- nautobot/project-static/docs/404.html +131 -14
- nautobot/project-static/docs/apps/index.html +131 -14
- nautobot/project-static/docs/apps/nautobot-apps.html +132 -16
- nautobot/project-static/docs/assets/_mkdocstrings.css +25 -1
- nautobot/project-static/docs/assets/javascripts/{bundle.83f73b43.min.js → bundle.60a45f97.min.js} +2 -2
- nautobot/project-static/docs/assets/javascripts/{bundle.83f73b43.min.js.map → bundle.60a45f97.min.js.map} +2 -2
- nautobot/project-static/docs/assets/javascripts/workers/{search.6ce7567c.min.js → search.f8cc74c7.min.js} +1 -1
- nautobot/project-static/docs/assets/javascripts/workers/{search.6ce7567c.min.js.map → search.f8cc74c7.min.js.map} +1 -1
- nautobot/project-static/docs/assets/stylesheets/{main.6f8fc17f.min.css → main.a40c8224.min.css} +1 -1
- nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +147 -20
- nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +144 -17
- nautobot/project-static/docs/code-reference/nautobot/apps/api.html +459 -132
- nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +175 -28
- nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +180 -31
- nautobot/project-static/docs/code-reference/nautobot/apps/config.html +138 -16
- nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +137 -15
- nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +164 -27
- nautobot/project-static/docs/code-reference/nautobot/apps/events.html +187 -38
- nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +193 -31
- nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +216 -48
- nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +324 -75
- nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +666 -175
- nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +194 -46
- nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +538 -177
- nautobot/project-static/docs/code-reference/nautobot/apps/models.html +578 -221
- nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +145 -18
- nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +156 -25
- nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +492 -65
- nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +705 -215
- nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +943 -422
- nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +144 -17
- nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +619 -200
- nautobot/project-static/docs/code-reference/nautobot/apps/views.html +474 -159
- nautobot/project-static/docs/development/apps/api/configuration-view.html +131 -14
- nautobot/project-static/docs/development/apps/api/database-backend-config.html +131 -14
- nautobot/project-static/docs/development/apps/api/models/django-admin.html +131 -14
- nautobot/project-static/docs/development/apps/api/models/global-search.html +131 -14
- nautobot/project-static/docs/development/apps/api/models/graphql.html +131 -14
- nautobot/project-static/docs/development/apps/api/models/index.html +131 -14
- nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +131 -14
- nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +131 -14
- nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +131 -14
- nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +131 -14
- nautobot/project-static/docs/development/apps/api/platform-features/index.html +131 -14
- nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +131 -14
- nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +131 -14
- nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +131 -14
- nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +131 -14
- nautobot/project-static/docs/development/apps/api/platform-features/table-extensions.html +153 -17
- nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +131 -14
- nautobot/project-static/docs/development/apps/api/prometheus.html +131 -14
- nautobot/project-static/docs/development/apps/api/setup.html +131 -14
- nautobot/project-static/docs/development/apps/api/testing.html +131 -14
- nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +131 -14
- nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +131 -14
- nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +131 -14
- nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +131 -14
- nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +131 -14
- nautobot/project-static/docs/development/apps/api/views/base-template.html +131 -14
- nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +131 -14
- nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +131 -14
- nautobot/project-static/docs/development/apps/api/views/help-documentation.html +131 -14
- nautobot/project-static/docs/development/apps/api/views/index.html +131 -14
- nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +131 -14
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +131 -14
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +131 -14
- nautobot/project-static/docs/development/apps/api/views/notes.html +131 -14
- nautobot/project-static/docs/development/apps/api/views/rest-api.html +137 -16
- nautobot/project-static/docs/development/apps/api/views/urls.html +131 -14
- nautobot/project-static/docs/development/apps/index.html +131 -14
- nautobot/project-static/docs/development/apps/migration/code-updates.html +131 -14
- nautobot/project-static/docs/development/apps/migration/dependency-updates.html +131 -14
- nautobot/project-static/docs/development/apps/migration/from-v1.html +131 -14
- nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +131 -14
- nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +131 -14
- nautobot/project-static/docs/development/apps/migration/model-updates/global.html +131 -14
- nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +131 -14
- nautobot/project-static/docs/development/apps/migration/ui-component-framework/best-practices.html +135 -18
- nautobot/project-static/docs/development/apps/migration/ui-component-framework/custom-content.html +131 -14
- nautobot/project-static/docs/development/apps/migration/ui-component-framework/index.html +297 -25
- nautobot/project-static/docs/development/apps/migration/ui-component-framework/migration-steps.html +131 -14
- nautobot/project-static/docs/development/apps/porting-from-netbox.html +131 -14
- nautobot/project-static/docs/development/core/application-registry.html +131 -14
- nautobot/project-static/docs/development/core/best-practices.html +131 -14
- nautobot/project-static/docs/development/core/bootstrap-ui.html +131 -14
- nautobot/project-static/docs/development/core/caching.html +131 -14
- nautobot/project-static/docs/development/core/controllers.html +131 -14
- nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +158 -84
- nautobot/project-static/docs/development/core/generic-views.html +131 -14
- nautobot/project-static/docs/development/core/getting-started.html +334 -234
- nautobot/project-static/docs/development/core/homepage.html +134 -17
- nautobot/project-static/docs/development/core/index.html +131 -14
- nautobot/project-static/docs/development/core/minikube-dev-environment-for-k8s-jobs.html +9829 -0
- nautobot/project-static/docs/development/core/model-checklist.html +141 -22
- nautobot/project-static/docs/development/core/model-features.html +131 -14
- nautobot/project-static/docs/development/core/natural-keys.html +131 -14
- nautobot/project-static/docs/development/core/navigation-menu.html +131 -14
- nautobot/project-static/docs/development/core/release-checklist.html +134 -17
- nautobot/project-static/docs/development/core/role-internals.html +131 -14
- nautobot/project-static/docs/development/core/settings.html +131 -14
- nautobot/project-static/docs/development/core/style-guide.html +134 -17
- nautobot/project-static/docs/development/core/templates.html +132 -15
- nautobot/project-static/docs/development/core/testing.html +131 -14
- nautobot/project-static/docs/development/core/ui-component-framework.html +454 -283
- nautobot/project-static/docs/development/core/user-preferences.html +131 -14
- nautobot/project-static/docs/development/index.html +131 -14
- nautobot/project-static/docs/development/jobs/index.html +301 -132
- nautobot/project-static/docs/development/jobs/migration/from-v1.html +131 -14
- nautobot/project-static/docs/index.html +139 -33
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_edit.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_edit_button.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_list_nav.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_list_view.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_queue.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_queue_add.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_queue_config.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_result_completed.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_result_nav.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_result_pending.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_run_form.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_nautobot_login.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_run_job.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_run_scheduled_job_form.png +0 -0
- nautobot/project-static/docs/media/development/core/kubernetes/k8s_scheduled_job_result.png +0 -0
- nautobot/project-static/docs/media/development/core/ui-component-framework/buttons-example.png +0 -0
- nautobot/project-static/docs/media/development/core/ui-component-framework/cluster-type-before-after-example.png +0 -0
- nautobot/project-static/docs/media/development/core/ui-component-framework/object-fields-panel-example_2.png +0 -0
- nautobot/project-static/docs/media/development/core/ui-component-framework/stats-panel-example-code.png +0 -0
- nautobot/project-static/docs/objects.inv +0 -0
- nautobot/project-static/docs/overview/application_stack.html +132 -17
- nautobot/project-static/docs/overview/design_philosophy.html +131 -14
- nautobot/project-static/docs/release-notes/index.html +137 -22
- nautobot/project-static/docs/release-notes/version-1.0.html +319 -203
- nautobot/project-static/docs/release-notes/version-1.1.html +316 -200
- nautobot/project-static/docs/release-notes/version-1.2.html +391 -275
- nautobot/project-static/docs/release-notes/version-1.3.html +417 -301
- nautobot/project-static/docs/release-notes/version-1.4.html +502 -387
- nautobot/project-static/docs/release-notes/version-1.5.html +690 -576
- nautobot/project-static/docs/release-notes/version-1.6.html +989 -457
- nautobot/project-static/docs/release-notes/version-2.0.html +613 -499
- nautobot/project-static/docs/release-notes/version-2.1.html +448 -334
- nautobot/project-static/docs/release-notes/version-2.2.html +441 -327
- nautobot/project-static/docs/release-notes/version-2.3.html +1171 -451
- nautobot/project-static/docs/release-notes/version-2.4.html +800 -111
- nautobot/project-static/docs/requirements.txt +2 -2
- nautobot/project-static/docs/search/search_index.json +1 -1
- nautobot/project-static/docs/sitemap.xml +303 -287
- nautobot/project-static/docs/sitemap.xml.gz +0 -0
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +131 -14
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +131 -14
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +133 -16
- nautobot/project-static/docs/user-guide/administration/configuration/index.html +131 -14
- nautobot/project-static/docs/user-guide/administration/configuration/redis.html +131 -14
- nautobot/project-static/docs/user-guide/administration/configuration/settings.html +195 -18
- nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +131 -14
- nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +134 -17
- nautobot/project-static/docs/user-guide/administration/guides/docker.html +131 -14
- nautobot/project-static/docs/user-guide/administration/guides/health-checks.html +131 -14
- nautobot/project-static/docs/user-guide/administration/guides/permissions.html +131 -14
- nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +131 -14
- nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +131 -14
- nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +131 -14
- nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +133 -16
- nautobot/project-static/docs/user-guide/administration/guides/selinux-troubleshooting.html +131 -14
- nautobot/project-static/docs/user-guide/administration/installation/app-install.html +131 -14
- nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +131 -14
- nautobot/project-static/docs/user-guide/administration/installation/http-server.html +151 -18
- nautobot/project-static/docs/user-guide/administration/installation/index.html +131 -14
- nautobot/project-static/docs/user-guide/administration/installation/install_system.html +132 -15
- nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +131 -14
- nautobot/project-static/docs/user-guide/administration/installation/services.html +131 -14
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +131 -14
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +131 -14
- nautobot/project-static/docs/user-guide/administration/security/index.html +9420 -0
- nautobot/project-static/docs/user-guide/administration/security/notices.html +9843 -0
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +131 -14
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +131 -14
- nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +131 -14
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +131 -14
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +131 -14
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +131 -14
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +131 -14
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +134 -18
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +131 -14
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +131 -14
- nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualdevicecontext.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +135 -22
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +134 -17
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/wireless/index.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/wireless/radioprofile.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/wireless/supporteddatarate.html +131 -14
- nautobot/project-static/docs/user-guide/core-data-model/wireless/wirelessnetwork.html +131 -14
- nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +131 -14
- nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +131 -14
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +131 -14
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +131 -14
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +134 -17
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +131 -14
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +131 -14
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +131 -14
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +131 -14
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +131 -14
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +131 -14
- nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +236 -34
- nautobot/project-static/docs/user-guide/feature-guides/graphql.html +131 -14
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/central-mode.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/device-group-add.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/device-group-create-1.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/device-group-create-2.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/radio-profile-add.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/radio-profile-create.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/supported-data-rate-add.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/supported-data-rate-create.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-controller-add.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-controller-create-1.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-controller-create-2.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-network-add.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-network-create.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +131 -14
- nautobot/project-static/docs/user-guide/feature-guides/relationships.html +131 -14
- nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +134 -17
- nautobot/project-static/docs/{development/core/local-k8s.html → user-guide/feature-guides/wireless-networks-and-controllers.html} +632 -566
- nautobot/project-static/docs/user-guide/index.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +135 -18
- nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/events.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +451 -16
- nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +135 -17
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +134 -17
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobqueue.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/kubernetes-job-support.html +9797 -0
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/note.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +132 -15
- nautobot/project-static/docs/user-guide/platform-functionality/rendering-jinja-templates.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +179 -35
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +159 -15
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/role.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/secret.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/status.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/tag.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +131 -14
- nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +131 -14
- nautobot/project-static/js/forms.js +1 -1
- nautobot/tenancy/api/views.py +9 -13
- nautobot/tenancy/templates/tenancy/tenant.html +1 -2
- nautobot/tenancy/templates/tenancy/tenantgroup.html +1 -1
- nautobot/tenancy/views.py +4 -2
- nautobot/users/admin.py +1 -1
- nautobot/users/api/serializers.py +5 -4
- nautobot/users/api/views.py +3 -3
- nautobot/virtualization/api/serializers.py +4 -4
- nautobot/virtualization/api/views.py +5 -24
- nautobot/virtualization/filters.py +20 -3
- nautobot/virtualization/models.py +1 -1
- nautobot/virtualization/tables.py +2 -2
- nautobot/virtualization/templates/virtualization/cluster.html +1 -1
- nautobot/virtualization/templates/virtualization/cluster_edit.html +1 -7
- nautobot/virtualization/templates/virtualization/clustergroup.html +1 -1
- nautobot/virtualization/templates/virtualization/clustertype.html +1 -1
- nautobot/virtualization/templates/virtualization/virtualmachine.html +2 -10
- nautobot/virtualization/templates/virtualization/virtualmachine_edit.html +2 -8
- nautobot/virtualization/templates/virtualization/vminterface.html +1 -1
- nautobot/virtualization/tests/test_filters.py +17 -0
- nautobot/wireless/filters.py +2 -2
- nautobot/wireless/forms.py +1 -1
- nautobot/wireless/templates/wireless/wirelessnetwork_retrieve.html +1 -9
- nautobot/wireless/tests/integration/__init__.py +0 -0
- nautobot/wireless/tests/integration/test_radio_profile.py +42 -0
- nautobot/wireless/tests/test_filters.py +29 -1
- nautobot/wireless/tests/test_views.py +22 -1
- nautobot/wireless/views.py +0 -10
- {nautobot-2.4.0b1.dist-info → nautobot-2.4.2.dist-info}/METADATA +9 -9
- {nautobot-2.4.0b1.dist-info → nautobot-2.4.2.dist-info}/RECORD +667 -610
- {nautobot-2.4.0b1.dist-info → nautobot-2.4.2.dist-info}/WHEEL +1 -1
- nautobot/core/fixtures/user-data.json +0 -59
- /nautobot/project-static/docs/assets/stylesheets/{main.6f8fc17f.min.css.map → main.a40c8224.min.css.map} +0 -0
- {nautobot-2.4.0b1.dist-info → nautobot-2.4.2.dist-info}/LICENSE.txt +0 -0
- {nautobot-2.4.0b1.dist-info → nautobot-2.4.2.dist-info}/NOTICE +0 -0
- {nautobot-2.4.0b1.dist-info → nautobot-2.4.2.dist-info}/entry_points.txt +0 -0
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
<link rel="icon" href="../../assets/favicon.ico">
|
|
21
|
-
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.
|
|
21
|
+
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.50">
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
<link rel="stylesheet" href="../../assets/stylesheets/main.
|
|
29
|
+
<link rel="stylesheet" href="../../assets/stylesheets/main.a40c8224.min.css">
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
<style>:root{--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.
|
|
41
|
+
<style>:root{--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M288 0H128c-17.7 0-32 14.3-32 32s14.3 32 32 32v132.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6 0 480.9 31.1 512 69.4 512h309.2c38.3 0 69.4-31.1 69.4-69.4 0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32S337.7 0 320 0zm-96 196.8V64h64v132.8c0 23.7 6.6 46.9 19 67.1l34.5 56.1h-171l34.5-56.1c12.4-20.2 19-43.4 19-67.1"/></svg>');}</style>
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
|
|
@@ -217,7 +217,7 @@
|
|
|
217
217
|
<a href="https://github.com/nautobot/nautobot" title="Go to repository" class="md-source" data-md-component="source">
|
|
218
218
|
<div class="md-source__icon md-icon">
|
|
219
219
|
|
|
220
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.
|
|
220
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
|
|
221
221
|
</div>
|
|
222
222
|
<div class="md-source__repository">
|
|
223
223
|
GitHub
|
|
@@ -377,7 +377,7 @@
|
|
|
377
377
|
<a href="https://github.com/nautobot/nautobot" title="Go to repository" class="md-source" data-md-component="source">
|
|
378
378
|
<div class="md-source__icon md-icon">
|
|
379
379
|
|
|
380
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.
|
|
380
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
|
|
381
381
|
</div>
|
|
382
382
|
<div class="md-source__repository">
|
|
383
383
|
GitHub
|
|
@@ -1697,6 +1697,81 @@
|
|
|
1697
1697
|
|
|
1698
1698
|
|
|
1699
1699
|
|
|
1700
|
+
|
|
1701
|
+
|
|
1702
|
+
|
|
1703
|
+
|
|
1704
|
+
|
|
1705
|
+
|
|
1706
|
+
|
|
1707
|
+
|
|
1708
|
+
|
|
1709
|
+
|
|
1710
|
+
|
|
1711
|
+
|
|
1712
|
+
|
|
1713
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
1714
|
+
|
|
1715
|
+
|
|
1716
|
+
|
|
1717
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_1_7" >
|
|
1718
|
+
|
|
1719
|
+
|
|
1720
|
+
|
|
1721
|
+
<div class="md-nav__link md-nav__container">
|
|
1722
|
+
<a href="../../user-guide/administration/security/index.html" class="md-nav__link ">
|
|
1723
|
+
|
|
1724
|
+
|
|
1725
|
+
<span class="md-ellipsis">
|
|
1726
|
+
Security
|
|
1727
|
+
</span>
|
|
1728
|
+
|
|
1729
|
+
|
|
1730
|
+
</a>
|
|
1731
|
+
|
|
1732
|
+
|
|
1733
|
+
<label class="md-nav__link " for="__nav_2_1_7" id="__nav_2_1_7_label" tabindex="0">
|
|
1734
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1735
|
+
</label>
|
|
1736
|
+
|
|
1737
|
+
</div>
|
|
1738
|
+
|
|
1739
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_1_7_label" aria-expanded="false">
|
|
1740
|
+
<label class="md-nav__title" for="__nav_2_1_7">
|
|
1741
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1742
|
+
Security
|
|
1743
|
+
</label>
|
|
1744
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
1745
|
+
|
|
1746
|
+
|
|
1747
|
+
|
|
1748
|
+
|
|
1749
|
+
|
|
1750
|
+
|
|
1751
|
+
|
|
1752
|
+
<li class="md-nav__item">
|
|
1753
|
+
<a href="../../user-guide/administration/security/notices.html" class="md-nav__link">
|
|
1754
|
+
|
|
1755
|
+
|
|
1756
|
+
<span class="md-ellipsis">
|
|
1757
|
+
Notices
|
|
1758
|
+
</span>
|
|
1759
|
+
|
|
1760
|
+
|
|
1761
|
+
</a>
|
|
1762
|
+
</li>
|
|
1763
|
+
|
|
1764
|
+
|
|
1765
|
+
|
|
1766
|
+
|
|
1767
|
+
</ul>
|
|
1768
|
+
</nav>
|
|
1769
|
+
|
|
1770
|
+
</li>
|
|
1771
|
+
|
|
1772
|
+
|
|
1773
|
+
|
|
1774
|
+
|
|
1700
1775
|
</ul>
|
|
1701
1776
|
</nav>
|
|
1702
1777
|
|
|
@@ -2112,6 +2187,27 @@
|
|
|
2112
2187
|
|
|
2113
2188
|
|
|
2114
2189
|
|
|
2190
|
+
|
|
2191
|
+
|
|
2192
|
+
|
|
2193
|
+
|
|
2194
|
+
|
|
2195
|
+
|
|
2196
|
+
<li class="md-nav__item">
|
|
2197
|
+
<a href="../../user-guide/feature-guides/wireless-networks-and-controllers.html" class="md-nav__link">
|
|
2198
|
+
|
|
2199
|
+
|
|
2200
|
+
<span class="md-ellipsis">
|
|
2201
|
+
Wireless Networks and Controllers
|
|
2202
|
+
</span>
|
|
2203
|
+
|
|
2204
|
+
|
|
2205
|
+
</a>
|
|
2206
|
+
</li>
|
|
2207
|
+
|
|
2208
|
+
|
|
2209
|
+
|
|
2210
|
+
|
|
2115
2211
|
</ul>
|
|
2116
2212
|
</nav>
|
|
2117
2213
|
|
|
@@ -5131,6 +5227,27 @@
|
|
|
5131
5227
|
|
|
5132
5228
|
|
|
5133
5229
|
|
|
5230
|
+
<li class="md-nav__item">
|
|
5231
|
+
<a href="../../user-guide/platform-functionality/jobs/kubernetes-job-support.html" class="md-nav__link">
|
|
5232
|
+
|
|
5233
|
+
|
|
5234
|
+
<span class="md-ellipsis">
|
|
5235
|
+
Kubernetes Job Support
|
|
5236
|
+
</span>
|
|
5237
|
+
|
|
5238
|
+
|
|
5239
|
+
</a>
|
|
5240
|
+
</li>
|
|
5241
|
+
|
|
5242
|
+
|
|
5243
|
+
|
|
5244
|
+
|
|
5245
|
+
|
|
5246
|
+
|
|
5247
|
+
|
|
5248
|
+
|
|
5249
|
+
|
|
5250
|
+
|
|
5134
5251
|
<li class="md-nav__item">
|
|
5135
5252
|
<a href="../../user-guide/platform-functionality/jobs/jobbutton.html" class="md-nav__link">
|
|
5136
5253
|
|
|
@@ -7932,30 +8049,6 @@
|
|
|
7932
8049
|
</span>
|
|
7933
8050
|
</a>
|
|
7934
8051
|
|
|
7935
|
-
</li>
|
|
7936
|
-
|
|
7937
|
-
<li class="md-nav__item">
|
|
7938
|
-
<a href="#creating-a-branch" class="md-nav__link">
|
|
7939
|
-
<span class="md-ellipsis">
|
|
7940
|
-
Creating a Branch
|
|
7941
|
-
</span>
|
|
7942
|
-
</a>
|
|
7943
|
-
|
|
7944
|
-
<nav class="md-nav" aria-label="Creating a Branch">
|
|
7945
|
-
<ul class="md-nav__list">
|
|
7946
|
-
|
|
7947
|
-
<li class="md-nav__item">
|
|
7948
|
-
<a href="#prototypes" class="md-nav__link">
|
|
7949
|
-
<span class="md-ellipsis">
|
|
7950
|
-
Prototypes
|
|
7951
|
-
</span>
|
|
7952
|
-
</a>
|
|
7953
|
-
|
|
7954
|
-
</li>
|
|
7955
|
-
|
|
7956
|
-
</ul>
|
|
7957
|
-
</nav>
|
|
7958
|
-
|
|
7959
8052
|
</li>
|
|
7960
8053
|
|
|
7961
8054
|
</ul>
|
|
@@ -8059,15 +8152,6 @@
|
|
|
8059
8152
|
</span>
|
|
8060
8153
|
</a>
|
|
8061
8154
|
|
|
8062
|
-
</li>
|
|
8063
|
-
|
|
8064
|
-
<li class="md-nav__item">
|
|
8065
|
-
<a href="#install-markdownlint-cli" class="md-nav__link">
|
|
8066
|
-
<span class="md-ellipsis">
|
|
8067
|
-
Install markdownlint-cli
|
|
8068
|
-
</span>
|
|
8069
|
-
</a>
|
|
8070
|
-
|
|
8071
8155
|
</li>
|
|
8072
8156
|
|
|
8073
8157
|
<li class="md-nav__item">
|
|
@@ -8150,6 +8234,30 @@
|
|
|
8150
8234
|
<nav class="md-nav" aria-label="Working in your Development Environment">
|
|
8151
8235
|
<ul class="md-nav__list">
|
|
8152
8236
|
|
|
8237
|
+
<li class="md-nav__item">
|
|
8238
|
+
<a href="#creating-a-branch" class="md-nav__link">
|
|
8239
|
+
<span class="md-ellipsis">
|
|
8240
|
+
Creating a Branch
|
|
8241
|
+
</span>
|
|
8242
|
+
</a>
|
|
8243
|
+
|
|
8244
|
+
<nav class="md-nav" aria-label="Creating a Branch">
|
|
8245
|
+
<ul class="md-nav__list">
|
|
8246
|
+
|
|
8247
|
+
<li class="md-nav__item">
|
|
8248
|
+
<a href="#prototypes" class="md-nav__link">
|
|
8249
|
+
<span class="md-ellipsis">
|
|
8250
|
+
Prototypes
|
|
8251
|
+
</span>
|
|
8252
|
+
</a>
|
|
8253
|
+
|
|
8254
|
+
</li>
|
|
8255
|
+
|
|
8256
|
+
</ul>
|
|
8257
|
+
</nav>
|
|
8258
|
+
|
|
8259
|
+
</li>
|
|
8260
|
+
|
|
8153
8261
|
<li class="md-nav__item">
|
|
8154
8262
|
<a href="#creating-a-superuser" class="md-nav__link">
|
|
8155
8263
|
<span class="md-ellipsis">
|
|
@@ -8612,11 +8720,11 @@
|
|
|
8612
8720
|
|
|
8613
8721
|
|
|
8614
8722
|
<li class="md-nav__item">
|
|
8615
|
-
<a href="
|
|
8723
|
+
<a href="minikube-dev-environment-for-k8s-jobs.html" class="md-nav__link">
|
|
8616
8724
|
|
|
8617
8725
|
|
|
8618
8726
|
<span class="md-ellipsis">
|
|
8619
|
-
|
|
8727
|
+
Minikube Dev Environment for K8s Jobs
|
|
8620
8728
|
</span>
|
|
8621
8729
|
|
|
8622
8730
|
|
|
@@ -9567,30 +9675,6 @@
|
|
|
9567
9675
|
</span>
|
|
9568
9676
|
</a>
|
|
9569
9677
|
|
|
9570
|
-
</li>
|
|
9571
|
-
|
|
9572
|
-
<li class="md-nav__item">
|
|
9573
|
-
<a href="#creating-a-branch" class="md-nav__link">
|
|
9574
|
-
<span class="md-ellipsis">
|
|
9575
|
-
Creating a Branch
|
|
9576
|
-
</span>
|
|
9577
|
-
</a>
|
|
9578
|
-
|
|
9579
|
-
<nav class="md-nav" aria-label="Creating a Branch">
|
|
9580
|
-
<ul class="md-nav__list">
|
|
9581
|
-
|
|
9582
|
-
<li class="md-nav__item">
|
|
9583
|
-
<a href="#prototypes" class="md-nav__link">
|
|
9584
|
-
<span class="md-ellipsis">
|
|
9585
|
-
Prototypes
|
|
9586
|
-
</span>
|
|
9587
|
-
</a>
|
|
9588
|
-
|
|
9589
|
-
</li>
|
|
9590
|
-
|
|
9591
|
-
</ul>
|
|
9592
|
-
</nav>
|
|
9593
|
-
|
|
9594
9678
|
</li>
|
|
9595
9679
|
|
|
9596
9680
|
</ul>
|
|
@@ -9694,15 +9778,6 @@
|
|
|
9694
9778
|
</span>
|
|
9695
9779
|
</a>
|
|
9696
9780
|
|
|
9697
|
-
</li>
|
|
9698
|
-
|
|
9699
|
-
<li class="md-nav__item">
|
|
9700
|
-
<a href="#install-markdownlint-cli" class="md-nav__link">
|
|
9701
|
-
<span class="md-ellipsis">
|
|
9702
|
-
Install markdownlint-cli
|
|
9703
|
-
</span>
|
|
9704
|
-
</a>
|
|
9705
|
-
|
|
9706
9781
|
</li>
|
|
9707
9782
|
|
|
9708
9783
|
<li class="md-nav__item">
|
|
@@ -9785,6 +9860,30 @@
|
|
|
9785
9860
|
<nav class="md-nav" aria-label="Working in your Development Environment">
|
|
9786
9861
|
<ul class="md-nav__list">
|
|
9787
9862
|
|
|
9863
|
+
<li class="md-nav__item">
|
|
9864
|
+
<a href="#creating-a-branch" class="md-nav__link">
|
|
9865
|
+
<span class="md-ellipsis">
|
|
9866
|
+
Creating a Branch
|
|
9867
|
+
</span>
|
|
9868
|
+
</a>
|
|
9869
|
+
|
|
9870
|
+
<nav class="md-nav" aria-label="Creating a Branch">
|
|
9871
|
+
<ul class="md-nav__list">
|
|
9872
|
+
|
|
9873
|
+
<li class="md-nav__item">
|
|
9874
|
+
<a href="#prototypes" class="md-nav__link">
|
|
9875
|
+
<span class="md-ellipsis">
|
|
9876
|
+
Prototypes
|
|
9877
|
+
</span>
|
|
9878
|
+
</a>
|
|
9879
|
+
|
|
9880
|
+
</li>
|
|
9881
|
+
|
|
9882
|
+
</ul>
|
|
9883
|
+
</nav>
|
|
9884
|
+
|
|
9885
|
+
</li>
|
|
9886
|
+
|
|
9788
9887
|
<li class="md-nav__item">
|
|
9789
9888
|
<a href="#creating-a-superuser" class="md-nav__link">
|
|
9790
9889
|
<span class="md-ellipsis">
|
|
@@ -10108,55 +10207,29 @@
|
|
|
10108
10207
|
<h3 id="setting-up-your-remotes">Setting up your Remotes<a class="headerlink" href="#setting-up-your-remotes" title="Permanent link">¶</a></h3>
|
|
10109
10208
|
<p>Remote repos are managed using the <code>git remote</code> command.</p>
|
|
10110
10209
|
<p>Upon cloning Nautobot for the first time, you will have only a single remote:</p>
|
|
10111
|
-
<!-- markdownlint-disable MD010 -->
|
|
10112
|
-
|
|
10113
10210
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>git remote -v
|
|
10114
10211
|
</code></pre></div>
|
|
10115
10212
|
<p>Example output:</p>
|
|
10116
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>origin
|
|
10117
|
-
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a>origin
|
|
10213
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>origin git@github.com:yourusername/nautobot.git (fetch)
|
|
10214
|
+
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a>origin git@github.com:yourusername/nautobot.git (push)
|
|
10118
10215
|
</code></pre></div>
|
|
10119
|
-
<!-- markdownlint-enable MD010 -->
|
|
10120
|
-
|
|
10121
10216
|
<p>Add the official Nautobot repo as a the <code>upstream</code> remote:</p>
|
|
10122
10217
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>git remote add upstream git@github.com:nautobot/nautobot.git
|
|
10123
10218
|
</code></pre></div>
|
|
10124
10219
|
<p>View your remotes again to confirm you've got both <code>origin</code> pointing to your fork and <code>upstream</code> pointing to the official repo:</p>
|
|
10125
|
-
<!-- markdownlint-disable MD010 -->
|
|
10126
|
-
|
|
10127
10220
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>git remote -v
|
|
10128
10221
|
</code></pre></div>
|
|
10129
10222
|
<p>Example output:</p>
|
|
10130
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>origin
|
|
10131
|
-
<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a>origin
|
|
10223
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>origin git@github.com:yourusername/nautobot.git (fetch)
|
|
10224
|
+
<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a>origin git@github.com:yourusername/nautobot.git (push)
|
|
10132
10225
|
<a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a>upstream git@github.com:nautobot/nautobot.git (fetch)
|
|
10133
10226
|
<a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a>upstream git@github.com:nautobot/nautobot.git (push)
|
|
10134
10227
|
</code></pre></div>
|
|
10135
|
-
<!-- markdownlint-enable MD010 -->
|
|
10136
|
-
|
|
10137
10228
|
<p>You're now ready to proceed to the next steps.</p>
|
|
10138
10229
|
<div class="admonition hint">
|
|
10139
10230
|
<p class="admonition-title">Hint</p>
|
|
10140
10231
|
<p>You will always <strong>push</strong> changes to <code>origin</code> (your fork) and <strong>pull</strong> changes from <code>upstream</code> (official repo).</p>
|
|
10141
10232
|
</div>
|
|
10142
|
-
<h3 id="creating-a-branch">Creating a Branch<a class="headerlink" href="#creating-a-branch" title="Permanent link">¶</a></h3>
|
|
10143
|
-
<p>Before you make any changes, always create a new branch. Again, for bug fixes and minor features, you'll want to create your branches from the <code>develop</code> branch, while for major new features, you'll branch from <code>next</code> instead.</p>
|
|
10144
|
-
<p>Before you ever create a new branch, always checkout the appropriate branch and make sure you you've got the latest changes from <code>upstream</code>:</p>
|
|
10145
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>git checkout develop
|
|
10146
|
-
<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a>git pull upstream develop
|
|
10147
|
-
</code></pre></div>
|
|
10148
|
-
<div class="admonition warning">
|
|
10149
|
-
<p class="admonition-title">Warning</p>
|
|
10150
|
-
<p>If you do not do this, you run the risk of having merge conflicts in your branch, and that's never fun to deal with. Trust us on this one.</p>
|
|
10151
|
-
</div>
|
|
10152
|
-
<p>Now that you've got the latest upstream changes, create your branch. Whether you're creating a branch off a fork or working against the Nautobot origin repo, you should follow this convention for naming your branch: <code>u/yourusername-0000-branch-summary</code>, where <code>0000</code> is the related GitHub issue number and <code>yourusername</code> is your GitHub username. For example:</p>
|
|
10153
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>git checkout -b u/yourusername-1234-next-amazing-feature
|
|
10154
|
-
</code></pre></div>
|
|
10155
|
-
<p>If you do not have a relevant GitHub issue, please consider opening one to document the context behind your changes.</p>
|
|
10156
|
-
<h4 id="prototypes">Prototypes<a class="headerlink" href="#prototypes" title="Permanent link">¶</a></h4>
|
|
10157
|
-
<p>Sometimes code is written as a proof of concept or early implementation candidate but is not quite ready to be merged, or may be picked up by another author sometime in the future. In that case, the convention is to use the <code>prototype/</code> prefix to the branch name and not requiring the original authors username. In that scenario, using the example above, you would instead:</p>
|
|
10158
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>git checkout -b prototype/1234-next-amazing-feature
|
|
10159
|
-
</code></pre></div>
|
|
10160
10233
|
<h2 id="enabling-pre-commit-hooks">Enabling Pre-Commit Hooks<a class="headerlink" href="#enabling-pre-commit-hooks" title="Permanent link">¶</a></h2>
|
|
10161
10234
|
<p>Nautobot ships with a <a href="https://githooks.com/">Git pre-commit hook</a> script that automatically checks for style compliance and missing database migrations prior to committing changes. This helps avoid erroneous commits that result in CI test failures.</p>
|
|
10162
10235
|
<div class="admonition note">
|
|
@@ -10164,15 +10237,15 @@
|
|
|
10164
10237
|
<p>This pre-commit hook currently only supports the Python Virtual Environment Workflow.</p>
|
|
10165
10238
|
</div>
|
|
10166
10239
|
<p>You are encouraged to enable it by creating a link to <code>scripts/git-hooks/pre-commit</code>:</p>
|
|
10167
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10168
|
-
<a id="__codelineno-
|
|
10240
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>cd .git/hooks/
|
|
10241
|
+
<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a>ln -s ../../scripts/git-hooks/pre-commit
|
|
10169
10242
|
</code></pre></div>
|
|
10170
10243
|
<h2 id="setting-up-your-development-environment">Setting up your Development Environment<a class="headerlink" href="#setting-up-your-development-environment" title="Permanent link">¶</a></h2>
|
|
10171
10244
|
<p>Getting started with Nautobot development is pretty straightforward, and should feel very familiar to anyone with Django development experience. We can recommend either a <a href="#docker-compose-workflow">Docker Compose workflow</a> (if you don't want to install dependencies such as PostgreSQL and Redis directly onto your system) or a <a href="#python-virtual-environment-workflow">Python virtual environment workflow</a>.</p>
|
|
10172
10245
|
<h3 id="windows-development">Windows Development<a class="headerlink" href="#windows-development" title="Permanent link">¶</a></h3>
|
|
10173
10246
|
<p>The Docker Compose development workflow on Windows Subsystem for Linux (WSL) has been tested successfully with <a href="https://docs.docker.com/desktop/windows/wsl/">Docker Desktop using the WSL2 backend</a> and the Ubuntu 20.04 WSL2 distribution. The Poetry workflow has also been tested successfully on the Ubuntu 20.04 WSL2 distribution.</p>
|
|
10174
10247
|
<p>To install WSL2 and Ubuntu follow the instructions from the <a href="https://learn.microsoft.com/en-us/windows/wsl/install">WSL installation guide</a> or if running Windows 10 version 2004 and higher you can open an administrator Powershell terminal and enter the following command:</p>
|
|
10175
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10248
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="n">wsl</span> <span class="p">-</span><span class="n">-install</span>
|
|
10176
10249
|
</code></pre></div>
|
|
10177
10250
|
<p>This will install the WSL2 Ubuntu distribution. Reboot if prompted. After the image installs successfully you may install Docker Desktop with the WSL2 backend.</p>
|
|
10178
10251
|
<h3 id="docker-compose-workflow">Docker Compose Workflow<a class="headerlink" href="#docker-compose-workflow" title="Permanent link">¶</a></h3>
|
|
@@ -10184,55 +10257,58 @@
|
|
|
10184
10257
|
</div>
|
|
10185
10258
|
<h4 id="install-invoke">Install Invoke<a class="headerlink" href="#install-invoke" title="Permanent link">¶</a></h4>
|
|
10186
10259
|
<p>Because it is used to execute all common Docker workflow tasks, Invoke must be installed for your user environment. On most systems, if you're installing without root/superuser permissions, the default will install into your local user environment.</p>
|
|
10187
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10260
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>pip3 install invoke
|
|
10188
10261
|
</code></pre></div>
|
|
10189
10262
|
<p>If you run into issues, you may also deliberately tell <code>pip3</code> to install into your user environment by adding the <code>--user</code> flag:</p>
|
|
10190
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10263
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>pip3 install --user invoke
|
|
10191
10264
|
</code></pre></div>
|
|
10192
10265
|
<p>If you encounter an <a href="https://peps.python.org/pep-0668/"><code>externally-managed-environment</code></a> error, you may need to install invoke through your OS's package manager. For example, <code>apt-get install python3-invoke</code> for Debian.</p>
|
|
10193
10266
|
<p>Please see the <a href="https://pip.pypa.io/en/stable/user_guide/#user-installs">official documentation on Pip user installs</a> for more information.</p>
|
|
10194
10267
|
<h4 id="list-invoke-tasks">List Invoke Tasks<a class="headerlink" href="#list-invoke-tasks" title="Permanent link">¶</a></h4>
|
|
10195
10268
|
<p>Now that you have an <code>invoke</code> command, list the tasks defined in <code>tasks.py</code>:</p>
|
|
10196
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10269
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>invoke --list
|
|
10197
10270
|
</code></pre></div>
|
|
10198
10271
|
<p>Example output:</p>
|
|
10199
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10200
|
-
<a id="__codelineno-
|
|
10201
|
-
<a id="__codelineno-
|
|
10202
|
-
<a id="__codelineno-
|
|
10203
|
-
<a id="__codelineno-
|
|
10204
|
-
<a id="__codelineno-
|
|
10205
|
-
<a id="__codelineno-
|
|
10206
|
-
<a id="__codelineno-
|
|
10207
|
-
<a id="__codelineno-
|
|
10208
|
-
<a id="__codelineno-
|
|
10209
|
-
<a id="__codelineno-
|
|
10210
|
-
<a id="__codelineno-
|
|
10211
|
-
<a id="__codelineno-
|
|
10212
|
-
<a id="__codelineno-
|
|
10213
|
-
<a id="__codelineno-
|
|
10214
|
-
<a id="__codelineno-
|
|
10215
|
-
<a id="__codelineno-
|
|
10216
|
-
<a id="__codelineno-
|
|
10217
|
-
<a id="__codelineno-
|
|
10218
|
-
<a id="__codelineno-
|
|
10219
|
-
<a id="__codelineno-
|
|
10220
|
-
<a id="__codelineno-
|
|
10221
|
-
<a id="__codelineno-
|
|
10222
|
-
<a id="__codelineno-
|
|
10223
|
-
<a id="__codelineno-
|
|
10224
|
-
<a id="__codelineno-
|
|
10225
|
-
<a id="__codelineno-
|
|
10226
|
-
<a id="__codelineno-
|
|
10227
|
-
<a id="__codelineno-
|
|
10228
|
-
<a id="__codelineno-
|
|
10229
|
-
<a id="__codelineno-
|
|
10230
|
-
<a id="__codelineno-
|
|
10231
|
-
<a id="__codelineno-
|
|
10232
|
-
<a id="__codelineno-
|
|
10233
|
-
<a id="__codelineno-
|
|
10234
|
-
<a id="__codelineno-
|
|
10235
|
-
<a id="__codelineno-
|
|
10272
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>Available tasks:
|
|
10273
|
+
<a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a>
|
|
10274
|
+
<a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a> branch Switch to a different Git branch, creating it if requested.
|
|
10275
|
+
<a id="__codelineno-14-4" name="__codelineno-14-4" href="#__codelineno-14-4"></a> build Build Nautobot docker image.
|
|
10276
|
+
<a id="__codelineno-14-5" name="__codelineno-14-5" href="#__codelineno-14-5"></a> build-and-check-docs Build docs for use within Nautobot.
|
|
10277
|
+
<a id="__codelineno-14-6" name="__codelineno-14-6" href="#__codelineno-14-6"></a> build-dependencies
|
|
10278
|
+
<a id="__codelineno-14-7" name="__codelineno-14-7" href="#__codelineno-14-7"></a> buildx Build Nautobot docker image using the experimental buildx docker functionality (multi-arch
|
|
10279
|
+
<a id="__codelineno-14-8" name="__codelineno-14-8" href="#__codelineno-14-8"></a> capability).
|
|
10280
|
+
<a id="__codelineno-14-9" name="__codelineno-14-9" href="#__codelineno-14-9"></a> check-migrations Check for missing migrations.
|
|
10281
|
+
<a id="__codelineno-14-10" name="__codelineno-14-10" href="#__codelineno-14-10"></a> check-schema Render the REST API schema and check for problems.
|
|
10282
|
+
<a id="__codelineno-14-11" name="__codelineno-14-11" href="#__codelineno-14-11"></a> cli Launch a bash shell inside the running Nautobot (or other) Docker container.
|
|
10283
|
+
<a id="__codelineno-14-12" name="__codelineno-14-12" href="#__codelineno-14-12"></a> createsuperuser Create a new Nautobot superuser account (default: "admin"), will prompt for password.
|
|
10284
|
+
<a id="__codelineno-14-13" name="__codelineno-14-13" href="#__codelineno-14-13"></a> debug Start Nautobot and its dependencies in debug mode.
|
|
10285
|
+
<a id="__codelineno-14-14" name="__codelineno-14-14" href="#__codelineno-14-14"></a> destroy Destroy all containers and volumes.
|
|
10286
|
+
<a id="__codelineno-14-15" name="__codelineno-14-15" href="#__codelineno-14-15"></a> docker-push Tags and pushes docker images to the appropriate repos, intended for release use only.
|
|
10287
|
+
<a id="__codelineno-14-16" name="__codelineno-14-16" href="#__codelineno-14-16"></a> dumpdata Dump data from database to db_output file.
|
|
10288
|
+
<a id="__codelineno-14-17" name="__codelineno-14-17" href="#__codelineno-14-17"></a> hadolint Check Dockerfile for hadolint compliance and other style issues.
|
|
10289
|
+
<a id="__codelineno-14-18" name="__codelineno-14-18" href="#__codelineno-14-18"></a> integration-test Run Nautobot integration tests.
|
|
10290
|
+
<a id="__codelineno-14-19" name="__codelineno-14-19" href="#__codelineno-14-19"></a> loaddata Load data from file.
|
|
10291
|
+
<a id="__codelineno-14-20" name="__codelineno-14-20" href="#__codelineno-14-20"></a> logs View the logs of a docker compose service.
|
|
10292
|
+
<a id="__codelineno-14-21" name="__codelineno-14-21" href="#__codelineno-14-21"></a> makemigrations Perform makemigrations operation in Django.
|
|
10293
|
+
<a id="__codelineno-14-22" name="__codelineno-14-22" href="#__codelineno-14-22"></a> markdownlint Lint Markdown files.
|
|
10294
|
+
<a id="__codelineno-14-23" name="__codelineno-14-23" href="#__codelineno-14-23"></a> migrate Perform migrate operation in Django.
|
|
10295
|
+
<a id="__codelineno-14-24" name="__codelineno-14-24" href="#__codelineno-14-24"></a> migration-test Test database migration from a given dataset to latest Nautobot schema.
|
|
10296
|
+
<a id="__codelineno-14-25" name="__codelineno-14-25" href="#__codelineno-14-25"></a> nbshell Launch an interactive Nautobot shell.
|
|
10297
|
+
<a id="__codelineno-14-26" name="__codelineno-14-26" href="#__codelineno-14-26"></a> performance-test Run Nautobot performance tests.
|
|
10298
|
+
<a id="__codelineno-14-27" name="__codelineno-14-27" href="#__codelineno-14-27"></a> post-upgrade Performs Nautobot common post-upgrade operations using a single entrypoint.
|
|
10299
|
+
<a id="__codelineno-14-28" name="__codelineno-14-28" href="#__codelineno-14-28"></a> pylint Perform static analysis of Nautobot code.
|
|
10300
|
+
<a id="__codelineno-14-29" name="__codelineno-14-29" href="#__codelineno-14-29"></a> restart Gracefully restart containers.
|
|
10301
|
+
<a id="__codelineno-14-30" name="__codelineno-14-30" href="#__codelineno-14-30"></a> ruff Run ruff to perform code formatting and linting.
|
|
10302
|
+
<a id="__codelineno-14-31" name="__codelineno-14-31" href="#__codelineno-14-31"></a> serve-docs Runs local instance of mkdocs serve on port 8001 (ctrl-c to stop).
|
|
10303
|
+
<a id="__codelineno-14-32" name="__codelineno-14-32" href="#__codelineno-14-32"></a> showmigrations Perform showmigrations operation in Django.
|
|
10304
|
+
<a id="__codelineno-14-33" name="__codelineno-14-33" href="#__codelineno-14-33"></a> start Start Nautobot and its dependencies in detached mode.
|
|
10305
|
+
<a id="__codelineno-14-34" name="__codelineno-14-34" href="#__codelineno-14-34"></a> stop Stop Nautobot and its dependencies.
|
|
10306
|
+
<a id="__codelineno-14-35" name="__codelineno-14-35" href="#__codelineno-14-35"></a> tests Run all linters and unit tests.
|
|
10307
|
+
<a id="__codelineno-14-36" name="__codelineno-14-36" href="#__codelineno-14-36"></a> unittest Run Nautobot unit tests.
|
|
10308
|
+
<a id="__codelineno-14-37" name="__codelineno-14-37" href="#__codelineno-14-37"></a> unittest-coverage Report on code test coverage as measured by 'invoke unittest'.
|
|
10309
|
+
<a id="__codelineno-14-38" name="__codelineno-14-38" href="#__codelineno-14-38"></a> version Show the version of Nautobot Python package or bump it when a valid bump rule is provided.
|
|
10310
|
+
<a id="__codelineno-14-39" name="__codelineno-14-39" href="#__codelineno-14-39"></a> vscode Launch Visual Studio Code with the appropriate Environment variables to run in a container.
|
|
10311
|
+
<a id="__codelineno-14-40" name="__codelineno-14-40" href="#__codelineno-14-40"></a> yamllint Run yamllint to validate formatting applies to YAML standards.
|
|
10236
10312
|
</code></pre></div>
|
|
10237
10313
|
<h4 id="using-docker-with-invoke">Using Docker with Invoke<a class="headerlink" href="#using-docker-with-invoke" title="Permanent link">¶</a></h4>
|
|
10238
10314
|
<details class="version-changed">
|
|
@@ -10241,14 +10317,17 @@
|
|
|
10241
10317
|
</details>
|
|
10242
10318
|
<p>A development environment can be easily started up from the root of the project using the following commands:</p>
|
|
10243
10319
|
<ul>
|
|
10244
|
-
<li><code>invoke
|
|
10320
|
+
<li><code>invoke branch</code> - Creates or switches to the appropriate Git branch</li>
|
|
10321
|
+
<li><code>invoke build</code> - Builds Nautobot docker images appropriate to the current Git branch</li>
|
|
10245
10322
|
<li><code>invoke migrate</code> - Performs database migration operation in Django</li>
|
|
10246
10323
|
<li><code>invoke debug</code> - Starts Docker containers for Nautobot, PostgreSQL, Redis, Celery, and Celery Beat in debug mode and attaches their output to the terminal in the foreground. You may enter Control-C to stop the containers</li>
|
|
10247
10324
|
</ul>
|
|
10248
10325
|
<p>Additional useful commands for the development environment:</p>
|
|
10249
10326
|
<ul>
|
|
10250
|
-
<li><code>invoke start [-s servicename]</code> - Starts Docker containers for Nautobot, PostgreSQL, Redis, NGINX, Celery, and Celery Beat (or a specific container/service, such as <code>invoke start -s redis</code>) to run in the background
|
|
10251
|
-
<li><code>invoke
|
|
10327
|
+
<li><code>invoke start [-s servicename]</code> - Starts Docker containers for Nautobot, PostgreSQL, Redis, NGINX, Celery, and Celery Beat (or a specific container/service, such as <code>invoke start -s redis</code>) to run in the background</li>
|
|
10328
|
+
<li><code>invoke logs [-s servicename]</code> - View the logs of the containers (or a specific container/service, such as <code>invoke logs -s nautobot</code>)</li>
|
|
10329
|
+
<li><code>invoke nbshell</code> - Launches a Nautobot Python shell inside the Nautobot container</li>
|
|
10330
|
+
<li><code>invoke cli [-s servicename]</code> - Launches a <code>bash</code> shell inside the specified service container (if none is specified, defaults to the Nautobot container)</li>
|
|
10252
10331
|
<li><code>invoke stop [-s servicename]</code> - Stops all containers (or a specific container/service) created by <code>invoke start</code></li>
|
|
10253
10332
|
<li><code>invoke createsuperuser</code> - Creates a superuser account for the Nautobot application</li>
|
|
10254
10333
|
</ul>
|
|
@@ -10278,7 +10357,7 @@
|
|
|
10278
10357
|
<h4 id="install-poetry">Install Poetry<a class="headerlink" href="#install-poetry" title="Permanent link">¶</a></h4>
|
|
10279
10358
|
<p><a href="https://python-poetry.org/docs/">Poetry</a> is a tool for dependency management and packaging in Python. It allows you to declare the libraries your project depends on and it will manage (install/update/remove) them for you. It will also manage virtual environments automatically, and allow for publishing packages to the <a href="https://pypi.org">Python Package Index</a>.</p>
|
|
10280
10359
|
<p>You may install Poetry in your user environment by running:</p>
|
|
10281
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10360
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a>curl -sSL https://install.python-poetry.org | python3 -
|
|
10282
10361
|
</code></pre></div>
|
|
10283
10362
|
<details class="version-changed">
|
|
10284
10363
|
<summary>Changed in version 1.5.6</summary>
|
|
@@ -10293,17 +10372,13 @@
|
|
|
10293
10372
|
<p>For detailed installation instructions, please see the <a href="https://python-poetry.org/docs/#installation">official Poetry installation guide</a>.</p>
|
|
10294
10373
|
<h4 id="install-hadolint">Install Hadolint<a class="headerlink" href="#install-hadolint" title="Permanent link">¶</a></h4>
|
|
10295
10374
|
<p><a href="https://github.com/hadolint/hadolint">Hadolint</a> is a tool used to validate and lint Dockerfiles to ensure we are following best practices. On macOS with <a href="https://brew.sh/">Homebrew</a> you can install Hadolint by running:</p>
|
|
10296
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10297
|
-
</code></pre></div>
|
|
10298
|
-
<h4 id="install-markdownlint-cli">Install markdownlint-cli<a class="headerlink" href="#install-markdownlint-cli" title="Permanent link">¶</a></h4>
|
|
10299
|
-
<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>
|
|
10300
|
-
<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
|
|
10375
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a>brew install hadolint
|
|
10301
10376
|
</code></pre></div>
|
|
10302
10377
|
<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>
|
|
10303
10378
|
<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>
|
|
10304
10379
|
<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>
|
|
10305
10380
|
<p>Bootstrap your virtual environment using <code>poetry install</code>:</p>
|
|
10306
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10381
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>poetry install
|
|
10307
10382
|
</code></pre></div>
|
|
10308
10383
|
<div class="admonition hint">
|
|
10309
10384
|
<p class="admonition-title">Hint</p>
|
|
@@ -10311,44 +10386,45 @@
|
|
|
10311
10386
|
</div>
|
|
10312
10387
|
<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>
|
|
10313
10388
|
<p>Once created, you may activate the virtual environment using <code>poetry shell</code>:</p>
|
|
10314
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10389
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a>poetry shell
|
|
10315
10390
|
</code></pre></div>
|
|
10316
10391
|
<p>Example output:</p>
|
|
10317
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10318
|
-
<a id="__codelineno-
|
|
10319
|
-
<a id="__codelineno-
|
|
10320
|
-
<a id="__codelineno-
|
|
10392
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a>Spawning shell within /home/example/.cache/pypoetry/virtualenvs/nautobot-Ams_xyDt-py3.12
|
|
10393
|
+
<a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a>
|
|
10394
|
+
<a id="__codelineno-19-3" name="__codelineno-19-3" href="#__codelineno-19-3"></a>. /home/example/.cache/pypoetry/virtualenvs/nautobot-Ams_xyDt-py3.12/bin/activate
|
|
10395
|
+
<a id="__codelineno-19-4" name="__codelineno-19-4" href="#__codelineno-19-4"></a>(nautobot-Ams_xyDt-py3.12) $
|
|
10321
10396
|
</code></pre></div>
|
|
10322
10397
|
<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>
|
|
10323
10398
|
<p>Observe also that the <code>python</code> interpreter is bound within the virtualenv:</p>
|
|
10324
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10399
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a>which python
|
|
10325
10400
|
</code></pre></div>
|
|
10326
10401
|
<p>Example output:</p>
|
|
10327
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10402
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a>(nautobot-Ams_xyDt-py3.12) $ /home/example/.cache/pypoetry/virtualenvs/nautobot-Ams_xyDt-py3.12/bin/python
|
|
10328
10403
|
</code></pre></div>
|
|
10329
10404
|
<p>To exit the virtual shell, use <code>exit</code>:</p>
|
|
10330
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10405
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a>exit
|
|
10331
10406
|
</code></pre></div>
|
|
10332
10407
|
<p>Example output:</p>
|
|
10333
|
-
|
|
10408
|
+
<!-- pyml disable-num-lines 3 commands-show-output -->
|
|
10409
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a>$
|
|
10334
10410
|
</code></pre></div>
|
|
10335
10411
|
<h4 id="working-with-poetry">Working with Poetry<a class="headerlink" href="#working-with-poetry" title="Permanent link">¶</a></h4>
|
|
10336
10412
|
<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>
|
|
10337
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10413
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a>pip3 install ipython
|
|
10338
10414
|
</code></pre></div>
|
|
10339
10415
|
<p>Example output:</p>
|
|
10340
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10341
|
-
<a id="__codelineno-
|
|
10342
|
-
<a id="__codelineno-
|
|
10416
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a>Collecting ipython
|
|
10417
|
+
<a id="__codelineno-25-2" name="__codelineno-25-2" href="#__codelineno-25-2"></a> Using cached ipython-7.20.0-py3-none-any.whl (784 kB)
|
|
10418
|
+
<a id="__codelineno-25-3" name="__codelineno-25-3" href="#__codelineno-25-3"></a> ...
|
|
10343
10419
|
</code></pre></div>
|
|
10344
10420
|
<ul>
|
|
10345
10421
|
<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>
|
|
10346
10422
|
</ul>
|
|
10347
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10348
|
-
<a id="__codelineno-
|
|
10423
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a>poetry<span class="w"> </span>shell
|
|
10424
|
+
<a id="__codelineno-26-2" name="__codelineno-26-2" href="#__codelineno-26-2"></a>poetry<span class="w"> </span>install
|
|
10349
10425
|
</code></pre></div>
|
|
10350
10426
|
<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>
|
|
10351
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10427
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a>poetry run mkdocs serve
|
|
10352
10428
|
</code></pre></div>
|
|
10353
10429
|
<p>Check out the <a href="https://python-poetry.org/docs/basic-usage/">Poetry usage guide</a> for more tips.</p>
|
|
10354
10430
|
<h4 id="configuring-nautobot">Configuring Nautobot<a class="headerlink" href="#configuring-nautobot" title="Permanent link">¶</a></h4>
|
|
@@ -10363,20 +10439,20 @@
|
|
|
10363
10439
|
<p>Nautobot's configuration file is <code>nautobot_config.py</code>.</p>
|
|
10364
10440
|
<h5 id="initializing-a-config">Initializing a Config<a class="headerlink" href="#initializing-a-config" title="Permanent link">¶</a></h5>
|
|
10365
10441
|
<p>You may also initialize a new configuration using <code>nautobot-server init</code>:</p>
|
|
10366
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10442
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-28-1" name="__codelineno-28-1" href="#__codelineno-28-1"></a>nautobot-server init
|
|
10367
10443
|
</code></pre></div>
|
|
10368
10444
|
<p>Example output:</p>
|
|
10369
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10370
|
-
<a id="__codelineno-
|
|
10371
|
-
<a id="__codelineno-
|
|
10372
|
-
<a id="__codelineno-
|
|
10373
|
-
<a id="__codelineno-
|
|
10445
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-29-1" name="__codelineno-29-1" href="#__codelineno-29-1"></a>Nautobot would like to send anonymized installation metrics to the project's maintainers.
|
|
10446
|
+
<a id="__codelineno-29-2" name="__codelineno-29-2" href="#__codelineno-29-2"></a>These metrics include the installed Nautobot version, the Python version in use, an anonymous "deployment ID", and a list of one-way-hashed names of enabled Nautobot Apps and their versions.
|
|
10447
|
+
<a id="__codelineno-29-3" name="__codelineno-29-3" href="#__codelineno-29-3"></a>Allow Nautobot to send these metrics? [y/n]: n
|
|
10448
|
+
<a id="__codelineno-29-4" name="__codelineno-29-4" href="#__codelineno-29-4"></a>Installation metrics will not be sent by default.
|
|
10449
|
+
<a id="__codelineno-29-5" name="__codelineno-29-5" href="#__codelineno-29-5"></a>Configuration file created at /home/example/.nautobot/nautobot_config.py
|
|
10374
10450
|
</code></pre></div>
|
|
10375
10451
|
<p>You may also specify alternate file locations. Please refer to <a href="../../user-guide/administration/configuration/index.html">Configuring Nautobot</a> for how to do that.</p>
|
|
10376
10452
|
<h5 id="using-the-development-config">Using the Development Config<a class="headerlink" href="#using-the-development-config" title="Permanent link">¶</a></h5>
|
|
10377
10453
|
<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>
|
|
10378
10454
|
<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>
|
|
10379
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10455
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-30-1" name="__codelineno-30-1" href="#__codelineno-30-1"></a>cp development/nautobot_config.py ~/.nautobot/nautobot_config.py
|
|
10380
10456
|
</code></pre></div>
|
|
10381
10457
|
<h5 id="required-settings">Required Settings<a class="headerlink" href="#required-settings" title="Permanent link">¶</a></h5>
|
|
10382
10458
|
<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>
|
|
@@ -10389,6 +10465,32 @@
|
|
|
10389
10465
|
</ul>
|
|
10390
10466
|
<h2 id="working-in-your-development-environment">Working in your Development Environment<a class="headerlink" href="#working-in-your-development-environment" title="Permanent link">¶</a></h2>
|
|
10391
10467
|
<p>Below are common commands for working your development environment.</p>
|
|
10468
|
+
<h3 id="creating-a-branch">Creating a Branch<a class="headerlink" href="#creating-a-branch" title="Permanent link">¶</a></h3>
|
|
10469
|
+
<p>Before you make any changes, always create a new branch. Again, for bug fixes and minor features, you'll want to create your branches from the <code>develop</code> branch, while for major new features, you'll branch from <code>next</code> instead.</p>
|
|
10470
|
+
<p>In current versions of Nautobot, you can use the <code>invoke branch</code> command to create a new branch or switch to an existing branch. Whether you're creating a branch off a fork or working against the Nautobot origin repo, you should follow this convention for naming your branch: <code>u/yourusername-0000-branch-summary</code>, where <code>0000</code> is the related GitHub issue number and <code>yourusername</code> is your GitHub username. (If you do not have a relevant GitHub issue, please consider opening one to document the context behind your changes.)</p>
|
|
10471
|
+
<p>For example:</p>
|
|
10472
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-31-1" name="__codelineno-31-1" href="#__codelineno-31-1"></a>invoke branch --create --branch u/yourusername-1234-some-bug-fix --parent develop
|
|
10473
|
+
</code></pre></div>
|
|
10474
|
+
<p>or:</p>
|
|
10475
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-32-1" name="__codelineno-32-1" href="#__codelineno-32-1"></a>invoke branch --create --branch u/yourusername-1235-amazing-feature --parent next
|
|
10476
|
+
</code></pre></div>
|
|
10477
|
+
<div class="admonition caution">
|
|
10478
|
+
<p class="admonition-title">Caution</p>
|
|
10479
|
+
<p>We recommend using this Invoke command instead of directly calling <code>git checkout</code> or <code>git switch</code> because it automatically handles some other aspects of the development environment, in particular stopping the currently running Nautobot Docker containers, if any, before switching to a different branch.</p>
|
|
10480
|
+
</div>
|
|
10481
|
+
<div class="admonition tip">
|
|
10482
|
+
<p class="admonition-title">Tip</p>
|
|
10483
|
+
<p>You can switch between any existing branches with simply <code>invoke branch --branch <name></code>.</p>
|
|
10484
|
+
</div>
|
|
10485
|
+
<div class="admonition tip">
|
|
10486
|
+
<p class="admonition-title">Nautobot branches and the Docker compose workflow</p>
|
|
10487
|
+
<p>It's common for the Python dependencies and database schema to differ between major and minor Nautobot releases, and therefore between the primary branches of <code>main</code>, <code>develop</code>, <code>next</code>, and <code>ltm-1.6</code>. To account for this, the Docker workflow automatically detects which <code>major.minor</code> Nautobot version you're working with and changes the Docker Compose project name accordingly. What this means for you in practice is that when first switching between Nautobot releases, you may need to rerun <code>invoke build</code> once for each primary branch, and <code>invoke start</code>/<code>invoke debug</code> may take some time as it needs to create a new database and migrate its schema. However, in the future, switching between releases should be relatively smooth (just <code>invoke branch -b <name></code> and then <code>invoke start</code>) rather than needing to rebuild the container and database every time you switch between <code>develop</code> and <code>next</code> as would likely be needed if the same Docker Compose project were used for both release trains.</p>
|
|
10488
|
+
<p>Conversely, if you're using the virtual environment workflow, you may need to manually run <code>poetry install</code> whenever switching between primary branches, and may need to manually drop and restore the database schema as well. Be aware!</p>
|
|
10489
|
+
</div>
|
|
10490
|
+
<h4 id="prototypes">Prototypes<a class="headerlink" href="#prototypes" title="Permanent link">¶</a></h4>
|
|
10491
|
+
<p>Sometimes code is written as a proof of concept or early implementation candidate but is not quite ready to be merged, or may be picked up by another author sometime in the future. In that case, the convention is to use the <code>prototype/</code> prefix to the branch name and not requiring the original authors username. In that scenario, using the example above, you would instead:</p>
|
|
10492
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-33-1" name="__codelineno-33-1" href="#__codelineno-33-1"></a>invoke branch --create --branch prototype/1234-next-amazing-feature --parent next
|
|
10493
|
+
</code></pre></div>
|
|
10392
10494
|
<h3 id="creating-a-superuser">Creating a Superuser<a class="headerlink" href="#creating-a-superuser" title="Permanent link">¶</a></h3>
|
|
10393
10495
|
<details class="version-changed">
|
|
10394
10496
|
<summary>Changed in version 2.1.2</summary>
|
|
@@ -10431,16 +10533,16 @@
|
|
|
10431
10533
|
</tbody>
|
|
10432
10534
|
</table>
|
|
10433
10535
|
<p>For example:</p>
|
|
10434
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10536
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-34-1" name="__codelineno-34-1" href="#__codelineno-34-1"></a>nautobot-server runserver
|
|
10435
10537
|
</code></pre></div>
|
|
10436
10538
|
<p>Example output:</p>
|
|
10437
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10438
|
-
<a id="__codelineno-
|
|
10439
|
-
<a id="__codelineno-
|
|
10440
|
-
<a id="__codelineno-
|
|
10441
|
-
<a id="__codelineno-
|
|
10442
|
-
<a id="__codelineno-
|
|
10443
|
-
<a id="__codelineno-
|
|
10539
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-35-1" name="__codelineno-35-1" href="#__codelineno-35-1"></a>Performing system checks...
|
|
10540
|
+
<a id="__codelineno-35-2" name="__codelineno-35-2" href="#__codelineno-35-2"></a>
|
|
10541
|
+
<a id="__codelineno-35-3" name="__codelineno-35-3" href="#__codelineno-35-3"></a>System check identified no issues (0 silenced).
|
|
10542
|
+
<a id="__codelineno-35-4" name="__codelineno-35-4" href="#__codelineno-35-4"></a>November 18, 2020 - 15:52:31
|
|
10543
|
+
<a id="__codelineno-35-5" name="__codelineno-35-5" href="#__codelineno-35-5"></a>Django version 3.1, using settings 'nautobot.core.settings'
|
|
10544
|
+
<a id="__codelineno-35-6" name="__codelineno-35-6" href="#__codelineno-35-6"></a>Starting development server at http://127.0.0.1:8080/
|
|
10545
|
+
<a id="__codelineno-35-7" name="__codelineno-35-7" href="#__codelineno-35-7"></a>Quit the server with CONTROL-C.
|
|
10444
10546
|
</code></pre></div>
|
|
10445
10547
|
<div class="admonition warning">
|
|
10446
10548
|
<p class="admonition-title">Warning</p>
|
|
@@ -10487,20 +10589,20 @@
|
|
|
10487
10589
|
</tbody>
|
|
10488
10590
|
</table>
|
|
10489
10591
|
<p>For example:</p>
|
|
10490
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10592
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-36-1" name="__codelineno-36-1" href="#__codelineno-36-1"></a>nautobot-server<span class="w"> </span>nbshell
|
|
10491
10593
|
</code></pre></div>
|
|
10492
10594
|
<p>Example output:</p>
|
|
10493
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10494
|
-
<a id="__codelineno-
|
|
10495
|
-
<a id="__codelineno-
|
|
10496
|
-
<a id="__codelineno-
|
|
10497
|
-
<a id="__codelineno-
|
|
10498
|
-
<a id="__codelineno-
|
|
10499
|
-
<a id="__codelineno-
|
|
10500
|
-
<a id="__codelineno-
|
|
10501
|
-
<a id="__codelineno-
|
|
10502
|
-
<a id="__codelineno-
|
|
10503
|
-
<a id="__codelineno-
|
|
10595
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-37-1" name="__codelineno-37-1" href="#__codelineno-37-1"></a># Shell Plus Model Imports
|
|
10596
|
+
<a id="__codelineno-37-2" name="__codelineno-37-2" href="#__codelineno-37-2"></a>...
|
|
10597
|
+
<a id="__codelineno-37-3" name="__codelineno-37-3" href="#__codelineno-37-3"></a># Shell Plus Django Imports
|
|
10598
|
+
<a id="__codelineno-37-4" name="__codelineno-37-4" href="#__codelineno-37-4"></a>...
|
|
10599
|
+
<a id="__codelineno-37-5" name="__codelineno-37-5" href="#__codelineno-37-5"></a># Django version 4.2.15
|
|
10600
|
+
<a id="__codelineno-37-6" name="__codelineno-37-6" href="#__codelineno-37-6"></a># Nautobot version 2.3.3b1
|
|
10601
|
+
<a id="__codelineno-37-7" name="__codelineno-37-7" href="#__codelineno-37-7"></a># Example Nautobot App version 1.0.0
|
|
10602
|
+
<a id="__codelineno-37-8" name="__codelineno-37-8" href="#__codelineno-37-8"></a>Python 3.12.6 (main, Sep 12 2024, 21:12:08) [GCC 12.2.0] on linux
|
|
10603
|
+
<a id="__codelineno-37-9" name="__codelineno-37-9" href="#__codelineno-37-9"></a>Type "help", "copyright", "credits" or "license" for more information.
|
|
10604
|
+
<a id="__codelineno-37-10" name="__codelineno-37-10" href="#__codelineno-37-10"></a>(InteractiveConsole)
|
|
10605
|
+
<a id="__codelineno-37-11" name="__codelineno-37-11" href="#__codelineno-37-11"></a>>>>
|
|
10504
10606
|
</code></pre></div>
|
|
10505
10607
|
<h3 id="post-upgrade-operations">Post-upgrade Operations<a class="headerlink" href="#post-upgrade-operations" title="Permanent link">¶</a></h3>
|
|
10506
10608
|
<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>
|
|
@@ -10527,22 +10629,22 @@
|
|
|
10527
10629
|
</div>
|
|
10528
10630
|
<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>
|
|
10529
10631
|
<p>First, use <code>pip3</code> to explicitly uninstall the Nautobot package from the environment:</p>
|
|
10530
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10632
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-38-1" name="__codelineno-38-1" href="#__codelineno-38-1"></a>pip3 uninstall -y nautobot
|
|
10531
10633
|
</code></pre></div>
|
|
10532
10634
|
<p>Example output:</p>
|
|
10533
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10534
|
-
<a id="__codelineno-
|
|
10535
|
-
<a id="__codelineno-
|
|
10635
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-39-1" name="__codelineno-39-1" href="#__codelineno-39-1"></a>Found existing installation: nautobot 1.0.0b2
|
|
10636
|
+
<a id="__codelineno-39-2" name="__codelineno-39-2" href="#__codelineno-39-2"></a>Uninstalling nautobot-1.0.0b2:
|
|
10637
|
+
<a id="__codelineno-39-3" name="__codelineno-39-3" href="#__codelineno-39-3"></a> Successfully uninstalled nautobot-1.0.0b2
|
|
10536
10638
|
</code></pre></div>
|
|
10537
10639
|
<p>Then try to just have Poetry do the right thing by telling it to install again:</p>
|
|
10538
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10640
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-40-1" name="__codelineno-40-1" href="#__codelineno-40-1"></a>poetry install
|
|
10539
10641
|
</code></pre></div>
|
|
10540
10642
|
<p>Example output:</p>
|
|
10541
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10542
|
-
<a id="__codelineno-
|
|
10543
|
-
<a id="__codelineno-
|
|
10544
|
-
<a id="__codelineno-
|
|
10545
|
-
<a id="__codelineno-
|
|
10643
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-41-1" name="__codelineno-41-1" href="#__codelineno-41-1"></a>Installing dependencies from lock file
|
|
10644
|
+
<a id="__codelineno-41-2" name="__codelineno-41-2" href="#__codelineno-41-2"></a>
|
|
10645
|
+
<a id="__codelineno-41-3" name="__codelineno-41-3" href="#__codelineno-41-3"></a>No dependencies to install or update
|
|
10646
|
+
<a id="__codelineno-41-4" name="__codelineno-41-4" href="#__codelineno-41-4"></a>
|
|
10647
|
+
<a id="__codelineno-41-5" name="__codelineno-41-5" href="#__codelineno-41-5"></a>Installing the current project: nautobot (1.0.0-beta.2)
|
|
10546
10648
|
</code></pre></div>
|
|
10547
10649
|
<h3 id="running-tests">Running Tests<a class="headerlink" href="#running-tests" title="Permanent link">¶</a></h3>
|
|
10548
10650
|
<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>
|
|
@@ -10585,24 +10687,24 @@
|
|
|
10585
10687
|
</ul>
|
|
10586
10688
|
<h5 id="unit-test-invocation-examples">Unit Test Invocation Examples<a class="headerlink" href="#unit-test-invocation-examples" title="Permanent link">¶</a></h5>
|
|
10587
10689
|
<p>In general, when you first run the Nautobot tests in your local copy of the repository, we'd recommend:</p>
|
|
10588
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10690
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-42-1" name="__codelineno-42-1" href="#__codelineno-42-1"></a>invoke unittest
|
|
10589
10691
|
</code></pre></div>
|
|
10590
10692
|
<p>When there are too many cores on the testing machine, you can limit the number of parallel workers:</p>
|
|
10591
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10693
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-43-1" name="__codelineno-43-1" href="#__codelineno-43-1"></a>invoke unittest --parallel-workers 4
|
|
10592
10694
|
</code></pre></div>
|
|
10593
10695
|
<p>On subsequent reruns, you can add the other performance-related options:</p>
|
|
10594
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10595
|
-
<a id="__codelineno-
|
|
10696
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-44-1" name="__codelineno-44-1" href="#__codelineno-44-1"></a>invoke unittest --skip-docs-build
|
|
10697
|
+
<a id="__codelineno-44-2" name="__codelineno-44-2" href="#__codelineno-44-2"></a>invoke unittest --skip-docs-build --label nautobot.core.tests
|
|
10596
10698
|
</code></pre></div>
|
|
10597
10699
|
<p>When switching between significantly different branches of the code base (e.g. <code>main</code> vs <code>develop</code> vs <code>next</code>), you'll need to for once include the <code>--no-keepdb</code> option so that the test database can be destroyed and recreated appropriately:</p>
|
|
10598
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10700
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-45-1" name="__codelineno-45-1" href="#__codelineno-45-1"></a>invoke unittest --no-keepdb
|
|
10599
10701
|
</code></pre></div>
|
|
10600
10702
|
<p>To not use the cached test fixture, you will need to include the <code>--no-cache-test-fixtures</code> flag</p>
|
|
10601
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10703
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-46-1" name="__codelineno-46-1" href="#__codelineno-46-1"></a>invoke unittest --no-cache-test-fixtures
|
|
10602
10704
|
</code></pre></div>
|
|
10603
10705
|
<p>To limit the test to a specific pattern or label, you can use the <code>--label</code> and <code>--pattern</code> options:</p>
|
|
10604
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10605
|
-
<a id="__codelineno-
|
|
10706
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-47-1" name="__codelineno-47-1" href="#__codelineno-47-1"></a>invoke unittest --verbose --skip-docs-build --label nautobot.core.tests.dcim.test_views.DeviceTestCase
|
|
10707
|
+
<a id="__codelineno-47-2" name="__codelineno-47-2" href="#__codelineno-47-2"></a>invoke unittest --verbose --skip-docs-build --pattern Controller
|
|
10606
10708
|
</code></pre></div>
|
|
10607
10709
|
<h4 id="integration-tests">Integration Tests<a class="headerlink" href="#integration-tests" title="Permanent link">¶</a></h4>
|
|
10608
10710
|
<p>Integration tests are automated tests written and run to ensure that the Nautobot application behaves as expected when being used as it would be in practice. By contrast to unit tests, where individual units of code are being tested, integration tests rely upon the server code actually running, and web UI clients or API clients to make real connections to the service to exercise actual workflows, such as navigating to the login page, filling out the username/passwords fields, and clicking the "Log In" button.</p>
|
|
@@ -10678,7 +10780,7 @@
|
|
|
10678
10780
|
</table>
|
|
10679
10781
|
<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>
|
|
10680
10782
|
<p>To enforce best practices around consistent <a href="style-guide.html">coding style</a>, Nautobot uses <a href="https://docs.astral.sh/ruff">Ruff</a>. Additionally, <a href="https://en.wikipedia.org/wiki/Static_program_analysis">static analysis</a> of Nautobot code is performed by Ruff and <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>
|
|
10681
|
-
<!--
|
|
10783
|
+
<!-- pyml disable-num-lines 4 no-inline-html -->
|
|
10682
10784
|
<table>
|
|
10683
10785
|
<thead>
|
|
10684
10786
|
<tr>
|
|
@@ -10697,8 +10799,6 @@
|
|
|
10697
10799
|
</tr>
|
|
10698
10800
|
</tbody>
|
|
10699
10801
|
</table>
|
|
10700
|
-
<!-- markdownlint-enable no-inline-html -->
|
|
10701
|
-
|
|
10702
10802
|
<h3 id="handling-migrations">Handling Migrations<a class="headerlink" href="#handling-migrations" title="Permanent link">¶</a></h3>
|
|
10703
10803
|
<h4 id="checking-whether-a-new-migration-is-needed">Checking Whether a New Migration is Needed<a class="headerlink" href="#checking-whether-a-new-migration-is-needed" title="Permanent link">¶</a></h4>
|
|
10704
10804
|
<p>If you're unsure whether a database schema migration is needed based on your changes, you can run the following command:</p>
|
|
@@ -10790,7 +10890,7 @@
|
|
|
10790
10890
|
</table>
|
|
10791
10891
|
<p>Documentation is written in Markdown. If you need to add additional pages or sections to the documentation, you can add them to <code>mkdocs.yml</code> at the root of the repository.</p>
|
|
10792
10892
|
<h3 id="verifying-documentation">Verifying Documentation<a class="headerlink" href="#verifying-documentation" title="Permanent link">¶</a></h3>
|
|
10793
|
-
<p>Nautobot uses <a href="https://github.com/
|
|
10893
|
+
<p>Nautobot uses <a href="https://github.com/jackdewinter/pymarkdown"><code>pymarkdownlnt</code></a> to verify correctness of the documentation. You should run this command and ensure that it passes fully with regard to your documentation changes before opening a pull request upstream.</p>
|
|
10794
10894
|
<table>
|
|
10795
10895
|
<thead>
|
|
10796
10896
|
<tr>
|
|
@@ -10801,14 +10901,14 @@
|
|
|
10801
10901
|
<tbody>
|
|
10802
10902
|
<tr>
|
|
10803
10903
|
<td><code>invoke markdownlint</code></td>
|
|
10804
|
-
<td><code>
|
|
10904
|
+
<td><code>pymarkdown scan --recurse nautobot examples *.md</code></td>
|
|
10805
10905
|
</tr>
|
|
10806
10906
|
</tbody>
|
|
10807
10907
|
</table>
|
|
10808
10908
|
<h2 id="submitting-pull-requests">Submitting Pull Requests<a class="headerlink" href="#submitting-pull-requests" title="Permanent link">¶</a></h2>
|
|
10809
10909
|
<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>
|
|
10810
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10811
|
-
<a id="__codelineno-
|
|
10910
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-48-1" name="__codelineno-48-1" href="#__codelineno-48-1"></a>git commit -m "Closes #1234: Add IPv5 support"
|
|
10911
|
+
<a id="__codelineno-48-2" name="__codelineno-48-2" href="#__codelineno-48-2"></a>git push origin
|
|
10812
10912
|
</code></pre></div>
|
|
10813
10913
|
<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>
|
|
10814
10914
|
<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>
|
|
@@ -10820,11 +10920,11 @@
|
|
|
10820
10920
|
<p>Below are common issues you might encounter in your development environment and how to address them.</p>
|
|
10821
10921
|
<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>
|
|
10822
10922
|
<p>When using <code>nautobot-server runserver</code> to do development you might run into a traceback that looks something like this:</p>
|
|
10823
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10824
|
-
<a id="__codelineno-
|
|
10923
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-49-1" name="__codelineno-49-1" href="#__codelineno-49-1"></a>Exception Type: OperationalError at /extras/tags/
|
|
10924
|
+
<a id="__codelineno-49-2" name="__codelineno-49-2" href="#__codelineno-49-2"></a>Exception Value: FATAL: sorry, too many clients already
|
|
10825
10925
|
</code></pre></div>
|
|
10826
10926
|
<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>
|
|
10827
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
10927
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-50-1" name="__codelineno-50-1" href="#__codelineno-50-1"></a>nautobot-server runserver --nothreading
|
|
10828
10928
|
</code></pre></div>
|
|
10829
10929
|
|
|
10830
10930
|
|
|
@@ -10922,7 +11022,7 @@
|
|
|
10922
11022
|
|
|
10923
11023
|
|
|
10924
11024
|
<a href="https://blog.networktocode.com/blog/tags/nautobot" target="_blank" rel="noopener" title="Network to Code Blog" class="md-social__link">
|
|
10925
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.
|
|
11025
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M0 64c0-17.7 14.3-32 32-32 229.8 0 416 186.2 416 416 0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96 14.3 96 0 81.7 0 64m0 352a64 64 0 1 1 128 0 64 64 0 1 1-128 0m32-256c159.1 0 288 128.9 288 288 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224-17.7 0-32-14.3-32-32s14.3-32 32-32"/></svg>
|
|
10926
11026
|
</a>
|
|
10927
11027
|
|
|
10928
11028
|
|
|
@@ -10930,7 +11030,7 @@
|
|
|
10930
11030
|
|
|
10931
11031
|
|
|
10932
11032
|
<a href="https://www.youtube.com/playlist?list=PLjA0bhxgryJ2Ts4GJMDA-tPzVWEncv4pb" target="_blank" rel="noopener" title="Nautobot Videos" class="md-social__link">
|
|
10933
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.7.
|
|
11033
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305m-317.51 213.508V175.185l142.739 81.205z"/></svg>
|
|
10934
11034
|
</a>
|
|
10935
11035
|
|
|
10936
11036
|
|
|
@@ -10938,7 +11038,7 @@
|
|
|
10938
11038
|
|
|
10939
11039
|
|
|
10940
11040
|
<a href="https://www.networktocode.com/community/" target="_blank" rel="noopener" title="Network to Code Community" class="md-social__link">
|
|
10941
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.
|
|
11041
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1s21.16-47.06 47.06-47.06h47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06S448 171 448 196.9s-21.16 47.06-47.06 47.06h-47.06zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06S309 480 283.1 480s-47.06-21.16-47.06-47.06v-47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06s21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06z"/></svg>
|
|
10942
11042
|
</a>
|
|
10943
11043
|
|
|
10944
11044
|
|
|
@@ -10946,7 +11046,7 @@
|
|
|
10946
11046
|
|
|
10947
11047
|
|
|
10948
11048
|
<a href="https://github.com/nautobot/nautobot" target="_blank" rel="noopener" title="GitHub Repo" class="md-social__link">
|
|
10949
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.7.
|
|
11049
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
|
|
10950
11050
|
</a>
|
|
10951
11051
|
|
|
10952
11052
|
|
|
@@ -10954,7 +11054,7 @@
|
|
|
10954
11054
|
|
|
10955
11055
|
|
|
10956
11056
|
<a href="https://twitter.com/networktocode" target="_blank" rel="noopener" title="Network to Code Twitter" class="md-social__link">
|
|
10957
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.
|
|
11057
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253"/></svg>
|
|
10958
11058
|
</a>
|
|
10959
11059
|
|
|
10960
11060
|
</div>
|
|
@@ -10969,10 +11069,10 @@
|
|
|
10969
11069
|
</div>
|
|
10970
11070
|
|
|
10971
11071
|
|
|
10972
|
-
<script id="__config" type="application/json">{"base": "../..", "features": ["content.code.annotate", "content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../assets/javascripts/workers/search.
|
|
11072
|
+
<script id="__config" type="application/json">{"base": "../..", "features": ["content.code.annotate", "content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../assets/javascripts/workers/search.f8cc74c7.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
|
10973
11073
|
|
|
10974
11074
|
|
|
10975
|
-
<script src="../../assets/javascripts/bundle.
|
|
11075
|
+
<script src="../../assets/javascripts/bundle.60a45f97.min.js"></script>
|
|
10976
11076
|
|
|
10977
11077
|
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
10978
11078
|
|