nautobot 2.3.15b1__py3-none-any.whl → 2.4.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of nautobot might be problematic. Click here for more details.

Files changed (785) hide show
  1. nautobot/__init__.py +15 -0
  2. nautobot/apps/__init__.py +1 -1
  3. nautobot/apps/api.py +8 -10
  4. nautobot/apps/change_logging.py +2 -2
  5. nautobot/apps/choices.py +4 -4
  6. nautobot/apps/config.py +32 -3
  7. nautobot/apps/events.py +19 -0
  8. nautobot/apps/exceptions.py +0 -2
  9. nautobot/apps/factory.py +2 -2
  10. nautobot/apps/filters.py +1 -1
  11. nautobot/apps/forms.py +20 -20
  12. nautobot/apps/graphql.py +2 -2
  13. nautobot/apps/jobs.py +8 -8
  14. nautobot/apps/models.py +19 -19
  15. nautobot/apps/tables.py +1 -1
  16. nautobot/apps/testing.py +10 -10
  17. nautobot/apps/ui.py +44 -9
  18. nautobot/apps/utils.py +7 -15
  19. nautobot/apps/views.py +8 -6
  20. nautobot/circuits/api/serializers.py +1 -0
  21. nautobot/circuits/api/views.py +4 -8
  22. nautobot/circuits/navigation.py +0 -57
  23. nautobot/circuits/templates/circuits/circuit_create.html +1 -7
  24. nautobot/circuits/templates/circuits/circuit_retrieve.html +0 -71
  25. nautobot/circuits/templates/circuits/inc/circuit_termination.html +6 -64
  26. nautobot/circuits/templates/circuits/inc/circuit_termination_cable_fragment.html +40 -0
  27. nautobot/circuits/templates/circuits/inc/circuit_termination_header_extra_content.html +26 -0
  28. nautobot/circuits/templates/circuits/provider_retrieve.html +0 -76
  29. nautobot/circuits/tests/integration/test_relationships.py +33 -24
  30. nautobot/circuits/tests/test_filters.py +4 -8
  31. nautobot/circuits/views.py +143 -26
  32. nautobot/cloud/api/views.py +6 -10
  33. nautobot/cloud/factory.py +4 -1
  34. nautobot/cloud/models.py +1 -1
  35. nautobot/cloud/tests/test_filters.py +5 -4
  36. nautobot/cloud/views.py +0 -16
  37. nautobot/core/api/constants.py +11 -0
  38. nautobot/core/api/fields.py +5 -5
  39. nautobot/core/api/filter_backends.py +3 -9
  40. nautobot/core/api/metadata.py +28 -256
  41. nautobot/core/api/pagination.py +3 -2
  42. nautobot/core/api/renderers.py +3 -0
  43. nautobot/core/api/schema.py +13 -2
  44. nautobot/core/api/serializers.py +54 -268
  45. nautobot/core/api/urls.py +3 -4
  46. nautobot/core/api/utils.py +0 -62
  47. nautobot/core/api/views.py +102 -159
  48. nautobot/core/apps/__init__.py +22 -575
  49. nautobot/core/celery/__init__.py +13 -0
  50. nautobot/core/celery/schedulers.py +48 -3
  51. nautobot/core/choices.py +2 -2
  52. nautobot/core/cli/__init__.py +8 -0
  53. nautobot/core/constants.py +7 -0
  54. nautobot/core/events/__init__.py +116 -0
  55. nautobot/core/events/base.py +27 -0
  56. nautobot/core/events/exceptions.py +10 -0
  57. nautobot/core/events/redis_broker.py +48 -0
  58. nautobot/core/events/syslog_broker.py +19 -0
  59. nautobot/core/exceptions.py +0 -6
  60. nautobot/core/filters.py +19 -16
  61. nautobot/core/forms/__init__.py +19 -19
  62. nautobot/core/forms/fields.py +62 -14
  63. nautobot/core/forms/forms.py +33 -2
  64. nautobot/core/forms/utils.py +2 -1
  65. nautobot/core/graphql/schema.py +3 -1
  66. nautobot/core/graphql/types.py +1 -1
  67. nautobot/core/jobs/__init__.py +28 -7
  68. nautobot/core/jobs/bulk_actions.py +248 -0
  69. nautobot/core/jobs/cleanup.py +2 -2
  70. nautobot/core/jobs/groups.py +1 -1
  71. nautobot/core/management/commands/generate_test_data.py +21 -0
  72. nautobot/core/management/commands/validate_models.py +1 -1
  73. nautobot/core/middleware.py +16 -0
  74. nautobot/core/models/__init__.py +1 -1
  75. nautobot/core/models/fields.py +11 -7
  76. nautobot/core/models/query_functions.py +2 -2
  77. nautobot/core/models/tree_queries.py +2 -2
  78. nautobot/core/settings.py +71 -4
  79. nautobot/core/settings.yaml +107 -0
  80. nautobot/core/tables.py +15 -51
  81. nautobot/core/tasks.py +1 -1
  82. nautobot/core/templates/about.html +67 -0
  83. nautobot/core/templates/components/button/default.html +7 -0
  84. nautobot/core/templates/components/button/dropdown.html +20 -0
  85. nautobot/core/templates/components/layout/one_over_two.html +19 -0
  86. nautobot/core/templates/components/layout/two_over_one.html +19 -0
  87. nautobot/core/templates/components/panel/body_content_data_table.html +27 -0
  88. nautobot/core/templates/components/panel/body_content_objects_table.html +4 -0
  89. nautobot/core/templates/components/panel/body_content_tags.html +6 -0
  90. nautobot/core/templates/components/panel/body_content_text.html +12 -0
  91. nautobot/core/templates/components/panel/body_wrapper_generic.html +3 -0
  92. nautobot/core/templates/components/panel/body_wrapper_key_value_table.html +3 -0
  93. nautobot/core/templates/components/panel/body_wrapper_table.html +3 -0
  94. nautobot/core/templates/components/panel/footer_contacts_table.html +20 -0
  95. nautobot/core/templates/components/panel/footer_content_table.html +14 -0
  96. nautobot/core/templates/components/panel/grouping_toggle.html +14 -0
  97. nautobot/core/templates/components/panel/header_extra_content_table.html +3 -0
  98. nautobot/core/templates/components/panel/panel.html +16 -0
  99. nautobot/core/templates/components/panel/stats_panel_body.html +8 -0
  100. nautobot/core/templates/components/tab/content_wrapper.html +3 -0
  101. nautobot/core/templates/components/tab/label_wrapper.html +5 -0
  102. nautobot/core/templates/components/tab/label_wrapper_distinct_view.html +3 -0
  103. nautobot/core/templates/generic/object_retrieve.html +28 -17
  104. nautobot/core/templates/inc/computed_fields/panel_data.html +4 -7
  105. nautobot/core/templates/inc/custom_fields/panel.html +2 -2
  106. nautobot/core/templates/inc/custom_fields/panel_data.html +4 -7
  107. nautobot/core/templates/inc/footer.html +1 -0
  108. nautobot/core/templates/inc/media.html +3 -0
  109. nautobot/core/templates/inc/nav_menu.html +2 -1
  110. nautobot/core/templates/inc/relationships_panel.html +1 -1
  111. nautobot/core/templates/inc/tenancy_form_panel.html +9 -0
  112. nautobot/core/templates/inc/tenant_table_row.html +11 -0
  113. nautobot/core/templates/nautobot_config.py.j2 +16 -0
  114. nautobot/core/templates/panel_table.html +12 -0
  115. nautobot/core/templates/utilities/render_jinja2.html +117 -0
  116. nautobot/core/templates/utilities/templatetags/tag.html +1 -1
  117. nautobot/core/templates/utilities/theme_preview.html +7 -0
  118. nautobot/core/templatetags/helpers.py +104 -6
  119. nautobot/core/templatetags/ui_framework.py +40 -0
  120. nautobot/core/testing/__init__.py +8 -8
  121. nautobot/core/testing/api.py +187 -137
  122. nautobot/core/testing/context.py +18 -0
  123. nautobot/core/testing/filters.py +44 -34
  124. nautobot/core/testing/forms.py +2 -0
  125. nautobot/core/testing/views.py +68 -146
  126. nautobot/core/tests/integration/test_app_home.py +0 -1
  127. nautobot/core/tests/integration/test_app_navbar.py +0 -1
  128. nautobot/core/tests/integration/test_filters.py +0 -2
  129. nautobot/core/tests/integration/test_home.py +0 -1
  130. nautobot/core/tests/integration/test_navbar.py +0 -1
  131. nautobot/core/tests/integration/test_view_authentication.py +2 -1
  132. nautobot/core/tests/nautobot_config.py +198 -0
  133. nautobot/core/tests/runner.py +3 -3
  134. nautobot/core/tests/test_api.py +154 -176
  135. nautobot/core/tests/test_events.py +214 -0
  136. nautobot/core/tests/test_forms.py +1 -0
  137. nautobot/core/tests/test_jinja_filters.py +1 -0
  138. nautobot/core/tests/test_jobs.py +387 -14
  139. nautobot/core/tests/test_navigations.py +7 -241
  140. nautobot/core/tests/test_settings_schema.py +7 -0
  141. nautobot/core/tests/test_tables.py +100 -0
  142. nautobot/core/tests/test_templatetags_helpers.py +16 -0
  143. nautobot/core/tests/test_ui.py +150 -0
  144. nautobot/core/tests/test_utils.py +55 -18
  145. nautobot/core/tests/test_views.py +153 -5
  146. nautobot/core/ui/__init__.py +0 -0
  147. nautobot/core/ui/base.py +11 -0
  148. nautobot/core/ui/choices.py +44 -0
  149. nautobot/core/ui/homepage.py +167 -0
  150. nautobot/core/ui/nav.py +280 -0
  151. nautobot/core/ui/object_detail.py +1855 -0
  152. nautobot/core/ui/utils.py +36 -0
  153. nautobot/core/urls.py +15 -0
  154. nautobot/core/utils/config.py +30 -3
  155. nautobot/core/utils/lookup.py +12 -2
  156. nautobot/core/utils/querysets.py +64 -0
  157. nautobot/core/utils/requests.py +24 -9
  158. nautobot/core/views/__init__.py +48 -1
  159. nautobot/core/views/generic.py +82 -177
  160. nautobot/core/views/mixins.py +98 -38
  161. nautobot/core/views/paginator.py +8 -5
  162. nautobot/core/views/renderers.py +9 -9
  163. nautobot/core/views/utils.py +11 -0
  164. nautobot/core/wsgi.py +3 -3
  165. nautobot/dcim/api/serializers.py +82 -189
  166. nautobot/dcim/api/urls.py +5 -0
  167. nautobot/dcim/api/views.py +57 -110
  168. nautobot/dcim/apps.py +1 -0
  169. nautobot/dcim/choices.py +28 -0
  170. nautobot/dcim/factory.py +58 -0
  171. nautobot/dcim/filters/__init__.py +204 -2
  172. nautobot/dcim/forms.py +221 -9
  173. nautobot/dcim/graphql/types.py +2 -2
  174. nautobot/dcim/migrations/0063_interfacevdcassignment_virtualdevicecontext_and_more.py +165 -0
  175. nautobot/dcim/migrations/0064_virtualdevicecontext_status_data_migration.py +28 -0
  176. nautobot/dcim/migrations/0065_controller_capabilities_and_more.py +29 -0
  177. nautobot/dcim/migrations/0066_controllermanageddevicegroup_radio_profiles_and_more.py +33 -0
  178. nautobot/dcim/migrations/0067_controllermanageddevicegroup_tenant.py +25 -0
  179. nautobot/dcim/models/__init__.py +5 -1
  180. nautobot/dcim/models/device_component_templates.py +2 -2
  181. nautobot/dcim/models/device_components.py +22 -20
  182. nautobot/dcim/models/devices.py +181 -3
  183. nautobot/dcim/models/locations.py +3 -3
  184. nautobot/dcim/models/power.py +6 -5
  185. nautobot/dcim/models/racks.py +6 -6
  186. nautobot/dcim/navigation.py +25 -224
  187. nautobot/dcim/signals.py +44 -0
  188. nautobot/dcim/tables/__init__.py +5 -3
  189. nautobot/dcim/tables/devices.py +103 -7
  190. nautobot/dcim/tables/devicetypes.py +2 -2
  191. nautobot/dcim/tables/racks.py +1 -1
  192. nautobot/dcim/templates/dcim/controller/base.html +10 -0
  193. nautobot/dcim/templates/dcim/controller_create.html +2 -7
  194. nautobot/dcim/templates/dcim/controller_retrieve.html +6 -10
  195. nautobot/dcim/templates/dcim/controller_wirelessnetworks.html +25 -0
  196. nautobot/dcim/templates/dcim/controllermanageddevicegroup_create.html +68 -0
  197. nautobot/dcim/templates/dcim/controllermanageddevicegroup_retrieve.html +51 -0
  198. nautobot/dcim/templates/dcim/device/base.html +6 -42
  199. nautobot/dcim/templates/dcim/device/wireless.html +73 -0
  200. nautobot/dcim/templates/dcim/device.html +4 -10
  201. nautobot/dcim/templates/dcim/device_edit.html +36 -37
  202. nautobot/dcim/templates/dcim/interface.html +1 -0
  203. nautobot/dcim/templates/dcim/interface_edit.html +1 -0
  204. nautobot/dcim/templates/dcim/location.html +1 -9
  205. nautobot/dcim/templates/dcim/location_edit.html +1 -7
  206. nautobot/dcim/templates/dcim/locationtype.html +0 -107
  207. nautobot/dcim/templates/dcim/locationtype_retrieve.html +8 -0
  208. nautobot/dcim/templates/dcim/rack.html +1 -9
  209. nautobot/dcim/templates/dcim/rack_edit.html +1 -7
  210. nautobot/dcim/templates/dcim/rackreservation.html +1 -9
  211. nautobot/dcim/templates/dcim/virtualdevicecontext_retrieve.html +68 -0
  212. nautobot/dcim/templates/dcim/virtualdevicecontext_update.html +28 -0
  213. nautobot/dcim/tests/integration/test_controller.py +62 -0
  214. nautobot/dcim/tests/integration/test_controller_managed_device_group.py +71 -0
  215. nautobot/dcim/tests/test_api.py +188 -64
  216. nautobot/dcim/tests/test_filters.py +172 -76
  217. nautobot/dcim/tests/test_graphql.py +52 -0
  218. nautobot/dcim/tests/test_jobs.py +118 -0
  219. nautobot/dcim/tests/test_models.py +159 -5
  220. nautobot/dcim/tests/test_signals.py +1 -0
  221. nautobot/dcim/tests/test_views.py +118 -88
  222. nautobot/dcim/urls.py +72 -27
  223. nautobot/dcim/utils.py +2 -2
  224. nautobot/dcim/views.py +357 -62
  225. nautobot/extras/api/customfields.py +2 -2
  226. nautobot/extras/api/serializers.py +111 -87
  227. nautobot/extras/api/urls.py +4 -0
  228. nautobot/extras/api/views.py +93 -35
  229. nautobot/extras/choices.py +13 -0
  230. nautobot/extras/constants.py +2 -1
  231. nautobot/extras/context_managers.py +23 -6
  232. nautobot/extras/datasources/git.py +4 -1
  233. nautobot/extras/factory.py +27 -0
  234. nautobot/extras/filters/__init__.py +66 -5
  235. nautobot/extras/forms/base.py +2 -2
  236. nautobot/extras/forms/forms.py +262 -59
  237. nautobot/extras/forms/mixins.py +3 -3
  238. nautobot/extras/graphql/types.py +25 -1
  239. nautobot/extras/health_checks.py +1 -2
  240. nautobot/extras/jobs.py +114 -20
  241. nautobot/extras/management/__init__.py +1 -0
  242. nautobot/extras/management/commands/runjob.py +7 -79
  243. nautobot/extras/management/commands/runjob_with_job_result.py +46 -0
  244. nautobot/extras/management/utils.py +87 -0
  245. nautobot/extras/managers.py +3 -1
  246. nautobot/extras/migrations/0018_joblog_data_migration.py +7 -9
  247. nautobot/extras/migrations/0117_create_job_queue_model.py +129 -0
  248. nautobot/extras/migrations/0118_task_queue_to_job_queue_migration.py +78 -0
  249. nautobot/extras/migrations/0119_remove_task_queues_from_job_and_queue_from_scheduled_job.py +28 -0
  250. nautobot/extras/migrations/0120_job_is_singleton_job_is_singleton_override.py +22 -0
  251. nautobot/extras/migrations/0121_alter_team_contacts.py +17 -0
  252. nautobot/extras/models/__init__.py +5 -1
  253. nautobot/extras/models/change_logging.py +7 -3
  254. nautobot/extras/models/contacts.py +1 -1
  255. nautobot/extras/models/customfields.py +12 -11
  256. nautobot/extras/models/groups.py +11 -9
  257. nautobot/extras/models/jobs.py +237 -37
  258. nautobot/extras/models/models.py +2 -2
  259. nautobot/extras/models/relationships.py +69 -1
  260. nautobot/extras/models/secrets.py +5 -0
  261. nautobot/extras/navigation.py +20 -262
  262. nautobot/extras/plugins/__init__.py +54 -19
  263. nautobot/extras/plugins/marketplace_manifest.yml +455 -0
  264. nautobot/extras/plugins/tables.py +16 -14
  265. nautobot/extras/plugins/urls.py +1 -0
  266. nautobot/extras/plugins/views.py +104 -61
  267. nautobot/extras/registry.py +1 -1
  268. nautobot/extras/secrets/__init__.py +2 -2
  269. nautobot/extras/signals.py +39 -1
  270. nautobot/extras/tables.py +42 -6
  271. nautobot/extras/templates/extras/dynamicgroup.html +1 -9
  272. nautobot/extras/templates/extras/externalintegration_retrieve.html +0 -47
  273. nautobot/extras/templates/extras/inc/tags_panel.html +1 -5
  274. nautobot/extras/templates/extras/job_bulk_edit.html +2 -1
  275. nautobot/extras/templates/extras/job_detail.html +52 -6
  276. nautobot/extras/templates/extras/job_edit.html +6 -2
  277. nautobot/extras/templates/extras/job_list.html +2 -7
  278. nautobot/extras/templates/extras/jobqueue_retrieve.html +36 -0
  279. nautobot/extras/templates/extras/marketplace.html +296 -0
  280. nautobot/extras/templates/extras/plugin_detail.html +32 -15
  281. nautobot/extras/templates/extras/plugins_list.html +35 -1
  282. nautobot/extras/templates/extras/plugins_tiles.html +90 -0
  283. nautobot/extras/templates/extras/role_retrieve.html +16 -0
  284. nautobot/extras/templates/extras/secret.html +0 -65
  285. nautobot/extras/templates/extras/secret_check.js +16 -0
  286. nautobot/extras/templates/extras/secret_create.html +114 -0
  287. nautobot/extras/templates/extras/secret_edit.html +1 -114
  288. nautobot/extras/templates/extras/secretsgroup_edit.html +1 -1
  289. nautobot/extras/templates/extras/templatetags/plugin_object_detail_tabs.html +2 -0
  290. nautobot/extras/templatetags/job_buttons.py +5 -4
  291. nautobot/extras/templatetags/plugins.py +69 -6
  292. nautobot/extras/test_jobs/api_test_job.py +1 -1
  293. nautobot/extras/test_jobs/atomic_transaction.py +2 -2
  294. nautobot/extras/test_jobs/dry_run.py +1 -1
  295. nautobot/extras/test_jobs/fail.py +5 -5
  296. nautobot/extras/test_jobs/file_output.py +1 -1
  297. nautobot/extras/test_jobs/file_upload_fail.py +1 -1
  298. nautobot/extras/test_jobs/file_upload_pass.py +1 -1
  299. nautobot/extras/test_jobs/ipaddress_vars.py +3 -1
  300. nautobot/extras/test_jobs/jobs_module/jobs_submodule/jobs.py +1 -1
  301. nautobot/extras/test_jobs/location_with_custom_field.py +1 -1
  302. nautobot/extras/test_jobs/log_redaction.py +1 -1
  303. nautobot/extras/test_jobs/log_skip_db_logging.py +1 -1
  304. nautobot/extras/test_jobs/modify_db.py +1 -1
  305. nautobot/extras/test_jobs/object_var_optional.py +1 -1
  306. nautobot/extras/test_jobs/object_var_required.py +1 -1
  307. nautobot/extras/test_jobs/object_vars.py +1 -1
  308. nautobot/extras/test_jobs/pass.py +3 -3
  309. nautobot/extras/test_jobs/profiling.py +1 -1
  310. nautobot/extras/test_jobs/relative_import.py +3 -3
  311. nautobot/extras/test_jobs/singleton.py +16 -0
  312. nautobot/extras/test_jobs/soft_time_limit_greater_than_time_limit.py +1 -1
  313. nautobot/extras/test_jobs/task_queues.py +1 -1
  314. nautobot/extras/tests/integration/test_plugin_banner.py +0 -2
  315. nautobot/extras/tests/test_api.py +157 -55
  316. nautobot/extras/tests/test_context_managers.py +4 -1
  317. nautobot/extras/tests/test_customfields.py +1 -1
  318. nautobot/extras/tests/test_datasources.py +2 -1
  319. nautobot/extras/tests/test_dynamicgroups.py +1 -1
  320. nautobot/extras/tests/test_filters.py +219 -535
  321. nautobot/extras/tests/test_forms.py +20 -1
  322. nautobot/extras/tests/test_job_variables.py +73 -152
  323. nautobot/extras/tests/test_jobs.py +192 -62
  324. nautobot/extras/tests/test_models.py +71 -16
  325. nautobot/extras/tests/test_plugins.py +62 -9
  326. nautobot/extras/tests/test_relationships.py +124 -10
  327. nautobot/extras/tests/test_utils.py +23 -2
  328. nautobot/extras/tests/test_views.py +162 -161
  329. nautobot/extras/tests/test_webhooks.py +2 -1
  330. nautobot/extras/urls.py +2 -20
  331. nautobot/extras/utils.py +119 -4
  332. nautobot/extras/views.py +188 -141
  333. nautobot/extras/webhooks.py +5 -2
  334. nautobot/ipam/api/fields.py +3 -3
  335. nautobot/ipam/api/serializers.py +44 -137
  336. nautobot/ipam/api/views.py +68 -110
  337. nautobot/ipam/factory.py +1 -1
  338. nautobot/ipam/filters.py +3 -2
  339. nautobot/ipam/models.py +10 -12
  340. nautobot/ipam/navigation.py +0 -90
  341. nautobot/ipam/querysets.py +2 -2
  342. nautobot/ipam/tables.py +3 -1
  343. nautobot/ipam/templates/ipam/ipaddress.html +1 -9
  344. nautobot/ipam/templates/ipam/ipaddress_bulk_add.html +1 -7
  345. nautobot/ipam/templates/ipam/ipaddress_edit.html +1 -7
  346. nautobot/ipam/templates/ipam/prefix.html +1 -9
  347. nautobot/ipam/templates/ipam/prefix_edit.html +1 -7
  348. nautobot/ipam/templates/ipam/routetarget.html +0 -28
  349. nautobot/ipam/templates/ipam/vlan.html +1 -9
  350. nautobot/ipam/templates/ipam/vlan_edit.html +1 -7
  351. nautobot/ipam/templates/ipam/vrf.html +0 -47
  352. nautobot/ipam/templates/ipam/vrf_edit.html +1 -7
  353. nautobot/ipam/tests/test_api.py +19 -6
  354. nautobot/ipam/tests/test_filters.py +39 -119
  355. nautobot/ipam/tests/test_forms.py +49 -47
  356. nautobot/ipam/tests/test_migrations.py +30 -30
  357. nautobot/ipam/tests/test_models.py +56 -36
  358. nautobot/ipam/tests/test_querysets.py +14 -0
  359. nautobot/ipam/tests/test_views.py +3 -0
  360. nautobot/ipam/urls.py +3 -69
  361. nautobot/ipam/utils/__init__.py +16 -10
  362. nautobot/ipam/views.py +91 -162
  363. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.css.map +1 -1
  364. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.min.css.map +1 -1
  365. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.css +40 -2
  366. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.css.map +1 -1
  367. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.min.css +1 -1
  368. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.min.css.map +1 -1
  369. nautobot/project-static/css/base.css +38 -3
  370. nautobot/project-static/docs/404.html +463 -19
  371. nautobot/project-static/docs/apps/index.html +463 -19
  372. nautobot/project-static/docs/apps/nautobot-apps.html +464 -21
  373. nautobot/project-static/docs/assets/_mkdocstrings.css +25 -1
  374. nautobot/project-static/docs/assets/extra.css +5 -1
  375. nautobot/project-static/docs/assets/javascripts/{bundle.83f73b43.min.js → bundle.88dd0f4e.min.js} +2 -2
  376. nautobot/project-static/docs/assets/javascripts/{bundle.83f73b43.min.js.map → bundle.88dd0f4e.min.js.map} +2 -2
  377. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +479 -25
  378. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +476 -22
  379. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +792 -291
  380. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +507 -33
  381. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +512 -36
  382. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +473 -22
  383. nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +469 -20
  384. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +499 -35
  385. nautobot/project-static/docs/code-reference/nautobot/apps/events.html +9883 -0
  386. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +525 -77
  387. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +548 -53
  388. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +672 -96
  389. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +1033 -180
  390. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +526 -51
  391. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +876 -190
  392. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +957 -237
  393. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +477 -23
  394. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +488 -30
  395. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +663 -101
  396. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +949 -481
  397. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +6427 -1236
  398. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +476 -22
  399. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +879 -346
  400. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +830 -173
  401. nautobot/project-static/docs/development/apps/api/configuration-view.html +463 -19
  402. nautobot/project-static/docs/development/apps/api/database-backend-config.html +463 -19
  403. nautobot/project-static/docs/development/apps/api/models/django-admin.html +463 -19
  404. nautobot/project-static/docs/development/apps/api/models/global-search.html +463 -19
  405. nautobot/project-static/docs/development/apps/api/models/graphql.html +463 -19
  406. nautobot/project-static/docs/development/apps/api/models/index.html +463 -19
  407. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +463 -19
  408. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +463 -19
  409. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +463 -19
  410. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +463 -19
  411. nautobot/project-static/docs/development/apps/api/platform-features/index.html +463 -19
  412. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +463 -19
  413. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +463 -19
  414. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +463 -19
  415. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +463 -19
  416. nautobot/project-static/docs/development/apps/api/platform-features/table-extensions.html +463 -19
  417. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +463 -19
  418. nautobot/project-static/docs/development/apps/api/prometheus.html +463 -19
  419. nautobot/project-static/docs/development/apps/api/setup.html +467 -155
  420. nautobot/project-static/docs/development/apps/api/testing.html +463 -19
  421. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +463 -19
  422. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +463 -19
  423. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +463 -19
  424. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +463 -19
  425. nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +743 -130
  426. nautobot/project-static/docs/development/apps/api/views/base-template.html +463 -19
  427. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +463 -19
  428. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +463 -19
  429. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +463 -19
  430. nautobot/project-static/docs/development/apps/api/views/index.html +465 -20
  431. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +467 -19
  432. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +493 -19
  433. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +463 -19
  434. nautobot/project-static/docs/development/apps/api/views/notes.html +463 -19
  435. nautobot/project-static/docs/development/apps/api/views/rest-api.html +469 -21
  436. nautobot/project-static/docs/development/apps/api/views/urls.html +463 -19
  437. nautobot/project-static/docs/development/apps/index.html +463 -19
  438. nautobot/project-static/docs/development/apps/migration/code-updates.html +464 -52
  439. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +464 -20
  440. nautobot/project-static/docs/development/apps/migration/from-v1.html +463 -19
  441. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +463 -19
  442. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +463 -19
  443. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +463 -19
  444. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +466 -22
  445. nautobot/project-static/docs/development/apps/migration/ui-component-framework/best-practices.html +9261 -0
  446. nautobot/project-static/docs/development/apps/migration/ui-component-framework/custom-content.html +9375 -0
  447. nautobot/project-static/docs/development/apps/migration/ui-component-framework/index.html +9671 -0
  448. nautobot/project-static/docs/development/apps/migration/ui-component-framework/migration-steps.html +9559 -0
  449. nautobot/project-static/docs/development/apps/porting-from-netbox.html +466 -22
  450. nautobot/project-static/docs/development/core/application-registry.html +463 -19
  451. nautobot/project-static/docs/development/core/best-practices.html +463 -19
  452. nautobot/project-static/docs/development/core/bootstrap-ui.html +463 -19
  453. nautobot/project-static/docs/development/core/caching.html +463 -19
  454. nautobot/project-static/docs/development/core/controllers.html +465 -19
  455. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +491 -90
  456. nautobot/project-static/docs/development/core/generic-views.html +463 -19
  457. nautobot/project-static/docs/development/core/getting-started.html +541 -129
  458. nautobot/project-static/docs/development/core/homepage.html +474 -30
  459. nautobot/project-static/docs/development/core/index.html +463 -19
  460. nautobot/project-static/docs/development/core/minikube-dev-environment-for-k8s-jobs.html +9754 -0
  461. nautobot/project-static/docs/development/core/model-checklist.html +473 -27
  462. nautobot/project-static/docs/development/core/model-features.html +463 -19
  463. nautobot/project-static/docs/development/core/natural-keys.html +463 -19
  464. nautobot/project-static/docs/development/core/navigation-menu.html +480 -26
  465. nautobot/project-static/docs/development/core/release-checklist.html +480 -48
  466. nautobot/project-static/docs/development/core/role-internals.html +463 -19
  467. nautobot/project-static/docs/development/core/settings.html +463 -19
  468. nautobot/project-static/docs/development/core/style-guide.html +466 -22
  469. nautobot/project-static/docs/development/core/templates.html +473 -22
  470. nautobot/project-static/docs/development/core/testing.html +463 -19
  471. nautobot/project-static/docs/development/core/ui-component-framework.html +11116 -0
  472. nautobot/project-static/docs/development/core/user-preferences.html +466 -22
  473. nautobot/project-static/docs/development/index.html +463 -19
  474. nautobot/project-static/docs/development/jobs/index.html +501 -21
  475. nautobot/project-static/docs/development/jobs/migration/from-v1.html +463 -19
  476. nautobot/project-static/docs/index.html +471 -38
  477. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_edit.png +0 -0
  478. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_edit_button.png +0 -0
  479. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_list_nav.png +0 -0
  480. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_list_view.png +0 -0
  481. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_queue.png +0 -0
  482. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_queue_add.png +0 -0
  483. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_queue_config.png +0 -0
  484. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_result_completed.png +0 -0
  485. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_result_nav.png +0 -0
  486. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_result_pending.png +0 -0
  487. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_run_form.png +0 -0
  488. nautobot/project-static/docs/media/development/core/kubernetes/k8s_nautobot_login.png +0 -0
  489. nautobot/project-static/docs/media/development/core/kubernetes/k8s_run_job.png +0 -0
  490. nautobot/project-static/docs/media/development/core/kubernetes/k8s_run_scheduled_job_form.png +0 -0
  491. nautobot/project-static/docs/media/development/core/kubernetes/k8s_scheduled_job_result.png +0 -0
  492. nautobot/project-static/docs/media/development/core/ui-component-framework/basic-panel-layout.png +0 -0
  493. nautobot/project-static/docs/media/development/core/ui-component-framework/button-example.png +0 -0
  494. nautobot/project-static/docs/media/development/core/ui-component-framework/buttons-example.png +0 -0
  495. nautobot/project-static/docs/media/development/core/ui-component-framework/cluster-type-before-after-example.png +0 -0
  496. nautobot/project-static/docs/media/development/core/ui-component-framework/dropdown-button-example.png +0 -0
  497. nautobot/project-static/docs/media/development/core/ui-component-framework/grouped-key-value-table-panel-example-1.png +0 -0
  498. nautobot/project-static/docs/media/development/core/ui-component-framework/grouped-key-value-table-panel-example-2.png +0 -0
  499. nautobot/project-static/docs/media/development/core/ui-component-framework/object-fields-panel-example.png +0 -0
  500. nautobot/project-static/docs/media/development/core/ui-component-framework/object-fields-panel-example_2.png +0 -0
  501. nautobot/project-static/docs/media/development/core/ui-component-framework/stats-panel-example-code.png +0 -0
  502. nautobot/project-static/docs/media/development/core/ui-component-framework/stats-panel-example.png +0 -0
  503. nautobot/project-static/docs/media/development/core/ui-component-framework/table-panels-family.png +0 -0
  504. nautobot/project-static/docs/media/development/core/ui-component-framework/text-panels-family.png +0 -0
  505. nautobot/project-static/docs/media/development/core/ui-component-framework/ui-framework-example.png +0 -0
  506. nautobot/project-static/docs/media/models/virtual_device_context_overview.drawio +73 -0
  507. nautobot/project-static/docs/media/models/virtual_device_context_overview.png +0 -0
  508. nautobot/project-static/docs/models/dcim/virtualdevicecontext.html +14 -0
  509. nautobot/project-static/docs/models/extras/jobqueue.html +14 -0
  510. nautobot/project-static/docs/models/wireless/radioprofile.html +14 -0
  511. nautobot/project-static/docs/models/wireless/supporteddatarate.html +14 -0
  512. nautobot/project-static/docs/models/wireless/wirelessnetwork.html +14 -0
  513. nautobot/project-static/docs/objects.inv +0 -0
  514. nautobot/project-static/docs/overview/application_stack.html +469 -23
  515. nautobot/project-static/docs/overview/design_philosophy.html +463 -19
  516. nautobot/project-static/docs/release-notes/index.html +485 -22
  517. nautobot/project-static/docs/release-notes/version-1.0.html +651 -208
  518. nautobot/project-static/docs/release-notes/version-1.1.html +648 -205
  519. nautobot/project-static/docs/release-notes/version-1.2.html +723 -280
  520. nautobot/project-static/docs/release-notes/version-1.3.html +749 -306
  521. nautobot/project-static/docs/release-notes/version-1.4.html +834 -392
  522. nautobot/project-static/docs/release-notes/version-1.5.html +1022 -581
  523. nautobot/project-static/docs/release-notes/version-1.6.html +942 -518
  524. nautobot/project-static/docs/release-notes/version-2.0.html +945 -504
  525. nautobot/project-static/docs/release-notes/version-2.1.html +780 -339
  526. nautobot/project-static/docs/release-notes/version-2.2.html +773 -332
  527. nautobot/project-static/docs/release-notes/version-2.3.html +1142 -448
  528. nautobot/project-static/docs/release-notes/version-2.4.html +10323 -0
  529. nautobot/project-static/docs/requirements.txt +2 -2
  530. nautobot/project-static/docs/search/search_index.json +1 -1
  531. nautobot/project-static/docs/sitemap.xml +342 -270
  532. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  533. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +463 -19
  534. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +463 -19
  535. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +463 -19
  536. nautobot/project-static/docs/user-guide/administration/configuration/index.html +475 -32
  537. nautobot/project-static/docs/user-guide/administration/configuration/redis.html +463 -19
  538. nautobot/project-static/docs/user-guide/administration/configuration/settings.html +894 -180
  539. nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +463 -19
  540. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +463 -19
  541. nautobot/project-static/docs/user-guide/administration/guides/docker.html +476 -29
  542. nautobot/project-static/docs/user-guide/administration/guides/health-checks.html +463 -19
  543. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +463 -19
  544. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +463 -19
  545. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +463 -19
  546. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +463 -19
  547. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +465 -21
  548. nautobot/project-static/docs/user-guide/administration/guides/selinux-troubleshooting.html +463 -19
  549. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +463 -19
  550. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +463 -19
  551. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +483 -23
  552. nautobot/project-static/docs/user-guide/administration/installation/index.html +468 -20
  553. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +464 -20
  554. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +463 -19
  555. nautobot/project-static/docs/user-guide/administration/installation/services.html +463 -19
  556. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +463 -19
  557. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +484 -41
  558. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +477 -66
  559. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +477 -66
  560. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +463 -19
  561. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +463 -19
  562. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +463 -19
  563. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +463 -19
  564. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +463 -19
  565. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +466 -23
  566. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +463 -19
  567. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/tables/v2-code-nautobot-app-location.yaml +0 -16
  568. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +463 -19
  569. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +469 -21
  570. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +463 -19
  571. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +463 -19
  572. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +463 -19
  573. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +463 -19
  574. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +463 -19
  575. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +463 -19
  576. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +463 -19
  577. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +463 -19
  578. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +463 -19
  579. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +463 -19
  580. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +463 -19
  581. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +463 -19
  582. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +463 -19
  583. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +463 -19
  584. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +463 -19
  585. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +463 -19
  586. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +463 -19
  587. nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +499 -20
  588. nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +489 -22
  589. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +463 -19
  590. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +463 -19
  591. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +463 -19
  592. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +463 -19
  593. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +463 -19
  594. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +463 -19
  595. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +463 -19
  596. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +463 -19
  597. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +463 -19
  598. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +463 -19
  599. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +463 -19
  600. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +463 -19
  601. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +463 -19
  602. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +463 -19
  603. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +463 -19
  604. nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +463 -19
  605. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +463 -19
  606. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +463 -19
  607. nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +463 -19
  608. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +463 -19
  609. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +463 -19
  610. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +463 -19
  611. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +463 -19
  612. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +463 -19
  613. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +463 -19
  614. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +463 -19
  615. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +463 -19
  616. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +463 -19
  617. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +463 -19
  618. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +463 -19
  619. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +463 -19
  620. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +463 -19
  621. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +463 -19
  622. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +463 -19
  623. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualdevicecontext.html +9375 -0
  624. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +470 -30
  625. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +463 -19
  626. nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +463 -19
  627. nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +463 -19
  628. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +463 -19
  629. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +463 -19
  630. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +463 -19
  631. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +463 -19
  632. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +463 -19
  633. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +463 -19
  634. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +463 -19
  635. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +463 -19
  636. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +463 -19
  637. nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +466 -22
  638. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +463 -19
  639. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +463 -19
  640. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +463 -19
  641. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +463 -19
  642. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +463 -19
  643. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +463 -19
  644. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +466 -22
  645. nautobot/project-static/docs/user-guide/core-data-model/wireless/index.html +9313 -0
  646. nautobot/project-static/docs/user-guide/core-data-model/wireless/radioprofile.html +9217 -0
  647. nautobot/project-static/docs/user-guide/core-data-model/wireless/supporteddatarate.html +9211 -0
  648. nautobot/project-static/docs/user-guide/core-data-model/wireless/wirelessnetwork.html +9277 -0
  649. nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +463 -19
  650. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +463 -19
  651. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +463 -19
  652. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +463 -19
  653. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +463 -19
  654. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +463 -19
  655. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +463 -19
  656. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +463 -19
  657. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +463 -19
  658. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +463 -19
  659. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +463 -19
  660. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +468 -22
  661. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +463 -19
  662. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/central-mode.png +0 -0
  663. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/device-group-add.png +0 -0
  664. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/device-group-create-1.png +0 -0
  665. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/device-group-create-2.png +0 -0
  666. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/radio-profile-add.png +0 -0
  667. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/radio-profile-create.png +0 -0
  668. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/supported-data-rate-add.png +0 -0
  669. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/supported-data-rate-create.png +0 -0
  670. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-controller-add.png +0 -0
  671. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-controller-create-1.png +0 -0
  672. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-controller-create-2.png +0 -0
  673. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-network-add.png +0 -0
  674. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-network-create.png +0 -0
  675. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +463 -19
  676. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +463 -19
  677. nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +466 -22
  678. nautobot/project-static/docs/user-guide/feature-guides/wireless-networks-and-controllers.html +9444 -0
  679. nautobot/project-static/docs/user-guide/index.html +463 -19
  680. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +466 -22
  681. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +467 -23
  682. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +463 -19
  683. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +463 -19
  684. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +463 -19
  685. nautobot/project-static/docs/user-guide/platform-functionality/events.html +9617 -0
  686. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +466 -22
  687. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +463 -19
  688. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +463 -19
  689. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +463 -19
  690. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +463 -19
  691. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +463 -19
  692. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +472 -23
  693. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +466 -22
  694. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +466 -22
  695. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +463 -19
  696. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobqueue.html +9224 -0
  697. nautobot/project-static/docs/user-guide/platform-functionality/jobs/kubernetes-job-support.html +9722 -0
  698. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +466 -22
  699. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +463 -19
  700. nautobot/project-static/docs/user-guide/platform-functionality/note.html +463 -19
  701. nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +463 -19
  702. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +467 -23
  703. nautobot/project-static/docs/user-guide/platform-functionality/rendering-jinja-templates.html +9292 -0
  704. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +463 -19
  705. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +511 -40
  706. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +494 -23
  707. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +463 -19
  708. nautobot/project-static/docs/user-guide/platform-functionality/role.html +463 -19
  709. nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +463 -19
  710. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +463 -19
  711. nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +466 -22
  712. nautobot/project-static/docs/user-guide/platform-functionality/status.html +463 -19
  713. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +463 -19
  714. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +531 -56
  715. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +463 -19
  716. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +463 -19
  717. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +463 -19
  718. nautobot/project-static/img/jinja_logo.svg +97 -0
  719. nautobot/project-static/js/forms.js +6 -1
  720. nautobot/project-static/js/nav_menu.js +2 -1
  721. nautobot/tenancy/api/serializers.py +0 -2
  722. nautobot/tenancy/api/views.py +9 -13
  723. nautobot/tenancy/factory.py +1 -1
  724. nautobot/tenancy/navigation.py +0 -29
  725. nautobot/tenancy/templates/tenancy/tenant.html +4 -91
  726. nautobot/tenancy/tests/test_filters.py +29 -134
  727. nautobot/tenancy/views.py +35 -24
  728. nautobot/users/admin.py +3 -1
  729. nautobot/users/api/serializers.py +4 -4
  730. nautobot/users/api/views.py +3 -3
  731. nautobot/users/forms.py +19 -0
  732. nautobot/users/templates/users/preferences.html +22 -0
  733. nautobot/users/tests/test_filters.py +1 -19
  734. nautobot/users/tests/test_views.py +57 -0
  735. nautobot/users/utils.py +8 -0
  736. nautobot/users/views.py +48 -11
  737. nautobot/virtualization/api/serializers.py +4 -4
  738. nautobot/virtualization/api/views.py +5 -24
  739. nautobot/virtualization/filters.py +1 -2
  740. nautobot/virtualization/models.py +1 -1
  741. nautobot/virtualization/navigation.py +0 -48
  742. nautobot/virtualization/tables.py +2 -2
  743. nautobot/virtualization/templates/virtualization/cluster_edit.html +1 -7
  744. nautobot/virtualization/templates/virtualization/clustertype.html +0 -39
  745. nautobot/virtualization/templates/virtualization/virtualmachine.html +1 -9
  746. nautobot/virtualization/templates/virtualization/virtualmachine_edit.html +2 -8
  747. nautobot/virtualization/tests/test_filters.py +57 -166
  748. nautobot/virtualization/views.py +18 -15
  749. nautobot/wireless/__init__.py +0 -0
  750. nautobot/wireless/api/__init__.py +0 -0
  751. nautobot/wireless/api/serializers.py +44 -0
  752. nautobot/wireless/api/urls.py +20 -0
  753. nautobot/wireless/api/views.py +34 -0
  754. nautobot/wireless/apps.py +8 -0
  755. nautobot/wireless/choices.py +345 -0
  756. nautobot/wireless/factory.py +138 -0
  757. nautobot/wireless/filters.py +167 -0
  758. nautobot/wireless/forms.py +283 -0
  759. nautobot/wireless/homepage.py +19 -0
  760. nautobot/wireless/migrations/0001_initial.py +223 -0
  761. nautobot/wireless/migrations/__init__.py +0 -0
  762. nautobot/wireless/models.py +207 -0
  763. nautobot/wireless/navigation.py +105 -0
  764. nautobot/wireless/tables.py +244 -0
  765. nautobot/wireless/templates/wireless/radioprofile_retrieve.html +81 -0
  766. nautobot/wireless/templates/wireless/supporteddatarate_retrieve.html +26 -0
  767. nautobot/wireless/templates/wireless/wirelessnetwork_create.html +88 -0
  768. nautobot/wireless/templates/wireless/wirelessnetwork_retrieve.html +56 -0
  769. nautobot/wireless/tests/__init__.py +0 -0
  770. nautobot/wireless/tests/integration/__init__.py +0 -0
  771. nautobot/wireless/tests/integration/test_radio_profile.py +42 -0
  772. nautobot/wireless/tests/test_api.py +247 -0
  773. nautobot/wireless/tests/test_filters.py +82 -0
  774. nautobot/wireless/tests/test_models.py +22 -0
  775. nautobot/wireless/tests/test_views.py +378 -0
  776. nautobot/wireless/urls.py +13 -0
  777. nautobot/wireless/views.py +119 -0
  778. {nautobot-2.3.15b1.dist-info → nautobot-2.4.0.dist-info}/METADATA +11 -13
  779. {nautobot-2.3.15b1.dist-info → nautobot-2.4.0.dist-info}/RECORD +783 -613
  780. {nautobot-2.3.15b1.dist-info → nautobot-2.4.0.dist-info}/WHEEL +1 -1
  781. nautobot/core/fixtures/user-data.json +0 -59
  782. nautobot/core/utils/navigation.py +0 -54
  783. {nautobot-2.3.15b1.dist-info → nautobot-2.4.0.dist-info}/LICENSE.txt +0 -0
  784. {nautobot-2.3.15b1.dist-info → nautobot-2.4.0.dist-info}/NOTICE +0 -0
  785. {nautobot-2.3.15b1.dist-info → nautobot-2.4.0.dist-info}/entry_points.txt +0 -0
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.48">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.49">
22
22
 
23
23
 
24
24
 
@@ -1632,6 +1632,15 @@
1632
1632
  </span>
1633
1633
  </a>
1634
1634
 
1635
+ </li>
1636
+
1637
+ <li class="md-nav__item">
1638
+ <a href="#event_brokers" class="md-nav__link">
1639
+ <span class="md-ellipsis">
1640
+ EVENT_BROKERS
1641
+ </span>
1642
+ </a>
1643
+
1635
1644
  </li>
1636
1645
 
1637
1646
  <li class="md-nav__item">
@@ -1758,6 +1767,60 @@
1758
1767
  </span>
1759
1768
  </a>
1760
1769
 
1770
+ </li>
1771
+
1772
+ <li class="md-nav__item">
1773
+ <a href="#kubernetes_default_service_address" class="md-nav__link">
1774
+ <span class="md-ellipsis">
1775
+ KUBERNETES_DEFAULT_SERVICE_ADDRESS
1776
+ </span>
1777
+ </a>
1778
+
1779
+ </li>
1780
+
1781
+ <li class="md-nav__item">
1782
+ <a href="#kubernetes_job_manifest" class="md-nav__link">
1783
+ <span class="md-ellipsis">
1784
+ KUBERNETES_JOB_MANIFEST
1785
+ </span>
1786
+ </a>
1787
+
1788
+ </li>
1789
+
1790
+ <li class="md-nav__item">
1791
+ <a href="#kubernetes_job_pod_name" class="md-nav__link">
1792
+ <span class="md-ellipsis">
1793
+ KUBERNETES_JOB_POD_NAME
1794
+ </span>
1795
+ </a>
1796
+
1797
+ </li>
1798
+
1799
+ <li class="md-nav__item">
1800
+ <a href="#kubernetes_job_pod_namespace" class="md-nav__link">
1801
+ <span class="md-ellipsis">
1802
+ KUBERNETES_JOB_POD_NAMESPACE
1803
+ </span>
1804
+ </a>
1805
+
1806
+ </li>
1807
+
1808
+ <li class="md-nav__item">
1809
+ <a href="#kubernetes_ssl_ca_cert_path" class="md-nav__link">
1810
+ <span class="md-ellipsis">
1811
+ KUBERNETES_SSL_CA_CERT_PATH
1812
+ </span>
1813
+ </a>
1814
+
1815
+ </li>
1816
+
1817
+ <li class="md-nav__item">
1818
+ <a href="#kubernetes_token_path" class="md-nav__link">
1819
+ <span class="md-ellipsis">
1820
+ KUBERNETES_TOKEN_PATH
1821
+ </span>
1822
+ </a>
1823
+
1761
1824
  </li>
1762
1825
 
1763
1826
  <li class="md-nav__item">
@@ -1917,6 +1980,15 @@
1917
1980
  </span>
1918
1981
  </a>
1919
1982
 
1983
+ </li>
1984
+
1985
+ <li class="md-nav__item">
1986
+ <a href="#ntc_support_contract_expiration_date" class="md-nav__link">
1987
+ <span class="md-ellipsis">
1988
+ NTC_SUPPORT_CONTRACT_EXPIRATION_DATE
1989
+ </span>
1990
+ </a>
1991
+
1920
1992
  </li>
1921
1993
 
1922
1994
  <li class="md-nav__item">
@@ -1962,6 +2034,15 @@
1962
2034
  </span>
1963
2035
  </a>
1964
2036
 
2037
+ </li>
2038
+
2039
+ <li class="md-nav__item">
2040
+ <a href="#publish_robots_txt" class="md-nav__link">
2041
+ <span class="md-ellipsis">
2042
+ PUBLISH_ROBOTS_TXT
2043
+ </span>
2044
+ </a>
2045
+
1965
2046
  </li>
1966
2047
 
1967
2048
  <li class="md-nav__item">
@@ -3214,6 +3295,27 @@
3214
3295
 
3215
3296
 
3216
3297
 
3298
+
3299
+
3300
+
3301
+
3302
+
3303
+
3304
+ <li class="md-nav__item">
3305
+ <a href="../../feature-guides/wireless-networks-and-controllers.html" class="md-nav__link">
3306
+
3307
+
3308
+ <span class="md-ellipsis">
3309
+ Wireless Networks and Controllers
3310
+ </span>
3311
+
3312
+
3313
+ </a>
3314
+ </li>
3315
+
3316
+
3317
+
3318
+
3217
3319
  </ul>
3218
3320
  </nav>
3219
3321
 
@@ -5046,6 +5148,27 @@
5046
5148
 
5047
5149
 
5048
5150
 
5151
+
5152
+
5153
+
5154
+
5155
+
5156
+
5157
+ <li class="md-nav__item">
5158
+ <a href="../../core-data-model/dcim/virtualdevicecontext.html" class="md-nav__link">
5159
+
5160
+
5161
+ <span class="md-ellipsis">
5162
+ Virtual Device Context
5163
+ </span>
5164
+
5165
+
5166
+ </a>
5167
+ </li>
5168
+
5169
+
5170
+
5171
+
5049
5172
  </ul>
5050
5173
  </nav>
5051
5174
 
@@ -5658,6 +5781,123 @@
5658
5781
 
5659
5782
 
5660
5783
 
5784
+
5785
+
5786
+
5787
+
5788
+
5789
+
5790
+
5791
+
5792
+
5793
+
5794
+
5795
+
5796
+
5797
+ <li class="md-nav__item md-nav__item--nested">
5798
+
5799
+
5800
+
5801
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_9" >
5802
+
5803
+
5804
+
5805
+ <div class="md-nav__link md-nav__container">
5806
+ <a href="../../core-data-model/wireless/index.html" class="md-nav__link ">
5807
+
5808
+
5809
+ <span class="md-ellipsis">
5810
+ Wireless
5811
+ </span>
5812
+
5813
+
5814
+ </a>
5815
+
5816
+
5817
+ <label class="md-nav__link " for="__nav_2_3_9" id="__nav_2_3_9_label" tabindex="0">
5818
+ <span class="md-nav__icon md-icon"></span>
5819
+ </label>
5820
+
5821
+ </div>
5822
+
5823
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_9_label" aria-expanded="false">
5824
+ <label class="md-nav__title" for="__nav_2_3_9">
5825
+ <span class="md-nav__icon md-icon"></span>
5826
+ Wireless
5827
+ </label>
5828
+ <ul class="md-nav__list" data-md-scrollfix>
5829
+
5830
+
5831
+
5832
+
5833
+
5834
+
5835
+
5836
+ <li class="md-nav__item">
5837
+ <a href="../../core-data-model/wireless/supporteddatarate.html" class="md-nav__link">
5838
+
5839
+
5840
+ <span class="md-ellipsis">
5841
+ Supported Data Rate
5842
+ </span>
5843
+
5844
+
5845
+ </a>
5846
+ </li>
5847
+
5848
+
5849
+
5850
+
5851
+
5852
+
5853
+
5854
+
5855
+
5856
+
5857
+ <li class="md-nav__item">
5858
+ <a href="../../core-data-model/wireless/radioprofile.html" class="md-nav__link">
5859
+
5860
+
5861
+ <span class="md-ellipsis">
5862
+ Radio Profile
5863
+ </span>
5864
+
5865
+
5866
+ </a>
5867
+ </li>
5868
+
5869
+
5870
+
5871
+
5872
+
5873
+
5874
+
5875
+
5876
+
5877
+
5878
+ <li class="md-nav__item">
5879
+ <a href="../../core-data-model/wireless/wirelessnetwork.html" class="md-nav__link">
5880
+
5881
+
5882
+ <span class="md-ellipsis">
5883
+ Wireless Network
5884
+ </span>
5885
+
5886
+
5887
+ </a>
5888
+ </li>
5889
+
5890
+
5891
+
5892
+
5893
+ </ul>
5894
+ </nav>
5895
+
5896
+ </li>
5897
+
5898
+
5899
+
5900
+
5661
5901
  </ul>
5662
5902
  </nav>
5663
5903
 
@@ -5869,6 +6109,27 @@
5869
6109
 
5870
6110
 
5871
6111
 
6112
+ <li class="md-nav__item">
6113
+ <a href="../../platform-functionality/events.html" class="md-nav__link">
6114
+
6115
+
6116
+ <span class="md-ellipsis">
6117
+ Event Notifications
6118
+ </span>
6119
+
6120
+
6121
+ </a>
6122
+ </li>
6123
+
6124
+
6125
+
6126
+
6127
+
6128
+
6129
+
6130
+
6131
+
6132
+
5872
6133
  <li class="md-nav__item">
5873
6134
  <a href="../../platform-functionality/exporttemplate.html" class="md-nav__link">
5874
6135
 
@@ -5943,7 +6204,7 @@
5943
6204
 
5944
6205
 
5945
6206
 
5946
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_9" >
6207
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_10" >
5947
6208
 
5948
6209
 
5949
6210
 
@@ -5959,14 +6220,14 @@
5959
6220
  </a>
5960
6221
 
5961
6222
 
5962
- <label class="md-nav__link " for="__nav_2_4_9" id="__nav_2_4_9_label" tabindex="0">
6223
+ <label class="md-nav__link " for="__nav_2_4_10" id="__nav_2_4_10_label" tabindex="0">
5963
6224
  <span class="md-nav__icon md-icon"></span>
5964
6225
  </label>
5965
6226
 
5966
6227
  </div>
5967
6228
 
5968
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_9_label" aria-expanded="false">
5969
- <label class="md-nav__title" for="__nav_2_4_9">
6229
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_10_label" aria-expanded="false">
6230
+ <label class="md-nav__title" for="__nav_2_4_10">
5970
6231
  <span class="md-nav__icon md-icon"></span>
5971
6232
  GraphQL
5972
6233
  </label>
@@ -6039,7 +6300,7 @@
6039
6300
 
6040
6301
 
6041
6302
 
6042
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_11" >
6303
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_12" >
6043
6304
 
6044
6305
 
6045
6306
 
@@ -6055,14 +6316,14 @@
6055
6316
  </a>
6056
6317
 
6057
6318
 
6058
- <label class="md-nav__link " for="__nav_2_4_11" id="__nav_2_4_11_label" tabindex="0">
6319
+ <label class="md-nav__link " for="__nav_2_4_12" id="__nav_2_4_12_label" tabindex="0">
6059
6320
  <span class="md-nav__icon md-icon"></span>
6060
6321
  </label>
6061
6322
 
6062
6323
  </div>
6063
6324
 
6064
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_11_label" aria-expanded="false">
6065
- <label class="md-nav__title" for="__nav_2_4_11">
6325
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_12_label" aria-expanded="false">
6326
+ <label class="md-nav__title" for="__nav_2_4_12">
6066
6327
  <span class="md-nav__icon md-icon"></span>
6067
6328
  Jobs
6068
6329
  </label>
@@ -6075,11 +6336,11 @@
6075
6336
 
6076
6337
 
6077
6338
  <li class="md-nav__item">
6078
- <a href="../../platform-functionality/jobs/jobbutton.html" class="md-nav__link">
6339
+ <a href="../../platform-functionality/jobs/kubernetes-job-support.html" class="md-nav__link">
6079
6340
 
6080
6341
 
6081
6342
  <span class="md-ellipsis">
6082
- Job Buttons
6343
+ Kubernetes Job Support
6083
6344
  </span>
6084
6345
 
6085
6346
 
@@ -6096,11 +6357,11 @@
6096
6357
 
6097
6358
 
6098
6359
  <li class="md-nav__item">
6099
- <a href="../../platform-functionality/jobs/jobhook.html" class="md-nav__link">
6360
+ <a href="../../platform-functionality/jobs/jobbutton.html" class="md-nav__link">
6100
6361
 
6101
6362
 
6102
6363
  <span class="md-ellipsis">
6103
- Job Hooks
6364
+ Job Buttons
6104
6365
  </span>
6105
6366
 
6106
6367
 
@@ -6117,11 +6378,11 @@
6117
6378
 
6118
6379
 
6119
6380
  <li class="md-nav__item">
6120
- <a href="../../platform-functionality/jobs/models.html" class="md-nav__link">
6381
+ <a href="../../platform-functionality/jobs/jobhook.html" class="md-nav__link">
6121
6382
 
6122
6383
 
6123
6384
  <span class="md-ellipsis">
6124
- Job Models
6385
+ Job Hooks
6125
6386
  </span>
6126
6387
 
6127
6388
 
@@ -6138,11 +6399,11 @@
6138
6399
 
6139
6400
 
6140
6401
  <li class="md-nav__item">
6141
- <a href="../../platform-functionality/jobs/job-scheduling-and-approvals.html" class="md-nav__link">
6402
+ <a href="../../platform-functionality/jobs/models.html" class="md-nav__link">
6142
6403
 
6143
6404
 
6144
6405
  <span class="md-ellipsis">
6145
- Job Scheduling and Approvals
6406
+ Job Models
6146
6407
  </span>
6147
6408
 
6148
6409
 
@@ -6152,14 +6413,6 @@
6152
6413
 
6153
6414
 
6154
6415
 
6155
- </ul>
6156
- </nav>
6157
-
6158
- </li>
6159
-
6160
-
6161
-
6162
-
6163
6416
 
6164
6417
 
6165
6418
 
@@ -6167,11 +6420,11 @@
6167
6420
 
6168
6421
 
6169
6422
  <li class="md-nav__item">
6170
- <a href="../../platform-functionality/napalm.html" class="md-nav__link">
6423
+ <a href="../../platform-functionality/jobs/jobqueue.html" class="md-nav__link">
6171
6424
 
6172
6425
 
6173
6426
  <span class="md-ellipsis">
6174
- NAPALM
6427
+ Job Queues
6175
6428
  </span>
6176
6429
 
6177
6430
 
@@ -6188,11 +6441,11 @@
6188
6441
 
6189
6442
 
6190
6443
  <li class="md-nav__item">
6191
- <a href="../../platform-functionality/note.html" class="md-nav__link">
6444
+ <a href="../../platform-functionality/jobs/job-scheduling-and-approvals.html" class="md-nav__link">
6192
6445
 
6193
6446
 
6194
6447
  <span class="md-ellipsis">
6195
- Notes
6448
+ Job Scheduling and Approvals
6196
6449
  </span>
6197
6450
 
6198
6451
 
@@ -6202,10 +6455,60 @@
6202
6455
 
6203
6456
 
6204
6457
 
6205
-
6206
-
6207
-
6208
-
6458
+ </ul>
6459
+ </nav>
6460
+
6461
+ </li>
6462
+
6463
+
6464
+
6465
+
6466
+
6467
+
6468
+
6469
+
6470
+
6471
+
6472
+ <li class="md-nav__item">
6473
+ <a href="../../platform-functionality/napalm.html" class="md-nav__link">
6474
+
6475
+
6476
+ <span class="md-ellipsis">
6477
+ NAPALM
6478
+ </span>
6479
+
6480
+
6481
+ </a>
6482
+ </li>
6483
+
6484
+
6485
+
6486
+
6487
+
6488
+
6489
+
6490
+
6491
+
6492
+
6493
+ <li class="md-nav__item">
6494
+ <a href="../../platform-functionality/note.html" class="md-nav__link">
6495
+
6496
+
6497
+ <span class="md-ellipsis">
6498
+ Notes
6499
+ </span>
6500
+
6501
+
6502
+ </a>
6503
+ </li>
6504
+
6505
+
6506
+
6507
+
6508
+
6509
+
6510
+
6511
+
6209
6512
 
6210
6513
 
6211
6514
  <li class="md-nav__item">
@@ -6250,6 +6553,27 @@
6250
6553
 
6251
6554
 
6252
6555
 
6556
+ <li class="md-nav__item">
6557
+ <a href="../../platform-functionality/rendering-jinja-templates.html" class="md-nav__link">
6558
+
6559
+
6560
+ <span class="md-ellipsis">
6561
+ Rendering Jinja Templates
6562
+ </span>
6563
+
6564
+
6565
+ </a>
6566
+ </li>
6567
+
6568
+
6569
+
6570
+
6571
+
6572
+
6573
+
6574
+
6575
+
6576
+
6253
6577
 
6254
6578
 
6255
6579
 
@@ -6261,7 +6585,7 @@
6261
6585
 
6262
6586
 
6263
6587
 
6264
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_16" >
6588
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_18" >
6265
6589
 
6266
6590
 
6267
6591
 
@@ -6277,14 +6601,14 @@
6277
6601
  </a>
6278
6602
 
6279
6603
 
6280
- <label class="md-nav__link " for="__nav_2_4_16" id="__nav_2_4_16_label" tabindex="0">
6604
+ <label class="md-nav__link " for="__nav_2_4_18" id="__nav_2_4_18_label" tabindex="0">
6281
6605
  <span class="md-nav__icon md-icon"></span>
6282
6606
  </label>
6283
6607
 
6284
6608
  </div>
6285
6609
 
6286
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_16_label" aria-expanded="false">
6287
- <label class="md-nav__title" for="__nav_2_4_16">
6610
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_18_label" aria-expanded="false">
6611
+ <label class="md-nav__title" for="__nav_2_4_18">
6288
6612
  <span class="md-nav__icon md-icon"></span>
6289
6613
  REST API
6290
6614
  </label>
@@ -6504,10 +6828,10 @@
6504
6828
 
6505
6829
 
6506
6830
 
6507
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_23" >
6831
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_25" >
6508
6832
 
6509
6833
 
6510
- <label class="md-nav__link" for="__nav_2_4_23" id="__nav_2_4_23_label" tabindex="0">
6834
+ <label class="md-nav__link" for="__nav_2_4_25" id="__nav_2_4_25_label" tabindex="0">
6511
6835
 
6512
6836
 
6513
6837
  <span class="md-ellipsis">
@@ -6518,8 +6842,8 @@
6518
6842
  <span class="md-nav__icon md-icon"></span>
6519
6843
  </label>
6520
6844
 
6521
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_23_label" aria-expanded="false">
6522
- <label class="md-nav__title" for="__nav_2_4_23">
6845
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_25_label" aria-expanded="false">
6846
+ <label class="md-nav__title" for="__nav_2_4_25">
6523
6847
  <span class="md-nav__icon md-icon"></span>
6524
6848
  Users
6525
6849
  </label>
@@ -7924,6 +8248,27 @@
7924
8248
 
7925
8249
 
7926
8250
 
8251
+ <li class="md-nav__item">
8252
+ <a href="../../../code-reference/nautobot/apps/events.html" class="md-nav__link">
8253
+
8254
+
8255
+ <span class="md-ellipsis">
8256
+ nautobot.apps.events
8257
+ </span>
8258
+
8259
+
8260
+ </a>
8261
+ </li>
8262
+
8263
+
8264
+
8265
+
8266
+
8267
+
8268
+
8269
+
8270
+
8271
+
7927
8272
  <li class="md-nav__item">
7928
8273
  <a href="../../../code-reference/nautobot/apps/exceptions.html" class="md-nav__link">
7929
8274
 
@@ -8472,6 +8817,123 @@
8472
8817
 
8473
8818
 
8474
8819
 
8820
+
8821
+
8822
+
8823
+
8824
+
8825
+
8826
+
8827
+
8828
+
8829
+
8830
+
8831
+
8832
+
8833
+ <li class="md-nav__item md-nav__item--nested">
8834
+
8835
+
8836
+
8837
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_9_5" >
8838
+
8839
+
8840
+
8841
+ <div class="md-nav__link md-nav__container">
8842
+ <a href="../../../development/apps/migration/ui-component-framework/index.html" class="md-nav__link ">
8843
+
8844
+
8845
+ <span class="md-ellipsis">
8846
+ UI Component Framework
8847
+ </span>
8848
+
8849
+
8850
+ </a>
8851
+
8852
+
8853
+ <label class="md-nav__link " for="__nav_3_2_9_5" id="__nav_3_2_9_5_label" tabindex="0">
8854
+ <span class="md-nav__icon md-icon"></span>
8855
+ </label>
8856
+
8857
+ </div>
8858
+
8859
+ <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_3_2_9_5_label" aria-expanded="false">
8860
+ <label class="md-nav__title" for="__nav_3_2_9_5">
8861
+ <span class="md-nav__icon md-icon"></span>
8862
+ UI Component Framework
8863
+ </label>
8864
+ <ul class="md-nav__list" data-md-scrollfix>
8865
+
8866
+
8867
+
8868
+
8869
+
8870
+
8871
+
8872
+ <li class="md-nav__item">
8873
+ <a href="../../../development/apps/migration/ui-component-framework/migration-steps.html" class="md-nav__link">
8874
+
8875
+
8876
+ <span class="md-ellipsis">
8877
+ Migration steps
8878
+ </span>
8879
+
8880
+
8881
+ </a>
8882
+ </li>
8883
+
8884
+
8885
+
8886
+
8887
+
8888
+
8889
+
8890
+
8891
+
8892
+
8893
+ <li class="md-nav__item">
8894
+ <a href="../../../development/apps/migration/ui-component-framework/custom-content.html" class="md-nav__link">
8895
+
8896
+
8897
+ <span class="md-ellipsis">
8898
+ Custom content
8899
+ </span>
8900
+
8901
+
8902
+ </a>
8903
+ </li>
8904
+
8905
+
8906
+
8907
+
8908
+
8909
+
8910
+
8911
+
8912
+
8913
+
8914
+ <li class="md-nav__item">
8915
+ <a href="../../../development/apps/migration/ui-component-framework/best-practices.html" class="md-nav__link">
8916
+
8917
+
8918
+ <span class="md-ellipsis">
8919
+ Best practices
8920
+ </span>
8921
+
8922
+
8923
+ </a>
8924
+ </li>
8925
+
8926
+
8927
+
8928
+
8929
+ </ul>
8930
+ </nav>
8931
+
8932
+ </li>
8933
+
8934
+
8935
+
8936
+
8475
8937
  </ul>
8476
8938
  </nav>
8477
8939
 
@@ -8817,6 +9279,27 @@
8817
9279
 
8818
9280
 
8819
9281
 
9282
+ <li class="md-nav__item">
9283
+ <a href="../../../development/core/minikube-dev-environment-for-k8s-jobs.html" class="md-nav__link">
9284
+
9285
+
9286
+ <span class="md-ellipsis">
9287
+ Minikube Dev Environment for K8s Jobs
9288
+ </span>
9289
+
9290
+
9291
+ </a>
9292
+ </li>
9293
+
9294
+
9295
+
9296
+
9297
+
9298
+
9299
+
9300
+
9301
+
9302
+
8820
9303
  <li class="md-nav__item">
8821
9304
  <a href="../../../development/core/model-checklist.html" class="md-nav__link">
8822
9305
 
@@ -9006,6 +9489,27 @@
9006
9489
 
9007
9490
 
9008
9491
 
9492
+ <li class="md-nav__item">
9493
+ <a href="../../../development/core/ui-component-framework.html" class="md-nav__link">
9494
+
9495
+
9496
+ <span class="md-ellipsis">
9497
+ UI Component Framework
9498
+ </span>
9499
+
9500
+
9501
+ </a>
9502
+ </li>
9503
+
9504
+
9505
+
9506
+
9507
+
9508
+
9509
+
9510
+
9511
+
9512
+
9009
9513
  <li class="md-nav__item">
9010
9514
  <a href="../../../development/core/release-checklist.html" class="md-nav__link">
9011
9515
 
@@ -9088,6 +9592,27 @@
9088
9592
 
9089
9593
 
9090
9594
 
9595
+ <li class="md-nav__item">
9596
+ <a href="../../../release-notes/version-2.4.html" class="md-nav__link">
9597
+
9598
+
9599
+ <span class="md-ellipsis">
9600
+ Version 2.4
9601
+ </span>
9602
+
9603
+
9604
+ </a>
9605
+ </li>
9606
+
9607
+
9608
+
9609
+
9610
+
9611
+
9612
+
9613
+
9614
+
9615
+
9091
9616
  <li class="md-nav__item">
9092
9617
  <a href="../../../release-notes/version-2.3.html" class="md-nav__link">
9093
9618
 
@@ -10052,6 +10577,15 @@
10052
10577
  </span>
10053
10578
  </a>
10054
10579
 
10580
+ </li>
10581
+
10582
+ <li class="md-nav__item">
10583
+ <a href="#event_brokers" class="md-nav__link">
10584
+ <span class="md-ellipsis">
10585
+ EVENT_BROKERS
10586
+ </span>
10587
+ </a>
10588
+
10055
10589
  </li>
10056
10590
 
10057
10591
  <li class="md-nav__item">
@@ -10178,6 +10712,60 @@
10178
10712
  </span>
10179
10713
  </a>
10180
10714
 
10715
+ </li>
10716
+
10717
+ <li class="md-nav__item">
10718
+ <a href="#kubernetes_default_service_address" class="md-nav__link">
10719
+ <span class="md-ellipsis">
10720
+ KUBERNETES_DEFAULT_SERVICE_ADDRESS
10721
+ </span>
10722
+ </a>
10723
+
10724
+ </li>
10725
+
10726
+ <li class="md-nav__item">
10727
+ <a href="#kubernetes_job_manifest" class="md-nav__link">
10728
+ <span class="md-ellipsis">
10729
+ KUBERNETES_JOB_MANIFEST
10730
+ </span>
10731
+ </a>
10732
+
10733
+ </li>
10734
+
10735
+ <li class="md-nav__item">
10736
+ <a href="#kubernetes_job_pod_name" class="md-nav__link">
10737
+ <span class="md-ellipsis">
10738
+ KUBERNETES_JOB_POD_NAME
10739
+ </span>
10740
+ </a>
10741
+
10742
+ </li>
10743
+
10744
+ <li class="md-nav__item">
10745
+ <a href="#kubernetes_job_pod_namespace" class="md-nav__link">
10746
+ <span class="md-ellipsis">
10747
+ KUBERNETES_JOB_POD_NAMESPACE
10748
+ </span>
10749
+ </a>
10750
+
10751
+ </li>
10752
+
10753
+ <li class="md-nav__item">
10754
+ <a href="#kubernetes_ssl_ca_cert_path" class="md-nav__link">
10755
+ <span class="md-ellipsis">
10756
+ KUBERNETES_SSL_CA_CERT_PATH
10757
+ </span>
10758
+ </a>
10759
+
10760
+ </li>
10761
+
10762
+ <li class="md-nav__item">
10763
+ <a href="#kubernetes_token_path" class="md-nav__link">
10764
+ <span class="md-ellipsis">
10765
+ KUBERNETES_TOKEN_PATH
10766
+ </span>
10767
+ </a>
10768
+
10181
10769
  </li>
10182
10770
 
10183
10771
  <li class="md-nav__item">
@@ -10337,6 +10925,15 @@
10337
10925
  </span>
10338
10926
  </a>
10339
10927
 
10928
+ </li>
10929
+
10930
+ <li class="md-nav__item">
10931
+ <a href="#ntc_support_contract_expiration_date" class="md-nav__link">
10932
+ <span class="md-ellipsis">
10933
+ NTC_SUPPORT_CONTRACT_EXPIRATION_DATE
10934
+ </span>
10935
+ </a>
10936
+
10340
10937
  </li>
10341
10938
 
10342
10939
  <li class="md-nav__item">
@@ -10382,6 +10979,15 @@
10382
10979
  </span>
10383
10980
  </a>
10384
10981
 
10982
+ </li>
10983
+
10984
+ <li class="md-nav__item">
10985
+ <a href="#publish_robots_txt" class="md-nav__link">
10986
+ <span class="md-ellipsis">
10987
+ PUBLISH_ROBOTS_TXT
10988
+ </span>
10989
+ </a>
10990
+
10385
10991
  </li>
10386
10992
 
10387
10993
  <li class="md-nav__item">
@@ -10750,12 +11356,12 @@
10750
11356
  <p>This document describes Nautobot-specific configuration settings that may be customized in your <code>nautobot_config.py</code>, or, in many cases, by configuration of appropriate environment variables. It also describes a number of common Django configuration settings that may also be customized similarly.</p>
10751
11357
  <p>The <a href="https://docs.djangoproject.com/en/stable/ref/settings/">official Django documentation</a> documents <em>all</em> Django settings, and this document does not attempt to replace that documentation.</p>
10752
11358
  <h2 id="administratively-configurable-settings">Administratively Configurable Settings<a class="headerlink" href="#administratively-configurable-settings" title="Permanent link">&para;</a></h2>
10753
- <!-- markdownlint-disable blanks-around-lists -->
10754
-
10755
11359
  <details class="version-added">
10756
11360
  <summary>Added in version 1.2.0</summary>
10757
11361
  </details>
10758
11362
  <p>A number of settings can alternatively be configured via the Nautobot Admin UI. To do so, these settings must <strong>not</strong> be defined in your <code>nautobot_config.py</code>, as any settings defined there will take precedence over any values defined in the Admin UI. Settings that are currently configurable via the Admin UI include:</p>
11363
+ <!-- pyml disable-num-lines 5 blanks-around-lists -->
11364
+
10759
11365
  <ul>
10760
11366
  <li>
10761
11367
  <p><a href="#allow_request_profiling"><code>ALLOW_REQUEST_PROFILING</code></a></p>
@@ -10791,6 +11397,9 @@
10791
11397
  <p><a href="#network_drivers"><code>NETWORK_DRIVERS</code></a></p>
10792
11398
  </li>
10793
11399
  <li>
11400
+ <p><a href="#ntc_support_contract_expiration_date"><code>NTC_SUPPORT_CONTRACT_EXPIRATION_DATE</code></a></p>
11401
+ </li>
11402
+ <li>
10794
11403
  <p><a href="#paginate_count"><code>PAGINATE_COUNT</code></a></p>
10795
11404
  </li>
10796
11405
  <li>
@@ -11530,6 +12139,37 @@ installation metrics. This setting is not generally intended to be user-servicea
11530
12139
  <p>If you do not set a value for this setting in your <code>nautobot_config.py</code>, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in <code>nautobot_config.py</code>, it will override any dynamically configured value.</p>
11531
12140
  </div>
11532
12141
  <hr />
12142
+ <h3 id="event_brokers"><code>EVENT_BROKERS</code><a class="headerlink" href="#event_brokers" title="Permanent link">&para;</a></h3>
12143
+ <details class="version-added">
12144
+ <summary>Added in version 2.4.0</summary>
12145
+ </details>
12146
+ <p><strong>Default:</strong>
12147
+ <code>{}</code></p>
12148
+ <p>A dictionary defining event brokers that handle event publishing in Nautobot. Each broker specifies its import path, along with topics to include or exclude when publishing events.</p>
12149
+ <p>Each broker consists of a name, the class it uses for publishing events, and the topics
12150
+ it filters. Topics are the categories of events that a broker will publish or exclude
12151
+ based on the provided filters.</p>
12152
+ <p>Example:</p>
12153
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="n">EVENT_BROKERS</span> <span class="o">=</span> <span class="p">{</span>
12154
+ <a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a> <span class="s2">&quot;SyslogEventBroker&quot;</span><span class="p">:</span> <span class="p">{</span>
12155
+ <a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a> <span class="s2">&quot;CLASS&quot;</span><span class="p">:</span> <span class="s2">&quot;nautobot.core.events.SyslogEventBroker&quot;</span><span class="p">,</span>
12156
+ <a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a> <span class="s2">&quot;TOPICS&quot;</span><span class="p">:</span> <span class="p">{</span>
12157
+ <a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a> <span class="s2">&quot;INCLUDE&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;nautobot.test.*&quot;</span><span class="p">],</span>
12158
+ <a id="__codelineno-10-6" name="__codelineno-10-6" href="#__codelineno-10-6"></a> <span class="s2">&quot;EXCLUDE&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;*.no-publish*&quot;</span><span class="p">],</span>
12159
+ <a id="__codelineno-10-7" name="__codelineno-10-7" href="#__codelineno-10-7"></a> <span class="p">},</span>
12160
+ <a id="__codelineno-10-8" name="__codelineno-10-8" href="#__codelineno-10-8"></a> <span class="p">},</span>
12161
+ <a id="__codelineno-10-9" name="__codelineno-10-9" href="#__codelineno-10-9"></a><span class="p">}</span>
12162
+ </code></pre></div>
12163
+ <p>In this example:
12164
+ - <strong>SyslogEventBroker</strong> is the broker name.
12165
+ - <strong>CLASS</strong> specifies the path to the event broker's Python class.
12166
+ - <strong>INCLUDE</strong> filters the events the broker will publish, such as all topics starting with "nautobot.test."
12167
+ - <strong>EXCLUDE</strong> filters out specific topics like those with "no-publish" in the name.</p>
12168
+ <div class="admonition note">
12169
+ <p class="admonition-title">Note</p>
12170
+ <p>If <strong>INCLUDE</strong> is set to ["<em>"], all topics will be published unless excluded by </em><em>EXCLUDE</em>*.</p>
12171
+ </div>
12172
+ <hr />
11533
12173
  <h3 id="exempt_view_permissions"><code>EXEMPT_VIEW_PERMISSIONS</code><a class="headerlink" href="#exempt_view_permissions" title="Permanent link">&para;</a></h3>
11534
12174
  <p><strong>Default:</strong>
11535
12175
  <code>[]</code></p>
@@ -11537,15 +12177,15 @@ installation metrics. This setting is not generally intended to be user-servicea
11537
12177
  <p>Models listed here will be viewable by all users, both authenticated and anonymous.
11538
12178
  List models in the form <code>&lt;app&gt;.&lt;model&gt;</code>.</p>
11539
12179
  <p>Example:</p>
11540
- <div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="n">EXEMPT_VIEW_PERMISSIONS</span> <span class="o">=</span> <span class="p">[</span>
11541
- <a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a> <span class="s1">&#39;dcim.location&#39;</span><span class="p">,</span>
11542
- <a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a> <span class="s1">&#39;dcim.location_type&#39;</span><span class="p">,</span>
11543
- <a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a> <span class="s1">&#39;ipam.prefix&#39;</span><span class="p">,</span>
11544
- <a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a><span class="p">]</span>
12180
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="n">EXEMPT_VIEW_PERMISSIONS</span> <span class="o">=</span> <span class="p">[</span>
12181
+ <a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a> <span class="s1">&#39;dcim.location&#39;</span><span class="p">,</span>
12182
+ <a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a> <span class="s1">&#39;dcim.location_type&#39;</span><span class="p">,</span>
12183
+ <a id="__codelineno-11-4" name="__codelineno-11-4" href="#__codelineno-11-4"></a> <span class="s1">&#39;ipam.prefix&#39;</span><span class="p">,</span>
12184
+ <a id="__codelineno-11-5" name="__codelineno-11-5" href="#__codelineno-11-5"></a><span class="p">]</span>
11545
12185
  </code></pre></div>
11546
12186
  <p>To exempt <em>all</em> models from view permission enforcement, set the following.
11547
12187
  (Note that <code>EXEMPT_VIEW_PERMISSIONS</code> must be an iterable.)</p>
11548
- <div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="n">EXEMPT_VIEW_PERMISSIONS</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;*&#39;</span><span class="p">]</span>
12188
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="n">EXEMPT_VIEW_PERMISSIONS</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;*&#39;</span><span class="p">]</span>
11549
12189
  </code></pre></div>
11550
12190
  <div class="admonition note">
11551
12191
  <p class="admonition-title">Note</p>
@@ -11599,23 +12239,23 @@ able to be created or edited.</p>
11599
12239
  </div>
11600
12240
  <p>The following example gives a user a reasonable amount of access to add devices to a single location
11601
12241
  (Building HQ in this case):</p>
11602
- <div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="p">{</span>
11603
- <a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a> <span class="s1">&#39;dcim.add_device&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;location__name__in&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;HQ&#39;</span><span class="p">],</span> <span class="s1">&#39;location__location_type__name__in&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;Building&#39;</span><span class="p">]},</span>
11604
- <a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a> <span class="s1">&#39;dcim.view_device&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;location__name__in&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;HQ&#39;</span><span class="p">],</span> <span class="s1">&#39;location__location_type__name__in&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;Building&#39;</span><span class="p">]},</span>
11605
- <a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a> <span class="s1">&#39;dcim.view_devicetype&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
11606
- <a id="__codelineno-12-5" name="__codelineno-12-5" href="#__codelineno-12-5"></a> <span class="s1">&#39;extras.view_role&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
11607
- <a id="__codelineno-12-6" name="__codelineno-12-6" href="#__codelineno-12-6"></a> <span class="s1">&#39;extras.view_status&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
11608
- <a id="__codelineno-12-7" name="__codelineno-12-7" href="#__codelineno-12-7"></a> <span class="s1">&#39;dcim.view_location&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;name__in&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;HQ&#39;</span><span class="p">],</span> <span class="s1">&#39;location_type__name__in&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;Building&#39;</span><span class="p">]},</span>
11609
- <a id="__codelineno-12-8" name="__codelineno-12-8" href="#__codelineno-12-8"></a> <span class="s1">&#39;dcim.view_manufacturer&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
11610
- <a id="__codelineno-12-9" name="__codelineno-12-9" href="#__codelineno-12-9"></a> <span class="s1">&#39;dcim.view_region&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
11611
- <a id="__codelineno-12-10" name="__codelineno-12-10" href="#__codelineno-12-10"></a> <span class="s1">&#39;dcim.view_rack&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
11612
- <a id="__codelineno-12-11" name="__codelineno-12-11" href="#__codelineno-12-11"></a> <span class="s1">&#39;dcim.view_rackgroup&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
11613
- <a id="__codelineno-12-12" name="__codelineno-12-12" href="#__codelineno-12-12"></a> <span class="s1">&#39;dcim.view_platform&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
11614
- <a id="__codelineno-12-13" name="__codelineno-12-13" href="#__codelineno-12-13"></a> <span class="s1">&#39;virtualization.view_cluster&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
11615
- <a id="__codelineno-12-14" name="__codelineno-12-14" href="#__codelineno-12-14"></a> <span class="s1">&#39;virtualization.view_clustergroup&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
11616
- <a id="__codelineno-12-15" name="__codelineno-12-15" href="#__codelineno-12-15"></a> <span class="s1">&#39;tenancy.view_tenant&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
11617
- <a id="__codelineno-12-16" name="__codelineno-12-16" href="#__codelineno-12-16"></a> <span class="s1">&#39;tenancy.view_tenantgroup&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
11618
- <a id="__codelineno-12-17" name="__codelineno-12-17" href="#__codelineno-12-17"></a><span class="p">}</span>
12242
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a><span class="p">{</span>
12243
+ <a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a> <span class="s1">&#39;dcim.add_device&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;location__name__in&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;HQ&#39;</span><span class="p">],</span> <span class="s1">&#39;location__location_type__name__in&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;Building&#39;</span><span class="p">]},</span>
12244
+ <a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a> <span class="s1">&#39;dcim.view_device&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;location__name__in&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;HQ&#39;</span><span class="p">],</span> <span class="s1">&#39;location__location_type__name__in&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;Building&#39;</span><span class="p">]},</span>
12245
+ <a id="__codelineno-13-4" name="__codelineno-13-4" href="#__codelineno-13-4"></a> <span class="s1">&#39;dcim.view_devicetype&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
12246
+ <a id="__codelineno-13-5" name="__codelineno-13-5" href="#__codelineno-13-5"></a> <span class="s1">&#39;extras.view_role&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
12247
+ <a id="__codelineno-13-6" name="__codelineno-13-6" href="#__codelineno-13-6"></a> <span class="s1">&#39;extras.view_status&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
12248
+ <a id="__codelineno-13-7" name="__codelineno-13-7" href="#__codelineno-13-7"></a> <span class="s1">&#39;dcim.view_location&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;name__in&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;HQ&#39;</span><span class="p">],</span> <span class="s1">&#39;location_type__name__in&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;Building&#39;</span><span class="p">]},</span>
12249
+ <a id="__codelineno-13-8" name="__codelineno-13-8" href="#__codelineno-13-8"></a> <span class="s1">&#39;dcim.view_manufacturer&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
12250
+ <a id="__codelineno-13-9" name="__codelineno-13-9" href="#__codelineno-13-9"></a> <span class="s1">&#39;dcim.view_region&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
12251
+ <a id="__codelineno-13-10" name="__codelineno-13-10" href="#__codelineno-13-10"></a> <span class="s1">&#39;dcim.view_rack&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
12252
+ <a id="__codelineno-13-11" name="__codelineno-13-11" href="#__codelineno-13-11"></a> <span class="s1">&#39;dcim.view_rackgroup&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
12253
+ <a id="__codelineno-13-12" name="__codelineno-13-12" href="#__codelineno-13-12"></a> <span class="s1">&#39;dcim.view_platform&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
12254
+ <a id="__codelineno-13-13" name="__codelineno-13-13" href="#__codelineno-13-13"></a> <span class="s1">&#39;virtualization.view_cluster&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
12255
+ <a id="__codelineno-13-14" name="__codelineno-13-14" href="#__codelineno-13-14"></a> <span class="s1">&#39;virtualization.view_clustergroup&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
12256
+ <a id="__codelineno-13-15" name="__codelineno-13-15" href="#__codelineno-13-15"></a> <span class="s1">&#39;tenancy.view_tenant&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
12257
+ <a id="__codelineno-13-16" name="__codelineno-13-16" href="#__codelineno-13-16"></a> <span class="s1">&#39;tenancy.view_tenantgroup&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
12258
+ <a id="__codelineno-13-17" name="__codelineno-13-17" href="#__codelineno-13-17"></a><span class="p">}</span>
11619
12259
  </code></pre></div>
11620
12260
  <p><strong>See Also:</strong></p>
11621
12261
  <ul>
@@ -11667,16 +12307,16 @@ set <code>FORCE_SCRIPT_NAME = "/nautobot/"</code>.</p>
11667
12307
  <p>Proxies should be specified by schema (HTTP and HTTPS) as per the
11668
12308
  <a href="https://2.python-requests.org/en/master/user/advanced/">Python <code>requests</code> library documentation</a>.</p>
11669
12309
  <p>Example:</p>
11670
- <div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a><span class="n">HTTP_PROXIES</span> <span class="o">=</span> <span class="p">{</span>
11671
- <a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a> <span class="s1">&#39;http&#39;</span><span class="p">:</span> <span class="s1">&#39;http://10.10.1.10:3128&#39;</span><span class="p">,</span>
11672
- <a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a> <span class="s1">&#39;https&#39;</span><span class="p">:</span> <span class="s1">&#39;http://10.10.1.10:1080&#39;</span><span class="p">,</span>
11673
- <a id="__codelineno-13-4" name="__codelineno-13-4" href="#__codelineno-13-4"></a><span class="p">}</span>
12310
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="n">HTTP_PROXIES</span> <span class="o">=</span> <span class="p">{</span>
12311
+ <a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a> <span class="s1">&#39;http&#39;</span><span class="p">:</span> <span class="s1">&#39;http://10.10.1.10:3128&#39;</span><span class="p">,</span>
12312
+ <a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a> <span class="s1">&#39;https&#39;</span><span class="p">:</span> <span class="s1">&#39;http://10.10.1.10:1080&#39;</span><span class="p">,</span>
12313
+ <a id="__codelineno-14-4" name="__codelineno-14-4" href="#__codelineno-14-4"></a><span class="p">}</span>
11674
12314
  </code></pre></div>
11675
12315
  <div class="admonition note">
11676
12316
  <p class="admonition-title">Note</p>
11677
12317
  <p>When using Git repositories within Nautobot the Python library <code>GitPython</code> needs extra proxy configuration:</p>
11678
- <div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="w"> </span>git<span class="w"> </span>config<span class="w"> </span>--global<span class="w"> </span>http.proxy<span class="w"> </span>http://192.0.2.1:3128
11679
- <a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a><span class="w"> </span>git<span class="w"> </span>config<span class="w"> </span>--global<span class="w"> </span>https.proxy<span class="w"> </span>http://192.0.2.1:3128
12318
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="w"> </span>git<span class="w"> </span>config<span class="w"> </span>--global<span class="w"> </span>http.proxy<span class="w"> </span>http://192.0.2.1:3128
12319
+ <a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a><span class="w"> </span>git<span class="w"> </span>config<span class="w"> </span>--global<span class="w"> </span>https.proxy<span class="w"> </span>http://192.0.2.1:3128
11680
12320
  </code></pre></div>
11681
12321
  </div>
11682
12322
  <hr />
@@ -11777,6 +12417,59 @@ Migrating Job stored files from one backend to another is out of scope for this
11777
12417
  <p>This directory no longer requires an <code>__init__.py</code> file.</p>
11778
12418
  </details>
11779
12419
  <hr />
12420
+ <h3 id="kubernetes_default_service_address"><code>KUBERNETES_DEFAULT_SERVICE_ADDRESS</code><a class="headerlink" href="#kubernetes_default_service_address" title="Permanent link">&para;</a></h3>
12421
+ <details class="version-added">
12422
+ <summary>Added in version 2.4.0</summary>
12423
+ </details>
12424
+ <p><strong>Default:</strong>
12425
+ <code>""</code></p>
12426
+ <p><strong>Environment Variable:</strong> <code>NAUTOBOT_KUBERNETES_DEFAULT_SERVICE_ADDRESS</code></p>
12427
+ <p>HTTP address of the Kubernetes cluster. e.g. https://kubernetes.default.svc</p>
12428
+ <hr />
12429
+ <h3 id="kubernetes_job_manifest"><code>KUBERNETES_JOB_MANIFEST</code><a class="headerlink" href="#kubernetes_job_manifest" title="Permanent link">&para;</a></h3>
12430
+ <details class="version-added">
12431
+ <summary>Added in version 2.4.0</summary>
12432
+ </details>
12433
+ <p><strong>Default:</strong>
12434
+ <code>{}</code></p>
12435
+ <p>A dictionary that contains the pod manifest used to create a job pod in the kubernetes cluster.</p>
12436
+ <hr />
12437
+ <h3 id="kubernetes_job_pod_name"><code>KUBERNETES_JOB_POD_NAME</code><a class="headerlink" href="#kubernetes_job_pod_name" title="Permanent link">&para;</a></h3>
12438
+ <details class="version-added">
12439
+ <summary>Added in version 2.4.0</summary>
12440
+ </details>
12441
+ <p><strong>Default:</strong>
12442
+ <code>""</code></p>
12443
+ <p><strong>Environment Variable:</strong> <code>NAUTOBOT_KUBERNETES_JOB_POD_NAME</code></p>
12444
+ <p>Name of the Kubernetes pod.</p>
12445
+ <hr />
12446
+ <h3 id="kubernetes_job_pod_namespace"><code>KUBERNETES_JOB_POD_NAMESPACE</code><a class="headerlink" href="#kubernetes_job_pod_namespace" title="Permanent link">&para;</a></h3>
12447
+ <details class="version-added">
12448
+ <summary>Added in version 2.4.0</summary>
12449
+ </details>
12450
+ <p><strong>Default:</strong>
12451
+ <code>""</code></p>
12452
+ <p><strong>Environment Variable:</strong> <code>NAUTOBOT_KUBERNETES_JOB_POD_NAMESPACE</code></p>
12453
+ <p>Name of the namespace that the Kubernetes pod is created in.</p>
12454
+ <hr />
12455
+ <h3 id="kubernetes_ssl_ca_cert_path"><code>KUBERNETES_SSL_CA_CERT_PATH</code><a class="headerlink" href="#kubernetes_ssl_ca_cert_path" title="Permanent link">&para;</a></h3>
12456
+ <details class="version-added">
12457
+ <summary>Added in version 2.4.0</summary>
12458
+ </details>
12459
+ <p><strong>Default:</strong>
12460
+ <code>"/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"</code></p>
12461
+ <p><strong>Environment Variable:</strong> <code>NAUTOBOT_KUBERNETES_SSL_CA_CERT_PATH</code></p>
12462
+ <p>File path to the SSL CA CERT used for authentication to create the job and job pod.</p>
12463
+ <hr />
12464
+ <h3 id="kubernetes_token_path"><code>KUBERNETES_TOKEN_PATH</code><a class="headerlink" href="#kubernetes_token_path" title="Permanent link">&para;</a></h3>
12465
+ <details class="version-added">
12466
+ <summary>Added in version 2.4.0</summary>
12467
+ </details>
12468
+ <p><strong>Default:</strong>
12469
+ <code>"/var/run/secrets/kubernetes.io/serviceaccount/token"</code></p>
12470
+ <p><strong>Environment Variable:</strong> <code>NAUTOBOT_KUBERNETES_TOKEN_PATH</code></p>
12471
+ <p>File path to the Bearer token used for authentication to create the job and job pod.</p>
12472
+ <hr />
11780
12473
  <h3 id="location_name_as_natural_key"><code>LOCATION_NAME_AS_NATURAL_KEY</code><a class="headerlink" href="#location_name_as_natural_key" title="Permanent link">&para;</a></h3>
11781
12474
  <details class="version-added">
11782
12475
  <summary>Added in version 2.0.0</summary>
@@ -11813,37 +12506,37 @@ which can be useful when vetting various Nautobot Apps for future-proofness agai
11813
12506
  <hr />
11814
12507
  <h3 id="logging"><code>LOGGING</code><a class="headerlink" href="#logging" title="Permanent link">&para;</a></h3>
11815
12508
  <p><strong>Default:</strong></p>
11816
- <div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="p">{</span>
11817
- <a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a> <span class="s1">&#39;version&#39;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
11818
- <a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a> <span class="s1">&#39;disable_existing_loggers&#39;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
11819
- <a id="__codelineno-15-4" name="__codelineno-15-4" href="#__codelineno-15-4"></a> <span class="s1">&#39;formatters&#39;</span><span class="p">:</span> <span class="p">{</span>
11820
- <a id="__codelineno-15-5" name="__codelineno-15-5" href="#__codelineno-15-5"></a> <span class="s1">&#39;normal&#39;</span><span class="p">:</span> <span class="p">{</span>
11821
- <a id="__codelineno-15-6" name="__codelineno-15-6" href="#__codelineno-15-6"></a> <span class="s1">&#39;datefmt&#39;</span><span class="p">:</span> <span class="s1">&#39;%H:%M:%S&#39;</span><span class="p">,</span>
11822
- <a id="__codelineno-15-7" name="__codelineno-15-7" href="#__codelineno-15-7"></a> <span class="s1">&#39;format&#39;</span><span class="p">:</span> <span class="s1">&#39;</span><span class="si">%(asctime)s</span><span class="s1">.</span><span class="si">%(msecs)03d</span><span class="s1"> </span><span class="si">%(levelname)-7s</span><span class="s1"> </span><span class="si">%(name)s</span><span class="s1"> :</span><span class="se">\n</span><span class="s1"> </span><span class="si">%(message)s</span><span class="s1">&#39;</span><span class="p">,</span>
11823
- <a id="__codelineno-15-8" name="__codelineno-15-8" href="#__codelineno-15-8"></a> <span class="p">},</span>
11824
- <a id="__codelineno-15-9" name="__codelineno-15-9" href="#__codelineno-15-9"></a> <span class="s1">&#39;verbose&#39;</span><span class="p">:</span> <span class="p">{</span>
11825
- <a id="__codelineno-15-10" name="__codelineno-15-10" href="#__codelineno-15-10"></a> <span class="s1">&#39;datefmt&#39;</span><span class="p">:</span> <span class="s1">&#39;%H:%M:%S&#39;</span><span class="p">,</span>
11826
- <a id="__codelineno-15-11" name="__codelineno-15-11" href="#__codelineno-15-11"></a> <span class="s1">&#39;format&#39;</span><span class="p">:</span> <span class="s1">&#39;</span><span class="si">%(asctime)s</span><span class="s1">.</span><span class="si">%(msecs)03d</span><span class="s1"> </span><span class="si">%(levelname)-7s</span><span class="s1"> </span><span class="si">%(name)-20s</span><span class="s1"> </span><span class="si">%(filename)-15s</span><span class="s1"> &#39;</span>
11827
- <a id="__codelineno-15-12" name="__codelineno-15-12" href="#__codelineno-15-12"></a> <span class="s1">&#39;</span><span class="si">%(funcName)30s</span><span class="s1">() :</span><span class="se">\n</span><span class="s1"> </span><span class="si">%(message)s</span><span class="s1">&#39;</span><span class="p">,</span>
11828
- <a id="__codelineno-15-13" name="__codelineno-15-13" href="#__codelineno-15-13"></a> <span class="p">},</span>
11829
- <a id="__codelineno-15-14" name="__codelineno-15-14" href="#__codelineno-15-14"></a> <span class="p">},</span>
11830
- <a id="__codelineno-15-15" name="__codelineno-15-15" href="#__codelineno-15-15"></a> <span class="s1">&#39;handlers&#39;</span><span class="p">:</span> <span class="p">{</span>
11831
- <a id="__codelineno-15-16" name="__codelineno-15-16" href="#__codelineno-15-16"></a> <span class="s1">&#39;normal_console&#39;</span><span class="p">:</span> <span class="p">{</span>
11832
- <a id="__codelineno-15-17" name="__codelineno-15-17" href="#__codelineno-15-17"></a> <span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;logging.StreamHandler&#39;</span><span class="p">,</span>
11833
- <a id="__codelineno-15-18" name="__codelineno-15-18" href="#__codelineno-15-18"></a> <span class="s1">&#39;formatter&#39;</span><span class="p">:</span> <span class="s1">&#39;normal&#39;</span><span class="p">,</span>
11834
- <a id="__codelineno-15-19" name="__codelineno-15-19" href="#__codelineno-15-19"></a> <span class="s1">&#39;level&#39;</span><span class="p">:</span> <span class="s1">&#39;INFO&#39;</span><span class="p">,</span>
11835
- <a id="__codelineno-15-20" name="__codelineno-15-20" href="#__codelineno-15-20"></a> <span class="p">},</span>
11836
- <a id="__codelineno-15-21" name="__codelineno-15-21" href="#__codelineno-15-21"></a> <span class="s1">&#39;verbose_console&#39;</span><span class="p">:</span> <span class="p">{</span>
11837
- <a id="__codelineno-15-22" name="__codelineno-15-22" href="#__codelineno-15-22"></a> <span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;logging.StreamHandler&#39;</span><span class="p">,</span>
11838
- <a id="__codelineno-15-23" name="__codelineno-15-23" href="#__codelineno-15-23"></a> <span class="s1">&#39;formatter&#39;</span><span class="p">:</span> <span class="s1">&#39;verbose&#39;</span><span class="p">,</span>
11839
- <a id="__codelineno-15-24" name="__codelineno-15-24" href="#__codelineno-15-24"></a> <span class="s1">&#39;level&#39;</span><span class="p">:</span> <span class="s1">&#39;DEBUG&#39;</span><span class="p">,</span>
11840
- <a id="__codelineno-15-25" name="__codelineno-15-25" href="#__codelineno-15-25"></a> <span class="p">},</span>
11841
- <a id="__codelineno-15-26" name="__codelineno-15-26" href="#__codelineno-15-26"></a> <span class="p">},</span>
11842
- <a id="__codelineno-15-27" name="__codelineno-15-27" href="#__codelineno-15-27"></a> <span class="s1">&#39;loggers&#39;</span><span class="p">:</span> <span class="p">{</span>
11843
- <a id="__codelineno-15-28" name="__codelineno-15-28" href="#__codelineno-15-28"></a> <span class="s1">&#39;django&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;handlers&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;normal_console&#39;</span><span class="p">],</span> <span class="s1">&#39;level&#39;</span><span class="p">:</span> <span class="s1">&#39;INFO&#39;</span><span class="p">},</span>
11844
- <a id="__codelineno-15-29" name="__codelineno-15-29" href="#__codelineno-15-29"></a> <span class="s1">&#39;nautobot&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;handlers&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;normal_console&#39;</span><span class="p">],</span> <span class="s1">&#39;level&#39;</span><span class="p">:</span> <span class="s1">&#39;INFO&#39;</span><span class="p">},</span>
11845
- <a id="__codelineno-15-30" name="__codelineno-15-30" href="#__codelineno-15-30"></a> <span class="p">},</span>
11846
- <a id="__codelineno-15-31" name="__codelineno-15-31" href="#__codelineno-15-31"></a><span class="p">}</span>
12509
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="p">{</span>
12510
+ <a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a> <span class="s1">&#39;version&#39;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
12511
+ <a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a> <span class="s1">&#39;disable_existing_loggers&#39;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
12512
+ <a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a> <span class="s1">&#39;formatters&#39;</span><span class="p">:</span> <span class="p">{</span>
12513
+ <a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a> <span class="s1">&#39;normal&#39;</span><span class="p">:</span> <span class="p">{</span>
12514
+ <a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a> <span class="s1">&#39;datefmt&#39;</span><span class="p">:</span> <span class="s1">&#39;%H:%M:%S&#39;</span><span class="p">,</span>
12515
+ <a id="__codelineno-16-7" name="__codelineno-16-7" href="#__codelineno-16-7"></a> <span class="s1">&#39;format&#39;</span><span class="p">:</span> <span class="s1">&#39;</span><span class="si">%(asctime)s</span><span class="s1">.</span><span class="si">%(msecs)03d</span><span class="s1"> </span><span class="si">%(levelname)-7s</span><span class="s1"> </span><span class="si">%(name)s</span><span class="s1"> :</span><span class="se">\n</span><span class="s1"> </span><span class="si">%(message)s</span><span class="s1">&#39;</span><span class="p">,</span>
12516
+ <a id="__codelineno-16-8" name="__codelineno-16-8" href="#__codelineno-16-8"></a> <span class="p">},</span>
12517
+ <a id="__codelineno-16-9" name="__codelineno-16-9" href="#__codelineno-16-9"></a> <span class="s1">&#39;verbose&#39;</span><span class="p">:</span> <span class="p">{</span>
12518
+ <a id="__codelineno-16-10" name="__codelineno-16-10" href="#__codelineno-16-10"></a> <span class="s1">&#39;datefmt&#39;</span><span class="p">:</span> <span class="s1">&#39;%H:%M:%S&#39;</span><span class="p">,</span>
12519
+ <a id="__codelineno-16-11" name="__codelineno-16-11" href="#__codelineno-16-11"></a> <span class="s1">&#39;format&#39;</span><span class="p">:</span> <span class="s1">&#39;</span><span class="si">%(asctime)s</span><span class="s1">.</span><span class="si">%(msecs)03d</span><span class="s1"> </span><span class="si">%(levelname)-7s</span><span class="s1"> </span><span class="si">%(name)-20s</span><span class="s1"> </span><span class="si">%(filename)-15s</span><span class="s1"> &#39;</span>
12520
+ <a id="__codelineno-16-12" name="__codelineno-16-12" href="#__codelineno-16-12"></a> <span class="s1">&#39;</span><span class="si">%(funcName)30s</span><span class="s1">() :</span><span class="se">\n</span><span class="s1"> </span><span class="si">%(message)s</span><span class="s1">&#39;</span><span class="p">,</span>
12521
+ <a id="__codelineno-16-13" name="__codelineno-16-13" href="#__codelineno-16-13"></a> <span class="p">},</span>
12522
+ <a id="__codelineno-16-14" name="__codelineno-16-14" href="#__codelineno-16-14"></a> <span class="p">},</span>
12523
+ <a id="__codelineno-16-15" name="__codelineno-16-15" href="#__codelineno-16-15"></a> <span class="s1">&#39;handlers&#39;</span><span class="p">:</span> <span class="p">{</span>
12524
+ <a id="__codelineno-16-16" name="__codelineno-16-16" href="#__codelineno-16-16"></a> <span class="s1">&#39;normal_console&#39;</span><span class="p">:</span> <span class="p">{</span>
12525
+ <a id="__codelineno-16-17" name="__codelineno-16-17" href="#__codelineno-16-17"></a> <span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;logging.StreamHandler&#39;</span><span class="p">,</span>
12526
+ <a id="__codelineno-16-18" name="__codelineno-16-18" href="#__codelineno-16-18"></a> <span class="s1">&#39;formatter&#39;</span><span class="p">:</span> <span class="s1">&#39;normal&#39;</span><span class="p">,</span>
12527
+ <a id="__codelineno-16-19" name="__codelineno-16-19" href="#__codelineno-16-19"></a> <span class="s1">&#39;level&#39;</span><span class="p">:</span> <span class="s1">&#39;INFO&#39;</span><span class="p">,</span>
12528
+ <a id="__codelineno-16-20" name="__codelineno-16-20" href="#__codelineno-16-20"></a> <span class="p">},</span>
12529
+ <a id="__codelineno-16-21" name="__codelineno-16-21" href="#__codelineno-16-21"></a> <span class="s1">&#39;verbose_console&#39;</span><span class="p">:</span> <span class="p">{</span>
12530
+ <a id="__codelineno-16-22" name="__codelineno-16-22" href="#__codelineno-16-22"></a> <span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;logging.StreamHandler&#39;</span><span class="p">,</span>
12531
+ <a id="__codelineno-16-23" name="__codelineno-16-23" href="#__codelineno-16-23"></a> <span class="s1">&#39;formatter&#39;</span><span class="p">:</span> <span class="s1">&#39;verbose&#39;</span><span class="p">,</span>
12532
+ <a id="__codelineno-16-24" name="__codelineno-16-24" href="#__codelineno-16-24"></a> <span class="s1">&#39;level&#39;</span><span class="p">:</span> <span class="s1">&#39;DEBUG&#39;</span><span class="p">,</span>
12533
+ <a id="__codelineno-16-25" name="__codelineno-16-25" href="#__codelineno-16-25"></a> <span class="p">},</span>
12534
+ <a id="__codelineno-16-26" name="__codelineno-16-26" href="#__codelineno-16-26"></a> <span class="p">},</span>
12535
+ <a id="__codelineno-16-27" name="__codelineno-16-27" href="#__codelineno-16-27"></a> <span class="s1">&#39;loggers&#39;</span><span class="p">:</span> <span class="p">{</span>
12536
+ <a id="__codelineno-16-28" name="__codelineno-16-28" href="#__codelineno-16-28"></a> <span class="s1">&#39;django&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;handlers&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;normal_console&#39;</span><span class="p">],</span> <span class="s1">&#39;level&#39;</span><span class="p">:</span> <span class="s1">&#39;INFO&#39;</span><span class="p">},</span>
12537
+ <a id="__codelineno-16-29" name="__codelineno-16-29" href="#__codelineno-16-29"></a> <span class="s1">&#39;nautobot&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;handlers&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;normal_console&#39;</span><span class="p">],</span> <span class="s1">&#39;level&#39;</span><span class="p">:</span> <span class="s1">&#39;INFO&#39;</span><span class="p">},</span>
12538
+ <a id="__codelineno-16-30" name="__codelineno-16-30" href="#__codelineno-16-30"></a> <span class="p">},</span>
12539
+ <a id="__codelineno-16-31" name="__codelineno-16-31" href="#__codelineno-16-31"></a><span class="p">}</span>
11847
12540
  </code></pre></div>
11848
12541
  <p>A dictionary containing the configuration settings for logging in Nautobot.</p>
11849
12542
  <p>The default translates to:</p>
@@ -11859,14 +12552,14 @@ production environments that expect one line per log message. Fortunately, the D
11859
12552
  extensive customization of logging format and destination.</p>
11860
12553
  <p>Below is an example configuration extension which will additionally write all INFO and higher messages to
11861
12554
  a local file:</p>
11862
- <div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="n">LOGGING</span><span class="p">[</span><span class="s2">&quot;handlers&quot;</span><span class="p">][</span><span class="s2">&quot;file&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
11863
- <a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a> <span class="s2">&quot;level&quot;</span><span class="p">:</span> <span class="s2">&quot;INFO&quot;</span><span class="p">,</span>
11864
- <a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a> <span class="s2">&quot;class&quot;</span><span class="p">:</span> <span class="s2">&quot;logging.FileHandler&quot;</span><span class="p">,</span>
11865
- <a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a> <span class="s2">&quot;filename&quot;</span><span class="p">:</span> <span class="s2">&quot;/var/log/nautobot.log&quot;</span><span class="p">,</span>
11866
- <a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a> <span class="s2">&quot;formatter&quot;</span><span class="p">:</span> <span class="s2">&quot;normal&quot;</span><span class="p">,</span>
11867
- <a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a><span class="p">}</span>
11868
- <a id="__codelineno-16-7" name="__codelineno-16-7" href="#__codelineno-16-7"></a><span class="n">LOGGING</span><span class="p">[</span><span class="s2">&quot;loggers&quot;</span><span class="p">][</span><span class="s2">&quot;django&quot;</span><span class="p">][</span><span class="s2">&quot;handlers&quot;</span><span class="p">]</span> <span class="o">+=</span> <span class="p">[</span><span class="s2">&quot;file&quot;</span><span class="p">]</span>
11869
- <a id="__codelineno-16-8" name="__codelineno-16-8" href="#__codelineno-16-8"></a><span class="n">LOGGING</span><span class="p">[</span><span class="s2">&quot;loggers&quot;</span><span class="p">][</span><span class="s2">&quot;nautobot&quot;</span><span class="p">][</span><span class="s2">&quot;handlers&quot;</span><span class="p">]</span> <span class="o">+=</span> <span class="p">[</span><span class="s2">&quot;file&quot;</span><span class="p">]</span>
12555
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a><span class="n">LOGGING</span><span class="p">[</span><span class="s2">&quot;handlers&quot;</span><span class="p">][</span><span class="s2">&quot;file&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
12556
+ <a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a> <span class="s2">&quot;level&quot;</span><span class="p">:</span> <span class="s2">&quot;INFO&quot;</span><span class="p">,</span>
12557
+ <a id="__codelineno-17-3" name="__codelineno-17-3" href="#__codelineno-17-3"></a> <span class="s2">&quot;class&quot;</span><span class="p">:</span> <span class="s2">&quot;logging.FileHandler&quot;</span><span class="p">,</span>
12558
+ <a id="__codelineno-17-4" name="__codelineno-17-4" href="#__codelineno-17-4"></a> <span class="s2">&quot;filename&quot;</span><span class="p">:</span> <span class="s2">&quot;/var/log/nautobot.log&quot;</span><span class="p">,</span>
12559
+ <a id="__codelineno-17-5" name="__codelineno-17-5" href="#__codelineno-17-5"></a> <span class="s2">&quot;formatter&quot;</span><span class="p">:</span> <span class="s2">&quot;normal&quot;</span><span class="p">,</span>
12560
+ <a id="__codelineno-17-6" name="__codelineno-17-6" href="#__codelineno-17-6"></a><span class="p">}</span>
12561
+ <a id="__codelineno-17-7" name="__codelineno-17-7" href="#__codelineno-17-7"></a><span class="n">LOGGING</span><span class="p">[</span><span class="s2">&quot;loggers&quot;</span><span class="p">][</span><span class="s2">&quot;django&quot;</span><span class="p">][</span><span class="s2">&quot;handlers&quot;</span><span class="p">]</span> <span class="o">+=</span> <span class="p">[</span><span class="s2">&quot;file&quot;</span><span class="p">]</span>
12562
+ <a id="__codelineno-17-8" name="__codelineno-17-8" href="#__codelineno-17-8"></a><span class="n">LOGGING</span><span class="p">[</span><span class="s2">&quot;loggers&quot;</span><span class="p">][</span><span class="s2">&quot;nautobot&quot;</span><span class="p">][</span><span class="s2">&quot;handlers&quot;</span><span class="p">]</span> <span class="o">+=</span> <span class="p">[</span><span class="s2">&quot;file&quot;</span><span class="p">]</span>
11870
12563
  </code></pre></div>
11871
12564
  <h4 id="available-loggers">Available Loggers<a class="headerlink" href="#available-loggers" title="Permanent link">&para;</a></h4>
11872
12565
  <ul>
@@ -11880,17 +12573,17 @@ a local file:</p>
11880
12573
  </ul>
11881
12574
  <h4 id="structlog-configuration">Structlog Configuration<a class="headerlink" href="#structlog-configuration" title="Permanent link">&para;</a></h4>
11882
12575
  <p>As of Nautobot 2.3, <a href="https://django-structlog.readthedocs.io/en/latest/">django-structlog</a> is added as a core dependency. To use structlog, you can add the following code to your <code>nautobot_config.py</code> file:</p>
11883
- <div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a><span class="kn">from</span> <span class="nn">nautobot.core.settings_funcs</span> <span class="kn">import</span> <span class="n">setup_structlog_logging</span>
11884
- <a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a>
11885
- <a id="__codelineno-17-3" name="__codelineno-17-3" href="#__codelineno-17-3"></a><span class="n">setup_structlog_logging</span><span class="p">(</span>
11886
- <a id="__codelineno-17-4" name="__codelineno-17-4" href="#__codelineno-17-4"></a> <span class="n">LOGGING</span><span class="p">,</span>
11887
- <a id="__codelineno-17-5" name="__codelineno-17-5" href="#__codelineno-17-5"></a> <span class="n">INSTALLED_APPS</span><span class="p">,</span>
11888
- <a id="__codelineno-17-6" name="__codelineno-17-6" href="#__codelineno-17-6"></a> <span class="n">MIDDLEWARE</span><span class="p">,</span>
11889
- <a id="__codelineno-17-7" name="__codelineno-17-7" href="#__codelineno-17-7"></a> <span class="n">log_level</span><span class="o">=</span><span class="s2">&quot;DEBUG&quot;</span> <span class="k">if</span> <span class="n">DEBUG</span> <span class="k">else</span> <span class="s2">&quot;INFO&quot;</span><span class="p">,</span>
11890
- <a id="__codelineno-17-8" name="__codelineno-17-8" href="#__codelineno-17-8"></a> <span class="n">root_level</span><span class="o">=</span><span class="s2">&quot;INFO&quot;</span><span class="p">,</span>
11891
- <a id="__codelineno-17-9" name="__codelineno-17-9" href="#__codelineno-17-9"></a> <span class="n">plain_format</span><span class="o">=</span><span class="nb">bool</span><span class="p">(</span><span class="n">DEBUG</span><span class="p">),</span> <span class="c1"># Set to True to use human-readable structlog format over JSON</span>
11892
- <a id="__codelineno-17-10" name="__codelineno-17-10" href="#__codelineno-17-10"></a> <span class="n">debug_db</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="c1"># Set to True to log all database queries</span>
11893
- <a id="__codelineno-17-11" name="__codelineno-17-11" href="#__codelineno-17-11"></a><span class="p">)</span>
12576
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a><span class="kn">from</span> <span class="nn">nautobot.core.settings_funcs</span> <span class="kn">import</span> <span class="n">setup_structlog_logging</span>
12577
+ <a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a>
12578
+ <a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a><span class="n">setup_structlog_logging</span><span class="p">(</span>
12579
+ <a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a> <span class="n">LOGGING</span><span class="p">,</span>
12580
+ <a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a> <span class="n">INSTALLED_APPS</span><span class="p">,</span>
12581
+ <a id="__codelineno-18-6" name="__codelineno-18-6" href="#__codelineno-18-6"></a> <span class="n">MIDDLEWARE</span><span class="p">,</span>
12582
+ <a id="__codelineno-18-7" name="__codelineno-18-7" href="#__codelineno-18-7"></a> <span class="n">log_level</span><span class="o">=</span><span class="s2">&quot;DEBUG&quot;</span> <span class="k">if</span> <span class="n">DEBUG</span> <span class="k">else</span> <span class="s2">&quot;INFO&quot;</span><span class="p">,</span>
12583
+ <a id="__codelineno-18-8" name="__codelineno-18-8" href="#__codelineno-18-8"></a> <span class="n">root_level</span><span class="o">=</span><span class="s2">&quot;INFO&quot;</span><span class="p">,</span>
12584
+ <a id="__codelineno-18-9" name="__codelineno-18-9" href="#__codelineno-18-9"></a> <span class="n">plain_format</span><span class="o">=</span><span class="nb">bool</span><span class="p">(</span><span class="n">DEBUG</span><span class="p">),</span> <span class="c1"># Set to True to use human-readable structlog format over JSON</span>
12585
+ <a id="__codelineno-18-10" name="__codelineno-18-10" href="#__codelineno-18-10"></a> <span class="n">debug_db</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="c1"># Set to True to log all database queries</span>
12586
+ <a id="__codelineno-18-11" name="__codelineno-18-11" href="#__codelineno-18-11"></a><span class="p">)</span>
11894
12587
  </code></pre></div>
11895
12588
  <p>Calling this function disables logging if running tests, otherwise:</p>
11896
12589
  <ul>
@@ -12007,20 +12700,20 @@ to avoid this.</p>
12007
12700
  <code>{}</code></p>
12008
12701
  <p>A dictionary of optional arguments to pass to NAPALM when instantiating a network driver.</p>
12009
12702
  <p>Example:</p>
12010
- <div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a><span class="n">NAPALM_ARGS</span> <span class="o">=</span> <span class="p">{</span>
12011
- <a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a> <span class="s1">&#39;api_key&#39;</span><span class="p">:</span> <span class="s1">&#39;472071a93b60a1bd1fafb401d9f8ef41&#39;</span><span class="p">,</span>
12012
- <a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a> <span class="s1">&#39;port&#39;</span><span class="p">:</span> <span class="mi">2222</span><span class="p">,</span>
12013
- <a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a><span class="p">}</span>
12703
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a><span class="n">NAPALM_ARGS</span> <span class="o">=</span> <span class="p">{</span>
12704
+ <a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a> <span class="s1">&#39;api_key&#39;</span><span class="p">:</span> <span class="s1">&#39;472071a93b60a1bd1fafb401d9f8ef41&#39;</span><span class="p">,</span>
12705
+ <a id="__codelineno-19-3" name="__codelineno-19-3" href="#__codelineno-19-3"></a> <span class="s1">&#39;port&#39;</span><span class="p">:</span> <span class="mi">2222</span><span class="p">,</span>
12706
+ <a id="__codelineno-19-4" name="__codelineno-19-4" href="#__codelineno-19-4"></a><span class="p">}</span>
12014
12707
  </code></pre></div>
12015
12708
  <p>Some platforms (e.g. Cisco IOS) require an enable password to be passed in addition to the normal password.
12016
12709
  If desired, you can use the configured <code>NAPALM_PASSWORD</code> as the value for this argument:</p>
12017
- <div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a><span class="n">NAPALM_USERNAME</span> <span class="o">=</span> <span class="s1">&#39;username&#39;</span>
12018
- <a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a><span class="n">NAPALM_PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;MySecretPassword&#39;</span>
12019
- <a id="__codelineno-19-3" name="__codelineno-19-3" href="#__codelineno-19-3"></a><span class="n">NAPALM_ARGS</span> <span class="o">=</span> <span class="p">{</span>
12020
- <a id="__codelineno-19-4" name="__codelineno-19-4" href="#__codelineno-19-4"></a> <span class="s1">&#39;secret&#39;</span><span class="p">:</span> <span class="n">NAPALM_PASSWORD</span><span class="p">,</span> <span class="c1"># ios and nxos_ssh</span>
12021
- <a id="__codelineno-19-5" name="__codelineno-19-5" href="#__codelineno-19-5"></a> <span class="s1">&#39;enable_password&#39;</span><span class="p">:</span> <span class="n">NAPALM_PASSWORD</span><span class="p">,</span> <span class="c1"># eos</span>
12022
- <a id="__codelineno-19-6" name="__codelineno-19-6" href="#__codelineno-19-6"></a> <span class="c1"># Include any additional args here</span>
12023
- <a id="__codelineno-19-7" name="__codelineno-19-7" href="#__codelineno-19-7"></a><span class="p">}</span>
12710
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a><span class="n">NAPALM_USERNAME</span> <span class="o">=</span> <span class="s1">&#39;username&#39;</span>
12711
+ <a id="__codelineno-20-2" name="__codelineno-20-2" href="#__codelineno-20-2"></a><span class="n">NAPALM_PASSWORD</span> <span class="o">=</span> <span class="s1">&#39;MySecretPassword&#39;</span>
12712
+ <a id="__codelineno-20-3" name="__codelineno-20-3" href="#__codelineno-20-3"></a><span class="n">NAPALM_ARGS</span> <span class="o">=</span> <span class="p">{</span>
12713
+ <a id="__codelineno-20-4" name="__codelineno-20-4" href="#__codelineno-20-4"></a> <span class="s1">&#39;secret&#39;</span><span class="p">:</span> <span class="n">NAPALM_PASSWORD</span><span class="p">,</span> <span class="c1"># ios and nxos_ssh</span>
12714
+ <a id="__codelineno-20-5" name="__codelineno-20-5" href="#__codelineno-20-5"></a> <span class="s1">&#39;enable_password&#39;</span><span class="p">:</span> <span class="n">NAPALM_PASSWORD</span><span class="p">,</span> <span class="c1"># eos</span>
12715
+ <a id="__codelineno-20-6" name="__codelineno-20-6" href="#__codelineno-20-6"></a> <span class="c1"># Include any additional args here</span>
12716
+ <a id="__codelineno-20-7" name="__codelineno-20-7" href="#__codelineno-20-7"></a><span class="p">}</span>
12024
12717
  </code></pre></div>
12025
12718
  <div class="admonition note">
12026
12719
  <p class="admonition-title">Note</p>
@@ -12099,10 +12792,10 @@ If you need to customize this setting, please always set the <code>NAUTOBOT_ROOT
12099
12792
  <p>An optional dictionary to extend or override the default <code>Platform.network_driver</code> translations provided by <a href="https://netutils.readthedocs.io/en/latest/user/lib_use_cases_lib_mapper/">netutils</a>.</p>
12100
12793
  <p>For example, to add support for a custom <code>Platform.network_driver</code> value of <code>"my_network_driver"</code>
12101
12794
  for Netmiko and PyATS drivers:</p>
12102
- <div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a><span class="n">NETWORK_DRIVERS</span> <span class="o">=</span> <span class="p">{</span>
12103
- <a id="__codelineno-20-2" name="__codelineno-20-2" href="#__codelineno-20-2"></a> <span class="s1">&#39;netmiko&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;my_network_driver&#39;</span><span class="p">:</span> <span class="s1">&#39;cisco_ios&#39;</span><span class="p">},</span>
12104
- <a id="__codelineno-20-3" name="__codelineno-20-3" href="#__codelineno-20-3"></a> <span class="s1">&#39;pyats&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;my_network_driver&#39;</span><span class="p">:</span> <span class="s1">&#39;iosxe&#39;</span><span class="p">},</span>
12105
- <a id="__codelineno-20-4" name="__codelineno-20-4" href="#__codelineno-20-4"></a><span class="p">}</span>
12795
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a><span class="n">NETWORK_DRIVERS</span> <span class="o">=</span> <span class="p">{</span>
12796
+ <a id="__codelineno-21-2" name="__codelineno-21-2" href="#__codelineno-21-2"></a> <span class="s1">&#39;netmiko&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;my_network_driver&#39;</span><span class="p">:</span> <span class="s1">&#39;cisco_ios&#39;</span><span class="p">},</span>
12797
+ <a id="__codelineno-21-3" name="__codelineno-21-3" href="#__codelineno-21-3"></a> <span class="s1">&#39;pyats&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;my_network_driver&#39;</span><span class="p">:</span> <span class="s1">&#39;iosxe&#39;</span><span class="p">},</span>
12798
+ <a id="__codelineno-21-4" name="__codelineno-21-4" href="#__codelineno-21-4"></a><span class="p">}</span>
12106
12799
  </code></pre></div>
12107
12800
  <p>The default top-level keys are <code>ansible</code>, <code>hier_config</code>, <code>napalm</code>, <code>netmiko</code>, <code>netutils_parser</code>,
12108
12801
  <code>ntc_templates</code>, <code>pyats</code>, <code>pyntc</code>, and <code>scrapli</code>, but you can also add additional keys if you have
@@ -12112,6 +12805,20 @@ an alternative network driver that you want your Nautobot instance to include.</
12112
12805
  <p>If you do not set a value for this setting in your <code>nautobot_config.py</code>, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in <code>nautobot_config.py</code>, it will override any dynamically configured value.</p>
12113
12806
  </div>
12114
12807
  <hr />
12808
+ <h3 id="ntc_support_contract_expiration_date"><code>NTC_SUPPORT_CONTRACT_EXPIRATION_DATE</code><a class="headerlink" href="#ntc_support_contract_expiration_date" title="Permanent link">&para;</a></h3>
12809
+ <details class="version-added">
12810
+ <summary>Added in version 2.4.0</summary>
12811
+ </details>
12812
+ <p><strong>Default:</strong>
12813
+ <code>""</code></p>
12814
+ <p><strong>Environment Variable:</strong> <code>NAUTOBOT_NTC_SUPPORT_CONTRACT_EXPIRATION_DATE</code></p>
12815
+ <p>Expiration date for an active Nautobot support contract with Network to Code. This value is displayed in the "About" page to provide additional support information.</p>
12816
+ <p>If specified as an environment variable, use ISO 8601 (<code>YYYY-MM-DD</code>) format.</p>
12817
+ <div class="admonition tip">
12818
+ <p class="admonition-title">Tip</p>
12819
+ <p>If you do not set a value for this setting in your <code>nautobot_config.py</code>, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in <code>nautobot_config.py</code>, it will override any dynamically configured value.</p>
12820
+ </div>
12821
+ <hr />
12115
12822
  <h3 id="paginate_count"><code>PAGINATE_COUNT</code><a class="headerlink" href="#paginate_count" title="Permanent link">&para;</a></h3>
12116
12823
  <p><strong>Default:</strong>
12117
12824
  <code>50</code></p>
@@ -12151,15 +12858,15 @@ absolutely no guarantees about the integrity or security of your installation wi
12151
12858
  <p>It is defined as a dictionary, with each key using the name of an installed App.
12152
12859
  The specific parameters supported are unique to each App; reference the App's documentation to determine
12153
12860
  the supported parameters. An example configuration is shown below:</p>
12154
- <div class="highlight"><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a><span class="n">PLUGINS_CONFIG</span> <span class="o">=</span> <span class="p">{</span>
12155
- <a id="__codelineno-21-2" name="__codelineno-21-2" href="#__codelineno-21-2"></a> <span class="s1">&#39;app1&#39;</span><span class="p">:</span> <span class="p">{</span>
12156
- <a id="__codelineno-21-3" name="__codelineno-21-3" href="#__codelineno-21-3"></a> <span class="s1">&#39;foo&#39;</span><span class="p">:</span> <span class="mi">123</span><span class="p">,</span>
12157
- <a id="__codelineno-21-4" name="__codelineno-21-4" href="#__codelineno-21-4"></a> <span class="s1">&#39;bar&#39;</span><span class="p">:</span> <span class="kc">True</span>
12158
- <a id="__codelineno-21-5" name="__codelineno-21-5" href="#__codelineno-21-5"></a> <span class="p">},</span>
12159
- <a id="__codelineno-21-6" name="__codelineno-21-6" href="#__codelineno-21-6"></a> <span class="s1">&#39;app2&#39;</span><span class="p">:</span> <span class="p">{</span>
12160
- <a id="__codelineno-21-7" name="__codelineno-21-7" href="#__codelineno-21-7"></a> <span class="s1">&#39;foo&#39;</span><span class="p">:</span> <span class="mi">456</span><span class="p">,</span>
12161
- <a id="__codelineno-21-8" name="__codelineno-21-8" href="#__codelineno-21-8"></a> <span class="p">},</span>
12162
- <a id="__codelineno-21-9" name="__codelineno-21-9" href="#__codelineno-21-9"></a><span class="p">}</span>
12861
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a><span class="n">PLUGINS_CONFIG</span> <span class="o">=</span> <span class="p">{</span>
12862
+ <a id="__codelineno-22-2" name="__codelineno-22-2" href="#__codelineno-22-2"></a> <span class="s1">&#39;app1&#39;</span><span class="p">:</span> <span class="p">{</span>
12863
+ <a id="__codelineno-22-3" name="__codelineno-22-3" href="#__codelineno-22-3"></a> <span class="s1">&#39;foo&#39;</span><span class="p">:</span> <span class="mi">123</span><span class="p">,</span>
12864
+ <a id="__codelineno-22-4" name="__codelineno-22-4" href="#__codelineno-22-4"></a> <span class="s1">&#39;bar&#39;</span><span class="p">:</span> <span class="kc">True</span>
12865
+ <a id="__codelineno-22-5" name="__codelineno-22-5" href="#__codelineno-22-5"></a> <span class="p">},</span>
12866
+ <a id="__codelineno-22-6" name="__codelineno-22-6" href="#__codelineno-22-6"></a> <span class="s1">&#39;app2&#39;</span><span class="p">:</span> <span class="p">{</span>
12867
+ <a id="__codelineno-22-7" name="__codelineno-22-7" href="#__codelineno-22-7"></a> <span class="s1">&#39;foo&#39;</span><span class="p">:</span> <span class="mi">456</span><span class="p">,</span>
12868
+ <a id="__codelineno-22-8" name="__codelineno-22-8" href="#__codelineno-22-8"></a> <span class="p">},</span>
12869
+ <a id="__codelineno-22-9" name="__codelineno-22-9" href="#__codelineno-22-9"></a><span class="p">}</span>
12163
12870
  </code></pre></div>
12164
12871
  <p>Note that an App must be listed in <code>PLUGINS</code> for its configuration to take effect.</p>
12165
12872
  <hr />
@@ -12173,6 +12880,15 @@ the supported parameters. An example configuration is shown below:</p>
12173
12880
  <p>If you do not set a value for this setting in your <code>nautobot_config.py</code>, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in <code>nautobot_config.py</code>, it will override any dynamically configured value.</p>
12174
12881
  </div>
12175
12882
  <hr />
12883
+ <h3 id="publish_robots_txt"><code>PUBLISH_ROBOTS_TXT</code><a class="headerlink" href="#publish_robots_txt" title="Permanent link">&para;</a></h3>
12884
+ <details class="version-added">
12885
+ <summary>Added in version 2.3.15</summary>
12886
+ </details>
12887
+ <p><strong>Default:</strong>
12888
+ <code>True</code></p>
12889
+ <p><strong>Environment Variable:</strong> <code>NAUTOBOT_PUBLISH_ROBOTS_TXT</code></p>
12890
+ <p>Setting this to true causes Nautobot to publish a <code>robots.txt</code> that discourages indexing by web crawlers. Irrelevant if deployed behind a firewall.</p>
12891
+ <hr />
12176
12892
  <h3 id="rack_elevation_default_unit_height"><code>RACK_ELEVATION_DEFAULT_UNIT_HEIGHT</code><a class="headerlink" href="#rack_elevation_default_unit_height" title="Permanent link">&para;</a></h3>
12177
12893
  <p><strong>Default:</strong>
12178
12894
  <code>22</code></p>
@@ -12266,13 +12982,13 @@ or a custom fork. Set this to <code>None</code> to disable automatic update chec
12266
12982
  <summary>Added in version 1.3.4</summary>
12267
12983
  </details>
12268
12984
  <p><strong>Default:</strong></p>
12269
- <div class="highlight"><pre><span></span><code><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a><span class="p">[</span>
12270
- <a id="__codelineno-22-2" name="__codelineno-22-2" href="#__codelineno-22-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>
12271
- <a id="__codelineno-22-3" name="__codelineno-22-3" href="#__codelineno-22-3"></a> <span class="p">(</span>
12272
- <a id="__codelineno-22-4" name="__codelineno-22-4" href="#__codelineno-22-4"></a> <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|secret|secrets)([</span><span class="se">\&quot;</span><span class="s2">&#39;]?(?:\s+is.?|:)?\s+)\S+[</span><span class="se">\&quot;</span><span class="s2">&#39;]?&quot;</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">IGNORECASE</span><span class="p">),</span>
12273
- <a id="__codelineno-22-5" name="__codelineno-22-5" href="#__codelineno-22-5"></a> <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>
12274
- <a id="__codelineno-22-6" name="__codelineno-22-6" href="#__codelineno-22-6"></a> <span class="p">),</span>
12275
- <a id="__codelineno-22-7" name="__codelineno-22-7" href="#__codelineno-22-7"></a><span class="p">]</span>
12985
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a><span class="p">[</span>
12986
+ <a id="__codelineno-23-2" name="__codelineno-23-2" href="#__codelineno-23-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>
12987
+ <a id="__codelineno-23-3" name="__codelineno-23-3" href="#__codelineno-23-3"></a> <span class="p">(</span>
12988
+ <a id="__codelineno-23-4" name="__codelineno-23-4" href="#__codelineno-23-4"></a> <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|secret|secrets)([</span><span class="se">\&quot;</span><span class="s2">&#39;]?(?:\s+is.?|:)?\s+)\S+[</span><span class="se">\&quot;</span><span class="s2">&#39;]?&quot;</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">IGNORECASE</span><span class="p">),</span>
12989
+ <a id="__codelineno-23-5" name="__codelineno-23-5" href="#__codelineno-23-5"></a> <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>
12990
+ <a id="__codelineno-23-6" name="__codelineno-23-6" href="#__codelineno-23-6"></a> <span class="p">),</span>
12991
+ <a id="__codelineno-23-7" name="__codelineno-23-7" href="#__codelineno-23-7"></a><span class="p">]</span>
12276
12992
  </code></pre></div>
12277
12993
  <p>List of (regular expression, replacement pattern) tuples used by the <code>nautobot.core.utils.logging.sanitize()</code> function.</p>
12278
12994
  <p>As of Nautobot 1.3.4 this function is used primarily for sanitization of Job log entries,
@@ -12342,16 +13058,16 @@ but it may be used in other scopes in the future.</p>
12342
13058
  to create a new <code>nautobot_config.py</code>.</p>
12343
13059
  </div>
12344
13060
  <p>You may run <code>nautobot-server generate_secret_key</code> to generate a new key at any time.</p>
12345
- <div class="highlight"><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a>nautobot-server generate_secret_key
13061
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a>nautobot-server generate_secret_key
12346
13062
  </code></pre></div>
12347
13063
  <p>Sample output:</p>
12348
- <div class="highlight"><pre><span></span><code><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a>+$_kw69oq&amp;fbkfk6&amp;q-+ksbgzw1&amp;061ghw%420u3(wen54w(m
13064
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a>+$_kw69oq&amp;fbkfk6&amp;q-+ksbgzw1&amp;061ghw%420u3(wen54w(m
12349
13065
  </code></pre></div>
12350
13066
  <p>Alternatively use the following command to generate a secret even before <code>nautobot-server</code> is runnable:</p>
12351
- <div class="highlight"><pre><span></span><code><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a>LC_ALL=C tr -cd &#39;[:lower:][:digit:]!@#$%^&amp;*(\-_=+)&#39; &lt; /dev/urandom | fold -w50 | head -n1
13067
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a>LC_ALL=C tr -cd &#39;[:lower:][:digit:]!@#$%^&amp;*(\-_=+)&#39; &lt; /dev/urandom | fold -w50 | head -n1
12352
13068
  </code></pre></div>
12353
13069
  <p>Example output:</p>
12354
- <div class="highlight"><pre><span></span><code><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a>9.V$@Kxkc@@Kd@z&lt;a/=.J-Y;rYc79&lt;y@](9o9(L(*sS)Q+ud5P
13070
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a>9.V$@Kxkc@@Kd@z&lt;a/=.J-Y;rYc79&lt;y@](9o9(L(*sS)Q+ud5P
12355
13071
  </code></pre></div>
12356
13072
  <div class="admonition warning">
12357
13073
  <p class="admonition-title">Warning</p>
@@ -12582,23 +13298,23 @@ provide support for Nautobot. Markdown formatting is supported within this messa
12582
13298
  <p><strong>Environment Variable:</strong> <code>NAUTOBOT_TEST_PERFORMANCE_BASELINE_FILE</code></p>
12583
13299
  <p>File path of a YAML file providing baseline times for all performance-related tests.</p>
12584
13300
  <p>The YAML file should conform to the following format:</p>
12585
- <div class="highlight"><pre><span></span><code><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a><span class="nt">tests</span><span class="p">:</span>
12586
- <a id="__codelineno-27-2" name="__codelineno-27-2" href="#__codelineno-27-2"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">&gt;-</span>
12587
- <a id="__codelineno-27-3" name="__codelineno-27-3" href="#__codelineno-27-3"></a><span class="w"> </span><span class="no">test_run_job_with_sensitive_variables_and_requires_approval</span>
12588
- <a id="__codelineno-27-4" name="__codelineno-27-4" href="#__codelineno-27-4"></a><span class="w"> </span><span class="no">(nautobot.extras.tests.test_views.JobTestCase)</span>
12589
- <a id="__codelineno-27-5" name="__codelineno-27-5" href="#__codelineno-27-5"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">4.799533</span>
12590
- <a id="__codelineno-27-6" name="__codelineno-27-6" href="#__codelineno-27-6"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test_run_missing_schedule (nautobot.extras.tests.test_views.JobTestCase)</span>
12591
- <a id="__codelineno-27-7" name="__codelineno-27-7" href="#__codelineno-27-7"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">4.367563</span>
12592
- <a id="__codelineno-27-8" name="__codelineno-27-8" href="#__codelineno-27-8"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test_run_now_missing_args (nautobot.extras.tests.test_views.JobTestCase)</span>
12593
- <a id="__codelineno-27-9" name="__codelineno-27-9" href="#__codelineno-27-9"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">4.363194</span>
12594
- <a id="__codelineno-27-10" name="__codelineno-27-10" href="#__codelineno-27-10"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">&gt;-</span>
12595
- <a id="__codelineno-27-11" name="__codelineno-27-11" href="#__codelineno-27-11"></a><span class="w"> </span><span class="no">test_create_object_with_constrained_permission</span>
12596
- <a id="__codelineno-27-12" name="__codelineno-27-12" href="#__codelineno-27-12"></a><span class="w"> </span><span class="no">(nautobot.extras.tests.test_views.GraphQLQueriesTestCase)</span>
12597
- <a id="__codelineno-27-13" name="__codelineno-27-13" href="#__codelineno-27-13"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">3.474244</span>
12598
- <a id="__codelineno-27-14" name="__codelineno-27-14" href="#__codelineno-27-14"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">&gt;-</span>
12599
- <a id="__codelineno-27-15" name="__codelineno-27-15" href="#__codelineno-27-15"></a><span class="w"> </span><span class="no">test_run_now_constrained_permissions</span>
12600
- <a id="__codelineno-27-16" name="__codelineno-27-16" href="#__codelineno-27-16"></a><span class="w"> </span><span class="no">(nautobot.extras.tests.test_views.JobTestCase)</span>
12601
- <a id="__codelineno-27-17" name="__codelineno-27-17" href="#__codelineno-27-17"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">2.727531</span>
13301
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-28-1" name="__codelineno-28-1" href="#__codelineno-28-1"></a><span class="nt">tests</span><span class="p">:</span>
13302
+ <a id="__codelineno-28-2" name="__codelineno-28-2" href="#__codelineno-28-2"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">&gt;-</span>
13303
+ <a id="__codelineno-28-3" name="__codelineno-28-3" href="#__codelineno-28-3"></a><span class="w"> </span><span class="no">test_run_job_with_sensitive_variables_and_requires_approval</span>
13304
+ <a id="__codelineno-28-4" name="__codelineno-28-4" href="#__codelineno-28-4"></a><span class="w"> </span><span class="no">(nautobot.extras.tests.test_views.JobTestCase)</span>
13305
+ <a id="__codelineno-28-5" name="__codelineno-28-5" href="#__codelineno-28-5"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">4.799533</span>
13306
+ <a id="__codelineno-28-6" name="__codelineno-28-6" href="#__codelineno-28-6"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test_run_missing_schedule (nautobot.extras.tests.test_views.JobTestCase)</span>
13307
+ <a id="__codelineno-28-7" name="__codelineno-28-7" href="#__codelineno-28-7"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">4.367563</span>
13308
+ <a id="__codelineno-28-8" name="__codelineno-28-8" href="#__codelineno-28-8"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">test_run_now_missing_args (nautobot.extras.tests.test_views.JobTestCase)</span>
13309
+ <a id="__codelineno-28-9" name="__codelineno-28-9" href="#__codelineno-28-9"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">4.363194</span>
13310
+ <a id="__codelineno-28-10" name="__codelineno-28-10" href="#__codelineno-28-10"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">&gt;-</span>
13311
+ <a id="__codelineno-28-11" name="__codelineno-28-11" href="#__codelineno-28-11"></a><span class="w"> </span><span class="no">test_create_object_with_constrained_permission</span>
13312
+ <a id="__codelineno-28-12" name="__codelineno-28-12" href="#__codelineno-28-12"></a><span class="w"> </span><span class="no">(nautobot.extras.tests.test_views.GraphQLQueriesTestCase)</span>
13313
+ <a id="__codelineno-28-13" name="__codelineno-28-13" href="#__codelineno-28-13"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">3.474244</span>
13314
+ <a id="__codelineno-28-14" name="__codelineno-28-14" href="#__codelineno-28-14"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">&gt;-</span>
13315
+ <a id="__codelineno-28-15" name="__codelineno-28-15" href="#__codelineno-28-15"></a><span class="w"> </span><span class="no">test_run_now_constrained_permissions</span>
13316
+ <a id="__codelineno-28-16" name="__codelineno-28-16" href="#__codelineno-28-16"></a><span class="w"> </span><span class="no">(nautobot.extras.tests.test_views.JobTestCase)</span>
13317
+ <a id="__codelineno-28-17" name="__codelineno-28-17" href="#__codelineno-28-17"></a><span class="w"> </span><span class="nt">execution_time</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">2.727531</span>
12602
13318
  </code></pre></div>
12603
13319
  <hr />
12604
13320
  <h3 id="test_use_factories"><code>TEST_USE_FACTORIES</code><a class="headerlink" href="#test_use_factories" title="Permanent link">&para;</a></h3>
@@ -12668,15 +13384,13 @@ and all Nautobot web servers, or else your scheduled jobs may run in the wrong t
12668
13384
  <summary>Added in version 1.4.0</summary>
12669
13385
  </details>
12670
13386
  <p><strong>Default:</strong></p>
12671
- <div class="highlight"><pre><span></span><code><a id="__codelineno-28-1" name="__codelineno-28-1" href="#__codelineno-28-1"></a><span class="k">def</span> <span class="nf">UI_RACK_VIEW_TRUNCATE_FUNCTION</span><span class="p">(</span><span class="n">device_display_name</span><span class="p">):</span>
12672
- <a id="__codelineno-28-2" name="__codelineno-28-2" href="#__codelineno-28-2"></a> <span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">device_display_name</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
13387
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-29-1" name="__codelineno-29-1" href="#__codelineno-29-1"></a><span class="k">def</span> <span class="nf">UI_RACK_VIEW_TRUNCATE_FUNCTION</span><span class="p">(</span><span class="n">device_display_name</span><span class="p">):</span>
13388
+ <a id="__codelineno-29-2" name="__codelineno-29-2" href="#__codelineno-29-2"></a> <span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">device_display_name</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
12673
13389
  </code></pre></div>
12674
13390
  <p>This setting function is used to perform the rack elevation truncation feature.</p>
12675
13391
  <p>This provides a way to tailor the truncation behavior to best suit the needs of the installation.
12676
13392
  The function must take only one argument: the device display name, as a string, attempting to be rendered on the rack elevation.
12677
13393
  The function must return only one argument: a string of the truncated device display name.</p>
12678
- <!-- markdownlint-enable blanks-around-lists -->
12679
-
12680
13394
  <h2 id="environment-variable-only-settings">Environment-Variable-Only Settings<a class="headerlink" href="#environment-variable-only-settings" title="Permanent link">&para;</a></h2>
12681
13395
  <div class="admonition warning">
12682
13396
  <p class="admonition-title">Warning</p>
@@ -12857,10 +13571,10 @@ in order for the repository to sync.</p>
12857
13571
  </div>
12858
13572
 
12859
13573
 
12860
- <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../../assets/javascripts/workers/search.6ce7567c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
13574
+ <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.annotate", "content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../../assets/javascripts/workers/search.6ce7567c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
12861
13575
 
12862
13576
 
12863
- <script src="../../../assets/javascripts/bundle.83f73b43.min.js"></script>
13577
+ <script src="../../../assets/javascripts/bundle.88dd0f4e.min.js"></script>
12864
13578
 
12865
13579
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
12866
13580