nautobot 2.0.0a3__py3-none-any.whl → 2.0.0b1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (780) hide show
  1. nautobot/apps/api.py +6 -8
  2. nautobot/apps/forms.py +0 -2
  3. nautobot/apps/ui.py +0 -8
  4. nautobot/circuits/api/serializers.py +9 -117
  5. nautobot/circuits/api/urls.py +1 -1
  6. nautobot/circuits/api/views.py +0 -1
  7. nautobot/circuits/forms.py +0 -65
  8. nautobot/circuits/migrations/0014_related_name_changes.py +1 -1
  9. nautobot/circuits/migrations/0016_tagsfield.py +34 -0
  10. nautobot/circuits/migrations/0017_fixup_null_statuses.py +22 -0
  11. nautobot/circuits/migrations/0018_status_nonnullable.py +22 -0
  12. nautobot/circuits/models.py +3 -87
  13. nautobot/circuits/navigation.py +14 -69
  14. nautobot/circuits/signals.py +0 -2
  15. nautobot/circuits/tables.py +39 -1
  16. nautobot/circuits/tests/integration/test_relationships.py +9 -9
  17. nautobot/circuits/tests/test_api.py +4 -8
  18. nautobot/circuits/tests/test_filters.py +10 -4
  19. nautobot/circuits/tests/test_models.py +5 -1
  20. nautobot/circuits/tests/test_views.py +27 -5
  21. nautobot/circuits/views.py +18 -10
  22. nautobot/core/api/__init__.py +8 -2
  23. nautobot/core/api/fields.py +15 -6
  24. nautobot/core/api/filter_backends.py +3 -2
  25. nautobot/core/api/metadata.py +237 -30
  26. nautobot/core/api/mixins.py +94 -0
  27. nautobot/core/api/pagination.py +4 -0
  28. nautobot/core/api/parsers.py +154 -0
  29. nautobot/core/api/renderers.py +153 -2
  30. nautobot/core/api/schema.py +46 -2
  31. nautobot/core/api/serializers.py +377 -35
  32. nautobot/core/api/urls.py +11 -3
  33. nautobot/core/api/utils.py +174 -2
  34. nautobot/core/api/versioning.py +32 -10
  35. nautobot/core/api/views.py +266 -72
  36. nautobot/core/apps/__init__.py +138 -220
  37. nautobot/core/celery/__init__.py +112 -41
  38. nautobot/core/celery/backends.py +19 -12
  39. nautobot/core/celery/control.py +46 -0
  40. nautobot/core/celery/encoders.py +53 -0
  41. nautobot/core/celery/log.py +38 -0
  42. nautobot/core/celery/schedulers.py +23 -4
  43. nautobot/core/celery/task.py +1 -16
  44. nautobot/core/checks.py +0 -27
  45. nautobot/core/choices.py +0 -113
  46. nautobot/core/{cli.py → cli/__init__.py} +1 -1
  47. nautobot/core/cli/__main__.py +3 -0
  48. nautobot/core/constants.py +0 -24
  49. nautobot/core/context_processors.py +12 -0
  50. nautobot/core/filters.py +2 -2
  51. nautobot/core/forms/__init__.py +0 -4
  52. nautobot/core/forms/fields.py +38 -65
  53. nautobot/core/forms/forms.py +4 -1
  54. nautobot/core/forms/utils.py +0 -52
  55. nautobot/core/graphql/schema.py +4 -27
  56. nautobot/core/jobs/__init__.py +75 -0
  57. nautobot/core/management/commands/build_ui.py +255 -0
  58. nautobot/core/management/commands/generate_test_data.py +3 -2
  59. nautobot/core/management/commands/post_upgrade.py +24 -24
  60. nautobot/core/models/__init__.py +26 -1
  61. nautobot/core/models/fields.py +24 -5
  62. nautobot/core/models/generics.py +2 -42
  63. nautobot/core/models/managers.py +5 -0
  64. nautobot/core/models/name_color_content_types.py +0 -14
  65. nautobot/core/models/tree_queries.py +14 -4
  66. nautobot/core/models/utils.py +5 -6
  67. nautobot/core/models/validators.py +17 -8
  68. nautobot/core/releases.py +8 -10
  69. nautobot/core/settings.py +80 -42
  70. nautobot/core/tables.py +5 -5
  71. nautobot/core/tasks.py +4 -7
  72. nautobot/core/templates/base.html +1 -49
  73. nautobot/core/templates/base_django.html +49 -0
  74. nautobot/core/templates/base_react.html +55 -0
  75. nautobot/core/templates/buttons/export.html +6 -4
  76. nautobot/core/templates/generic/object_bulk_create.html +10 -21
  77. nautobot/core/templates/generic/object_list.html +3 -1
  78. nautobot/core/templates/generic/object_retrieve_plugin_full_width.html +3 -0
  79. nautobot/core/templates/inc/footer.html +1 -0
  80. nautobot/core/templates/inc/javascript.html +0 -14
  81. nautobot/core/templates/inc/nav_menu.html +28 -33
  82. nautobot/core/templates/inc/object_details_advanced_panel.html +13 -0
  83. nautobot/core/templates/inc/relationships_table_rows.html +2 -2
  84. nautobot/core/templates/nautobot_config.py.j2 +8 -20
  85. nautobot/core/templates/plugin_template/__init__.py-tpl +1 -2
  86. nautobot/core/templates/rest_framework/api.html +8 -0
  87. nautobot/core/templatetags/buttons.py +32 -28
  88. nautobot/core/testing/__init__.py +47 -44
  89. nautobot/core/testing/api.py +362 -47
  90. nautobot/core/testing/filters.py +1 -1
  91. nautobot/core/testing/migrations.py +2 -0
  92. nautobot/core/testing/mixins.py +22 -9
  93. nautobot/core/testing/schema.py +2 -1
  94. nautobot/core/testing/views.py +21 -46
  95. nautobot/core/tests/integration/test_filters.py +17 -8
  96. nautobot/core/tests/integration/test_navbar.py +11 -34
  97. nautobot/core/tests/integration/test_plugin_navbar.py +9 -103
  98. nautobot/core/tests/nautobot_config.py +2 -3
  99. nautobot/core/tests/test_api.py +290 -21
  100. nautobot/core/tests/test_checks.py +0 -7
  101. nautobot/core/tests/test_filters.py +107 -59
  102. nautobot/core/tests/test_forms.py +26 -92
  103. nautobot/core/tests/test_graphql.py +110 -77
  104. nautobot/core/tests/test_logging.py +4 -0
  105. nautobot/core/tests/test_managers.py +3 -1
  106. nautobot/core/tests/test_models.py +2 -0
  107. nautobot/core/tests/test_paginator.py +3 -1
  108. nautobot/core/tests/test_releases.py +12 -12
  109. nautobot/core/tests/test_templatetags_helpers.py +4 -4
  110. nautobot/core/tests/test_utils.py +32 -68
  111. nautobot/core/tests/test_views.py +12 -15
  112. nautobot/core/utils/data.py +17 -0
  113. nautobot/core/utils/deprecation.py +9 -6
  114. nautobot/core/utils/filtering.py +8 -3
  115. nautobot/core/utils/git.py +12 -4
  116. nautobot/core/utils/lookup.py +3 -1
  117. nautobot/core/utils/requests.py +1 -104
  118. nautobot/core/views/__init__.py +1 -0
  119. nautobot/core/views/generic.py +75 -110
  120. nautobot/core/views/mixins.py +52 -61
  121. nautobot/core/views/renderers.py +6 -7
  122. nautobot/core/views/utils.py +80 -0
  123. nautobot/dcim/api/serializers.py +160 -667
  124. nautobot/dcim/api/urls.py +1 -1
  125. nautobot/dcim/api/views.py +7 -44
  126. nautobot/dcim/choices.py +2 -0
  127. nautobot/dcim/filters/__init__.py +21 -0
  128. nautobot/dcim/form_mixins.py +1 -27
  129. nautobot/dcim/forms.py +19 -765
  130. nautobot/dcim/migrations/0024_alter_device_and_rack_role_add_new_role.py +2 -1
  131. nautobot/dcim/migrations/0025_device_and_rack_roles_data_migrations.py +19 -13
  132. nautobot/dcim/migrations/0027_remove_device_role_and_rack_role.py +1 -1
  133. nautobot/dcim/migrations/0028_rename_foreignkey_fields.py +1 -1
  134. nautobot/dcim/migrations/0030_migrate_region_and_site_data_to_locations.py +2 -2
  135. nautobot/dcim/migrations/0035_related_name_changes.py +1 -1
  136. nautobot/dcim/migrations/0036_remove_region_and_site.py +1 -1
  137. nautobot/dcim/migrations/0040_tagsfield.py +109 -0
  138. nautobot/dcim/migrations/{0040_ipam__namespaces.py → 0041_ipam__namespaces.py} +1 -1
  139. nautobot/dcim/migrations/0042_fixup_null_statuses.py +51 -0
  140. nautobot/dcim/migrations/0043_status_nonnullable.py +72 -0
  141. nautobot/dcim/models/cables.py +3 -33
  142. nautobot/dcim/models/device_component_templates.py +6 -0
  143. nautobot/dcim/models/device_components.py +12 -198
  144. nautobot/dcim/models/devices.py +30 -143
  145. nautobot/dcim/models/locations.py +3 -64
  146. nautobot/dcim/models/power.py +3 -50
  147. nautobot/dcim/models/racks.py +7 -84
  148. nautobot/dcim/navigation.py +141 -467
  149. nautobot/dcim/signals.py +0 -2
  150. nautobot/dcim/tables/locations.py +2 -2
  151. nautobot/dcim/tables/power.py +1 -2
  152. nautobot/dcim/templates/dcim/console_port_connection_list.html +7 -0
  153. nautobot/dcim/templates/dcim/devicetype.html +2 -2
  154. nautobot/dcim/templates/dcim/interface_connection_list.html +7 -0
  155. nautobot/dcim/templates/dcim/location.html +16 -1
  156. nautobot/dcim/templates/dcim/locationtype.html +15 -0
  157. nautobot/dcim/templates/dcim/power_port_connection_list.html +7 -0
  158. nautobot/dcim/templates/dcim/rackgroup.html +0 -12
  159. nautobot/dcim/tests/test_api.py +166 -81
  160. nautobot/dcim/tests/test_cablepaths.py +41 -35
  161. nautobot/dcim/tests/test_filters.py +67 -23
  162. nautobot/dcim/tests/test_forms.py +5 -205
  163. nautobot/dcim/tests/test_graphql.py +7 -2
  164. nautobot/dcim/tests/test_migrations.py +6 -11
  165. nautobot/dcim/tests/test_models.py +182 -110
  166. nautobot/dcim/tests/test_natural_ordering.py +11 -8
  167. nautobot/dcim/tests/test_signals.py +6 -3
  168. nautobot/dcim/tests/test_views.py +197 -175
  169. nautobot/dcim/urls.py +11 -16
  170. nautobot/dcim/views.py +7 -134
  171. nautobot/docs/additional-features/caching.md +6 -87
  172. nautobot/docs/additional-features/job-scheduling-and-approvals.md +3 -0
  173. nautobot/docs/additional-features/jobs.md +177 -195
  174. nautobot/docs/administration/nautobot-server.md +6 -21
  175. nautobot/docs/administration/replicating-nautobot.md +0 -10
  176. nautobot/docs/configuration/optional-settings.md +32 -41
  177. nautobot/docs/configuration/required-settings.md +11 -52
  178. nautobot/docs/development/application-registry.md +2 -13
  179. nautobot/docs/development/extending-models.md +15 -17
  180. nautobot/docs/development/generic-views.md +0 -2
  181. nautobot/docs/development/getting-started.md +55 -5
  182. nautobot/docs/development/navigation-menu.md +22 -93
  183. nautobot/docs/development/react-ui.md +105 -0
  184. nautobot/docs/development/role-internals.md +1 -3
  185. nautobot/docs/development/style-guide.md +6 -4
  186. nautobot/docs/index.md +3 -2
  187. nautobot/docs/installation/migrating-from-netbox.md +11 -42
  188. nautobot/docs/installation/nautobot.md +1 -1
  189. nautobot/docs/installation/tables/v2-api-behavior-changes.yaml +70 -0
  190. nautobot/docs/installation/tables/v2-api-removed-fields.yaml +142 -0
  191. nautobot/docs/installation/tables/v2-api-renamed-fields.yaml +124 -0
  192. nautobot/docs/installation/tables/v2-code-location-changes.yaml +241 -0
  193. nautobot/docs/installation/tables/v2-code-removals.yaml +67 -0
  194. nautobot/docs/installation/tables/v2-database-behavior-changes.yaml +37 -0
  195. nautobot/docs/installation/tables/v2-database-removed-fields.yaml +166 -0
  196. nautobot/docs/installation/tables/v2-database-renamed-fields.yaml +340 -0
  197. nautobot/docs/installation/tables/v2-filters-corrected-fields.yaml +28 -0
  198. nautobot/docs/installation/tables/v2-filters-enhanced-fields.yaml +241 -0
  199. nautobot/docs/installation/tables/v2-filters-removed-fields.yaml +553 -0
  200. nautobot/docs/installation/tables/v2-filters-renamed-fields.yaml +223 -0
  201. nautobot/docs/installation/tables/v2-logging-renamed-loggers.yaml +23 -0
  202. nautobot/docs/installation/upgrading-from-nautobot-v1.md +170 -747
  203. nautobot/docs/models/dcim/device.md +3 -0
  204. nautobot/docs/models/dcim/deviceredundancygroup.md +3 -3
  205. nautobot/docs/models/extras/computedfield.md +4 -4
  206. nautobot/docs/models/extras/gitrepository.md +3 -0
  207. nautobot/docs/models/extras/job.md +1 -0
  208. nautobot/docs/models/extras/jobbutton.md +18 -13
  209. nautobot/docs/models/extras/jobhook.md +7 -4
  210. nautobot/docs/models/extras/jobresult.md +6 -2
  211. nautobot/docs/models/extras/relationship.md +2 -2
  212. nautobot/docs/models/extras/status.md +6 -19
  213. nautobot/docs/models/ipam/ipaddress.md +3 -0
  214. nautobot/docs/models/virtualization/virtualmachine.md +3 -0
  215. nautobot/docs/plugins/development.md +83 -21
  216. nautobot/docs/release-notes/version-1.5.md +53 -0
  217. nautobot/docs/release-notes/version-2.0.md +180 -0
  218. nautobot/docs/requirements.txt +1 -0
  219. nautobot/docs/rest-api/overview.md +384 -215
  220. nautobot/docs/rest-api/ui-related-endpoints.md +9 -0
  221. nautobot/extras/admin.py +3 -5
  222. nautobot/extras/api/customfields.py +15 -39
  223. nautobot/extras/api/fields.py +0 -11
  224. nautobot/extras/api/mixins.py +45 -0
  225. nautobot/extras/api/relationships.py +63 -158
  226. nautobot/extras/api/serializers.py +165 -700
  227. nautobot/extras/api/urls.py +1 -1
  228. nautobot/extras/api/views.py +294 -280
  229. nautobot/extras/apps.py +4 -7
  230. nautobot/extras/choices.py +11 -9
  231. nautobot/extras/constants.py +9 -3
  232. nautobot/extras/datasources/__init__.py +2 -0
  233. nautobot/extras/datasources/git.py +135 -186
  234. nautobot/extras/datasources/registry.py +25 -35
  235. nautobot/extras/filters/__init__.py +20 -19
  236. nautobot/extras/filters/mixins.py +4 -4
  237. nautobot/extras/forms/forms.py +63 -127
  238. nautobot/extras/forms/mixins.py +23 -51
  239. nautobot/extras/health_checks.py +0 -33
  240. nautobot/extras/jobs.py +387 -565
  241. nautobot/extras/management/commands/runjob.py +24 -62
  242. nautobot/extras/managers.py +30 -7
  243. nautobot/extras/migrations/0058_jobresult_add_time_status_idxs.py +38 -0
  244. nautobot/extras/migrations/{0058_joblogentry_scheduledjob_webhook_data_migration.py → 0059_joblogentry_scheduledjob_webhook_data_migration.py} +1 -1
  245. nautobot/extras/migrations/{0059_alter_joblogentry_scheduledjob_webhook_fields.py → 0060_alter_joblogentry_scheduledjob_webhook_fields.py} +1 -1
  246. nautobot/extras/migrations/{0060_role_and_alter_status.py → 0061_role_and_alter_status.py} +1 -7
  247. nautobot/extras/migrations/{0061_collect_roles_from_related_apps_roles.py → 0062_collect_roles_from_related_apps_roles.py} +33 -32
  248. nautobot/extras/migrations/{0062_alter_role_options.py → 0063_alter_role_options.py} +1 -1
  249. nautobot/extras/migrations/{0063_alter_configcontext_and_add_new_role.py → 0064_alter_configcontext_and_add_new_role.py} +1 -1
  250. nautobot/extras/migrations/0065_configcontext_data_migrations.py +44 -0
  251. nautobot/extras/migrations/{0065_rename_configcontext_role.py → 0066_rename_configcontext_role.py} +1 -1
  252. nautobot/extras/migrations/{0066_jobresult__add_celery_fields.py → 0067_jobresult__add_celery_fields.py} +36 -2
  253. nautobot/extras/migrations/{0067_created_datetime.py → 0068_created_datetime.py} +1 -1
  254. nautobot/extras/migrations/{0068_remove_site_and_region_attributes_from_config_context.py → 0069_remove_site_and_region_attributes_from_config_context.py} +1 -1
  255. nautobot/extras/migrations/{0069_replace_related_names.py → 0070_replace_related_names.py} +1 -1
  256. nautobot/extras/migrations/{0070_rename_model_fields.py → 0071_rename_model_fields.py} +1 -1
  257. nautobot/extras/migrations/0072_job__unique_name_data_migration.py +86 -0
  258. nautobot/extras/migrations/{0072_job__unique_name.py → 0073_job__unique_name.py} +13 -9
  259. nautobot/extras/migrations/{0073_remove_gitrepository_fields.py → 0074_remove_gitrepository_fields.py} +1 -1
  260. nautobot/extras/migrations/{0074_rename_slug_to_key_for_custom_field.py → 0075_rename_slug_to_key_for_custom_field.py} +1 -1
  261. nautobot/extras/migrations/{0075_migrate_custom_field_data.py → 0076_migrate_custom_field_data.py} +1 -1
  262. nautobot/extras/migrations/{0076_remove_name_field_and_make_label_field_non_nullable.py → 0077_remove_name_field_and_make_label_field_non_nullable.py} +1 -1
  263. nautobot/extras/migrations/{0077_remove_slug.py → 0078_remove_slug.py} +1 -5
  264. nautobot/extras/migrations/0079_tagsfield.py +28 -0
  265. nautobot/extras/migrations/0080_rename_relationship_slug_to_key.py +17 -0
  266. nautobot/extras/migrations/0081_rename_relationship_name_to_label.py +29 -0
  267. nautobot/extras/migrations/0082_ensure_relationship_keys_are_unique.py +43 -0
  268. nautobot/extras/migrations/0083_rename_computed_field_slug_to_key.py +21 -0
  269. nautobot/extras/migrations/0084_taggeditem_cleanup.py +43 -0
  270. nautobot/extras/migrations/0085_taggeditem_uniqueness.py +22 -0
  271. nautobot/extras/migrations/0086_job__celery_task_fields__dryrun_support.py +81 -0
  272. nautobot/extras/migrations/0087_job__commit_default_data_migration.py +26 -0
  273. nautobot/extras/migrations/0088_joblogentry__log_level_default.py +17 -0
  274. nautobot/extras/migrations/0089_joblogentry__log_level_data_migration.py +34 -0
  275. nautobot/extras/migrations/0090_scheduledjob__data_migration.py +57 -0
  276. nautobot/extras/models/__init__.py +2 -3
  277. nautobot/extras/models/change_logging.py +0 -36
  278. nautobot/extras/models/customfields.py +39 -33
  279. nautobot/extras/models/datasources.py +48 -50
  280. nautobot/extras/models/groups.py +5 -6
  281. nautobot/extras/models/jobs.py +189 -321
  282. nautobot/extras/models/mixins.py +0 -71
  283. nautobot/extras/models/models.py +0 -19
  284. nautobot/extras/models/relationships.py +19 -13
  285. nautobot/extras/models/roles.py +0 -34
  286. nautobot/extras/models/secrets.py +2 -26
  287. nautobot/extras/models/statuses.py +6 -5
  288. nautobot/extras/models/tags.py +2 -17
  289. nautobot/extras/navigation.py +89 -307
  290. nautobot/extras/plugins/__init__.py +3 -120
  291. nautobot/extras/plugins/utils.py +0 -3
  292. nautobot/extras/plugins/validators.py +5 -4
  293. nautobot/extras/plugins/views.py +16 -3
  294. nautobot/extras/querysets.py +1 -7
  295. nautobot/extras/registry.py +3 -0
  296. nautobot/extras/signals.py +26 -60
  297. nautobot/extras/tables.py +34 -40
  298. nautobot/extras/tasks.py +0 -12
  299. nautobot/extras/templates/extras/configcontext.html +1 -1
  300. nautobot/extras/templates/extras/configcontextschema.html +16 -1
  301. nautobot/extras/templates/extras/customfield.html +0 -13
  302. nautobot/extras/templates/extras/gitrepository.html +3 -3
  303. nautobot/extras/templates/extras/inc/jobresult.html +10 -0
  304. nautobot/extras/templates/extras/inc/panel_jobhistory.html +1 -1
  305. nautobot/extras/templates/extras/job.html +35 -25
  306. nautobot/extras/templates/extras/job_approval_request.html +15 -30
  307. nautobot/extras/templates/extras/job_detail.html +13 -31
  308. nautobot/extras/templates/extras/job_edit.html +15 -17
  309. nautobot/extras/templates/extras/jobresult.html +24 -6
  310. nautobot/extras/templates/extras/scheduledjob.html +2 -2
  311. nautobot/extras/templates/extras/secret.html +28 -0
  312. nautobot/extras/templatetags/job_buttons.py +1 -0
  313. nautobot/extras/{tests/example_jobs → test_jobs}/api_test_job.py +13 -6
  314. nautobot/extras/test_jobs/atomic_transaction.py +53 -0
  315. nautobot/extras/test_jobs/dry_run.py +29 -0
  316. nautobot/extras/{tests/example_jobs/test_duplicate_name.py → test_jobs/duplicate_name.py} +4 -0
  317. nautobot/extras/test_jobs/duplicate_name2.py +9 -0
  318. nautobot/extras/test_jobs/fail.py +23 -0
  319. nautobot/extras/{tests/example_jobs/test_field_default.py → test_jobs/field_default.py} +4 -0
  320. nautobot/extras/{tests/example_jobs/test_field_order.py → test_jobs/field_order.py} +4 -0
  321. nautobot/extras/{tests/example_jobs/test_file_upload_fail.py → test_jobs/file_upload_fail.py} +11 -6
  322. nautobot/extras/test_jobs/file_upload_pass.py +25 -0
  323. nautobot/extras/test_jobs/has_sensitive_variables.py +25 -0
  324. nautobot/extras/test_jobs/ipaddress_vars.py +66 -0
  325. nautobot/extras/test_jobs/job_button_receiver.py +28 -0
  326. nautobot/extras/test_jobs/job_hook_receiver.py +29 -0
  327. nautobot/extras/test_jobs/job_variables.py +88 -0
  328. nautobot/extras/test_jobs/location_with_custom_field.py +45 -0
  329. nautobot/extras/test_jobs/log_redaction.py +20 -0
  330. nautobot/extras/test_jobs/log_skip_db_logging.py +17 -0
  331. nautobot/extras/test_jobs/modify_db.py +25 -0
  332. nautobot/extras/{tests/example_jobs/test_no_field_order.py → test_jobs/no_field_order.py} +4 -0
  333. nautobot/extras/test_jobs/object_var_optional.py +21 -0
  334. nautobot/extras/test_jobs/object_var_required.py +21 -0
  335. nautobot/extras/test_jobs/object_vars.py +26 -0
  336. nautobot/extras/test_jobs/pass.py +25 -0
  337. nautobot/extras/test_jobs/profiling.py +32 -0
  338. nautobot/extras/test_jobs/read_only_job.py +15 -0
  339. nautobot/extras/{tests/example_jobs/test_required_args.py → test_jobs/required_args.py} +4 -0
  340. nautobot/extras/{tests/example_jobs/test_soft_time_limit_greater_than_time_limit.py → test_jobs/soft_time_limit_greater_than_time_limit.py} +5 -1
  341. nautobot/extras/{tests/example_jobs/test_task_queues.py → test_jobs/task_queues.py} +5 -1
  342. nautobot/extras/tests/integration/test_computedfields.py +1 -1
  343. nautobot/extras/tests/integration/test_configcontextschema.py +5 -3
  344. nautobot/extras/tests/integration/test_customfields.py +4 -2
  345. nautobot/extras/tests/integration/test_dynamicgroups.py +1 -1
  346. nautobot/extras/tests/integration/test_jobs.py +25 -27
  347. nautobot/extras/tests/integration/test_notes.py +8 -4
  348. nautobot/extras/tests/integration/test_relationships.py +2 -2
  349. nautobot/extras/tests/test_api.py +649 -642
  350. nautobot/extras/tests/test_changelog.py +3 -3
  351. nautobot/extras/tests/test_context_managers.py +5 -3
  352. nautobot/extras/tests/test_customfields.py +92 -50
  353. nautobot/extras/tests/test_datasources.py +189 -112
  354. nautobot/extras/tests/test_dynamicgroups.py +7 -8
  355. nautobot/extras/tests/test_filters.py +137 -89
  356. nautobot/extras/tests/test_forms.py +73 -75
  357. nautobot/extras/tests/{test_scripts.py → test_job_variables.py} +43 -49
  358. nautobot/extras/tests/test_jobs.py +262 -263
  359. nautobot/extras/tests/test_migrations.py +4 -3
  360. nautobot/extras/tests/test_models.py +116 -161
  361. nautobot/extras/tests/test_plugins.py +38 -60
  362. nautobot/extras/tests/test_relationships.py +167 -120
  363. nautobot/extras/tests/test_tags.py +6 -11
  364. nautobot/extras/tests/test_utils.py +31 -1
  365. nautobot/extras/tests/test_views.py +201 -145
  366. nautobot/extras/tests/test_webhooks.py +6 -2
  367. nautobot/extras/urls.py +42 -42
  368. nautobot/extras/utils.py +137 -163
  369. nautobot/extras/views.py +78 -152
  370. nautobot/ipam/api/fields.py +17 -0
  371. nautobot/ipam/api/serializers.py +58 -164
  372. nautobot/ipam/api/urls.py +1 -1
  373. nautobot/ipam/api/views.py +3 -2
  374. nautobot/ipam/apps.py +1 -2
  375. nautobot/ipam/filters.py +1 -10
  376. nautobot/ipam/forms.py +4 -177
  377. nautobot/ipam/lookups.py +1 -0
  378. nautobot/ipam/management/commands/__init__.py +0 -0
  379. nautobot/ipam/management/commands/fix_prefix_broadcast.py +17 -0
  380. nautobot/ipam/migrations/0010_alter_ipam_role_add_new_role.py +1 -1
  381. nautobot/ipam/migrations/0011_migrate_ipam_role_data.py +32 -38
  382. nautobot/ipam/migrations/0020_related_name_changes.py +1 -1
  383. nautobot/ipam/migrations/0022_aggregate_to_prefix_data_migration.py +2 -2
  384. nautobot/ipam/migrations/0028_tagsfield.py +44 -0
  385. nautobot/ipam/migrations/0029_ip_address_to_interface_uniqueness_constraints.py +18 -0
  386. nautobot/ipam/migrations/{0028_ipam__namespaces.py → 0030_ipam__namespaces.py} +77 -28
  387. nautobot/ipam/migrations/0031_ipam__prefix__add_parent.py +58 -0
  388. nautobot/ipam/migrations/0032_ipam__namespaces_finish.py +63 -0
  389. nautobot/ipam/migrations/0033_fixup_null_statuses.py +26 -0
  390. nautobot/ipam/migrations/0034_status_nonnullable.py +36 -0
  391. nautobot/ipam/models.py +100 -236
  392. nautobot/ipam/navigation.py +36 -181
  393. nautobot/ipam/querysets.py +20 -25
  394. nautobot/ipam/signals.py +49 -6
  395. nautobot/ipam/tables.py +10 -3
  396. nautobot/ipam/templates/ipam/namespace_ipaddresses.html +11 -0
  397. nautobot/ipam/templates/ipam/namespace_prefixes.html +11 -0
  398. nautobot/ipam/templates/ipam/namespace_retrieve.html +17 -4
  399. nautobot/ipam/templates/ipam/namespace_vrfs.html +11 -0
  400. nautobot/ipam/templates/ipam/prefix.html +1 -1
  401. nautobot/ipam/templates/ipam/vlangroup.html +0 -13
  402. nautobot/ipam/templates/ipam/vrf_edit.html +6 -0
  403. nautobot/ipam/tests/integration/test_prefixes.py +3 -26
  404. nautobot/ipam/tests/test_api.py +22 -19
  405. nautobot/ipam/tests/test_filters.py +59 -23
  406. nautobot/ipam/tests/test_migrations.py +6 -10
  407. nautobot/ipam/tests/test_models.py +323 -198
  408. nautobot/ipam/tests/test_ordering.py +2 -2
  409. nautobot/ipam/tests/test_querysets.py +44 -24
  410. nautobot/ipam/tests/test_views.py +73 -26
  411. nautobot/ipam/urls.py +16 -0
  412. nautobot/ipam/{utils.py → utils/__init__.py} +2 -2
  413. nautobot/ipam/utils/migrations.py +713 -0
  414. nautobot/ipam/views.py +137 -20
  415. nautobot/project-static/docs/404.html +1178 -10
  416. nautobot/project-static/docs/additional-features/caching.html +1224 -159
  417. nautobot/project-static/docs/additional-features/change-logging.html +1180 -12
  418. nautobot/project-static/docs/additional-features/config-contexts.html +1180 -12
  419. nautobot/project-static/docs/additional-features/graphql.html +1179 -11
  420. nautobot/project-static/docs/additional-features/healthcheck.html +1180 -12
  421. nautobot/project-static/docs/additional-features/job-scheduling-and-approvals.html +1184 -12
  422. nautobot/project-static/docs/additional-features/jobs.html +1514 -328
  423. nautobot/project-static/docs/additional-features/napalm.html +1180 -12
  424. nautobot/project-static/docs/additional-features/prometheus-metrics.html +1180 -12
  425. nautobot/project-static/docs/additional-features/template-filters.html +1180 -12
  426. nautobot/project-static/docs/administration/celery-queues.html +1178 -10
  427. nautobot/project-static/docs/administration/nautobot-server.html +1451 -304
  428. nautobot/project-static/docs/administration/nautobot-shell.html +1178 -10
  429. nautobot/project-static/docs/administration/permissions.html +1178 -10
  430. nautobot/project-static/docs/administration/replicating-nautobot.html +1262 -113
  431. nautobot/project-static/docs/apps/index.html +1178 -10
  432. nautobot/project-static/docs/apps/nautobot-apps.html +1178 -10
  433. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +1580 -426
  434. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +1178 -10
  435. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +3481 -1838
  436. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +1178 -10
  437. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +1178 -10
  438. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +1185 -11
  439. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +1719 -551
  440. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +2062 -930
  441. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +1946 -659
  442. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +1180 -12
  443. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +1189 -21
  444. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +9283 -6218
  445. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +2734 -2122
  446. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +1178 -10
  447. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +2337 -1300
  448. nautobot/project-static/docs/configuration/authentication/ldap.html +1178 -10
  449. nautobot/project-static/docs/configuration/authentication/remote.html +1178 -10
  450. nautobot/project-static/docs/configuration/authentication/sso.html +1178 -10
  451. nautobot/project-static/docs/configuration/index.html +1178 -10
  452. nautobot/project-static/docs/configuration/optional-settings.html +1311 -160
  453. nautobot/project-static/docs/configuration/required-settings.html +1312 -211
  454. nautobot/project-static/docs/core-functionality/circuits.html +1178 -10
  455. nautobot/project-static/docs/core-functionality/device-types.html +1178 -10
  456. nautobot/project-static/docs/core-functionality/devices.html +1182 -10
  457. nautobot/project-static/docs/core-functionality/ipam.html +1182 -10
  458. nautobot/project-static/docs/core-functionality/power.html +1178 -10
  459. nautobot/project-static/docs/core-functionality/secrets.html +1178 -10
  460. nautobot/project-static/docs/core-functionality/services.html +1178 -10
  461. nautobot/project-static/docs/core-functionality/sites-and-racks.html +1178 -10
  462. nautobot/project-static/docs/core-functionality/tenancy.html +1178 -10
  463. nautobot/project-static/docs/core-functionality/virtualization.html +1182 -10
  464. nautobot/project-static/docs/core-functionality/vlans.html +1179 -11
  465. nautobot/project-static/docs/development/application-registry.html +1190 -42
  466. nautobot/project-static/docs/development/best-practices.html +1178 -10
  467. nautobot/project-static/docs/development/docker-compose-advanced-use-cases.html +1178 -10
  468. nautobot/project-static/docs/development/extending-models.html +1238 -83
  469. nautobot/project-static/docs/development/generic-views.html +1180 -14
  470. nautobot/project-static/docs/development/getting-started.html +1365 -90
  471. nautobot/project-static/docs/development/homepage.html +1178 -10
  472. nautobot/project-static/docs/development/index.html +1178 -10
  473. nautobot/project-static/docs/development/model-features.html +1178 -10
  474. nautobot/project-static/docs/development/natural-keys.html +1178 -10
  475. nautobot/project-static/docs/development/navigation-menu.html +1215 -125
  476. nautobot/project-static/docs/development/react-ui.html +4199 -0
  477. nautobot/project-static/docs/development/release-checklist.html +1178 -10
  478. nautobot/project-static/docs/development/role-internals.html +1179 -12
  479. nautobot/project-static/docs/development/style-guide.html +1188 -19
  480. nautobot/project-static/docs/development/templates.html +1178 -10
  481. nautobot/project-static/docs/development/testing.html +1178 -10
  482. nautobot/project-static/docs/development/user-preferences.html +1178 -10
  483. nautobot/project-static/docs/docker/index.html +1178 -10
  484. nautobot/project-static/docs/index.html +1183 -12
  485. nautobot/project-static/docs/installation/centos.html +1178 -10
  486. nautobot/project-static/docs/installation/external-authentication.html +1178 -10
  487. nautobot/project-static/docs/installation/http-server.html +1178 -10
  488. nautobot/project-static/docs/installation/index.html +1178 -10
  489. nautobot/project-static/docs/installation/migrating-from-netbox.html +1305 -189
  490. nautobot/project-static/docs/installation/migrating-from-postgresql.html +1178 -10
  491. nautobot/project-static/docs/installation/nautobot.html +1179 -11
  492. nautobot/project-static/docs/installation/region-and-site-data-migration-guide.html +1178 -10
  493. nautobot/project-static/docs/installation/selinux-troubleshooting.html +1178 -10
  494. nautobot/project-static/docs/installation/services.html +1178 -10
  495. nautobot/project-static/docs/installation/tables/v2-api-behavior-changes.yaml +70 -0
  496. nautobot/project-static/docs/installation/tables/v2-api-removed-fields.yaml +142 -0
  497. nautobot/project-static/docs/installation/tables/v2-api-renamed-fields.yaml +124 -0
  498. nautobot/project-static/docs/installation/tables/v2-code-location-changes.yaml +241 -0
  499. nautobot/project-static/docs/installation/tables/v2-code-removals.yaml +67 -0
  500. nautobot/project-static/docs/installation/tables/v2-database-behavior-changes.yaml +37 -0
  501. nautobot/project-static/docs/installation/tables/v2-database-removed-fields.yaml +166 -0
  502. nautobot/project-static/docs/installation/tables/v2-database-renamed-fields.yaml +340 -0
  503. nautobot/project-static/docs/installation/tables/v2-filters-corrected-fields.yaml +28 -0
  504. nautobot/project-static/docs/installation/tables/v2-filters-enhanced-fields.yaml +241 -0
  505. nautobot/project-static/docs/installation/tables/v2-filters-removed-fields.yaml +553 -0
  506. nautobot/project-static/docs/installation/tables/v2-filters-renamed-fields.yaml +223 -0
  507. nautobot/project-static/docs/installation/tables/v2-logging-renamed-loggers.yaml +23 -0
  508. nautobot/project-static/docs/installation/ubuntu.html +1178 -10
  509. nautobot/project-static/docs/installation/upgrading-from-nautobot-v1.html +3823 -2152
  510. nautobot/project-static/docs/installation/upgrading.html +1178 -10
  511. nautobot/project-static/docs/models/circuits/circuit.html +1293 -103
  512. nautobot/project-static/docs/models/circuits/circuittermination.html +1293 -103
  513. nautobot/project-static/docs/models/circuits/circuittype.html +1293 -103
  514. nautobot/project-static/docs/models/circuits/provider.html +1293 -103
  515. nautobot/project-static/docs/models/circuits/providernetwork.html +1293 -103
  516. nautobot/project-static/docs/models/dcim/cable.html +1324 -103
  517. nautobot/project-static/docs/models/dcim/consoleport.html +1293 -103
  518. nautobot/project-static/docs/models/dcim/consoleporttemplate.html +1293 -103
  519. nautobot/project-static/docs/models/dcim/consoleserverport.html +1293 -103
  520. nautobot/project-static/docs/models/dcim/consoleserverporttemplate.html +1293 -103
  521. nautobot/project-static/docs/models/dcim/device.html +1326 -132
  522. nautobot/project-static/docs/models/dcim/devicebay.html +1293 -103
  523. nautobot/project-static/docs/models/dcim/devicebaytemplate.html +1293 -103
  524. nautobot/project-static/docs/models/dcim/deviceredundancygroup.html +1379 -97
  525. nautobot/project-static/docs/models/dcim/devicetype.html +1293 -103
  526. nautobot/project-static/docs/models/dcim/frontport.html +1293 -103
  527. nautobot/project-static/docs/models/dcim/frontporttemplate.html +1293 -103
  528. nautobot/project-static/docs/models/dcim/interface.html +1293 -103
  529. nautobot/project-static/docs/models/dcim/interfacetemplate.html +1293 -103
  530. nautobot/project-static/docs/models/dcim/inventoryitem.html +1293 -103
  531. nautobot/project-static/docs/models/dcim/location.html +1293 -103
  532. nautobot/project-static/docs/models/dcim/locationtype.html +1293 -103
  533. nautobot/project-static/docs/models/dcim/manufacturer.html +1292 -102
  534. nautobot/project-static/docs/models/dcim/platform.html +1272 -82
  535. nautobot/project-static/docs/models/dcim/powerfeed.html +1270 -80
  536. nautobot/project-static/docs/models/dcim/poweroutlet.html +1272 -82
  537. nautobot/project-static/docs/models/dcim/poweroutlettemplate.html +1272 -82
  538. nautobot/project-static/docs/models/dcim/powerpanel.html +1270 -80
  539. nautobot/project-static/docs/models/dcim/powerport.html +1272 -82
  540. nautobot/project-static/docs/models/dcim/powerporttemplate.html +1272 -82
  541. nautobot/project-static/docs/models/dcim/rack.html +1272 -82
  542. nautobot/project-static/docs/models/dcim/rackgroup.html +1272 -82
  543. nautobot/project-static/docs/models/dcim/rackreservation.html +1272 -82
  544. nautobot/project-static/docs/models/dcim/rearport.html +1286 -96
  545. nautobot/project-static/docs/models/dcim/rearporttemplate.html +1286 -96
  546. nautobot/project-static/docs/models/dcim/region.html +1178 -10
  547. nautobot/project-static/docs/models/dcim/site.html +1178 -10
  548. nautobot/project-static/docs/models/dcim/virtualchassis.html +1284 -94
  549. nautobot/project-static/docs/models/extras/computedfield.html +1184 -16
  550. nautobot/project-static/docs/models/extras/configcontext.html +1314 -86
  551. nautobot/project-static/docs/models/extras/configcontextschema.html +1276 -86
  552. nautobot/project-static/docs/models/extras/customfield.html +1180 -12
  553. nautobot/project-static/docs/models/extras/customlink.html +1180 -12
  554. nautobot/project-static/docs/models/extras/dynamicgroup.html +1180 -12
  555. nautobot/project-static/docs/models/extras/exporttemplate.html +1180 -12
  556. nautobot/project-static/docs/models/extras/gitrepository.html +1184 -12
  557. nautobot/project-static/docs/models/extras/graphqlquery.html +1321 -86
  558. nautobot/project-static/docs/models/extras/imageattachment.html +1276 -86
  559. nautobot/project-static/docs/models/extras/job.html +1277 -86
  560. nautobot/project-static/docs/models/extras/jobbutton.html +1201 -29
  561. nautobot/project-static/docs/models/extras/jobhook.html +1188 -16
  562. nautobot/project-static/docs/models/extras/joblogentry.html +1274 -84
  563. nautobot/project-static/docs/models/extras/jobresult.html +1364 -169
  564. nautobot/project-static/docs/models/extras/note.html +1180 -12
  565. nautobot/project-static/docs/models/extras/relationship.html +1182 -14
  566. nautobot/project-static/docs/models/extras/role.html +1320 -86
  567. nautobot/project-static/docs/models/extras/secret.html +1314 -86
  568. nautobot/project-static/docs/models/extras/secretsgroup.html +1276 -86
  569. nautobot/project-static/docs/models/extras/status.html +1188 -59
  570. nautobot/project-static/docs/models/extras/tag.html +1180 -12
  571. nautobot/project-static/docs/models/extras/webhook.html +1180 -12
  572. nautobot/project-static/docs/models/ipam/ipaddress.html +1327 -102
  573. nautobot/project-static/docs/models/ipam/prefix.html +1276 -86
  574. nautobot/project-static/docs/models/ipam/rir.html +1276 -86
  575. nautobot/project-static/docs/models/ipam/routetarget.html +1276 -86
  576. nautobot/project-static/docs/models/ipam/service.html +1276 -86
  577. nautobot/project-static/docs/models/ipam/vlan.html +1276 -86
  578. nautobot/project-static/docs/models/ipam/vlangroup.html +1276 -86
  579. nautobot/project-static/docs/models/ipam/vrf.html +1276 -86
  580. nautobot/project-static/docs/models/tenancy/tenant.html +1276 -86
  581. nautobot/project-static/docs/models/tenancy/tenantgroup.html +1276 -86
  582. nautobot/project-static/docs/models/users/objectpermission.html +1314 -86
  583. nautobot/project-static/docs/models/users/token.html +1276 -86
  584. nautobot/project-static/docs/models/virtualization/cluster.html +1276 -86
  585. nautobot/project-static/docs/models/virtualization/clustergroup.html +1276 -86
  586. nautobot/project-static/docs/models/virtualization/clustertype.html +1276 -86
  587. nautobot/project-static/docs/models/virtualization/virtualmachine.html +1321 -127
  588. nautobot/project-static/docs/models/virtualization/vminterface.html +1276 -86
  589. nautobot/project-static/docs/objects.inv +0 -0
  590. nautobot/project-static/docs/plugins/development.html +1726 -495
  591. nautobot/project-static/docs/plugins/index.html +1178 -10
  592. nautobot/project-static/docs/plugins/porting-from-netbox.html +1178 -10
  593. nautobot/project-static/docs/release-notes/index.html +1178 -10
  594. nautobot/project-static/docs/release-notes/version-1.0.html +1178 -10
  595. nautobot/project-static/docs/release-notes/version-1.1.html +1178 -10
  596. nautobot/project-static/docs/release-notes/version-1.2.html +1178 -10
  597. nautobot/project-static/docs/release-notes/version-1.3.html +1178 -10
  598. nautobot/project-static/docs/release-notes/version-1.4.html +1178 -10
  599. nautobot/project-static/docs/release-notes/version-1.5.html +1608 -225
  600. nautobot/project-static/docs/release-notes/version-2.0.html +1547 -47
  601. nautobot/project-static/docs/requirements.txt +1 -0
  602. nautobot/project-static/docs/rest-api/authentication.html +1179 -11
  603. nautobot/project-static/docs/rest-api/filtering.html +1178 -10
  604. nautobot/project-static/docs/rest-api/overview.html +1841 -446
  605. nautobot/project-static/docs/rest-api/ui-related-endpoints.html +4057 -0
  606. nautobot/project-static/docs/search/search_index.json +1 -1
  607. nautobot/project-static/docs/sitemap.xml +197 -187
  608. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  609. nautobot/project-static/docs/user-guides/custom-fields.html +1178 -10
  610. nautobot/project-static/docs/user-guides/getting-started/creating-devices.html +1178 -10
  611. nautobot/project-static/docs/user-guides/getting-started/index.html +1178 -10
  612. nautobot/project-static/docs/user-guides/getting-started/interfaces.html +1178 -10
  613. nautobot/project-static/docs/user-guides/getting-started/ipam.html +1178 -10
  614. nautobot/project-static/docs/user-guides/getting-started/platforms.html +1178 -10
  615. nautobot/project-static/docs/user-guides/getting-started/regions.html +1178 -10
  616. nautobot/project-static/docs/user-guides/getting-started/search-bar.html +1178 -10
  617. nautobot/project-static/docs/user-guides/getting-started/tenants.html +1178 -10
  618. nautobot/project-static/docs/user-guides/getting-started/vlans-and-vlan-groups.html +1178 -10
  619. nautobot/project-static/docs/user-guides/git-data-source.html +1178 -10
  620. nautobot/project-static/docs/user-guides/graphql.html +1178 -10
  621. nautobot/project-static/docs/user-guides/relationships.html +1178 -10
  622. nautobot/project-static/docs/user-guides/s3-django-storage.html +1178 -10
  623. nautobot/project-static/js/forms.js +16 -9
  624. nautobot/project-static/js/theme.js +5 -0
  625. nautobot/tenancy/api/serializers.py +4 -32
  626. nautobot/tenancy/api/urls.py +1 -1
  627. nautobot/tenancy/forms.py +0 -28
  628. nautobot/tenancy/migrations/0008_tagsfield.py +19 -0
  629. nautobot/tenancy/models.py +0 -25
  630. nautobot/tenancy/navigation.py +6 -39
  631. nautobot/tenancy/templates/tenancy/tenant.html +12 -12
  632. nautobot/tenancy/templates/tenancy/tenantgroup.html +1 -1
  633. nautobot/tenancy/tests/test_api.py +1 -3
  634. nautobot/tenancy/tests/test_filters.py +10 -5
  635. nautobot/tenancy/views.py +0 -2
  636. nautobot/ui/.eslintignore +6 -0
  637. nautobot/ui/.gitignore +10 -0
  638. nautobot/ui/.prettierignore +9 -0
  639. nautobot/ui/.prettierrc +4 -0
  640. nautobot/ui/README.md +33 -0
  641. nautobot/ui/app_imports.js.j2 +7 -0
  642. nautobot/ui/craco.config.js +46 -0
  643. nautobot/ui/jsconfig-base.json +11 -0
  644. nautobot/ui/jsconfig.json +5 -0
  645. nautobot/ui/lib/nautobot-craco-alias-plugin.js +40 -0
  646. nautobot/ui/package-lock.json +21451 -0
  647. nautobot/ui/package.json +70 -0
  648. nautobot/ui/public/index.html +47 -0
  649. nautobot/ui/public/logo192.png +0 -0
  650. nautobot/ui/public/logo512.png +0 -0
  651. nautobot/ui/public/manifest.json +25 -0
  652. nautobot/ui/public/nautobot_logo.svg +131 -0
  653. nautobot/ui/public/robots.txt +3 -0
  654. nautobot/ui/src/App.js +71 -0
  655. nautobot/ui/src/components/AppFullWidthComponents.js +8 -0
  656. nautobot/ui/src/components/AppTab.js +40 -0
  657. nautobot/ui/src/components/Apps.js +60 -0
  658. nautobot/ui/src/components/HomeChangelogPanel.js +98 -0
  659. nautobot/ui/src/components/HomePanel.js +58 -0
  660. nautobot/ui/src/components/JobHistoryTable.js +78 -0
  661. nautobot/ui/src/components/Layout.js +53 -0
  662. nautobot/ui/src/components/LoadingWidget.js +25 -0
  663. nautobot/ui/src/components/Navbar.js +116 -0
  664. nautobot/ui/src/components/NotificationPopover.js +27 -0
  665. nautobot/ui/src/components/ObjectListTable.js +209 -0
  666. nautobot/ui/src/components/ReferenceDataTag.js +35 -0
  667. nautobot/ui/src/components/RouterButton.js +10 -0
  668. nautobot/ui/src/components/RouterLink.js +10 -0
  669. nautobot/ui/src/components/SidebarNav.js +147 -0
  670. nautobot/ui/src/components/Table.js +48 -0
  671. nautobot/ui/src/components/TableItem.js +71 -0
  672. nautobot/ui/src/components/__tests__/AppFullWidthComponents.test.js +16 -0
  673. nautobot/ui/src/components/__tests__/AppTab.test.js +21 -0
  674. nautobot/ui/src/components/__tests__/Apps.test.js +14 -0
  675. nautobot/ui/src/components/__tests__/Layout.test.js +33 -0
  676. nautobot/ui/src/components/__tests__/Table.test.js +36 -0
  677. nautobot/ui/src/components/__tests__/TableItem.test.js +37 -0
  678. nautobot/ui/src/components/__tests__/paginator.test.js +43 -0
  679. nautobot/ui/src/components/__tests__/paginator_form.test.js +13 -0
  680. nautobot/ui/src/components/pagination.js +93 -0
  681. nautobot/ui/src/components/paginator.js +79 -0
  682. nautobot/ui/src/components/paginator_form.js +43 -0
  683. nautobot/ui/src/components/usePagination.js +57 -0
  684. nautobot/ui/src/constants/apiPath.js +10 -0
  685. nautobot/ui/src/constants/icons.js +15 -0
  686. nautobot/ui/src/constants/size.js +15 -0
  687. nautobot/ui/src/index.js +65 -0
  688. nautobot/ui/src/reportWebVitals.js +15 -0
  689. nautobot/ui/src/router.js +77 -0
  690. nautobot/ui/src/utils/api.js +131 -0
  691. nautobot/ui/src/utils/app-import.js +15 -0
  692. nautobot/ui/src/utils/color.js +15 -0
  693. nautobot/ui/src/utils/date.js +14 -0
  694. nautobot/ui/src/utils/index.js +15 -0
  695. nautobot/ui/src/utils/navigation.js +32 -0
  696. nautobot/ui/src/utils/session.js +64 -0
  697. nautobot/ui/src/utils/store.js +242 -0
  698. nautobot/ui/src/utils/string.js +6 -0
  699. nautobot/ui/src/utils/url.js +4 -0
  700. nautobot/ui/src/views/Home.js +138 -0
  701. nautobot/ui/src/views/InstalledApps.js +80 -0
  702. nautobot/ui/src/views/Login.js +48 -0
  703. nautobot/ui/src/views/Logout.js +20 -0
  704. nautobot/ui/src/views/__tests__/BSCreateViewTemplate.test.js +11 -0
  705. nautobot/ui/src/views/__tests__/BSListViewTemplate.test.js +107 -0
  706. nautobot/ui/src/views/__tests__/Login.test.js +15 -0
  707. nautobot/ui/src/views/generic/GenericView.js +142 -0
  708. nautobot/ui/src/views/generic/ObjectCreate.js +96 -0
  709. nautobot/ui/src/views/generic/ObjectList.js +127 -0
  710. nautobot/ui/src/views/generic/ObjectRetrieve.js +551 -0
  711. nautobot/users/admin.py +1 -1
  712. nautobot/users/api/serializers.py +51 -61
  713. nautobot/users/api/urls.py +1 -1
  714. nautobot/users/api/views.py +53 -2
  715. nautobot/users/tests/test_api.py +110 -25
  716. nautobot/virtualization/api/serializers.py +18 -130
  717. nautobot/virtualization/api/urls.py +1 -1
  718. nautobot/virtualization/api/views.py +1 -22
  719. nautobot/virtualization/forms.py +13 -99
  720. nautobot/virtualization/migrations/0012_alter_virtualmachine_role_add_new_role.py +1 -1
  721. nautobot/virtualization/migrations/0013_migrate_virtualmachine_role_data.py +18 -11
  722. nautobot/virtualization/migrations/0015_rename_foreignkey_fields.py +1 -1
  723. nautobot/virtualization/migrations/0018_related_name_changes.py +1 -1
  724. nautobot/virtualization/migrations/0021_tagsfield_and_vminterface_to_primarymodel.py +39 -0
  725. nautobot/virtualization/migrations/0022_vminterface_timestamps_data_migration.py +17 -0
  726. nautobot/virtualization/migrations/{0021_ipam__namespaces.py → 0023_ipam__namespaces.py} +2 -2
  727. nautobot/virtualization/migrations/0024_fixup_null_statuses.py +25 -0
  728. nautobot/virtualization/migrations/0025_status_nonnullable.py +29 -0
  729. nautobot/virtualization/models.py +31 -123
  730. nautobot/virtualization/navigation.py +18 -99
  731. nautobot/virtualization/templates/virtualization/virtualmachine.html +2 -1
  732. nautobot/virtualization/templates/virtualization/virtualmachine_edit.html +6 -0
  733. nautobot/virtualization/tests/test_api.py +25 -26
  734. nautobot/virtualization/tests/test_filters.py +41 -15
  735. nautobot/virtualization/tests/test_models.py +31 -7
  736. nautobot/virtualization/tests/test_views.py +42 -25
  737. nautobot/virtualization/views.py +7 -6
  738. {nautobot-2.0.0a3.dist-info → nautobot-2.0.0b1.dist-info}/METADATA +3 -7
  739. {nautobot-2.0.0a3.dist-info → nautobot-2.0.0b1.dist-info}/RECORD +744 -602
  740. {nautobot-2.0.0a3.dist-info → nautobot-2.0.0b1.dist-info}/WHEEL +1 -1
  741. nautobot/circuits/api/nested_serializers.py +0 -69
  742. nautobot/core/templates/plugin_template/navigation.py-tpl +0 -22
  743. nautobot/dcim/api/nested_serializers.py +0 -356
  744. nautobot/dcim/templates/dcim/device_import.html +0 -5
  745. nautobot/dcim/templates/dcim/device_import_child.html +0 -5
  746. nautobot/dcim/templates/dcim/inc/device_import_header.html +0 -4
  747. nautobot/extras/api/nested_serializers.py +0 -353
  748. nautobot/extras/migrations/0064_configcontext_data_migrations.py +0 -41
  749. nautobot/extras/migrations/0071_job__unique_name_data_migration.py +0 -46
  750. nautobot/extras/reports.py +0 -60
  751. nautobot/extras/scripts.py +0 -72
  752. nautobot/extras/tests/example_jobs/script_variables.py +0 -67
  753. nautobot/extras/tests/example_jobs/test_duplicate_name2.py +0 -5
  754. nautobot/extras/tests/example_jobs/test_fail.py +0 -16
  755. nautobot/extras/tests/example_jobs/test_file_upload_pass.py +0 -20
  756. nautobot/extras/tests/example_jobs/test_ipaddress_vars.py +0 -52
  757. nautobot/extras/tests/example_jobs/test_job_button_receiver.py +0 -21
  758. nautobot/extras/tests/example_jobs/test_job_hook_receiver.py +0 -20
  759. nautobot/extras/tests/example_jobs/test_location_with_custom_field.py +0 -35
  760. nautobot/extras/tests/example_jobs/test_log_redaction.py +0 -14
  761. nautobot/extras/tests/example_jobs/test_modify_db.py +0 -18
  762. nautobot/extras/tests/example_jobs/test_object_var_optional.py +0 -14
  763. nautobot/extras/tests/example_jobs/test_object_var_required.py +0 -14
  764. nautobot/extras/tests/example_jobs/test_object_vars.py +0 -29
  765. nautobot/extras/tests/example_jobs/test_pass.py +0 -19
  766. nautobot/extras/tests/example_jobs/test_read_only_fail.py +0 -24
  767. nautobot/extras/tests/example_jobs/test_read_only_no_commit_field.py +0 -10
  768. nautobot/extras/tests/example_jobs/test_read_only_pass.py +0 -22
  769. nautobot/ipam/api/nested_serializers.py +0 -159
  770. nautobot/ipam/migrations/0029_ipam__prefix__add_parent.py +0 -31
  771. nautobot/ipam/migrations/0030_ipam__prefix__data_migration.py +0 -13
  772. nautobot/ipam/migrations/0031_ipam__ipaddress__add_parent.py +0 -41
  773. nautobot/ipam/migrations/0032_ipam__ipaddress__data_migration.py +0 -11
  774. nautobot/tenancy/api/nested_serializers.py +0 -31
  775. nautobot/users/api/nested_serializers.py +0 -67
  776. nautobot/virtualization/api/nested_serializers.py +0 -65
  777. /nautobot/extras/{tests/example_jobs → test_jobs}/__init__.py +0 -0
  778. /nautobot/{dcim/models/sites.py → ipam/management/__init__.py} +0 -0
  779. {nautobot-2.0.0a3.dist-info → nautobot-2.0.0b1.dist-info}/LICENSE.txt +0 -0
  780. {nautobot-2.0.0a3.dist-info → nautobot-2.0.0b1.dist-info}/entry_points.txt +0 -0
@@ -752,26 +752,6 @@
752
752
  Caching
753
753
  </a>
754
754
 
755
- <nav class="md-nav" aria-label="Caching">
756
- <ul class="md-nav__list">
757
-
758
- <li class="md-nav__item">
759
- <a href="#cacheops_redis" class="md-nav__link">
760
- CACHEOPS_REDIS
761
- </a>
762
-
763
- </li>
764
-
765
- <li class="md-nav__item">
766
- <a href="#cacheops_sentinel" class="md-nav__link">
767
- CACHEOPS_SENTINEL
768
- </a>
769
-
770
- </li>
771
-
772
- </ul>
773
- </nav>
774
-
775
755
  </li>
776
756
 
777
757
  <li class="md-nav__item">
@@ -986,8 +966,1053 @@
986
966
 
987
967
 
988
968
  <li class="md-nav__item">
989
- <a href="../administration/nautobot-server.html" class="md-nav__link">
990
- Nautobot Server
969
+ <a href="../administration/nautobot-server.html" class="md-nav__link">
970
+ Nautobot Server
971
+ </a>
972
+ </li>
973
+
974
+
975
+
976
+
977
+
978
+
979
+
980
+
981
+
982
+ <li class="md-nav__item">
983
+ <a href="../administration/nautobot-shell.html" class="md-nav__link">
984
+ Nautobot Shell
985
+ </a>
986
+ </li>
987
+
988
+
989
+
990
+
991
+
992
+
993
+
994
+
995
+
996
+ <li class="md-nav__item">
997
+ <a href="../administration/permissions.html" class="md-nav__link">
998
+ Permissions
999
+ </a>
1000
+ </li>
1001
+
1002
+
1003
+
1004
+
1005
+
1006
+
1007
+
1008
+
1009
+
1010
+ <li class="md-nav__item">
1011
+ <a href="../administration/replicating-nautobot.html" class="md-nav__link">
1012
+ Replicating Nautobot
1013
+ </a>
1014
+ </li>
1015
+
1016
+
1017
+
1018
+
1019
+
1020
+
1021
+
1022
+
1023
+
1024
+ <li class="md-nav__item">
1025
+ <a href="../administration/celery-queues.html" class="md-nav__link">
1026
+ Task Queues
1027
+ </a>
1028
+ </li>
1029
+
1030
+
1031
+
1032
+
1033
+ </ul>
1034
+ </nav>
1035
+ </li>
1036
+
1037
+
1038
+
1039
+
1040
+
1041
+
1042
+
1043
+
1044
+
1045
+
1046
+ <li class="md-nav__item md-nav__item--nested">
1047
+
1048
+
1049
+
1050
+
1051
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_6" >
1052
+
1053
+
1054
+
1055
+ <label class="md-nav__link" for="__nav_2_6" id="__nav_2_6_label" tabindex="0">
1056
+ User Guides
1057
+ <span class="md-nav__icon md-icon"></span>
1058
+ </label>
1059
+
1060
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_6_label" aria-expanded="false">
1061
+ <label class="md-nav__title" for="__nav_2_6">
1062
+ <span class="md-nav__icon md-icon"></span>
1063
+ User Guides
1064
+ </label>
1065
+ <ul class="md-nav__list" data-md-scrollfix>
1066
+
1067
+
1068
+
1069
+
1070
+
1071
+
1072
+ <li class="md-nav__item">
1073
+ <a href="../user-guides/getting-started/creating-devices.html" class="md-nav__link">
1074
+ Creating Devices
1075
+ </a>
1076
+ </li>
1077
+
1078
+
1079
+
1080
+
1081
+
1082
+
1083
+
1084
+
1085
+
1086
+ <li class="md-nav__item">
1087
+ <a href="../user-guides/custom-fields.html" class="md-nav__link">
1088
+ Custom Fields
1089
+ </a>
1090
+ </li>
1091
+
1092
+
1093
+
1094
+
1095
+
1096
+
1097
+
1098
+
1099
+
1100
+ <li class="md-nav__item">
1101
+ <a href="../user-guides/getting-started/index.html" class="md-nav__link">
1102
+ Getting Started In the Web UI
1103
+ </a>
1104
+ </li>
1105
+
1106
+
1107
+
1108
+
1109
+
1110
+
1111
+
1112
+
1113
+
1114
+ <li class="md-nav__item">
1115
+ <a href="../user-guides/git-data-source.html" class="md-nav__link">
1116
+ Git as a Data Source
1117
+ </a>
1118
+ </li>
1119
+
1120
+
1121
+
1122
+
1123
+
1124
+
1125
+
1126
+
1127
+
1128
+ <li class="md-nav__item">
1129
+ <a href="../user-guides/graphql.html" class="md-nav__link">
1130
+ GraphQL
1131
+ </a>
1132
+ </li>
1133
+
1134
+
1135
+
1136
+
1137
+
1138
+
1139
+
1140
+
1141
+
1142
+ <li class="md-nav__item">
1143
+ <a href="../user-guides/getting-started/interfaces.html" class="md-nav__link">
1144
+ Interfaces
1145
+ </a>
1146
+ </li>
1147
+
1148
+
1149
+
1150
+
1151
+
1152
+
1153
+
1154
+
1155
+
1156
+ <li class="md-nav__item">
1157
+ <a href="../user-guides/getting-started/ipam.html" class="md-nav__link">
1158
+ IP Address Management
1159
+ </a>
1160
+ </li>
1161
+
1162
+
1163
+
1164
+
1165
+
1166
+
1167
+
1168
+
1169
+
1170
+ <li class="md-nav__item">
1171
+ <a href="../user-guides/getting-started/platforms.html" class="md-nav__link">
1172
+ Platforms
1173
+ </a>
1174
+ </li>
1175
+
1176
+
1177
+
1178
+
1179
+
1180
+
1181
+
1182
+
1183
+
1184
+ <li class="md-nav__item">
1185
+ <a href="../user-guides/getting-started/regions.html" class="md-nav__link">
1186
+ Regions
1187
+ </a>
1188
+ </li>
1189
+
1190
+
1191
+
1192
+
1193
+
1194
+
1195
+
1196
+
1197
+
1198
+ <li class="md-nav__item">
1199
+ <a href="../user-guides/getting-started/tenants.html" class="md-nav__link">
1200
+ Tenants
1201
+ </a>
1202
+ </li>
1203
+
1204
+
1205
+
1206
+
1207
+
1208
+
1209
+
1210
+
1211
+
1212
+ <li class="md-nav__item">
1213
+ <a href="../user-guides/getting-started/search-bar.html" class="md-nav__link">
1214
+ The Search Bar
1215
+ </a>
1216
+ </li>
1217
+
1218
+
1219
+
1220
+
1221
+
1222
+
1223
+
1224
+
1225
+
1226
+ <li class="md-nav__item">
1227
+ <a href="../user-guides/git-data-source.html" class="md-nav__link">
1228
+ Git as a Data Source
1229
+ </a>
1230
+ </li>
1231
+
1232
+
1233
+
1234
+
1235
+
1236
+
1237
+
1238
+
1239
+
1240
+ <li class="md-nav__item">
1241
+ <a href="../user-guides/graphql.html" class="md-nav__link">
1242
+ GraphQL
1243
+ </a>
1244
+ </li>
1245
+
1246
+
1247
+
1248
+
1249
+
1250
+
1251
+
1252
+
1253
+
1254
+ <li class="md-nav__item">
1255
+ <a href="../user-guides/relationships.html" class="md-nav__link">
1256
+ Relationships
1257
+ </a>
1258
+ </li>
1259
+
1260
+
1261
+
1262
+
1263
+
1264
+
1265
+
1266
+
1267
+
1268
+ <li class="md-nav__item">
1269
+ <a href="../user-guides/s3-django-storage.html" class="md-nav__link">
1270
+ Django Storages with S3
1271
+ </a>
1272
+ </li>
1273
+
1274
+
1275
+
1276
+
1277
+
1278
+
1279
+
1280
+
1281
+
1282
+ <li class="md-nav__item">
1283
+ <a href="../user-guides/getting-started/vlans-and-vlan-groups.html" class="md-nav__link">
1284
+ VLANS and VLAN Groups
1285
+ </a>
1286
+ </li>
1287
+
1288
+
1289
+
1290
+
1291
+ </ul>
1292
+ </nav>
1293
+ </li>
1294
+
1295
+
1296
+
1297
+
1298
+
1299
+
1300
+
1301
+
1302
+
1303
+
1304
+ <li class="md-nav__item md-nav__item--nested">
1305
+
1306
+
1307
+
1308
+
1309
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_7" >
1310
+
1311
+
1312
+
1313
+ <label class="md-nav__link" for="__nav_2_7" id="__nav_2_7_label" tabindex="0">
1314
+ Core Functionality
1315
+ <span class="md-nav__icon md-icon"></span>
1316
+ </label>
1317
+
1318
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_7_label" aria-expanded="false">
1319
+ <label class="md-nav__title" for="__nav_2_7">
1320
+ <span class="md-nav__icon md-icon"></span>
1321
+ Core Functionality
1322
+ </label>
1323
+ <ul class="md-nav__list" data-md-scrollfix>
1324
+
1325
+
1326
+
1327
+
1328
+
1329
+
1330
+ <li class="md-nav__item">
1331
+ <a href="../core-functionality/circuits.html" class="md-nav__link">
1332
+ Circuits
1333
+ </a>
1334
+ </li>
1335
+
1336
+
1337
+
1338
+
1339
+
1340
+
1341
+
1342
+
1343
+
1344
+ <li class="md-nav__item">
1345
+ <a href="../core-functionality/devices.html" class="md-nav__link">
1346
+ Devices and Cabling
1347
+ </a>
1348
+ </li>
1349
+
1350
+
1351
+
1352
+
1353
+
1354
+
1355
+
1356
+
1357
+
1358
+ <li class="md-nav__item">
1359
+ <a href="../core-functionality/device-types.html" class="md-nav__link">
1360
+ Device Types
1361
+ </a>
1362
+ </li>
1363
+
1364
+
1365
+
1366
+
1367
+
1368
+
1369
+
1370
+
1371
+
1372
+ <li class="md-nav__item">
1373
+ <a href="../core-functionality/ipam.html" class="md-nav__link">
1374
+ IP Address Management
1375
+ </a>
1376
+ </li>
1377
+
1378
+
1379
+
1380
+
1381
+
1382
+
1383
+
1384
+
1385
+
1386
+ <li class="md-nav__item">
1387
+ <a href="../core-functionality/power.html" class="md-nav__link">
1388
+ Power Tracking
1389
+ </a>
1390
+ </li>
1391
+
1392
+
1393
+
1394
+
1395
+
1396
+
1397
+
1398
+
1399
+
1400
+ <li class="md-nav__item">
1401
+ <a href="../core-functionality/secrets.html" class="md-nav__link">
1402
+ Secrets
1403
+ </a>
1404
+ </li>
1405
+
1406
+
1407
+
1408
+
1409
+
1410
+
1411
+
1412
+
1413
+
1414
+ <li class="md-nav__item">
1415
+ <a href="../core-functionality/services.html" class="md-nav__link">
1416
+ Service Mapping
1417
+ </a>
1418
+ </li>
1419
+
1420
+
1421
+
1422
+
1423
+
1424
+
1425
+
1426
+
1427
+
1428
+ <li class="md-nav__item">
1429
+ <a href="../core-functionality/sites-and-racks.html" class="md-nav__link">
1430
+ Sites, Locations, and Racks
1431
+ </a>
1432
+ </li>
1433
+
1434
+
1435
+
1436
+
1437
+
1438
+
1439
+
1440
+
1441
+
1442
+ <li class="md-nav__item">
1443
+ <a href="../core-functionality/tenancy.html" class="md-nav__link">
1444
+ Tenancy
1445
+ </a>
1446
+ </li>
1447
+
1448
+
1449
+
1450
+
1451
+
1452
+
1453
+
1454
+
1455
+
1456
+ <li class="md-nav__item">
1457
+ <a href="../core-functionality/virtualization.html" class="md-nav__link">
1458
+ Virtualization
1459
+ </a>
1460
+ </li>
1461
+
1462
+
1463
+
1464
+
1465
+
1466
+
1467
+
1468
+
1469
+
1470
+ <li class="md-nav__item">
1471
+ <a href="../core-functionality/vlans.html" class="md-nav__link">
1472
+ VLAN Management
1473
+ </a>
1474
+ </li>
1475
+
1476
+
1477
+
1478
+
1479
+ </ul>
1480
+ </nav>
1481
+ </li>
1482
+
1483
+
1484
+
1485
+
1486
+
1487
+
1488
+
1489
+
1490
+
1491
+
1492
+ <li class="md-nav__item md-nav__item--nested">
1493
+
1494
+
1495
+
1496
+
1497
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8" >
1498
+
1499
+
1500
+
1501
+ <label class="md-nav__link" for="__nav_2_8" id="__nav_2_8_label" tabindex="0">
1502
+ Model Details
1503
+ <span class="md-nav__icon md-icon"></span>
1504
+ </label>
1505
+
1506
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_8_label" aria-expanded="false">
1507
+ <label class="md-nav__title" for="__nav_2_8">
1508
+ <span class="md-nav__icon md-icon"></span>
1509
+ Model Details
1510
+ </label>
1511
+ <ul class="md-nav__list" data-md-scrollfix>
1512
+
1513
+
1514
+
1515
+
1516
+
1517
+
1518
+
1519
+ <li class="md-nav__item md-nav__item--nested">
1520
+
1521
+
1522
+
1523
+
1524
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_1" >
1525
+
1526
+
1527
+
1528
+ <label class="md-nav__link" for="__nav_2_8_1" id="__nav_2_8_1_label" tabindex="0">
1529
+ Circuits
1530
+ <span class="md-nav__icon md-icon"></span>
1531
+ </label>
1532
+
1533
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_1_label" aria-expanded="false">
1534
+ <label class="md-nav__title" for="__nav_2_8_1">
1535
+ <span class="md-nav__icon md-icon"></span>
1536
+ Circuits
1537
+ </label>
1538
+ <ul class="md-nav__list" data-md-scrollfix>
1539
+
1540
+
1541
+
1542
+
1543
+
1544
+
1545
+ <li class="md-nav__item">
1546
+ <a href="../models/circuits/circuit.html" class="md-nav__link">
1547
+ Circuit
1548
+ </a>
1549
+ </li>
1550
+
1551
+
1552
+
1553
+
1554
+
1555
+
1556
+
1557
+
1558
+
1559
+ <li class="md-nav__item">
1560
+ <a href="../models/circuits/circuittermination.html" class="md-nav__link">
1561
+ Circuit Termination
1562
+ </a>
1563
+ </li>
1564
+
1565
+
1566
+
1567
+
1568
+
1569
+
1570
+
1571
+
1572
+
1573
+ <li class="md-nav__item">
1574
+ <a href="../models/circuits/circuittype.html" class="md-nav__link">
1575
+ Circuit Type
1576
+ </a>
1577
+ </li>
1578
+
1579
+
1580
+
1581
+
1582
+
1583
+
1584
+
1585
+
1586
+
1587
+ <li class="md-nav__item">
1588
+ <a href="../models/circuits/provider.html" class="md-nav__link">
1589
+ Circuit Provider
1590
+ </a>
1591
+ </li>
1592
+
1593
+
1594
+
1595
+
1596
+
1597
+
1598
+
1599
+
1600
+
1601
+ <li class="md-nav__item">
1602
+ <a href="../models/circuits/providernetwork.html" class="md-nav__link">
1603
+ Circuit Provider Network
1604
+ </a>
1605
+ </li>
1606
+
1607
+
1608
+
1609
+
1610
+ </ul>
1611
+ </nav>
1612
+ </li>
1613
+
1614
+
1615
+
1616
+
1617
+
1618
+
1619
+
1620
+
1621
+
1622
+
1623
+ <li class="md-nav__item md-nav__item--nested">
1624
+
1625
+
1626
+
1627
+
1628
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_2" >
1629
+
1630
+
1631
+
1632
+ <label class="md-nav__link" for="__nav_2_8_2" id="__nav_2_8_2_label" tabindex="0">
1633
+ DCIM
1634
+ <span class="md-nav__icon md-icon"></span>
1635
+ </label>
1636
+
1637
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_2_label" aria-expanded="false">
1638
+ <label class="md-nav__title" for="__nav_2_8_2">
1639
+ <span class="md-nav__icon md-icon"></span>
1640
+ DCIM
1641
+ </label>
1642
+ <ul class="md-nav__list" data-md-scrollfix>
1643
+
1644
+
1645
+
1646
+
1647
+
1648
+
1649
+ <li class="md-nav__item">
1650
+ <a href="../models/dcim/cable.html" class="md-nav__link">
1651
+ Cable
1652
+ </a>
1653
+ </li>
1654
+
1655
+
1656
+
1657
+
1658
+
1659
+
1660
+
1661
+
1662
+
1663
+ <li class="md-nav__item">
1664
+ <a href="../models/dcim/consoleport.html" class="md-nav__link">
1665
+ Console Port
1666
+ </a>
1667
+ </li>
1668
+
1669
+
1670
+
1671
+
1672
+
1673
+
1674
+
1675
+
1676
+
1677
+ <li class="md-nav__item">
1678
+ <a href="../models/dcim/consoleporttemplate.html" class="md-nav__link">
1679
+ Console Port Template
1680
+ </a>
1681
+ </li>
1682
+
1683
+
1684
+
1685
+
1686
+
1687
+
1688
+
1689
+
1690
+
1691
+ <li class="md-nav__item">
1692
+ <a href="../models/dcim/consoleserverport.html" class="md-nav__link">
1693
+ Console Server Port
1694
+ </a>
1695
+ </li>
1696
+
1697
+
1698
+
1699
+
1700
+
1701
+
1702
+
1703
+
1704
+
1705
+ <li class="md-nav__item">
1706
+ <a href="../models/dcim/consoleserverporttemplate.html" class="md-nav__link">
1707
+ Console Server Port Template
1708
+ </a>
1709
+ </li>
1710
+
1711
+
1712
+
1713
+
1714
+
1715
+
1716
+
1717
+
1718
+
1719
+ <li class="md-nav__item">
1720
+ <a href="../models/dcim/device.html" class="md-nav__link">
1721
+ Device
1722
+ </a>
1723
+ </li>
1724
+
1725
+
1726
+
1727
+
1728
+
1729
+
1730
+
1731
+
1732
+
1733
+ <li class="md-nav__item">
1734
+ <a href="../models/dcim/devicebay.html" class="md-nav__link">
1735
+ Device Bay
1736
+ </a>
1737
+ </li>
1738
+
1739
+
1740
+
1741
+
1742
+
1743
+
1744
+
1745
+
1746
+
1747
+ <li class="md-nav__item">
1748
+ <a href="../models/dcim/devicebaytemplate.html" class="md-nav__link">
1749
+ Device Bay Template
1750
+ </a>
1751
+ </li>
1752
+
1753
+
1754
+
1755
+
1756
+
1757
+
1758
+
1759
+
1760
+
1761
+ <li class="md-nav__item">
1762
+ <a href="../models/dcim/deviceredundancygroup.html" class="md-nav__link">
1763
+ Device Redundancy Group
1764
+ </a>
1765
+ </li>
1766
+
1767
+
1768
+
1769
+
1770
+
1771
+
1772
+
1773
+
1774
+
1775
+ <li class="md-nav__item">
1776
+ <a href="../models/dcim/devicetype.html" class="md-nav__link">
1777
+ Device Type
1778
+ </a>
1779
+ </li>
1780
+
1781
+
1782
+
1783
+
1784
+
1785
+
1786
+
1787
+
1788
+
1789
+ <li class="md-nav__item">
1790
+ <a href="../models/dcim/frontport.html" class="md-nav__link">
1791
+ Front Port
1792
+ </a>
1793
+ </li>
1794
+
1795
+
1796
+
1797
+
1798
+
1799
+
1800
+
1801
+
1802
+
1803
+ <li class="md-nav__item">
1804
+ <a href="../models/dcim/frontporttemplate.html" class="md-nav__link">
1805
+ Front Port Template
1806
+ </a>
1807
+ </li>
1808
+
1809
+
1810
+
1811
+
1812
+
1813
+
1814
+
1815
+
1816
+
1817
+ <li class="md-nav__item">
1818
+ <a href="../models/dcim/interface.html" class="md-nav__link">
1819
+ Interface
1820
+ </a>
1821
+ </li>
1822
+
1823
+
1824
+
1825
+
1826
+
1827
+
1828
+
1829
+
1830
+
1831
+ <li class="md-nav__item">
1832
+ <a href="../models/dcim/interfacetemplate.html" class="md-nav__link">
1833
+ Interface Template
1834
+ </a>
1835
+ </li>
1836
+
1837
+
1838
+
1839
+
1840
+
1841
+
1842
+
1843
+
1844
+
1845
+ <li class="md-nav__item">
1846
+ <a href="../models/dcim/inventoryitem.html" class="md-nav__link">
1847
+ Inventory Item
1848
+ </a>
1849
+ </li>
1850
+
1851
+
1852
+
1853
+
1854
+
1855
+
1856
+
1857
+
1858
+
1859
+ <li class="md-nav__item">
1860
+ <a href="../models/dcim/location.html" class="md-nav__link">
1861
+ Location
1862
+ </a>
1863
+ </li>
1864
+
1865
+
1866
+
1867
+
1868
+
1869
+
1870
+
1871
+
1872
+
1873
+ <li class="md-nav__item">
1874
+ <a href="../models/dcim/locationtype.html" class="md-nav__link">
1875
+ Location Type
1876
+ </a>
1877
+ </li>
1878
+
1879
+
1880
+
1881
+
1882
+
1883
+
1884
+
1885
+
1886
+
1887
+ <li class="md-nav__item">
1888
+ <a href="../models/dcim/manufacturer.html" class="md-nav__link">
1889
+ Manufacturer
1890
+ </a>
1891
+ </li>
1892
+
1893
+
1894
+
1895
+
1896
+
1897
+
1898
+
1899
+
1900
+
1901
+ <li class="md-nav__item">
1902
+ <a href="../models/dcim/platform.html" class="md-nav__link">
1903
+ Platform
1904
+ </a>
1905
+ </li>
1906
+
1907
+
1908
+
1909
+
1910
+
1911
+
1912
+
1913
+
1914
+
1915
+ <li class="md-nav__item">
1916
+ <a href="../models/dcim/powerfeed.html" class="md-nav__link">
1917
+ Power Feed
1918
+ </a>
1919
+ </li>
1920
+
1921
+
1922
+
1923
+
1924
+
1925
+
1926
+
1927
+
1928
+
1929
+ <li class="md-nav__item">
1930
+ <a href="../models/dcim/poweroutlet.html" class="md-nav__link">
1931
+ Power Outlet
1932
+ </a>
1933
+ </li>
1934
+
1935
+
1936
+
1937
+
1938
+
1939
+
1940
+
1941
+
1942
+
1943
+ <li class="md-nav__item">
1944
+ <a href="../models/dcim/poweroutlettemplate.html" class="md-nav__link">
1945
+ Power Outlet Template
1946
+ </a>
1947
+ </li>
1948
+
1949
+
1950
+
1951
+
1952
+
1953
+
1954
+
1955
+
1956
+
1957
+ <li class="md-nav__item">
1958
+ <a href="../models/dcim/powerpanel.html" class="md-nav__link">
1959
+ Power Panel
1960
+ </a>
1961
+ </li>
1962
+
1963
+
1964
+
1965
+
1966
+
1967
+
1968
+
1969
+
1970
+
1971
+ <li class="md-nav__item">
1972
+ <a href="../models/dcim/powerport.html" class="md-nav__link">
1973
+ Power Port
1974
+ </a>
1975
+ </li>
1976
+
1977
+
1978
+
1979
+
1980
+
1981
+
1982
+
1983
+
1984
+
1985
+ <li class="md-nav__item">
1986
+ <a href="../models/dcim/powerporttemplate.html" class="md-nav__link">
1987
+ Power Port Template
1988
+ </a>
1989
+ </li>
1990
+
1991
+
1992
+
1993
+
1994
+
1995
+
1996
+
1997
+
1998
+
1999
+ <li class="md-nav__item">
2000
+ <a href="../models/dcim/rack.html" class="md-nav__link">
2001
+ Rack
2002
+ </a>
2003
+ </li>
2004
+
2005
+
2006
+
2007
+
2008
+
2009
+
2010
+
2011
+
2012
+
2013
+ <li class="md-nav__item">
2014
+ <a href="../models/dcim/rackgroup.html" class="md-nav__link">
2015
+ Rack Group
991
2016
  </a>
992
2017
  </li>
993
2018
 
@@ -1000,8 +2025,8 @@
1000
2025
 
1001
2026
 
1002
2027
  <li class="md-nav__item">
1003
- <a href="../administration/nautobot-shell.html" class="md-nav__link">
1004
- Nautobot Shell
2028
+ <a href="../models/dcim/rackreservation.html" class="md-nav__link">
2029
+ Rack Reservation
1005
2030
  </a>
1006
2031
  </li>
1007
2032
 
@@ -1014,8 +2039,8 @@
1014
2039
 
1015
2040
 
1016
2041
  <li class="md-nav__item">
1017
- <a href="../administration/permissions.html" class="md-nav__link">
1018
- Permissions
2042
+ <a href="../models/dcim/rearport.html" class="md-nav__link">
2043
+ Rear Port
1019
2044
  </a>
1020
2045
  </li>
1021
2046
 
@@ -1028,8 +2053,8 @@
1028
2053
 
1029
2054
 
1030
2055
  <li class="md-nav__item">
1031
- <a href="../administration/replicating-nautobot.html" class="md-nav__link">
1032
- Replicating Nautobot
2056
+ <a href="../models/dcim/rearporttemplate.html" class="md-nav__link">
2057
+ Rear Port Template
1033
2058
  </a>
1034
2059
  </li>
1035
2060
 
@@ -1042,8 +2067,8 @@
1042
2067
 
1043
2068
 
1044
2069
  <li class="md-nav__item">
1045
- <a href="../administration/celery-queues.html" class="md-nav__link">
1046
- Task Queues
2070
+ <a href="../models/dcim/virtualchassis.html" class="md-nav__link">
2071
+ Virtual Chassis
1047
2072
  </a>
1048
2073
  </li>
1049
2074
 
@@ -1068,19 +2093,19 @@
1068
2093
 
1069
2094
 
1070
2095
 
1071
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_6" >
2096
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_3" >
1072
2097
 
1073
2098
 
1074
2099
 
1075
- <label class="md-nav__link" for="__nav_2_6" id="__nav_2_6_label" tabindex="0">
1076
- User Guides
2100
+ <label class="md-nav__link" for="__nav_2_8_3" id="__nav_2_8_3_label" tabindex="0">
2101
+ Extras
1077
2102
  <span class="md-nav__icon md-icon"></span>
1078
2103
  </label>
1079
2104
 
1080
- <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_6_label" aria-expanded="false">
1081
- <label class="md-nav__title" for="__nav_2_6">
2105
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_3_label" aria-expanded="false">
2106
+ <label class="md-nav__title" for="__nav_2_8_3">
1082
2107
  <span class="md-nav__icon md-icon"></span>
1083
- User Guides
2108
+ Extras
1084
2109
  </label>
1085
2110
  <ul class="md-nav__list" data-md-scrollfix>
1086
2111
 
@@ -1090,8 +2115,8 @@
1090
2115
 
1091
2116
 
1092
2117
  <li class="md-nav__item">
1093
- <a href="../user-guides/getting-started/creating-devices.html" class="md-nav__link">
1094
- Creating Devices
2118
+ <a href="../models/extras/configcontext.html" class="md-nav__link">
2119
+ Config Context
1095
2120
  </a>
1096
2121
  </li>
1097
2122
 
@@ -1104,8 +2129,8 @@
1104
2129
 
1105
2130
 
1106
2131
  <li class="md-nav__item">
1107
- <a href="../user-guides/custom-fields.html" class="md-nav__link">
1108
- Custom Fields
2132
+ <a href="../models/extras/configcontextschema.html" class="md-nav__link">
2133
+ Config Context Schema
1109
2134
  </a>
1110
2135
  </li>
1111
2136
 
@@ -1118,8 +2143,8 @@
1118
2143
 
1119
2144
 
1120
2145
  <li class="md-nav__item">
1121
- <a href="../user-guides/getting-started/index.html" class="md-nav__link">
1122
- Getting Started In the Web UI
2146
+ <a href="../models/extras/graphqlquery.html" class="md-nav__link">
2147
+ GraphQL Query
1123
2148
  </a>
1124
2149
  </li>
1125
2150
 
@@ -1132,8 +2157,8 @@
1132
2157
 
1133
2158
 
1134
2159
  <li class="md-nav__item">
1135
- <a href="../user-guides/git-data-source.html" class="md-nav__link">
1136
- Git as a Data Source
2160
+ <a href="../models/extras/imageattachment.html" class="md-nav__link">
2161
+ Image Attachment
1137
2162
  </a>
1138
2163
  </li>
1139
2164
 
@@ -1146,8 +2171,8 @@
1146
2171
 
1147
2172
 
1148
2173
  <li class="md-nav__item">
1149
- <a href="../user-guides/graphql.html" class="md-nav__link">
1150
- GraphQL
2174
+ <a href="../models/extras/job.html" class="md-nav__link">
2175
+ Job
1151
2176
  </a>
1152
2177
  </li>
1153
2178
 
@@ -1160,8 +2185,8 @@
1160
2185
 
1161
2186
 
1162
2187
  <li class="md-nav__item">
1163
- <a href="../user-guides/getting-started/interfaces.html" class="md-nav__link">
1164
- Interfaces
2188
+ <a href="../models/extras/joblogentry.html" class="md-nav__link">
2189
+ Job Log Entry
1165
2190
  </a>
1166
2191
  </li>
1167
2192
 
@@ -1174,8 +2199,8 @@
1174
2199
 
1175
2200
 
1176
2201
  <li class="md-nav__item">
1177
- <a href="../user-guides/getting-started/ipam.html" class="md-nav__link">
1178
- IP Address Management
2202
+ <a href="../models/extras/jobresult.html" class="md-nav__link">
2203
+ Job Result
1179
2204
  </a>
1180
2205
  </li>
1181
2206
 
@@ -1188,8 +2213,8 @@
1188
2213
 
1189
2214
 
1190
2215
  <li class="md-nav__item">
1191
- <a href="../user-guides/getting-started/platforms.html" class="md-nav__link">
1192
- Platforms
2216
+ <a href="../models/extras/role.html" class="md-nav__link">
2217
+ Role
1193
2218
  </a>
1194
2219
  </li>
1195
2220
 
@@ -1202,8 +2227,8 @@
1202
2227
 
1203
2228
 
1204
2229
  <li class="md-nav__item">
1205
- <a href="../user-guides/getting-started/regions.html" class="md-nav__link">
1206
- Regions
2230
+ <a href="../models/extras/secret.html" class="md-nav__link">
2231
+ Secret
1207
2232
  </a>
1208
2233
  </li>
1209
2234
 
@@ -1216,8 +2241,56 @@
1216
2241
 
1217
2242
 
1218
2243
  <li class="md-nav__item">
1219
- <a href="../user-guides/getting-started/tenants.html" class="md-nav__link">
1220
- Tenants
2244
+ <a href="../models/extras/secretsgroup.html" class="md-nav__link">
2245
+ Secrets group
2246
+ </a>
2247
+ </li>
2248
+
2249
+
2250
+
2251
+
2252
+ </ul>
2253
+ </nav>
2254
+ </li>
2255
+
2256
+
2257
+
2258
+
2259
+
2260
+
2261
+
2262
+
2263
+
2264
+
2265
+ <li class="md-nav__item md-nav__item--nested">
2266
+
2267
+
2268
+
2269
+
2270
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_4" >
2271
+
2272
+
2273
+
2274
+ <label class="md-nav__link" for="__nav_2_8_4" id="__nav_2_8_4_label" tabindex="0">
2275
+ IPAM
2276
+ <span class="md-nav__icon md-icon"></span>
2277
+ </label>
2278
+
2279
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_4_label" aria-expanded="false">
2280
+ <label class="md-nav__title" for="__nav_2_8_4">
2281
+ <span class="md-nav__icon md-icon"></span>
2282
+ IPAM
2283
+ </label>
2284
+ <ul class="md-nav__list" data-md-scrollfix>
2285
+
2286
+
2287
+
2288
+
2289
+
2290
+
2291
+ <li class="md-nav__item">
2292
+ <a href="../models/ipam/ipaddress.html" class="md-nav__link">
2293
+ IP Address
1221
2294
  </a>
1222
2295
  </li>
1223
2296
 
@@ -1230,8 +2303,8 @@
1230
2303
 
1231
2304
 
1232
2305
  <li class="md-nav__item">
1233
- <a href="../user-guides/getting-started/search-bar.html" class="md-nav__link">
1234
- The Search Bar
2306
+ <a href="../models/ipam/prefix.html" class="md-nav__link">
2307
+ Prefix
1235
2308
  </a>
1236
2309
  </li>
1237
2310
 
@@ -1244,8 +2317,8 @@
1244
2317
 
1245
2318
 
1246
2319
  <li class="md-nav__item">
1247
- <a href="../user-guides/git-data-source.html" class="md-nav__link">
1248
- Git as a Data Source
2320
+ <a href="../models/ipam/rir.html" class="md-nav__link">
2321
+ Rir
1249
2322
  </a>
1250
2323
  </li>
1251
2324
 
@@ -1258,8 +2331,8 @@
1258
2331
 
1259
2332
 
1260
2333
  <li class="md-nav__item">
1261
- <a href="../user-guides/graphql.html" class="md-nav__link">
1262
- GraphQL
2334
+ <a href="../models/ipam/routetarget.html" class="md-nav__link">
2335
+ Route Target
1263
2336
  </a>
1264
2337
  </li>
1265
2338
 
@@ -1272,8 +2345,8 @@
1272
2345
 
1273
2346
 
1274
2347
  <li class="md-nav__item">
1275
- <a href="../user-guides/relationships.html" class="md-nav__link">
1276
- Relationships
2348
+ <a href="../models/ipam/service.html" class="md-nav__link">
2349
+ Service
1277
2350
  </a>
1278
2351
  </li>
1279
2352
 
@@ -1286,8 +2359,8 @@
1286
2359
 
1287
2360
 
1288
2361
  <li class="md-nav__item">
1289
- <a href="../user-guides/s3-django-storage.html" class="md-nav__link">
1290
- Django Storages with S3
2362
+ <a href="../models/ipam/vlan.html" class="md-nav__link">
2363
+ VLAN
1291
2364
  </a>
1292
2365
  </li>
1293
2366
 
@@ -1300,8 +2373,22 @@
1300
2373
 
1301
2374
 
1302
2375
  <li class="md-nav__item">
1303
- <a href="../user-guides/getting-started/vlans-and-vlan-groups.html" class="md-nav__link">
1304
- VLANS and VLAN Groups
2376
+ <a href="../models/ipam/vlangroup.html" class="md-nav__link">
2377
+ VLAN Group
2378
+ </a>
2379
+ </li>
2380
+
2381
+
2382
+
2383
+
2384
+
2385
+
2386
+
2387
+
2388
+
2389
+ <li class="md-nav__item">
2390
+ <a href="../models/ipam/vrf.html" class="md-nav__link">
2391
+ VRF
1305
2392
  </a>
1306
2393
  </li>
1307
2394
 
@@ -1326,19 +2413,19 @@
1326
2413
 
1327
2414
 
1328
2415
 
1329
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_7" >
2416
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_5" >
1330
2417
 
1331
2418
 
1332
2419
 
1333
- <label class="md-nav__link" for="__nav_2_7" id="__nav_2_7_label" tabindex="0">
1334
- Core Functionality
2420
+ <label class="md-nav__link" for="__nav_2_8_5" id="__nav_2_8_5_label" tabindex="0">
2421
+ Tenancy
1335
2422
  <span class="md-nav__icon md-icon"></span>
1336
2423
  </label>
1337
2424
 
1338
- <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_7_label" aria-expanded="false">
1339
- <label class="md-nav__title" for="__nav_2_7">
2425
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_5_label" aria-expanded="false">
2426
+ <label class="md-nav__title" for="__nav_2_8_5">
1340
2427
  <span class="md-nav__icon md-icon"></span>
1341
- Core Functionality
2428
+ Tenancy
1342
2429
  </label>
1343
2430
  <ul class="md-nav__list" data-md-scrollfix>
1344
2431
 
@@ -1348,8 +2435,8 @@
1348
2435
 
1349
2436
 
1350
2437
  <li class="md-nav__item">
1351
- <a href="../core-functionality/circuits.html" class="md-nav__link">
1352
- Circuits
2438
+ <a href="../models/tenancy/tenant.html" class="md-nav__link">
2439
+ Tenant
1353
2440
  </a>
1354
2441
  </li>
1355
2442
 
@@ -1362,27 +2449,47 @@
1362
2449
 
1363
2450
 
1364
2451
  <li class="md-nav__item">
1365
- <a href="../core-functionality/devices.html" class="md-nav__link">
1366
- Devices and Cabling
2452
+ <a href="../models/tenancy/tenantgroup.html" class="md-nav__link">
2453
+ Tenant Group
1367
2454
  </a>
1368
2455
  </li>
1369
2456
 
1370
2457
 
1371
2458
 
1372
2459
 
2460
+ </ul>
2461
+ </nav>
2462
+ </li>
2463
+
2464
+
2465
+
2466
+
1373
2467
 
1374
2468
 
1375
2469
 
1376
2470
 
1377
2471
 
1378
- <li class="md-nav__item">
1379
- <a href="../core-functionality/device-types.html" class="md-nav__link">
1380
- Device Types
1381
- </a>
1382
- </li>
1383
-
1384
-
1385
-
2472
+
2473
+ <li class="md-nav__item md-nav__item--nested">
2474
+
2475
+
2476
+
2477
+
2478
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_6" >
2479
+
2480
+
2481
+
2482
+ <label class="md-nav__link" for="__nav_2_8_6" id="__nav_2_8_6_label" tabindex="0">
2483
+ Users
2484
+ <span class="md-nav__icon md-icon"></span>
2485
+ </label>
2486
+
2487
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_6_label" aria-expanded="false">
2488
+ <label class="md-nav__title" for="__nav_2_8_6">
2489
+ <span class="md-nav__icon md-icon"></span>
2490
+ Users
2491
+ </label>
2492
+ <ul class="md-nav__list" data-md-scrollfix>
1386
2493
 
1387
2494
 
1388
2495
 
@@ -1390,8 +2497,8 @@
1390
2497
 
1391
2498
 
1392
2499
  <li class="md-nav__item">
1393
- <a href="../core-functionality/ipam.html" class="md-nav__link">
1394
- IP Address Management
2500
+ <a href="../models/users/objectpermission.html" class="md-nav__link">
2501
+ Object Permission
1395
2502
  </a>
1396
2503
  </li>
1397
2504
 
@@ -1404,27 +2511,47 @@
1404
2511
 
1405
2512
 
1406
2513
  <li class="md-nav__item">
1407
- <a href="../core-functionality/power.html" class="md-nav__link">
1408
- Power Tracking
2514
+ <a href="../models/users/token.html" class="md-nav__link">
2515
+ Token
1409
2516
  </a>
1410
2517
  </li>
1411
2518
 
1412
2519
 
1413
2520
 
1414
2521
 
2522
+ </ul>
2523
+ </nav>
2524
+ </li>
2525
+
2526
+
2527
+
2528
+
1415
2529
 
1416
2530
 
1417
2531
 
1418
2532
 
1419
2533
 
1420
- <li class="md-nav__item">
1421
- <a href="../core-functionality/secrets.html" class="md-nav__link">
1422
- Secrets
1423
- </a>
1424
- </li>
1425
-
1426
-
1427
-
2534
+
2535
+ <li class="md-nav__item md-nav__item--nested">
2536
+
2537
+
2538
+
2539
+
2540
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_7" >
2541
+
2542
+
2543
+
2544
+ <label class="md-nav__link" for="__nav_2_8_7" id="__nav_2_8_7_label" tabindex="0">
2545
+ Virtualization
2546
+ <span class="md-nav__icon md-icon"></span>
2547
+ </label>
2548
+
2549
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_7_label" aria-expanded="false">
2550
+ <label class="md-nav__title" for="__nav_2_8_7">
2551
+ <span class="md-nav__icon md-icon"></span>
2552
+ Virtualization
2553
+ </label>
2554
+ <ul class="md-nav__list" data-md-scrollfix>
1428
2555
 
1429
2556
 
1430
2557
 
@@ -1432,8 +2559,8 @@
1432
2559
 
1433
2560
 
1434
2561
  <li class="md-nav__item">
1435
- <a href="../core-functionality/services.html" class="md-nav__link">
1436
- Service Mapping
2562
+ <a href="../models/virtualization/cluster.html" class="md-nav__link">
2563
+ Cluster
1437
2564
  </a>
1438
2565
  </li>
1439
2566
 
@@ -1446,8 +2573,8 @@
1446
2573
 
1447
2574
 
1448
2575
  <li class="md-nav__item">
1449
- <a href="../core-functionality/sites-and-racks.html" class="md-nav__link">
1450
- Sites, Locations, and Racks
2576
+ <a href="../models/virtualization/clustergroup.html" class="md-nav__link">
2577
+ Cluster Group
1451
2578
  </a>
1452
2579
  </li>
1453
2580
 
@@ -1460,8 +2587,8 @@
1460
2587
 
1461
2588
 
1462
2589
  <li class="md-nav__item">
1463
- <a href="../core-functionality/tenancy.html" class="md-nav__link">
1464
- Tenancy
2590
+ <a href="../models/virtualization/clustertype.html" class="md-nav__link">
2591
+ Cluster Type
1465
2592
  </a>
1466
2593
  </li>
1467
2594
 
@@ -1474,8 +2601,8 @@
1474
2601
 
1475
2602
 
1476
2603
  <li class="md-nav__item">
1477
- <a href="../core-functionality/virtualization.html" class="md-nav__link">
1478
- Virtualization
2604
+ <a href="../models/virtualization/virtualmachine.html" class="md-nav__link">
2605
+ Virtual Machine
1479
2606
  </a>
1480
2607
  </li>
1481
2608
 
@@ -1488,8 +2615,8 @@
1488
2615
 
1489
2616
 
1490
2617
  <li class="md-nav__item">
1491
- <a href="../core-functionality/vlans.html" class="md-nav__link">
1492
- VLAN Management
2618
+ <a href="../models/virtualization/vminterface.html" class="md-nav__link">
2619
+ VM Interface
1493
2620
  </a>
1494
2621
  </li>
1495
2622
 
@@ -1503,6 +2630,13 @@
1503
2630
 
1504
2631
 
1505
2632
 
2633
+ </ul>
2634
+ </nav>
2635
+ </li>
2636
+
2637
+
2638
+
2639
+
1506
2640
 
1507
2641
 
1508
2642
 
@@ -1514,17 +2648,17 @@
1514
2648
 
1515
2649
 
1516
2650
 
1517
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8" >
2651
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_9" >
1518
2652
 
1519
2653
 
1520
2654
 
1521
- <label class="md-nav__link" for="__nav_2_8" id="__nav_2_8_label" tabindex="0">
2655
+ <label class="md-nav__link" for="__nav_2_9" id="__nav_2_9_label" tabindex="0">
1522
2656
  Additional Features
1523
2657
  <span class="md-nav__icon md-icon"></span>
1524
2658
  </label>
1525
2659
 
1526
- <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_8_label" aria-expanded="false">
1527
- <label class="md-nav__title" for="__nav_2_8">
2660
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_9_label" aria-expanded="false">
2661
+ <label class="md-nav__title" for="__nav_2_9">
1528
2662
  <span class="md-nav__icon md-icon"></span>
1529
2663
  Additional Features
1530
2664
  </label>
@@ -1856,17 +2990,17 @@
1856
2990
 
1857
2991
 
1858
2992
 
1859
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_9" >
2993
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_10" >
1860
2994
 
1861
2995
 
1862
2996
 
1863
- <label class="md-nav__link" for="__nav_2_9" id="__nav_2_9_label" tabindex="0">
2997
+ <label class="md-nav__link" for="__nav_2_10" id="__nav_2_10_label" tabindex="0">
1864
2998
  REST API
1865
2999
  <span class="md-nav__icon md-icon"></span>
1866
3000
  </label>
1867
3001
 
1868
- <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_9_label" aria-expanded="false">
1869
- <label class="md-nav__title" for="__nav_2_9">
3002
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_10_label" aria-expanded="false">
3003
+ <label class="md-nav__title" for="__nav_2_10">
1870
3004
  <span class="md-nav__icon md-icon"></span>
1871
3005
  REST API
1872
3006
  </label>
@@ -1914,6 +3048,20 @@
1914
3048
 
1915
3049
 
1916
3050
 
3051
+
3052
+
3053
+
3054
+
3055
+
3056
+ <li class="md-nav__item">
3057
+ <a href="../rest-api/ui-related-endpoints.html" class="md-nav__link">
3058
+ UI Endpoints
3059
+ </a>
3060
+ </li>
3061
+
3062
+
3063
+
3064
+
1917
3065
  </ul>
1918
3066
  </nav>
1919
3067
  </li>
@@ -1932,17 +3080,17 @@
1932
3080
 
1933
3081
 
1934
3082
 
1935
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_10" >
3083
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_11" >
1936
3084
 
1937
3085
 
1938
3086
 
1939
- <label class="md-nav__link" for="__nav_2_10" id="__nav_2_10_label" tabindex="0">
3087
+ <label class="md-nav__link" for="__nav_2_11" id="__nav_2_11_label" tabindex="0">
1940
3088
  GraphQL API
1941
3089
  <span class="md-nav__icon md-icon"></span>
1942
3090
  </label>
1943
3091
 
1944
- <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_10_label" aria-expanded="false">
1945
- <label class="md-nav__title" for="__nav_2_10">
3092
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_11_label" aria-expanded="false">
3093
+ <label class="md-nav__title" for="__nav_2_11">
1946
3094
  <span class="md-nav__icon md-icon"></span>
1947
3095
  GraphQL API
1948
3096
  </label>
@@ -2964,26 +4112,6 @@
2964
4112
  Caching
2965
4113
  </a>
2966
4114
 
2967
- <nav class="md-nav" aria-label="Caching">
2968
- <ul class="md-nav__list">
2969
-
2970
- <li class="md-nav__item">
2971
- <a href="#cacheops_redis" class="md-nav__link">
2972
- CACHEOPS_REDIS
2973
- </a>
2974
-
2975
- </li>
2976
-
2977
- <li class="md-nav__item">
2978
- <a href="#cacheops_sentinel" class="md-nav__link">
2979
- CACHEOPS_SENTINEL
2980
- </a>
2981
-
2982
- </li>
2983
-
2984
- </ul>
2985
- </nav>
2986
-
2987
4115
  </li>
2988
4116
 
2989
4117
  <li class="md-nav__item">
@@ -3110,7 +4238,7 @@
3110
4238
  <li><code>HOST</code> - Name or IP address of the database server (use <code>localhost</code> if running locally)</li>
3111
4239
  <li><code>PORT</code> - The port to use when connecting to the database. An empty string means the default port for your selected backend. (PostgreSQL: <code>5432</code>, MySQL: <code>3306</code>)</li>
3112
4240
  <li><code>CONN_MAX_AGE</code> - Lifetime of a <a href="https://docs.djangoproject.com/en/stable/ref/databases/#persistent-connections">persistent database connection</a>, in seconds (300 is the default)</li>
3113
- <li><code>ENGINE</code> - The database backend to use. This can be either <code>django.db.backends.postgresql</code> or <code>django.db.backends.mysql</code>.</li>
4241
+ <li><code>ENGINE</code> - The database backend to use. This can be either <code>django.db.backends.postgresql</code> or <code>django.db.backends.mysql</code>. If <code>METRICS_ENABLED</code> is <code>True</code> this can also be either <code>django_prometheus.db.backends.postgresql</code> or <code>django_prometheus.db.backends.mysql</code></li>
3114
4242
  </ul>
3115
4243
  <p>The following environment variables may also be set for each of the above values:</p>
3116
4244
  <ul>
@@ -3188,71 +4316,44 @@ to different Redis instances/databases per feature.</p>
3188
4316
  <p>The default Redis settings in your <code>nautobot_config.py</code> should be suitable for most deployments and should only require customization for more advanced configurations.</p>
3189
4317
  </div>
3190
4318
  <h3 id="caching">Caching<a class="headerlink" href="#caching" title="Permanent link">&para;</a></h3>
3191
- <p>Nautobot supports database query caching using <a href="https://github.com/Suor/django-cacheops"><code>django-cacheops</code></a>.</p>
3192
- <p>Caching is configured by defining the <a href="#cacheops_redis"><code>CACHEOPS_REDIS</code></a> setting which in its simplest form is just a URL.</p>
3193
4319
  <p>For more details on Nautobot's caching, including TLS and HA configuration, see the guide on <a href="../additional-features/caching.html">Caching</a>.</p>
3194
- <div class="admonition important">
3195
- <p class="admonition-title">Important</p>
3196
- <p>Nautobot does not utilize the built-in <a href="https://docs.djangoproject.com/en/stable/topics/cache/">Django cache framework</a> to perform caching, as <code>django-cacheops</code> takes its place.</p>
3197
- </div>
3198
- <h4 id="cacheops_redis">CACHEOPS_REDIS<a class="headerlink" href="#cacheops_redis" title="Permanent link">&para;</a></h4>
3199
- <p>Default: <code>"redis://localhost:6379/1"</code></p>
3200
- <p>Environment Variable: <code>NAUTOBOT_CACHEOPS_REDIS</code></p>
3201
- <p>If you wish to use SSL, you may set the URL scheme to <code>rediss://</code>, for example:</p>
3202
- <div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="n">CACHEOPS_REDIS</span> <span class="o">=</span> <span class="s2">&quot;rediss://localhost:6379/1&quot;</span>
3203
- </code></pre></div>
3204
- <p>This setting may also be a dictionary style to provide additional options such as custom TLS/SSL settings, for example:</p>
3205
- <div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="kn">import</span> <span class="nn">ssl</span>
3206
- <a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a>
3207
- <a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a><span class="n">CACHEOPS_REDIS</span> <span class="o">=</span> <span class="p">{</span>
3208
- <a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a> <span class="s2">&quot;host&quot;</span><span class="p">:</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;NAUTOBOT_REDIS_HOST&quot;</span><span class="p">,</span> <span class="s2">&quot;localhost&quot;</span><span class="p">),</span>
3209
- <a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a> <span class="s2">&quot;port&quot;</span><span class="p">:</span> <span class="nb">int</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;NAUTOBOT_REDIS_PORT&quot;</span><span class="p">,</span> <span class="mi">6379</span><span class="p">)),</span>
3210
- <a id="__codelineno-5-6" name="__codelineno-5-6" href="#__codelineno-5-6"></a> <span class="s2">&quot;password&quot;</span><span class="p">:</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;NAUTOBOT_REDIS_PASSWORD&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">),</span>
3211
- <a id="__codelineno-5-7" name="__codelineno-5-7" href="#__codelineno-5-7"></a> <span class="s2">&quot;ssl&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
3212
- <a id="__codelineno-5-8" name="__codelineno-5-8" href="#__codelineno-5-8"></a> <span class="s2">&quot;ssl_cert_reqs&quot;</span><span class="p">:</span> <span class="n">ssl</span><span class="o">.</span><span class="n">CERT_REQUIRED</span><span class="p">,</span>
3213
- <a id="__codelineno-5-9" name="__codelineno-5-9" href="#__codelineno-5-9"></a> <span class="s2">&quot;ssl_ca_certs&quot;</span><span class="p">:</span> <span class="s2">&quot;/opt/nautobot/redis/ca.crt&quot;</span><span class="p">,</span>
3214
- <a id="__codelineno-5-10" name="__codelineno-5-10" href="#__codelineno-5-10"></a> <span class="s2">&quot;ssl_certfile&quot;</span><span class="p">:</span> <span class="s2">&quot;/opt/nautobot/redis/tls.crt&quot;</span><span class="p">,</span>
3215
- <a id="__codelineno-5-11" name="__codelineno-5-11" href="#__codelineno-5-11"></a> <span class="s2">&quot;ssl_keyfile&quot;</span><span class="p">:</span> <span class="s2">&quot;/opt/nautobot/redis/tls.key&quot;</span><span class="p">,</span>
3216
- <a id="__codelineno-5-12" name="__codelineno-5-12" href="#__codelineno-5-12"></a><span class="p">}</span>
3217
- </code></pre></div>
3218
- <p>Additional settings may be available and are not covered here. Please see the official guide on <a href="https://github.com/Suor/django-cacheops#setup">Cacheops setup</a>.</p>
3219
- <h4 id="cacheops_sentinel">CACHEOPS_SENTINEL<a class="headerlink" href="#cacheops_sentinel" title="Permanent link">&para;</a></h4>
3220
- <p>Default: <code>undefined</code></p>
3221
- <p>If you are using <a href="https://redis.io/topics/sentinel">Redis Sentinel</a> for high-availability purposes, you must replace the <a href="#cacheops_redis"><code>CACHEOPS_REDIS</code></a> setting with <a href="#cacheops_sentinel"><code>CACHEOPS_SENTINEL</code></a>. For more details on configuring Nautobot to use Redis Sentinel see <a href="../additional-features/caching.html#using-redis-sentinel">Using Redis Sentinel</a>. For more details on how to configure Cacheops specifically to use Redis Sentinel see the official guide on <a href="https://github.com/Suor/django-cacheops#setup">Cacheops
3222
- setup</a>.</p>
3223
- <div class="admonition warning">
3224
- <p class="admonition-title">Warning</p>
3225
- <p><a href="#cacheops_redis"><code>CACHEOPS_REDIS</code></a> and <a href="#cacheops_sentinel"><code>CACHEOPS_SENTINEL</code></a> are mutually exclusive and will result in an error if both are set.</p>
3226
- </div>
3227
4320
  <h3 id="task-queuing">Task Queuing<a class="headerlink" href="#task-queuing" title="Permanent link">&para;</a></h3>
3228
4321
  <h4 id="caches">CACHES<a class="headerlink" href="#caches" title="Permanent link">&para;</a></h4>
3229
- <p>The <a href="https://github.com/jazzband/django-redis"><code>django-redis</code></a> Django plugin is used to enable Redis as a concurrent write lock for preventing race conditions when allocating IP address objects. The <code>CACHES</code> setting is required to to simplify the configuration for defining queues. <em>It is not used for caching at this time.</em></p>
4322
+ <p>The <a href="https://github.com/jazzband/django-redis"><code>django-redis</code></a> Django plugin is used to enable Redis as a concurrent write lock for preventing race conditions when allocating IP address objects. The <code>CACHES</code> setting is required to simplify the configuration for <code>django-redis</code>.</p>
3230
4323
  <div class="admonition important">
3231
4324
  <p class="admonition-title">Important</p>
3232
- <p>Nautobot does not utilize the built-in <a href="https://docs.djangoproject.com/en/stable/topics/cache/">Django cache framework</a> (which also relies on the <code>CACHES</code> setting) to perform caching because Cacheops is being used instead as detailed just above. <em>Yes, we know this is confusing, which is why this is being called out explicitly!</em></p>
4325
+ <p>Nautobot also utilizes the built-in <a href="https://docs.djangoproject.com/en/stable/topics/cache/">Django cache framework</a> (which also relies on the <code>CACHES</code> setting) to perform caching.</p>
3233
4326
  </div>
3234
4327
  <p>Default:</p>
3235
- <div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="c1"># Uncomment the following line to configure TLS/SSL</span>
3236
- <a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a><span class="c1"># import ssl</span>
3237
- <a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a>
3238
- <a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a><span class="n">CACHES</span> <span class="o">=</span> <span class="p">{</span>
3239
- <a id="__codelineno-6-5" name="__codelineno-6-5" href="#__codelineno-6-5"></a> <span class="s2">&quot;default&quot;</span><span class="p">:</span> <span class="p">{</span>
3240
- <a id="__codelineno-6-6" name="__codelineno-6-6" href="#__codelineno-6-6"></a> <span class="s2">&quot;BACKEND&quot;</span><span class="p">:</span> <span class="s2">&quot;django_redis.cache.RedisCache&quot;</span><span class="p">,</span>
3241
- <a id="__codelineno-6-7" name="__codelineno-6-7" href="#__codelineno-6-7"></a> <span class="s2">&quot;LOCATION&quot;</span><span class="p">:</span> <span class="s2">&quot;redis://localhost:6379/0&quot;</span><span class="p">,</span>
3242
- <a id="__codelineno-6-8" name="__codelineno-6-8" href="#__codelineno-6-8"></a> <span class="s2">&quot;TIMEOUT&quot;</span><span class="p">:</span> <span class="mi">300</span><span class="p">,</span>
3243
- <a id="__codelineno-6-9" name="__codelineno-6-9" href="#__codelineno-6-9"></a> <span class="s2">&quot;OPTIONS&quot;</span><span class="p">:</span> <span class="p">{</span>
3244
- <a id="__codelineno-6-10" name="__codelineno-6-10" href="#__codelineno-6-10"></a> <span class="s2">&quot;CLIENT_CLASS&quot;</span><span class="p">:</span> <span class="s2">&quot;django_redis.client.DefaultClient&quot;</span><span class="p">,</span>
3245
- <a id="__codelineno-6-11" name="__codelineno-6-11" href="#__codelineno-6-11"></a> <span class="c1"># Uncomment the following lines to configure TLS/SSL</span>
3246
- <a id="__codelineno-6-12" name="__codelineno-6-12" href="#__codelineno-6-12"></a> <span class="c1"># &quot;CONNECTION_POOL_KWARGS&quot;: {</span>
3247
- <a id="__codelineno-6-13" name="__codelineno-6-13" href="#__codelineno-6-13"></a> <span class="c1"># &quot;ssl_cert_reqs&quot;: ssl.CERT_REQUIRED,</span>
3248
- <a id="__codelineno-6-14" name="__codelineno-6-14" href="#__codelineno-6-14"></a> <span class="c1"># &quot;ssl_ca_certs&quot;: &quot;/opt/nautobot/redis/ca.crt&quot;,</span>
3249
- <a id="__codelineno-6-15" name="__codelineno-6-15" href="#__codelineno-6-15"></a> <span class="c1"># &quot;ssl_certfile&quot;: &quot;/opt/nautobot/redis/tls.crt&quot;,</span>
3250
- <a id="__codelineno-6-16" name="__codelineno-6-16" href="#__codelineno-6-16"></a> <span class="c1"># &quot;ssl_keyfile&quot;: &quot;/opt/nautobot/redis/tls.key&quot;,</span>
3251
- <a id="__codelineno-6-17" name="__codelineno-6-17" href="#__codelineno-6-17"></a> <span class="c1"># },</span>
3252
- <a id="__codelineno-6-18" name="__codelineno-6-18" href="#__codelineno-6-18"></a> <span class="p">},</span>
3253
- <a id="__codelineno-6-19" name="__codelineno-6-19" href="#__codelineno-6-19"></a> <span class="p">}</span>
3254
- <a id="__codelineno-6-20" name="__codelineno-6-20" href="#__codelineno-6-20"></a><span class="p">}</span>
4328
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="c1"># Uncomment the following line to configure TLS/SSL</span>
4329
+ <a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="c1"># import ssl</span>
4330
+ <a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a>
4331
+ <a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="n">CACHES</span> <span class="o">=</span> <span class="p">{</span>
4332
+ <a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a> <span class="s2">&quot;default&quot;</span><span class="p">:</span> <span class="p">{</span>
4333
+ <a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a> <span class="s2">&quot;BACKEND&quot;</span><span class="p">:</span> <span class="s2">&quot;django_redis.cache.RedisCache&quot;</span><span class="p">,</span>
4334
+ <a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a> <span class="s2">&quot;LOCATION&quot;</span><span class="p">:</span> <span class="s2">&quot;redis://localhost:6379/1&quot;</span><span class="p">,</span>
4335
+ <a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a> <span class="s2">&quot;TIMEOUT&quot;</span><span class="p">:</span> <span class="mi">300</span><span class="p">,</span>
4336
+ <a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a> <span class="s2">&quot;OPTIONS&quot;</span><span class="p">:</span> <span class="p">{</span>
4337
+ <a id="__codelineno-4-10" name="__codelineno-4-10" href="#__codelineno-4-10"></a> <span class="s2">&quot;CLIENT_CLASS&quot;</span><span class="p">:</span> <span class="s2">&quot;django_redis.client.DefaultClient&quot;</span><span class="p">,</span>
4338
+ <a id="__codelineno-4-11" name="__codelineno-4-11" href="#__codelineno-4-11"></a> <span class="c1"># Uncomment the following lines to configure TLS/SSL</span>
4339
+ <a id="__codelineno-4-12" name="__codelineno-4-12" href="#__codelineno-4-12"></a> <span class="c1"># &quot;CONNECTION_POOL_KWARGS&quot;: {</span>
4340
+ <a id="__codelineno-4-13" name="__codelineno-4-13" href="#__codelineno-4-13"></a> <span class="c1"># &quot;ssl_cert_reqs&quot;: ssl.CERT_REQUIRED,</span>
4341
+ <a id="__codelineno-4-14" name="__codelineno-4-14" href="#__codelineno-4-14"></a> <span class="c1"># &quot;ssl_ca_certs&quot;: &quot;/opt/nautobot/redis/ca.crt&quot;,</span>
4342
+ <a id="__codelineno-4-15" name="__codelineno-4-15" href="#__codelineno-4-15"></a> <span class="c1"># &quot;ssl_certfile&quot;: &quot;/opt/nautobot/redis/tls.crt&quot;,</span>
4343
+ <a id="__codelineno-4-16" name="__codelineno-4-16" href="#__codelineno-4-16"></a> <span class="c1"># &quot;ssl_keyfile&quot;: &quot;/opt/nautobot/redis/tls.key&quot;,</span>
4344
+ <a id="__codelineno-4-17" name="__codelineno-4-17" href="#__codelineno-4-17"></a> <span class="c1"># },</span>
4345
+ <a id="__codelineno-4-18" name="__codelineno-4-18" href="#__codelineno-4-18"></a> <span class="p">},</span>
4346
+ <a id="__codelineno-4-19" name="__codelineno-4-19" href="#__codelineno-4-19"></a> <span class="p">}</span>
4347
+ <a id="__codelineno-4-20" name="__codelineno-4-20" href="#__codelineno-4-20"></a><span class="p">}</span>
3255
4348
  </code></pre></div>
4349
+ <p>The following environment variables may also be set for some of the above values:</p>
4350
+ <ul>
4351
+ <li><code>NAUTOBOT_CACHES_BACKEND</code></li>
4352
+ </ul>
4353
+ <div class="admonition version-changed">
4354
+ <p class="admonition-title">Changed in version 2.0.0</p>
4355
+ <p>The default value of <code>CACHES["default"]["LOCATION"]</code> has changed from <code>redis://localhost:6379/0</code> to <code>redis://localhost:6379/1</code>, as Django's native caching is now taking the role previously occupied by <code>django-cacheops</code>.</p>
4356
+ </div>
3256
4357
  <h3 id="task-queuing-with-celery">Task Queuing with Celery<a class="headerlink" href="#task-queuing-with-celery" title="Permanent link">&para;</a></h3>
3257
4358
  <div class="admonition version-added">
3258
4359
  <p class="admonition-title">Added in version 1.1.0</p>
@@ -3265,15 +4366,15 @@ setup</a>.</p>
3265
4366
  <p>This setting tells Celery and its workers how and where to store message results. This defaults to the same value as <code>CELERY_BROKER_URL</code>. In some more advanced setups it may be required for these to be separate locations, however in our configuration guides these are always the same. Please see the <a href="optional-settings.html#celery_result_backend">optional settings documentation for <code>CELERY_RESULT_BACKEND</code></a> for more information on customizing this setting.</p>
3266
4367
  <h4 id="configuring-celery-with-tls">Configuring Celery with TLS<a class="headerlink" href="#configuring-celery-with-tls" title="Permanent link">&para;</a></h4>
3267
4368
  <p>Optionally, you can configure Celery to use custom SSL certificates to connect to redis by setting the following variables:</p>
3268
- <div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="kn">import</span> <span class="nn">ssl</span>
3269
- <a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a>
3270
- <a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a><span class="n">CELERY_REDIS_BACKEND_USE_SSL</span> <span class="o">=</span> <span class="p">{</span>
3271
- <a id="__codelineno-7-4" name="__codelineno-7-4" href="#__codelineno-7-4"></a> <span class="s2">&quot;ssl_cert_reqs&quot;</span><span class="p">:</span> <span class="n">ssl</span><span class="o">.</span><span class="n">CERT_REQUIRED</span><span class="p">,</span>
3272
- <a id="__codelineno-7-5" name="__codelineno-7-5" href="#__codelineno-7-5"></a> <span class="s2">&quot;ssl_ca_certs&quot;</span><span class="p">:</span> <span class="s2">&quot;/opt/nautobot/redis/ca.crt&quot;</span><span class="p">,</span>
3273
- <a id="__codelineno-7-6" name="__codelineno-7-6" href="#__codelineno-7-6"></a> <span class="s2">&quot;ssl_certfile&quot;</span><span class="p">:</span> <span class="s2">&quot;/opt/nautobot/redis/tls.crt&quot;</span><span class="p">,</span>
3274
- <a id="__codelineno-7-7" name="__codelineno-7-7" href="#__codelineno-7-7"></a> <span class="s2">&quot;ssl_keyfile&quot;</span><span class="p">:</span> <span class="s2">&quot;/opt/nautobot/redis/tls.key&quot;</span><span class="p">,</span>
3275
- <a id="__codelineno-7-8" name="__codelineno-7-8" href="#__codelineno-7-8"></a><span class="p">}</span>
3276
- <a id="__codelineno-7-9" name="__codelineno-7-9" href="#__codelineno-7-9"></a><span class="n">CELERY_BROKER_USE_SSL</span> <span class="o">=</span> <span class="n">CELERY_REDIS_BACKEND_USE_SSL</span>
4369
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="kn">import</span> <span class="nn">ssl</span>
4370
+ <a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a>
4371
+ <a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a><span class="n">CELERY_REDIS_BACKEND_USE_SSL</span> <span class="o">=</span> <span class="p">{</span>
4372
+ <a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a> <span class="s2">&quot;ssl_cert_reqs&quot;</span><span class="p">:</span> <span class="n">ssl</span><span class="o">.</span><span class="n">CERT_REQUIRED</span><span class="p">,</span>
4373
+ <a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a> <span class="s2">&quot;ssl_ca_certs&quot;</span><span class="p">:</span> <span class="s2">&quot;/opt/nautobot/redis/ca.crt&quot;</span><span class="p">,</span>
4374
+ <a id="__codelineno-5-6" name="__codelineno-5-6" href="#__codelineno-5-6"></a> <span class="s2">&quot;ssl_certfile&quot;</span><span class="p">:</span> <span class="s2">&quot;/opt/nautobot/redis/tls.crt&quot;</span><span class="p">,</span>
4375
+ <a id="__codelineno-5-7" name="__codelineno-5-7" href="#__codelineno-5-7"></a> <span class="s2">&quot;ssl_keyfile&quot;</span><span class="p">:</span> <span class="s2">&quot;/opt/nautobot/redis/tls.key&quot;</span><span class="p">,</span>
4376
+ <a id="__codelineno-5-8" name="__codelineno-5-8" href="#__codelineno-5-8"></a><span class="p">}</span>
4377
+ <a id="__codelineno-5-9" name="__codelineno-5-9" href="#__codelineno-5-9"></a><span class="n">CELERY_BROKER_USE_SSL</span> <span class="o">=</span> <span class="n">CELERY_REDIS_BACKEND_USE_SSL</span>
3277
4378
  </code></pre></div>
3278
4379
  <p>Please see the celery <a href="https://docs.celeryq.dev/en/stable/userguide/configuration.html#std-setting-broker_use_ssl">documentation</a> for additional details.</p>
3279
4380
  <h4 id="configuring-celery-for-high-availability">Configuring Celery for High Availability<a class="headerlink" href="#configuring-celery-for-high-availability" title="Permanent link">&para;</a></h4>
@@ -3288,16 +4389,16 @@ setup</a>.</p>
3288
4389
  <p>A unique <code>SECRET_KEY</code> is generated for you automatically when you use <code>nautobot-server init</code> to create a new <code>nautobot_config.py</code>.</p>
3289
4390
  </div>
3290
4391
  <p>You may run <code>nautobot-server generate_secret_key</code> to generate a new key at any time.</p>
3291
- <div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>nautobot-server generate_secret_key
4392
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>nautobot-server generate_secret_key
3292
4393
  </code></pre></div>
3293
4394
  <p>Sample output:</p>
3294
- <div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>+$_kw69oq&amp;fbkfk6&amp;q-+ksbgzw1&amp;061ghw%420u3(wen54w(m
4395
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>+$_kw69oq&amp;fbkfk6&amp;q-+ksbgzw1&amp;061ghw%420u3(wen54w(m
3295
4396
  </code></pre></div>
3296
4397
  <p>Alternatively use the following command to generate a secret even before <code>nautobot-server</code> is runnable:</p>
3297
- <div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>LC_ALL=C tr -cd &#39;[:lower:][:digit:]!@#$%^&amp;*(\-_=+)&#39; &lt; /dev/urandom | fold -w50 | head -n1
4398
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>LC_ALL=C tr -cd &#39;[:lower:][:digit:]!@#$%^&amp;*(\-_=+)&#39; &lt; /dev/urandom | fold -w50 | head -n1
3298
4399
  </code></pre></div>
3299
4400
  <p>Example output:</p>
3300
- <div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>9.V$@Kxkc@@Kd@z&lt;a/=.J-Y;rYc79&lt;y@](9o9(L(*sS)Q+ud5P
4401
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>9.V$@Kxkc@@Kd@z&lt;a/=.J-Y;rYc79&lt;y@](9o9(L(*sS)Q+ud5P
3301
4402
  </code></pre></div>
3302
4403
  <div class="admonition warning">
3303
4404
  <p class="admonition-title">Warning</p>