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
@@ -794,27 +794,6 @@
794
794
  BRANDING_URLS
795
795
  </a>
796
796
 
797
- </li>
798
-
799
- <li class="md-nav__item">
800
- <a href="#cacheops_defaults" class="md-nav__link">
801
- CACHEOPS_DEFAULTS
802
- </a>
803
-
804
- </li>
805
-
806
- <li class="md-nav__item">
807
- <a href="#cacheops_enabled" class="md-nav__link">
808
- CACHEOPS_ENABLED
809
- </a>
810
-
811
- </li>
812
-
813
- <li class="md-nav__item">
814
- <a href="#cacheops_health_check_enabled" class="md-nav__link">
815
- CACHEOPS_HEALTH_CHECK_ENABLED
816
- </a>
817
-
818
797
  </li>
819
798
 
820
799
  <li class="md-nav__item">
@@ -857,6 +836,20 @@
857
836
  CELERY_WORKER_PROMETHEUS_PORTS
858
837
  </a>
859
838
 
839
+ </li>
840
+
841
+ <li class="md-nav__item">
842
+ <a href="#celery_worker_redirect_stdouts" class="md-nav__link">
843
+ CELERY_WORKER_REDIRECT_STDOUTS
844
+ </a>
845
+
846
+ </li>
847
+
848
+ <li class="md-nav__item">
849
+ <a href="#celery_worker_redirect_stdouts_level" class="md-nav__link">
850
+ CELERY_WORKER_REDIRECT_STDOUTS_LEVEL
851
+ </a>
852
+
860
853
  </li>
861
854
 
862
855
  <li class="md-nav__item">
@@ -1523,19 +1516,1064 @@
1523
1516
 
1524
1517
 
1525
1518
 
1526
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_6" >
1519
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_6" >
1520
+
1521
+
1522
+
1523
+ <label class="md-nav__link" for="__nav_2_6" id="__nav_2_6_label" tabindex="0">
1524
+ User Guides
1525
+ <span class="md-nav__icon md-icon"></span>
1526
+ </label>
1527
+
1528
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_6_label" aria-expanded="false">
1529
+ <label class="md-nav__title" for="__nav_2_6">
1530
+ <span class="md-nav__icon md-icon"></span>
1531
+ User Guides
1532
+ </label>
1533
+ <ul class="md-nav__list" data-md-scrollfix>
1534
+
1535
+
1536
+
1537
+
1538
+
1539
+
1540
+ <li class="md-nav__item">
1541
+ <a href="../user-guides/getting-started/creating-devices.html" class="md-nav__link">
1542
+ Creating Devices
1543
+ </a>
1544
+ </li>
1545
+
1546
+
1547
+
1548
+
1549
+
1550
+
1551
+
1552
+
1553
+
1554
+ <li class="md-nav__item">
1555
+ <a href="../user-guides/custom-fields.html" class="md-nav__link">
1556
+ Custom Fields
1557
+ </a>
1558
+ </li>
1559
+
1560
+
1561
+
1562
+
1563
+
1564
+
1565
+
1566
+
1567
+
1568
+ <li class="md-nav__item">
1569
+ <a href="../user-guides/getting-started/index.html" class="md-nav__link">
1570
+ Getting Started In the Web UI
1571
+ </a>
1572
+ </li>
1573
+
1574
+
1575
+
1576
+
1577
+
1578
+
1579
+
1580
+
1581
+
1582
+ <li class="md-nav__item">
1583
+ <a href="../user-guides/git-data-source.html" class="md-nav__link">
1584
+ Git as a Data Source
1585
+ </a>
1586
+ </li>
1587
+
1588
+
1589
+
1590
+
1591
+
1592
+
1593
+
1594
+
1595
+
1596
+ <li class="md-nav__item">
1597
+ <a href="../user-guides/graphql.html" class="md-nav__link">
1598
+ GraphQL
1599
+ </a>
1600
+ </li>
1601
+
1602
+
1603
+
1604
+
1605
+
1606
+
1607
+
1608
+
1609
+
1610
+ <li class="md-nav__item">
1611
+ <a href="../user-guides/getting-started/interfaces.html" class="md-nav__link">
1612
+ Interfaces
1613
+ </a>
1614
+ </li>
1615
+
1616
+
1617
+
1618
+
1619
+
1620
+
1621
+
1622
+
1623
+
1624
+ <li class="md-nav__item">
1625
+ <a href="../user-guides/getting-started/ipam.html" class="md-nav__link">
1626
+ IP Address Management
1627
+ </a>
1628
+ </li>
1629
+
1630
+
1631
+
1632
+
1633
+
1634
+
1635
+
1636
+
1637
+
1638
+ <li class="md-nav__item">
1639
+ <a href="../user-guides/getting-started/platforms.html" class="md-nav__link">
1640
+ Platforms
1641
+ </a>
1642
+ </li>
1643
+
1644
+
1645
+
1646
+
1647
+
1648
+
1649
+
1650
+
1651
+
1652
+ <li class="md-nav__item">
1653
+ <a href="../user-guides/getting-started/regions.html" class="md-nav__link">
1654
+ Regions
1655
+ </a>
1656
+ </li>
1657
+
1658
+
1659
+
1660
+
1661
+
1662
+
1663
+
1664
+
1665
+
1666
+ <li class="md-nav__item">
1667
+ <a href="../user-guides/getting-started/tenants.html" class="md-nav__link">
1668
+ Tenants
1669
+ </a>
1670
+ </li>
1671
+
1672
+
1673
+
1674
+
1675
+
1676
+
1677
+
1678
+
1679
+
1680
+ <li class="md-nav__item">
1681
+ <a href="../user-guides/getting-started/search-bar.html" class="md-nav__link">
1682
+ The Search Bar
1683
+ </a>
1684
+ </li>
1685
+
1686
+
1687
+
1688
+
1689
+
1690
+
1691
+
1692
+
1693
+
1694
+ <li class="md-nav__item">
1695
+ <a href="../user-guides/git-data-source.html" class="md-nav__link">
1696
+ Git as a Data Source
1697
+ </a>
1698
+ </li>
1699
+
1700
+
1701
+
1702
+
1703
+
1704
+
1705
+
1706
+
1707
+
1708
+ <li class="md-nav__item">
1709
+ <a href="../user-guides/graphql.html" class="md-nav__link">
1710
+ GraphQL
1711
+ </a>
1712
+ </li>
1713
+
1714
+
1715
+
1716
+
1717
+
1718
+
1719
+
1720
+
1721
+
1722
+ <li class="md-nav__item">
1723
+ <a href="../user-guides/relationships.html" class="md-nav__link">
1724
+ Relationships
1725
+ </a>
1726
+ </li>
1727
+
1728
+
1729
+
1730
+
1731
+
1732
+
1733
+
1734
+
1735
+
1736
+ <li class="md-nav__item">
1737
+ <a href="../user-guides/s3-django-storage.html" class="md-nav__link">
1738
+ Django Storages with S3
1739
+ </a>
1740
+ </li>
1741
+
1742
+
1743
+
1744
+
1745
+
1746
+
1747
+
1748
+
1749
+
1750
+ <li class="md-nav__item">
1751
+ <a href="../user-guides/getting-started/vlans-and-vlan-groups.html" class="md-nav__link">
1752
+ VLANS and VLAN Groups
1753
+ </a>
1754
+ </li>
1755
+
1756
+
1757
+
1758
+
1759
+ </ul>
1760
+ </nav>
1761
+ </li>
1762
+
1763
+
1764
+
1765
+
1766
+
1767
+
1768
+
1769
+
1770
+
1771
+
1772
+ <li class="md-nav__item md-nav__item--nested">
1773
+
1774
+
1775
+
1776
+
1777
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_7" >
1778
+
1779
+
1780
+
1781
+ <label class="md-nav__link" for="__nav_2_7" id="__nav_2_7_label" tabindex="0">
1782
+ Core Functionality
1783
+ <span class="md-nav__icon md-icon"></span>
1784
+ </label>
1785
+
1786
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_7_label" aria-expanded="false">
1787
+ <label class="md-nav__title" for="__nav_2_7">
1788
+ <span class="md-nav__icon md-icon"></span>
1789
+ Core Functionality
1790
+ </label>
1791
+ <ul class="md-nav__list" data-md-scrollfix>
1792
+
1793
+
1794
+
1795
+
1796
+
1797
+
1798
+ <li class="md-nav__item">
1799
+ <a href="../core-functionality/circuits.html" class="md-nav__link">
1800
+ Circuits
1801
+ </a>
1802
+ </li>
1803
+
1804
+
1805
+
1806
+
1807
+
1808
+
1809
+
1810
+
1811
+
1812
+ <li class="md-nav__item">
1813
+ <a href="../core-functionality/devices.html" class="md-nav__link">
1814
+ Devices and Cabling
1815
+ </a>
1816
+ </li>
1817
+
1818
+
1819
+
1820
+
1821
+
1822
+
1823
+
1824
+
1825
+
1826
+ <li class="md-nav__item">
1827
+ <a href="../core-functionality/device-types.html" class="md-nav__link">
1828
+ Device Types
1829
+ </a>
1830
+ </li>
1831
+
1832
+
1833
+
1834
+
1835
+
1836
+
1837
+
1838
+
1839
+
1840
+ <li class="md-nav__item">
1841
+ <a href="../core-functionality/ipam.html" class="md-nav__link">
1842
+ IP Address Management
1843
+ </a>
1844
+ </li>
1845
+
1846
+
1847
+
1848
+
1849
+
1850
+
1851
+
1852
+
1853
+
1854
+ <li class="md-nav__item">
1855
+ <a href="../core-functionality/power.html" class="md-nav__link">
1856
+ Power Tracking
1857
+ </a>
1858
+ </li>
1859
+
1860
+
1861
+
1862
+
1863
+
1864
+
1865
+
1866
+
1867
+
1868
+ <li class="md-nav__item">
1869
+ <a href="../core-functionality/secrets.html" class="md-nav__link">
1870
+ Secrets
1871
+ </a>
1872
+ </li>
1873
+
1874
+
1875
+
1876
+
1877
+
1878
+
1879
+
1880
+
1881
+
1882
+ <li class="md-nav__item">
1883
+ <a href="../core-functionality/services.html" class="md-nav__link">
1884
+ Service Mapping
1885
+ </a>
1886
+ </li>
1887
+
1888
+
1889
+
1890
+
1891
+
1892
+
1893
+
1894
+
1895
+
1896
+ <li class="md-nav__item">
1897
+ <a href="../core-functionality/sites-and-racks.html" class="md-nav__link">
1898
+ Sites, Locations, and Racks
1899
+ </a>
1900
+ </li>
1901
+
1902
+
1903
+
1904
+
1905
+
1906
+
1907
+
1908
+
1909
+
1910
+ <li class="md-nav__item">
1911
+ <a href="../core-functionality/tenancy.html" class="md-nav__link">
1912
+ Tenancy
1913
+ </a>
1914
+ </li>
1915
+
1916
+
1917
+
1918
+
1919
+
1920
+
1921
+
1922
+
1923
+
1924
+ <li class="md-nav__item">
1925
+ <a href="../core-functionality/virtualization.html" class="md-nav__link">
1926
+ Virtualization
1927
+ </a>
1928
+ </li>
1929
+
1930
+
1931
+
1932
+
1933
+
1934
+
1935
+
1936
+
1937
+
1938
+ <li class="md-nav__item">
1939
+ <a href="../core-functionality/vlans.html" class="md-nav__link">
1940
+ VLAN Management
1941
+ </a>
1942
+ </li>
1943
+
1944
+
1945
+
1946
+
1947
+ </ul>
1948
+ </nav>
1949
+ </li>
1950
+
1951
+
1952
+
1953
+
1954
+
1955
+
1956
+
1957
+
1958
+
1959
+
1960
+ <li class="md-nav__item md-nav__item--nested">
1961
+
1962
+
1963
+
1964
+
1965
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8" >
1966
+
1967
+
1968
+
1969
+ <label class="md-nav__link" for="__nav_2_8" id="__nav_2_8_label" tabindex="0">
1970
+ Model Details
1971
+ <span class="md-nav__icon md-icon"></span>
1972
+ </label>
1973
+
1974
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_8_label" aria-expanded="false">
1975
+ <label class="md-nav__title" for="__nav_2_8">
1976
+ <span class="md-nav__icon md-icon"></span>
1977
+ Model Details
1978
+ </label>
1979
+ <ul class="md-nav__list" data-md-scrollfix>
1980
+
1981
+
1982
+
1983
+
1984
+
1985
+
1986
+
1987
+ <li class="md-nav__item md-nav__item--nested">
1988
+
1989
+
1990
+
1991
+
1992
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_1" >
1993
+
1994
+
1995
+
1996
+ <label class="md-nav__link" for="__nav_2_8_1" id="__nav_2_8_1_label" tabindex="0">
1997
+ Circuits
1998
+ <span class="md-nav__icon md-icon"></span>
1999
+ </label>
2000
+
2001
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_1_label" aria-expanded="false">
2002
+ <label class="md-nav__title" for="__nav_2_8_1">
2003
+ <span class="md-nav__icon md-icon"></span>
2004
+ Circuits
2005
+ </label>
2006
+ <ul class="md-nav__list" data-md-scrollfix>
2007
+
2008
+
2009
+
2010
+
2011
+
2012
+
2013
+ <li class="md-nav__item">
2014
+ <a href="../models/circuits/circuit.html" class="md-nav__link">
2015
+ Circuit
2016
+ </a>
2017
+ </li>
2018
+
2019
+
2020
+
2021
+
2022
+
2023
+
2024
+
2025
+
2026
+
2027
+ <li class="md-nav__item">
2028
+ <a href="../models/circuits/circuittermination.html" class="md-nav__link">
2029
+ Circuit Termination
2030
+ </a>
2031
+ </li>
2032
+
2033
+
2034
+
2035
+
2036
+
2037
+
2038
+
2039
+
2040
+
2041
+ <li class="md-nav__item">
2042
+ <a href="../models/circuits/circuittype.html" class="md-nav__link">
2043
+ Circuit Type
2044
+ </a>
2045
+ </li>
2046
+
2047
+
2048
+
2049
+
2050
+
2051
+
2052
+
2053
+
2054
+
2055
+ <li class="md-nav__item">
2056
+ <a href="../models/circuits/provider.html" class="md-nav__link">
2057
+ Circuit Provider
2058
+ </a>
2059
+ </li>
2060
+
2061
+
2062
+
2063
+
2064
+
2065
+
2066
+
2067
+
2068
+
2069
+ <li class="md-nav__item">
2070
+ <a href="../models/circuits/providernetwork.html" class="md-nav__link">
2071
+ Circuit Provider Network
2072
+ </a>
2073
+ </li>
2074
+
2075
+
2076
+
2077
+
2078
+ </ul>
2079
+ </nav>
2080
+ </li>
2081
+
2082
+
2083
+
2084
+
2085
+
2086
+
2087
+
2088
+
2089
+
2090
+
2091
+ <li class="md-nav__item md-nav__item--nested">
2092
+
2093
+
2094
+
2095
+
2096
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_2" >
2097
+
2098
+
2099
+
2100
+ <label class="md-nav__link" for="__nav_2_8_2" id="__nav_2_8_2_label" tabindex="0">
2101
+ DCIM
2102
+ <span class="md-nav__icon md-icon"></span>
2103
+ </label>
2104
+
2105
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_2_label" aria-expanded="false">
2106
+ <label class="md-nav__title" for="__nav_2_8_2">
2107
+ <span class="md-nav__icon md-icon"></span>
2108
+ DCIM
2109
+ </label>
2110
+ <ul class="md-nav__list" data-md-scrollfix>
2111
+
2112
+
2113
+
2114
+
2115
+
2116
+
2117
+ <li class="md-nav__item">
2118
+ <a href="../models/dcim/cable.html" class="md-nav__link">
2119
+ Cable
2120
+ </a>
2121
+ </li>
2122
+
2123
+
2124
+
2125
+
2126
+
2127
+
2128
+
2129
+
2130
+
2131
+ <li class="md-nav__item">
2132
+ <a href="../models/dcim/consoleport.html" class="md-nav__link">
2133
+ Console Port
2134
+ </a>
2135
+ </li>
2136
+
2137
+
2138
+
2139
+
2140
+
2141
+
2142
+
2143
+
2144
+
2145
+ <li class="md-nav__item">
2146
+ <a href="../models/dcim/consoleporttemplate.html" class="md-nav__link">
2147
+ Console Port Template
2148
+ </a>
2149
+ </li>
2150
+
2151
+
2152
+
2153
+
2154
+
2155
+
2156
+
2157
+
2158
+
2159
+ <li class="md-nav__item">
2160
+ <a href="../models/dcim/consoleserverport.html" class="md-nav__link">
2161
+ Console Server Port
2162
+ </a>
2163
+ </li>
2164
+
2165
+
2166
+
2167
+
2168
+
2169
+
2170
+
2171
+
2172
+
2173
+ <li class="md-nav__item">
2174
+ <a href="../models/dcim/consoleserverporttemplate.html" class="md-nav__link">
2175
+ Console Server Port Template
2176
+ </a>
2177
+ </li>
2178
+
2179
+
2180
+
2181
+
2182
+
2183
+
2184
+
2185
+
2186
+
2187
+ <li class="md-nav__item">
2188
+ <a href="../models/dcim/device.html" class="md-nav__link">
2189
+ Device
2190
+ </a>
2191
+ </li>
2192
+
2193
+
2194
+
2195
+
2196
+
2197
+
2198
+
2199
+
2200
+
2201
+ <li class="md-nav__item">
2202
+ <a href="../models/dcim/devicebay.html" class="md-nav__link">
2203
+ Device Bay
2204
+ </a>
2205
+ </li>
2206
+
2207
+
2208
+
2209
+
2210
+
2211
+
2212
+
2213
+
2214
+
2215
+ <li class="md-nav__item">
2216
+ <a href="../models/dcim/devicebaytemplate.html" class="md-nav__link">
2217
+ Device Bay Template
2218
+ </a>
2219
+ </li>
2220
+
2221
+
2222
+
2223
+
2224
+
2225
+
2226
+
2227
+
2228
+
2229
+ <li class="md-nav__item">
2230
+ <a href="../models/dcim/deviceredundancygroup.html" class="md-nav__link">
2231
+ Device Redundancy Group
2232
+ </a>
2233
+ </li>
2234
+
2235
+
2236
+
2237
+
2238
+
2239
+
2240
+
2241
+
2242
+
2243
+ <li class="md-nav__item">
2244
+ <a href="../models/dcim/devicetype.html" class="md-nav__link">
2245
+ Device Type
2246
+ </a>
2247
+ </li>
2248
+
2249
+
2250
+
2251
+
2252
+
2253
+
2254
+
2255
+
2256
+
2257
+ <li class="md-nav__item">
2258
+ <a href="../models/dcim/frontport.html" class="md-nav__link">
2259
+ Front Port
2260
+ </a>
2261
+ </li>
2262
+
2263
+
2264
+
2265
+
2266
+
2267
+
2268
+
2269
+
2270
+
2271
+ <li class="md-nav__item">
2272
+ <a href="../models/dcim/frontporttemplate.html" class="md-nav__link">
2273
+ Front Port Template
2274
+ </a>
2275
+ </li>
2276
+
2277
+
2278
+
2279
+
2280
+
2281
+
2282
+
2283
+
2284
+
2285
+ <li class="md-nav__item">
2286
+ <a href="../models/dcim/interface.html" class="md-nav__link">
2287
+ Interface
2288
+ </a>
2289
+ </li>
2290
+
2291
+
2292
+
2293
+
2294
+
2295
+
2296
+
2297
+
2298
+
2299
+ <li class="md-nav__item">
2300
+ <a href="../models/dcim/interfacetemplate.html" class="md-nav__link">
2301
+ Interface Template
2302
+ </a>
2303
+ </li>
2304
+
2305
+
2306
+
2307
+
2308
+
2309
+
2310
+
2311
+
2312
+
2313
+ <li class="md-nav__item">
2314
+ <a href="../models/dcim/inventoryitem.html" class="md-nav__link">
2315
+ Inventory Item
2316
+ </a>
2317
+ </li>
2318
+
2319
+
2320
+
2321
+
2322
+
2323
+
2324
+
2325
+
2326
+
2327
+ <li class="md-nav__item">
2328
+ <a href="../models/dcim/location.html" class="md-nav__link">
2329
+ Location
2330
+ </a>
2331
+ </li>
2332
+
2333
+
2334
+
2335
+
2336
+
2337
+
2338
+
2339
+
2340
+
2341
+ <li class="md-nav__item">
2342
+ <a href="../models/dcim/locationtype.html" class="md-nav__link">
2343
+ Location Type
2344
+ </a>
2345
+ </li>
2346
+
2347
+
2348
+
2349
+
2350
+
2351
+
2352
+
2353
+
2354
+
2355
+ <li class="md-nav__item">
2356
+ <a href="../models/dcim/manufacturer.html" class="md-nav__link">
2357
+ Manufacturer
2358
+ </a>
2359
+ </li>
2360
+
2361
+
2362
+
2363
+
2364
+
2365
+
2366
+
2367
+
2368
+
2369
+ <li class="md-nav__item">
2370
+ <a href="../models/dcim/platform.html" class="md-nav__link">
2371
+ Platform
2372
+ </a>
2373
+ </li>
2374
+
2375
+
2376
+
2377
+
2378
+
2379
+
2380
+
2381
+
2382
+
2383
+ <li class="md-nav__item">
2384
+ <a href="../models/dcim/powerfeed.html" class="md-nav__link">
2385
+ Power Feed
2386
+ </a>
2387
+ </li>
2388
+
2389
+
2390
+
2391
+
2392
+
2393
+
2394
+
2395
+
2396
+
2397
+ <li class="md-nav__item">
2398
+ <a href="../models/dcim/poweroutlet.html" class="md-nav__link">
2399
+ Power Outlet
2400
+ </a>
2401
+ </li>
2402
+
2403
+
2404
+
2405
+
2406
+
2407
+
2408
+
2409
+
2410
+
2411
+ <li class="md-nav__item">
2412
+ <a href="../models/dcim/poweroutlettemplate.html" class="md-nav__link">
2413
+ Power Outlet Template
2414
+ </a>
2415
+ </li>
2416
+
2417
+
2418
+
2419
+
2420
+
2421
+
2422
+
2423
+
2424
+
2425
+ <li class="md-nav__item">
2426
+ <a href="../models/dcim/powerpanel.html" class="md-nav__link">
2427
+ Power Panel
2428
+ </a>
2429
+ </li>
2430
+
2431
+
2432
+
2433
+
2434
+
2435
+
2436
+
2437
+
2438
+
2439
+ <li class="md-nav__item">
2440
+ <a href="../models/dcim/powerport.html" class="md-nav__link">
2441
+ Power Port
2442
+ </a>
2443
+ </li>
2444
+
2445
+
2446
+
2447
+
2448
+
2449
+
2450
+
2451
+
2452
+
2453
+ <li class="md-nav__item">
2454
+ <a href="../models/dcim/powerporttemplate.html" class="md-nav__link">
2455
+ Power Port Template
2456
+ </a>
2457
+ </li>
2458
+
2459
+
2460
+
2461
+
2462
+
2463
+
2464
+
2465
+
2466
+
2467
+ <li class="md-nav__item">
2468
+ <a href="../models/dcim/rack.html" class="md-nav__link">
2469
+ Rack
2470
+ </a>
2471
+ </li>
2472
+
2473
+
2474
+
2475
+
2476
+
2477
+
2478
+
2479
+
2480
+
2481
+ <li class="md-nav__item">
2482
+ <a href="../models/dcim/rackgroup.html" class="md-nav__link">
2483
+ Rack Group
2484
+ </a>
2485
+ </li>
2486
+
2487
+
2488
+
2489
+
2490
+
2491
+
2492
+
2493
+
2494
+
2495
+ <li class="md-nav__item">
2496
+ <a href="../models/dcim/rackreservation.html" class="md-nav__link">
2497
+ Rack Reservation
2498
+ </a>
2499
+ </li>
2500
+
2501
+
2502
+
2503
+
2504
+
2505
+
2506
+
2507
+
2508
+
2509
+ <li class="md-nav__item">
2510
+ <a href="../models/dcim/rearport.html" class="md-nav__link">
2511
+ Rear Port
2512
+ </a>
2513
+ </li>
2514
+
2515
+
2516
+
2517
+
2518
+
2519
+
2520
+
2521
+
2522
+
2523
+ <li class="md-nav__item">
2524
+ <a href="../models/dcim/rearporttemplate.html" class="md-nav__link">
2525
+ Rear Port Template
2526
+ </a>
2527
+ </li>
2528
+
2529
+
2530
+
2531
+
2532
+
2533
+
2534
+
2535
+
2536
+
2537
+ <li class="md-nav__item">
2538
+ <a href="../models/dcim/virtualchassis.html" class="md-nav__link">
2539
+ Virtual Chassis
2540
+ </a>
2541
+ </li>
2542
+
2543
+
2544
+
2545
+
2546
+ </ul>
2547
+ </nav>
2548
+ </li>
2549
+
2550
+
2551
+
2552
+
2553
+
2554
+
2555
+
2556
+
2557
+
2558
+
2559
+ <li class="md-nav__item md-nav__item--nested">
2560
+
2561
+
2562
+
2563
+
2564
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_3" >
1527
2565
 
1528
2566
 
1529
2567
 
1530
- <label class="md-nav__link" for="__nav_2_6" id="__nav_2_6_label" tabindex="0">
1531
- User Guides
2568
+ <label class="md-nav__link" for="__nav_2_8_3" id="__nav_2_8_3_label" tabindex="0">
2569
+ Extras
1532
2570
  <span class="md-nav__icon md-icon"></span>
1533
2571
  </label>
1534
2572
 
1535
- <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_6_label" aria-expanded="false">
1536
- <label class="md-nav__title" for="__nav_2_6">
2573
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_3_label" aria-expanded="false">
2574
+ <label class="md-nav__title" for="__nav_2_8_3">
1537
2575
  <span class="md-nav__icon md-icon"></span>
1538
- User Guides
2576
+ Extras
1539
2577
  </label>
1540
2578
  <ul class="md-nav__list" data-md-scrollfix>
1541
2579
 
@@ -1545,8 +2583,8 @@
1545
2583
 
1546
2584
 
1547
2585
  <li class="md-nav__item">
1548
- <a href="../user-guides/getting-started/creating-devices.html" class="md-nav__link">
1549
- Creating Devices
2586
+ <a href="../models/extras/configcontext.html" class="md-nav__link">
2587
+ Config Context
1550
2588
  </a>
1551
2589
  </li>
1552
2590
 
@@ -1559,8 +2597,8 @@
1559
2597
 
1560
2598
 
1561
2599
  <li class="md-nav__item">
1562
- <a href="../user-guides/custom-fields.html" class="md-nav__link">
1563
- Custom Fields
2600
+ <a href="../models/extras/configcontextschema.html" class="md-nav__link">
2601
+ Config Context Schema
1564
2602
  </a>
1565
2603
  </li>
1566
2604
 
@@ -1573,8 +2611,8 @@
1573
2611
 
1574
2612
 
1575
2613
  <li class="md-nav__item">
1576
- <a href="../user-guides/getting-started/index.html" class="md-nav__link">
1577
- Getting Started In the Web UI
2614
+ <a href="../models/extras/graphqlquery.html" class="md-nav__link">
2615
+ GraphQL Query
1578
2616
  </a>
1579
2617
  </li>
1580
2618
 
@@ -1587,8 +2625,8 @@
1587
2625
 
1588
2626
 
1589
2627
  <li class="md-nav__item">
1590
- <a href="../user-guides/git-data-source.html" class="md-nav__link">
1591
- Git as a Data Source
2628
+ <a href="../models/extras/imageattachment.html" class="md-nav__link">
2629
+ Image Attachment
1592
2630
  </a>
1593
2631
  </li>
1594
2632
 
@@ -1601,8 +2639,8 @@
1601
2639
 
1602
2640
 
1603
2641
  <li class="md-nav__item">
1604
- <a href="../user-guides/graphql.html" class="md-nav__link">
1605
- GraphQL
2642
+ <a href="../models/extras/job.html" class="md-nav__link">
2643
+ Job
1606
2644
  </a>
1607
2645
  </li>
1608
2646
 
@@ -1615,8 +2653,8 @@
1615
2653
 
1616
2654
 
1617
2655
  <li class="md-nav__item">
1618
- <a href="../user-guides/getting-started/interfaces.html" class="md-nav__link">
1619
- Interfaces
2656
+ <a href="../models/extras/joblogentry.html" class="md-nav__link">
2657
+ Job Log Entry
1620
2658
  </a>
1621
2659
  </li>
1622
2660
 
@@ -1629,8 +2667,8 @@
1629
2667
 
1630
2668
 
1631
2669
  <li class="md-nav__item">
1632
- <a href="../user-guides/getting-started/ipam.html" class="md-nav__link">
1633
- IP Address Management
2670
+ <a href="../models/extras/jobresult.html" class="md-nav__link">
2671
+ Job Result
1634
2672
  </a>
1635
2673
  </li>
1636
2674
 
@@ -1643,8 +2681,8 @@
1643
2681
 
1644
2682
 
1645
2683
  <li class="md-nav__item">
1646
- <a href="../user-guides/getting-started/platforms.html" class="md-nav__link">
1647
- Platforms
2684
+ <a href="../models/extras/role.html" class="md-nav__link">
2685
+ Role
1648
2686
  </a>
1649
2687
  </li>
1650
2688
 
@@ -1657,8 +2695,8 @@
1657
2695
 
1658
2696
 
1659
2697
  <li class="md-nav__item">
1660
- <a href="../user-guides/getting-started/regions.html" class="md-nav__link">
1661
- Regions
2698
+ <a href="../models/extras/secret.html" class="md-nav__link">
2699
+ Secret
1662
2700
  </a>
1663
2701
  </li>
1664
2702
 
@@ -1671,22 +2709,56 @@
1671
2709
 
1672
2710
 
1673
2711
  <li class="md-nav__item">
1674
- <a href="../user-guides/getting-started/tenants.html" class="md-nav__link">
1675
- Tenants
2712
+ <a href="../models/extras/secretsgroup.html" class="md-nav__link">
2713
+ Secrets group
1676
2714
  </a>
1677
2715
  </li>
1678
2716
 
1679
2717
 
1680
2718
 
1681
2719
 
2720
+ </ul>
2721
+ </nav>
2722
+ </li>
2723
+
2724
+
2725
+
2726
+
2727
+
2728
+
2729
+
2730
+
2731
+
2732
+
2733
+ <li class="md-nav__item md-nav__item--nested">
2734
+
2735
+
2736
+
2737
+
2738
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_4" >
2739
+
2740
+
2741
+
2742
+ <label class="md-nav__link" for="__nav_2_8_4" id="__nav_2_8_4_label" tabindex="0">
2743
+ IPAM
2744
+ <span class="md-nav__icon md-icon"></span>
2745
+ </label>
2746
+
2747
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_4_label" aria-expanded="false">
2748
+ <label class="md-nav__title" for="__nav_2_8_4">
2749
+ <span class="md-nav__icon md-icon"></span>
2750
+ IPAM
2751
+ </label>
2752
+ <ul class="md-nav__list" data-md-scrollfix>
2753
+
1682
2754
 
1683
2755
 
1684
2756
 
1685
2757
 
1686
2758
 
1687
2759
  <li class="md-nav__item">
1688
- <a href="../user-guides/getting-started/search-bar.html" class="md-nav__link">
1689
- The Search Bar
2760
+ <a href="../models/ipam/ipaddress.html" class="md-nav__link">
2761
+ IP Address
1690
2762
  </a>
1691
2763
  </li>
1692
2764
 
@@ -1699,8 +2771,8 @@
1699
2771
 
1700
2772
 
1701
2773
  <li class="md-nav__item">
1702
- <a href="../user-guides/git-data-source.html" class="md-nav__link">
1703
- Git as a Data Source
2774
+ <a href="../models/ipam/prefix.html" class="md-nav__link">
2775
+ Prefix
1704
2776
  </a>
1705
2777
  </li>
1706
2778
 
@@ -1713,8 +2785,8 @@
1713
2785
 
1714
2786
 
1715
2787
  <li class="md-nav__item">
1716
- <a href="../user-guides/graphql.html" class="md-nav__link">
1717
- GraphQL
2788
+ <a href="../models/ipam/rir.html" class="md-nav__link">
2789
+ Rir
1718
2790
  </a>
1719
2791
  </li>
1720
2792
 
@@ -1727,8 +2799,8 @@
1727
2799
 
1728
2800
 
1729
2801
  <li class="md-nav__item">
1730
- <a href="../user-guides/relationships.html" class="md-nav__link">
1731
- Relationships
2802
+ <a href="../models/ipam/routetarget.html" class="md-nav__link">
2803
+ Route Target
1732
2804
  </a>
1733
2805
  </li>
1734
2806
 
@@ -1741,8 +2813,8 @@
1741
2813
 
1742
2814
 
1743
2815
  <li class="md-nav__item">
1744
- <a href="../user-guides/s3-django-storage.html" class="md-nav__link">
1745
- Django Storages with S3
2816
+ <a href="../models/ipam/service.html" class="md-nav__link">
2817
+ Service
1746
2818
  </a>
1747
2819
  </li>
1748
2820
 
@@ -1755,8 +2827,36 @@
1755
2827
 
1756
2828
 
1757
2829
  <li class="md-nav__item">
1758
- <a href="../user-guides/getting-started/vlans-and-vlan-groups.html" class="md-nav__link">
1759
- VLANS and VLAN Groups
2830
+ <a href="../models/ipam/vlan.html" class="md-nav__link">
2831
+ VLAN
2832
+ </a>
2833
+ </li>
2834
+
2835
+
2836
+
2837
+
2838
+
2839
+
2840
+
2841
+
2842
+
2843
+ <li class="md-nav__item">
2844
+ <a href="../models/ipam/vlangroup.html" class="md-nav__link">
2845
+ VLAN Group
2846
+ </a>
2847
+ </li>
2848
+
2849
+
2850
+
2851
+
2852
+
2853
+
2854
+
2855
+
2856
+
2857
+ <li class="md-nav__item">
2858
+ <a href="../models/ipam/vrf.html" class="md-nav__link">
2859
+ VRF
1760
2860
  </a>
1761
2861
  </li>
1762
2862
 
@@ -1781,19 +2881,19 @@
1781
2881
 
1782
2882
 
1783
2883
 
1784
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_7" >
2884
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_5" >
1785
2885
 
1786
2886
 
1787
2887
 
1788
- <label class="md-nav__link" for="__nav_2_7" id="__nav_2_7_label" tabindex="0">
1789
- Core Functionality
2888
+ <label class="md-nav__link" for="__nav_2_8_5" id="__nav_2_8_5_label" tabindex="0">
2889
+ Tenancy
1790
2890
  <span class="md-nav__icon md-icon"></span>
1791
2891
  </label>
1792
2892
 
1793
- <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_7_label" aria-expanded="false">
1794
- <label class="md-nav__title" for="__nav_2_7">
2893
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_5_label" aria-expanded="false">
2894
+ <label class="md-nav__title" for="__nav_2_8_5">
1795
2895
  <span class="md-nav__icon md-icon"></span>
1796
- Core Functionality
2896
+ Tenancy
1797
2897
  </label>
1798
2898
  <ul class="md-nav__list" data-md-scrollfix>
1799
2899
 
@@ -1803,8 +2903,8 @@
1803
2903
 
1804
2904
 
1805
2905
  <li class="md-nav__item">
1806
- <a href="../core-functionality/circuits.html" class="md-nav__link">
1807
- Circuits
2906
+ <a href="../models/tenancy/tenant.html" class="md-nav__link">
2907
+ Tenant
1808
2908
  </a>
1809
2909
  </li>
1810
2910
 
@@ -1817,27 +2917,47 @@
1817
2917
 
1818
2918
 
1819
2919
  <li class="md-nav__item">
1820
- <a href="../core-functionality/devices.html" class="md-nav__link">
1821
- Devices and Cabling
2920
+ <a href="../models/tenancy/tenantgroup.html" class="md-nav__link">
2921
+ Tenant Group
1822
2922
  </a>
1823
2923
  </li>
1824
2924
 
1825
2925
 
1826
2926
 
1827
2927
 
2928
+ </ul>
2929
+ </nav>
2930
+ </li>
2931
+
2932
+
2933
+
2934
+
1828
2935
 
1829
2936
 
1830
2937
 
1831
2938
 
1832
2939
 
1833
- <li class="md-nav__item">
1834
- <a href="../core-functionality/device-types.html" class="md-nav__link">
1835
- Device Types
1836
- </a>
1837
- </li>
1838
-
1839
-
1840
-
2940
+
2941
+ <li class="md-nav__item md-nav__item--nested">
2942
+
2943
+
2944
+
2945
+
2946
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_6" >
2947
+
2948
+
2949
+
2950
+ <label class="md-nav__link" for="__nav_2_8_6" id="__nav_2_8_6_label" tabindex="0">
2951
+ Users
2952
+ <span class="md-nav__icon md-icon"></span>
2953
+ </label>
2954
+
2955
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_6_label" aria-expanded="false">
2956
+ <label class="md-nav__title" for="__nav_2_8_6">
2957
+ <span class="md-nav__icon md-icon"></span>
2958
+ Users
2959
+ </label>
2960
+ <ul class="md-nav__list" data-md-scrollfix>
1841
2961
 
1842
2962
 
1843
2963
 
@@ -1845,8 +2965,8 @@
1845
2965
 
1846
2966
 
1847
2967
  <li class="md-nav__item">
1848
- <a href="../core-functionality/ipam.html" class="md-nav__link">
1849
- IP Address Management
2968
+ <a href="../models/users/objectpermission.html" class="md-nav__link">
2969
+ Object Permission
1850
2970
  </a>
1851
2971
  </li>
1852
2972
 
@@ -1859,27 +2979,47 @@
1859
2979
 
1860
2980
 
1861
2981
  <li class="md-nav__item">
1862
- <a href="../core-functionality/power.html" class="md-nav__link">
1863
- Power Tracking
2982
+ <a href="../models/users/token.html" class="md-nav__link">
2983
+ Token
1864
2984
  </a>
1865
2985
  </li>
1866
2986
 
1867
2987
 
1868
2988
 
1869
2989
 
2990
+ </ul>
2991
+ </nav>
2992
+ </li>
2993
+
2994
+
2995
+
2996
+
1870
2997
 
1871
2998
 
1872
2999
 
1873
3000
 
1874
3001
 
1875
- <li class="md-nav__item">
1876
- <a href="../core-functionality/secrets.html" class="md-nav__link">
1877
- Secrets
1878
- </a>
1879
- </li>
1880
-
1881
-
1882
-
3002
+
3003
+ <li class="md-nav__item md-nav__item--nested">
3004
+
3005
+
3006
+
3007
+
3008
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_7" >
3009
+
3010
+
3011
+
3012
+ <label class="md-nav__link" for="__nav_2_8_7" id="__nav_2_8_7_label" tabindex="0">
3013
+ Virtualization
3014
+ <span class="md-nav__icon md-icon"></span>
3015
+ </label>
3016
+
3017
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_7_label" aria-expanded="false">
3018
+ <label class="md-nav__title" for="__nav_2_8_7">
3019
+ <span class="md-nav__icon md-icon"></span>
3020
+ Virtualization
3021
+ </label>
3022
+ <ul class="md-nav__list" data-md-scrollfix>
1883
3023
 
1884
3024
 
1885
3025
 
@@ -1887,8 +3027,8 @@
1887
3027
 
1888
3028
 
1889
3029
  <li class="md-nav__item">
1890
- <a href="../core-functionality/services.html" class="md-nav__link">
1891
- Service Mapping
3030
+ <a href="../models/virtualization/cluster.html" class="md-nav__link">
3031
+ Cluster
1892
3032
  </a>
1893
3033
  </li>
1894
3034
 
@@ -1901,8 +3041,8 @@
1901
3041
 
1902
3042
 
1903
3043
  <li class="md-nav__item">
1904
- <a href="../core-functionality/sites-and-racks.html" class="md-nav__link">
1905
- Sites, Locations, and Racks
3044
+ <a href="../models/virtualization/clustergroup.html" class="md-nav__link">
3045
+ Cluster Group
1906
3046
  </a>
1907
3047
  </li>
1908
3048
 
@@ -1915,8 +3055,8 @@
1915
3055
 
1916
3056
 
1917
3057
  <li class="md-nav__item">
1918
- <a href="../core-functionality/tenancy.html" class="md-nav__link">
1919
- Tenancy
3058
+ <a href="../models/virtualization/clustertype.html" class="md-nav__link">
3059
+ Cluster Type
1920
3060
  </a>
1921
3061
  </li>
1922
3062
 
@@ -1929,8 +3069,8 @@
1929
3069
 
1930
3070
 
1931
3071
  <li class="md-nav__item">
1932
- <a href="../core-functionality/virtualization.html" class="md-nav__link">
1933
- Virtualization
3072
+ <a href="../models/virtualization/virtualmachine.html" class="md-nav__link">
3073
+ Virtual Machine
1934
3074
  </a>
1935
3075
  </li>
1936
3076
 
@@ -1943,8 +3083,8 @@
1943
3083
 
1944
3084
 
1945
3085
  <li class="md-nav__item">
1946
- <a href="../core-functionality/vlans.html" class="md-nav__link">
1947
- VLAN Management
3086
+ <a href="../models/virtualization/vminterface.html" class="md-nav__link">
3087
+ VM Interface
1948
3088
  </a>
1949
3089
  </li>
1950
3090
 
@@ -1958,6 +3098,13 @@
1958
3098
 
1959
3099
 
1960
3100
 
3101
+ </ul>
3102
+ </nav>
3103
+ </li>
3104
+
3105
+
3106
+
3107
+
1961
3108
 
1962
3109
 
1963
3110
 
@@ -1969,17 +3116,17 @@
1969
3116
 
1970
3117
 
1971
3118
 
1972
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8" >
3119
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_9" >
1973
3120
 
1974
3121
 
1975
3122
 
1976
- <label class="md-nav__link" for="__nav_2_8" id="__nav_2_8_label" tabindex="0">
3123
+ <label class="md-nav__link" for="__nav_2_9" id="__nav_2_9_label" tabindex="0">
1977
3124
  Additional Features
1978
3125
  <span class="md-nav__icon md-icon"></span>
1979
3126
  </label>
1980
3127
 
1981
- <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_8_label" aria-expanded="false">
1982
- <label class="md-nav__title" for="__nav_2_8">
3128
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_9_label" aria-expanded="false">
3129
+ <label class="md-nav__title" for="__nav_2_9">
1983
3130
  <span class="md-nav__icon md-icon"></span>
1984
3131
  Additional Features
1985
3132
  </label>
@@ -2311,17 +3458,17 @@
2311
3458
 
2312
3459
 
2313
3460
 
2314
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_9" >
3461
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_10" >
2315
3462
 
2316
3463
 
2317
3464
 
2318
- <label class="md-nav__link" for="__nav_2_9" id="__nav_2_9_label" tabindex="0">
3465
+ <label class="md-nav__link" for="__nav_2_10" id="__nav_2_10_label" tabindex="0">
2319
3466
  REST API
2320
3467
  <span class="md-nav__icon md-icon"></span>
2321
3468
  </label>
2322
3469
 
2323
- <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_9_label" aria-expanded="false">
2324
- <label class="md-nav__title" for="__nav_2_9">
3470
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_10_label" aria-expanded="false">
3471
+ <label class="md-nav__title" for="__nav_2_10">
2325
3472
  <span class="md-nav__icon md-icon"></span>
2326
3473
  REST API
2327
3474
  </label>
@@ -2369,6 +3516,20 @@
2369
3516
 
2370
3517
 
2371
3518
 
3519
+
3520
+
3521
+
3522
+
3523
+
3524
+ <li class="md-nav__item">
3525
+ <a href="../rest-api/ui-related-endpoints.html" class="md-nav__link">
3526
+ UI Endpoints
3527
+ </a>
3528
+ </li>
3529
+
3530
+
3531
+
3532
+
2372
3533
  </ul>
2373
3534
  </nav>
2374
3535
  </li>
@@ -2387,17 +3548,17 @@
2387
3548
 
2388
3549
 
2389
3550
 
2390
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_10" >
3551
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_11" >
2391
3552
 
2392
3553
 
2393
3554
 
2394
- <label class="md-nav__link" for="__nav_2_10" id="__nav_2_10_label" tabindex="0">
3555
+ <label class="md-nav__link" for="__nav_2_11" id="__nav_2_11_label" tabindex="0">
2395
3556
  GraphQL API
2396
3557
  <span class="md-nav__icon md-icon"></span>
2397
3558
  </label>
2398
3559
 
2399
- <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_10_label" aria-expanded="false">
2400
- <label class="md-nav__title" for="__nav_2_10">
3560
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_11_label" aria-expanded="false">
3561
+ <label class="md-nav__title" for="__nav_2_11">
2401
3562
  <span class="md-nav__icon md-icon"></span>
2402
3563
  GraphQL API
2403
3564
  </label>
@@ -3447,27 +4608,6 @@
3447
4608
  BRANDING_URLS
3448
4609
  </a>
3449
4610
 
3450
- </li>
3451
-
3452
- <li class="md-nav__item">
3453
- <a href="#cacheops_defaults" class="md-nav__link">
3454
- CACHEOPS_DEFAULTS
3455
- </a>
3456
-
3457
- </li>
3458
-
3459
- <li class="md-nav__item">
3460
- <a href="#cacheops_enabled" class="md-nav__link">
3461
- CACHEOPS_ENABLED
3462
- </a>
3463
-
3464
- </li>
3465
-
3466
- <li class="md-nav__item">
3467
- <a href="#cacheops_health_check_enabled" class="md-nav__link">
3468
- CACHEOPS_HEALTH_CHECK_ENABLED
3469
- </a>
3470
-
3471
4611
  </li>
3472
4612
 
3473
4613
  <li class="md-nav__item">
@@ -3510,6 +4650,20 @@
3510
4650
  CELERY_WORKER_PROMETHEUS_PORTS
3511
4651
  </a>
3512
4652
 
4653
+ </li>
4654
+
4655
+ <li class="md-nav__item">
4656
+ <a href="#celery_worker_redirect_stdouts" class="md-nav__link">
4657
+ CELERY_WORKER_REDIRECT_STDOUTS
4658
+ </a>
4659
+
4660
+ </li>
4661
+
4662
+ <li class="md-nav__item">
4663
+ <a href="#celery_worker_redirect_stdouts_level" class="md-nav__link">
4664
+ CELERY_WORKER_REDIRECT_STDOUTS_LEVEL
4665
+ </a>
4666
+
3513
4667
  </li>
3514
4668
 
3515
4669
  <li class="md-nav__item">
@@ -4099,29 +5253,6 @@ can specify additional apps with ease. Similarly, additional <code>MIDDLEWARE</
4099
5253
  </ul>
4100
5254
  <p>If a custom URL is not provided for any of the links, the default link within the Nautobot community is used.</p>
4101
5255
  <hr />
4102
- <h2 id="cacheops_defaults">CACHEOPS_DEFAULTS<a class="headerlink" href="#cacheops_defaults" title="Permanent link">&para;</a></h2>
4103
- <p>Default: <code>{'timeout': 900}</code> (15 minutes, in seconds)</p>
4104
- <p>Environment Variable: <code>NAUTOBOT_CACHEOPS_TIMEOUT</code> (timeout value only)</p>
4105
- <div class="admonition warning">
4106
- <p class="admonition-title">Warning</p>
4107
- <p>It is an error to set the timeout value to <code>0</code>. If you wish to disable caching, please use <a href="#cacheops_enabled"><code>CACHEOPS_ENABLED</code></a>.</p>
4108
- </div>
4109
- <p>Various defaults for caching, the most important of which being the cache timeout. The <code>timeout</code> is the number of seconds that cache entries will be retained before expiring.</p>
4110
- <hr />
4111
- <h2 id="cacheops_enabled">CACHEOPS_ENABLED<a class="headerlink" href="#cacheops_enabled" title="Permanent link">&para;</a></h2>
4112
- <p>Default: <code>False</code></p>
4113
- <p>Environment Variable: <code>NAUTOBOT_CACHEOPS_ENABLED</code></p>
4114
- <p>A boolean that turns on/off caching.</p>
4115
- <div class="admonition check">
4116
- <p class="admonition-title">Changed in 1.5.0</p>
4117
- <p>Cachopes is disabled by default and will be removed entirely in a future release.</p>
4118
- </div>
4119
- <p>If set to <code>False</code>, all caching is bypassed and Nautobot operates as if there is no cache.</p>
4120
- <hr />
4121
- <h2 id="cacheops_health_check_enabled">CACHEOPS_HEALTH_CHECK_ENABLED<a class="headerlink" href="#cacheops_health_check_enabled" title="Permanent link">&para;</a></h2>
4122
- <p>Default: <code>False</code></p>
4123
- <p>A boolean that turns on/off health checks for the Redis server connection utilized by Cacheops. Most deployments share a Redis server with <code>django-redis</code> as such we only need to check the health of Redis one time. If you are using a separate Redis deployment for Cacheops, please consider enabling this to monitor that Redis deployment. Keep in mind the more health checks enabled the longer the health checks will take and timeouts might need to be increased.</p>
4124
- <hr />
4125
5256
  <h2 id="celery_broker_transport_options">CELERY_BROKER_TRANSPORT_OPTIONS<a class="headerlink" href="#celery_broker_transport_options" title="Permanent link">&para;</a></h2>
4126
5257
  <p>Default: <code>{}</code></p>
4127
5258
  <p>A dict of additional options passed to the Celery broker transport. This is only required when <a href="../additional-features/caching.html#celery-sentinel-configuration">configuring Celery to utilize Redis Sentinel</a>.</p>
@@ -4162,6 +5293,22 @@ highest amount of workers you are running on a single machine (comma-separated,
4162
5293
  the <code>target_limit</code> parameter to the Prometheus <code>scrape_config</code> to ensure you are not getting duplicate metrics in that
4163
5294
  case. Set this to an empty list to disable it.</p>
4164
5295
  <hr />
5296
+ <h2 id="celery_worker_redirect_stdouts">CELERY_WORKER_REDIRECT_STDOUTS<a class="headerlink" href="#celery_worker_redirect_stdouts" title="Permanent link">&para;</a></h2>
5297
+ <div class="admonition version-added">
5298
+ <p class="admonition-title">Added in version 2.0.0</p>
5299
+ </div>
5300
+ <p>Environment Variable: <code>NAUTOBOT_CELERY_WORKER_REDIRECT_STDOUTS</code></p>
5301
+ <p>Default: <code>True</code></p>
5302
+ <p>If enabled stdout and stderr of running jobs will be redirected to the task logger.</p>
5303
+ <hr />
5304
+ <h2 id="celery_worker_redirect_stdouts_level">CELERY_WORKER_REDIRECT_STDOUTS_LEVEL<a class="headerlink" href="#celery_worker_redirect_stdouts_level" title="Permanent link">&para;</a></h2>
5305
+ <div class="admonition version-added">
5306
+ <p class="admonition-title">Added in version 2.0.0</p>
5307
+ </div>
5308
+ <p>Environment Variable: <code>NAUTOBOT_CELERY_WORKER_REDIRECT_STDOUTS_LEVEL</code></p>
5309
+ <p>Default: <code>WARNING</code></p>
5310
+ <p>The log level of log messages generated by redirected job stdout and stderr. Can be one of <code>DEBUG</code>, <code>INFO</code>, <code>WARNING</code>, <code>ERROR</code>, or <code>CRITICAL</code>.</p>
5311
+ <hr />
4165
5312
  <h2 id="changelog_retention">CHANGELOG_RETENTION<a class="headerlink" href="#changelog_retention" title="Permanent link">&para;</a></h2>
4166
5313
  <p>Default: <code>90</code></p>
4167
5314
  <p>The number of days to retain logged changes (object creations, updates, and deletions). Set this to <code>0</code> to retain changes in the database indefinitely.</p>
@@ -4516,7 +5663,7 @@ case. Set this to an empty list to disable it.</p>
4516
5663
  <p>Default:</p>
4517
5664
  <div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="p">[</span>
4518
5665
  <a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a> <span class="p">(</span><span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;(https?://)?\S+\s*@&quot;</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">IGNORECASE</span><span class="p">),</span> <span class="sa">r</span><span class="s2">&quot;\1</span><span class="si">{replacement}</span><span class="s2">@&quot;</span><span class="p">),</span>
4519
- <a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a> <span class="p">(</span><span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;(username|password|passwd|pwd)(\s*i?s?\s*:?\s*)?\S+&quot;</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">IGNORECASE</span><span class="p">),</span> <span class="sa">r</span><span class="s2">&quot;\1\2</span><span class="si">{replacement}</span><span class="s2">&quot;</span><span class="p">),</span>
5666
+ <a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a> <span class="p">(</span><span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;(username|password|passwd|pwd)((?:\s+is.?|:)?\s+)\S+&quot;</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">IGNORECASE</span><span class="p">),</span> <span class="sa">r</span><span class="s2">&quot;\1\2</span><span class="si">{replacement}</span><span class="s2">&quot;</span><span class="p">),</span>
4520
5667
  <a id="__codelineno-14-4" name="__codelineno-14-4" href="#__codelineno-14-4"></a><span class="p">]</span>
4521
5668
  </code></pre></div>
4522
5669
  <p>List of (regular expression, replacement pattern) tuples used by the <code>nautobot.core.utils.logging.sanitize()</code> function. As of Nautobot 1.3.4 this function is used primarily for sanitization of Job log entries, but it may be used in other scopes in the future.</p>
@@ -4750,6 +5897,10 @@ addresses (and <a href="#debug"><code>DEBUG</code></a> is true).</p>
4750
5897
  <p class="admonition-title">Changed in version 1.4.10</p>
4751
5898
  <p>While running unit or integration tests via <code>nautobot-server test ...</code>, LOGGING will be set to <code>{}</code> instead of the above defaults, as verbose logging to the console is typically not desirable while running tests.</p>
4752
5899
  </div>
5900
+ <div class="admonition version-changed">
5901
+ <p class="admonition-title">Changed in version 2.0.0</p>
5902
+ <p>Unit/integration test logging was modified to send all nautobot logs to a <code>NullHandler</code> to prevent logs falling through to the last resort logger and being output to stderr.</p>
5903
+ </div>
4753
5904
  <p>This translates to:</p>
4754
5905
  <ul>
4755
5906
  <li>all messages from Django and from Nautobot of INFO severity or higher will be logged to the console.</li>
@@ -4772,10 +5923,10 @@ addresses (and <a href="#debug"><code>DEBUG</code></a> is true).</p>
4772
5923
  <li><code>django.*</code> - Generic Django operations (HTTP requests/responses, etc.)</li>
4773
5924
  <li><code>nautobot.&lt;app&gt;.&lt;module&gt;</code> - Generic form for model- or module-specific log messages</li>
4774
5925
  <li><code>nautobot.auth.*</code> - Authentication events</li>
4775
- <li><code>nautobot.jobs.*</code> - Job execution (<code>* = JobClassName</code>)</li>
4776
- <li><code>nautobot.graphql.*</code> - <a href="../additional-features/graphql.html">GraphQL</a> initialization and operation.</li>
4777
- <li><code>nautobot.plugins.*</code> - Plugin loading and activity</li>
4778
- <li><code>nautobot.views.*</code> - Views which handle business logic for the web UI</li>
5926
+ <li><code>nautobot.extras.jobs.*</code> - Job execution (<code>* = JobClassName</code>)</li>
5927
+ <li><code>nautobot.core.graphql.*</code> - <a href="../additional-features/graphql.html">GraphQL</a> initialization and operation.</li>
5928
+ <li><code>nautobot.extras.plugins.*</code> - Plugin loading and activity</li>
5929
+ <li><code>nautobot.core.views.generic.*</code> - Generic views which handle business logic for the web UI</li>
4779
5930
  </ul>
4780
5931
  <hr />
4781
5932
  <h3 id="media_root">MEDIA_ROOT<a class="headerlink" href="#media_root" title="Permanent link">&para;</a></h3>