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

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

Potentially problematic release.


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

Files changed (675) hide show
  1. nautobot/__init__.py +15 -0
  2. nautobot/apps/api.py +0 -2
  3. nautobot/apps/config.py +32 -3
  4. nautobot/apps/events.py +19 -0
  5. nautobot/apps/exceptions.py +0 -2
  6. nautobot/apps/ui.py +44 -9
  7. nautobot/apps/utils.py +0 -8
  8. nautobot/apps/views.py +2 -0
  9. nautobot/circuits/navigation.py +0 -57
  10. nautobot/circuits/tables.py +1 -2
  11. nautobot/circuits/templates/circuits/circuit_retrieve.html +0 -71
  12. nautobot/circuits/templates/circuits/inc/circuit_termination.html +6 -64
  13. nautobot/circuits/templates/circuits/inc/circuit_termination_cable_fragment.html +40 -0
  14. nautobot/circuits/templates/circuits/inc/circuit_termination_header_extra_content.html +26 -0
  15. nautobot/circuits/templates/circuits/provider_retrieve.html +0 -76
  16. nautobot/circuits/tests/integration/test_relationships.py +33 -24
  17. nautobot/circuits/tests/test_filters.py +4 -8
  18. nautobot/circuits/views.py +143 -26
  19. nautobot/cloud/factory.py +4 -1
  20. nautobot/cloud/models.py +1 -1
  21. nautobot/cloud/tests/test_filters.py +5 -4
  22. nautobot/core/api/fields.py +5 -5
  23. nautobot/core/api/metadata.py +28 -256
  24. nautobot/core/api/pagination.py +3 -2
  25. nautobot/core/api/renderers.py +3 -0
  26. nautobot/core/api/serializers.py +24 -244
  27. nautobot/core/api/urls.py +3 -4
  28. nautobot/core/api/utils.py +0 -62
  29. nautobot/core/api/views.py +48 -158
  30. nautobot/core/apps/__init__.py +22 -578
  31. nautobot/core/celery/__init__.py +13 -0
  32. nautobot/core/celery/log.py +4 -4
  33. nautobot/core/celery/schedulers.py +48 -3
  34. nautobot/core/cli/__init__.py +8 -0
  35. nautobot/core/constants.py +7 -0
  36. nautobot/core/events/__init__.py +116 -0
  37. nautobot/core/events/base.py +27 -0
  38. nautobot/core/events/exceptions.py +10 -0
  39. nautobot/core/events/redis_broker.py +48 -0
  40. nautobot/core/events/syslog_broker.py +19 -0
  41. nautobot/core/exceptions.py +0 -6
  42. nautobot/core/filters.py +16 -21
  43. nautobot/core/fixtures/user-data.json +59 -0
  44. nautobot/core/forms/fields.py +53 -8
  45. nautobot/core/forms/utils.py +2 -1
  46. nautobot/core/graphql/schema.py +3 -1
  47. nautobot/core/graphql/types.py +1 -1
  48. nautobot/core/jobs/__init__.py +4 -4
  49. nautobot/core/jobs/cleanup.py +13 -49
  50. nautobot/core/jobs/groups.py +1 -1
  51. nautobot/core/management/commands/generate_test_data.py +21 -0
  52. nautobot/core/management/commands/validate_models.py +1 -1
  53. nautobot/core/middleware.py +16 -0
  54. nautobot/core/models/__init__.py +1 -1
  55. nautobot/core/models/fields.py +11 -7
  56. nautobot/core/models/query_functions.py +2 -2
  57. nautobot/core/models/tree_queries.py +3 -6
  58. nautobot/core/settings.py +44 -7
  59. nautobot/core/settings.yaml +86 -8
  60. nautobot/core/tables.py +15 -65
  61. nautobot/core/tasks.py +1 -1
  62. nautobot/core/templates/components/button/default.html +7 -0
  63. nautobot/core/templates/components/button/dropdown.html +20 -0
  64. nautobot/core/templates/components/layout/one_over_two.html +19 -0
  65. nautobot/core/templates/components/layout/two_over_one.html +19 -0
  66. nautobot/core/templates/components/panel/body_content_data_table.html +27 -0
  67. nautobot/core/templates/components/panel/body_content_objects_table.html +4 -0
  68. nautobot/core/templates/components/panel/body_content_tags.html +6 -0
  69. nautobot/core/templates/components/panel/body_content_text.html +12 -0
  70. nautobot/core/templates/components/panel/body_wrapper_generic.html +3 -0
  71. nautobot/core/templates/components/panel/body_wrapper_key_value_table.html +3 -0
  72. nautobot/core/templates/components/panel/body_wrapper_table.html +3 -0
  73. nautobot/core/templates/components/panel/footer_contacts_table.html +20 -0
  74. nautobot/core/templates/components/panel/footer_content_table.html +14 -0
  75. nautobot/core/templates/components/panel/grouping_toggle.html +14 -0
  76. nautobot/core/templates/components/panel/header_extra_content_table.html +3 -0
  77. nautobot/core/templates/components/panel/panel.html +16 -0
  78. nautobot/core/templates/components/panel/stats_panel_body.html +8 -0
  79. nautobot/core/templates/components/tab/content_wrapper.html +3 -0
  80. nautobot/core/templates/components/tab/label_wrapper.html +5 -0
  81. nautobot/core/templates/components/tab/label_wrapper_distinct_view.html +3 -0
  82. nautobot/core/templates/generic/object_retrieve.html +28 -17
  83. nautobot/core/templates/inc/computed_fields/panel_data.html +4 -7
  84. nautobot/core/templates/inc/custom_fields/panel.html +2 -2
  85. nautobot/core/templates/inc/custom_fields/panel_data.html +4 -7
  86. nautobot/core/templates/inc/footer.html +1 -0
  87. nautobot/core/templates/inc/media.html +0 -3
  88. nautobot/core/templates/inc/nav_menu.html +1 -1
  89. nautobot/core/templates/inc/relationships_panel.html +1 -1
  90. nautobot/core/templates/nautobot_config.py.j2 +3 -3
  91. nautobot/core/templates/panel_table.html +12 -0
  92. nautobot/core/templates/search.html +0 -7
  93. nautobot/core/templates/utilities/render_jinja2.html +117 -0
  94. nautobot/core/templatetags/helpers.py +101 -12
  95. nautobot/core/templatetags/ui_framework.py +40 -0
  96. nautobot/core/testing/api.py +23 -128
  97. nautobot/core/testing/context.py +18 -0
  98. nautobot/core/testing/filters.py +41 -58
  99. nautobot/core/testing/mixins.py +2 -7
  100. nautobot/core/testing/views.py +25 -123
  101. nautobot/core/tests/integration/test_app_home.py +1 -0
  102. nautobot/core/tests/integration/test_app_navbar.py +1 -0
  103. nautobot/core/tests/integration/test_filters.py +2 -0
  104. nautobot/core/tests/integration/test_home.py +1 -0
  105. nautobot/core/tests/integration/test_navbar.py +1 -0
  106. nautobot/core/tests/integration/test_view_authentication.py +1 -2
  107. nautobot/core/tests/nautobot_config.py +198 -0
  108. nautobot/core/tests/runner.py +3 -3
  109. nautobot/core/tests/test_api.py +82 -201
  110. nautobot/core/tests/test_csv.py +3 -25
  111. nautobot/core/tests/test_events.py +214 -0
  112. nautobot/core/tests/test_jinja_filters.py +1 -0
  113. nautobot/core/tests/test_jobs.py +84 -13
  114. nautobot/core/tests/test_navigations.py +7 -241
  115. nautobot/core/tests/test_templatetags_helpers.py +16 -0
  116. nautobot/core/tests/test_ui.py +150 -0
  117. nautobot/core/tests/test_utils.py +0 -25
  118. nautobot/core/tests/test_views.py +123 -31
  119. nautobot/core/ui/__init__.py +0 -0
  120. nautobot/core/ui/base.py +11 -0
  121. nautobot/core/ui/choices.py +44 -0
  122. nautobot/core/ui/homepage.py +167 -0
  123. nautobot/core/ui/nav.py +279 -0
  124. nautobot/core/ui/object_detail.py +1841 -0
  125. nautobot/core/ui/utils.py +36 -0
  126. nautobot/core/urls.py +4 -9
  127. nautobot/core/utils/config.py +30 -3
  128. nautobot/core/utils/lookup.py +20 -13
  129. nautobot/core/views/__init__.py +6 -1
  130. nautobot/core/views/generic.py +47 -52
  131. nautobot/core/views/mixins.py +15 -25
  132. nautobot/core/views/paginator.py +8 -5
  133. nautobot/core/views/renderers.py +3 -3
  134. nautobot/core/views/utils.py +11 -0
  135. nautobot/core/wsgi.py +3 -3
  136. nautobot/dcim/api/serializers.py +80 -179
  137. nautobot/dcim/api/urls.py +5 -0
  138. nautobot/dcim/api/views.py +17 -4
  139. nautobot/dcim/apps.py +1 -0
  140. nautobot/dcim/choices.py +28 -0
  141. nautobot/dcim/factory.py +58 -0
  142. nautobot/dcim/filters/__init__.py +197 -24
  143. nautobot/dcim/forms.py +203 -12
  144. nautobot/dcim/graphql/types.py +2 -2
  145. nautobot/dcim/migrations/0063_interfacevdcassignment_virtualdevicecontext_and_more.py +165 -0
  146. nautobot/dcim/migrations/0064_virtualdevicecontext_status_data_migration.py +28 -0
  147. nautobot/dcim/migrations/0065_controller_capabilities_and_more.py +29 -0
  148. nautobot/dcim/migrations/0066_controllermanageddevicegroup_radio_profiles_and_more.py +33 -0
  149. nautobot/dcim/models/__init__.py +4 -0
  150. nautobot/dcim/models/device_component_templates.py +2 -2
  151. nautobot/dcim/models/device_components.py +20 -22
  152. nautobot/dcim/models/devices.py +173 -4
  153. nautobot/dcim/models/locations.py +3 -3
  154. nautobot/dcim/models/power.py +5 -6
  155. nautobot/dcim/models/racks.py +6 -6
  156. nautobot/dcim/navigation.py +25 -224
  157. nautobot/dcim/signals.py +44 -0
  158. nautobot/dcim/tables/__init__.py +5 -3
  159. nautobot/dcim/tables/devices.py +96 -2
  160. nautobot/dcim/tables/devicetypes.py +2 -2
  161. nautobot/dcim/templates/dcim/controller/base.html +10 -0
  162. nautobot/dcim/templates/dcim/controller_create.html +1 -0
  163. nautobot/dcim/templates/dcim/controller_retrieve.html +5 -1
  164. nautobot/dcim/templates/dcim/controller_wirelessnetworks.html +25 -0
  165. nautobot/dcim/templates/dcim/controllermanageddevicegroup_create.html +66 -0
  166. nautobot/dcim/templates/dcim/controllermanageddevicegroup_retrieve.html +46 -0
  167. nautobot/dcim/templates/dcim/device/base.html +6 -42
  168. nautobot/dcim/templates/dcim/device/wireless.html +73 -0
  169. nautobot/dcim/templates/dcim/device.html +3 -1
  170. nautobot/dcim/templates/dcim/interface.html +1 -0
  171. nautobot/dcim/templates/dcim/interface_edit.html +1 -0
  172. nautobot/dcim/templates/dcim/locationtype.html +0 -107
  173. nautobot/dcim/templates/dcim/locationtype_retrieve.html +8 -0
  174. nautobot/dcim/templates/dcim/virtualdevicecontext_retrieve.html +76 -0
  175. nautobot/dcim/templates/dcim/virtualdevicecontext_update.html +34 -0
  176. nautobot/dcim/tests/test_api.py +172 -61
  177. nautobot/dcim/tests/test_filters.py +171 -109
  178. nautobot/dcim/tests/test_forms.py +2 -51
  179. nautobot/dcim/tests/test_graphql.py +0 -52
  180. nautobot/dcim/tests/test_models.py +126 -4
  181. nautobot/dcim/tests/test_signals.py +1 -0
  182. nautobot/dcim/tests/test_views.py +103 -11
  183. nautobot/dcim/urls.py +72 -27
  184. nautobot/dcim/utils.py +2 -2
  185. nautobot/dcim/views.py +369 -62
  186. nautobot/extras/api/customfields.py +2 -2
  187. nautobot/extras/api/serializers.py +91 -75
  188. nautobot/extras/api/urls.py +4 -0
  189. nautobot/extras/api/views.py +78 -15
  190. nautobot/extras/choices.py +13 -0
  191. nautobot/extras/constants.py +0 -1
  192. nautobot/extras/context_managers.py +23 -6
  193. nautobot/extras/datasources/git.py +4 -1
  194. nautobot/extras/factory.py +27 -0
  195. nautobot/extras/filters/__init__.py +59 -0
  196. nautobot/extras/forms/forms.py +125 -30
  197. nautobot/extras/forms/mixins.py +3 -11
  198. nautobot/extras/graphql/types.py +25 -1
  199. nautobot/extras/group_sync.py +3 -3
  200. nautobot/extras/health_checks.py +2 -1
  201. nautobot/extras/jobs.py +62 -26
  202. nautobot/extras/management/__init__.py +1 -0
  203. nautobot/extras/management/commands/runjob.py +7 -79
  204. nautobot/extras/management/commands/runjob_with_job_result.py +46 -0
  205. nautobot/extras/management/utils.py +87 -0
  206. nautobot/extras/managers.py +1 -3
  207. nautobot/extras/migrations/0018_joblog_data_migration.py +9 -7
  208. nautobot/extras/migrations/0117_create_job_queue_model.py +129 -0
  209. nautobot/extras/migrations/0118_task_queue_to_job_queue_migration.py +78 -0
  210. nautobot/extras/migrations/0119_remove_task_queues_from_job_and_queue_from_scheduled_job.py +28 -0
  211. nautobot/extras/models/__init__.py +4 -0
  212. nautobot/extras/models/change_logging.py +7 -3
  213. nautobot/extras/models/customfields.py +11 -12
  214. nautobot/extras/models/groups.py +9 -13
  215. nautobot/extras/models/jobs.py +218 -37
  216. nautobot/extras/models/models.py +2 -2
  217. nautobot/extras/models/relationships.py +69 -1
  218. nautobot/extras/models/secrets.py +5 -0
  219. nautobot/extras/navigation.py +20 -262
  220. nautobot/extras/plugins/__init__.py +56 -32
  221. nautobot/extras/plugins/marketplace_manifest.yml +450 -0
  222. nautobot/extras/plugins/urls.py +1 -0
  223. nautobot/extras/plugins/views.py +48 -1
  224. nautobot/extras/signals.py +39 -1
  225. nautobot/extras/tables.py +40 -6
  226. nautobot/extras/templates/extras/externalintegration_retrieve.html +0 -47
  227. nautobot/extras/templates/extras/inc/tags_panel.html +1 -5
  228. nautobot/extras/templates/extras/job_bulk_edit.html +2 -1
  229. nautobot/extras/templates/extras/job_detail.html +36 -6
  230. nautobot/extras/templates/extras/job_edit.html +5 -2
  231. nautobot/extras/templates/extras/job_list.html +2 -7
  232. nautobot/extras/templates/extras/jobqueue_retrieve.html +44 -0
  233. nautobot/extras/templates/extras/marketplace.html +278 -0
  234. nautobot/extras/templates/extras/plugins_list.html +35 -1
  235. nautobot/extras/templates/extras/plugins_tiles.html +79 -0
  236. nautobot/extras/templates/extras/role_retrieve.html +16 -0
  237. nautobot/extras/templates/extras/secret.html +0 -65
  238. nautobot/extras/templates/extras/secret_check.js +16 -0
  239. nautobot/extras/templates/extras/secret_create.html +114 -0
  240. nautobot/extras/templates/extras/secret_edit.html +1 -114
  241. nautobot/extras/templates/extras/secretsgroup_edit.html +1 -1
  242. nautobot/extras/templates/extras/templatetags/plugin_object_detail_tabs.html +2 -0
  243. nautobot/extras/templatetags/job_buttons.py +5 -4
  244. nautobot/extras/templatetags/plugins.py +69 -6
  245. nautobot/extras/test_jobs/api_test_job.py +1 -1
  246. nautobot/extras/test_jobs/atomic_transaction.py +2 -2
  247. nautobot/extras/test_jobs/dry_run.py +1 -1
  248. nautobot/extras/test_jobs/fail.py +5 -5
  249. nautobot/extras/test_jobs/file_output.py +1 -1
  250. nautobot/extras/test_jobs/file_upload_fail.py +1 -1
  251. nautobot/extras/test_jobs/file_upload_pass.py +1 -1
  252. nautobot/extras/test_jobs/ipaddress_vars.py +1 -3
  253. nautobot/extras/test_jobs/jobs_module/jobs_submodule/jobs.py +1 -1
  254. nautobot/extras/test_jobs/location_with_custom_field.py +1 -1
  255. nautobot/extras/test_jobs/log_redaction.py +1 -1
  256. nautobot/extras/test_jobs/log_skip_db_logging.py +1 -1
  257. nautobot/extras/test_jobs/modify_db.py +1 -1
  258. nautobot/extras/test_jobs/object_var_optional.py +1 -1
  259. nautobot/extras/test_jobs/object_var_required.py +1 -1
  260. nautobot/extras/test_jobs/object_vars.py +1 -1
  261. nautobot/extras/test_jobs/pass.py +3 -3
  262. nautobot/extras/test_jobs/profiling.py +1 -1
  263. nautobot/extras/test_jobs/relative_import.py +3 -3
  264. nautobot/extras/test_jobs/soft_time_limit_greater_than_time_limit.py +1 -1
  265. nautobot/extras/test_jobs/task_queues.py +1 -1
  266. nautobot/extras/tests/integration/test_plugin_banner.py +2 -0
  267. nautobot/extras/tests/test_api.py +157 -55
  268. nautobot/extras/tests/test_context_managers.py +4 -1
  269. nautobot/extras/tests/test_customfields.py +1 -1
  270. nautobot/extras/tests/test_datasources.py +1 -2
  271. nautobot/extras/tests/test_dynamicgroups.py +1 -1
  272. nautobot/extras/tests/test_filters.py +219 -535
  273. nautobot/extras/tests/test_forms.py +1 -20
  274. nautobot/extras/tests/test_job_variables.py +73 -152
  275. nautobot/extras/tests/test_jobs.py +43 -54
  276. nautobot/extras/tests/test_models.py +71 -16
  277. nautobot/extras/tests/test_relationships.py +5 -2
  278. nautobot/extras/tests/test_utils.py +23 -2
  279. nautobot/extras/tests/test_views.py +183 -43
  280. nautobot/extras/tests/test_webhooks.py +2 -1
  281. nautobot/extras/urls.py +2 -20
  282. nautobot/extras/utils.py +118 -4
  283. nautobot/extras/views.py +203 -92
  284. nautobot/extras/webhooks.py +5 -2
  285. nautobot/ipam/api/fields.py +3 -3
  286. nautobot/ipam/api/serializers.py +36 -137
  287. nautobot/ipam/api/views.py +93 -62
  288. nautobot/ipam/lookups.py +62 -101
  289. nautobot/ipam/models.py +11 -63
  290. nautobot/ipam/navigation.py +0 -90
  291. nautobot/ipam/querysets.py +2 -2
  292. nautobot/ipam/tables.py +6 -20
  293. nautobot/ipam/templates/ipam/routetarget.html +0 -28
  294. nautobot/ipam/templates/ipam/vrf.html +0 -47
  295. nautobot/ipam/tests/test_api.py +8 -419
  296. nautobot/ipam/tests/test_filters.py +39 -119
  297. nautobot/ipam/tests/test_forms.py +47 -51
  298. nautobot/ipam/tests/test_migrations.py +30 -30
  299. nautobot/ipam/tests/test_models.py +0 -41
  300. nautobot/ipam/tests/test_querysets.py +1 -63
  301. nautobot/ipam/urls.py +3 -69
  302. nautobot/ipam/utils/__init__.py +0 -24
  303. nautobot/ipam/views.py +153 -198
  304. nautobot/project-static/css/base.css +38 -3
  305. nautobot/project-static/docs/404.html +421 -19
  306. nautobot/project-static/docs/apps/index.html +421 -19
  307. nautobot/project-static/docs/apps/nautobot-apps.html +421 -19
  308. nautobot/project-static/docs/assets/extra.css +5 -1
  309. nautobot/project-static/docs/assets/javascripts/{bundle.88dd0f4e.min.js → bundle.83f73b43.min.js} +2 -2
  310. nautobot/project-static/docs/assets/javascripts/{bundle.88dd0f4e.min.js.map → bundle.83f73b43.min.js.map} +2 -2
  311. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +421 -19
  312. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +421 -19
  313. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +421 -172
  314. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +421 -19
  315. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +421 -19
  316. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +425 -21
  317. nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +421 -19
  318. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +424 -22
  319. nautobot/project-static/docs/code-reference/nautobot/apps/events.html +9809 -0
  320. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +424 -63
  321. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +421 -19
  322. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +421 -19
  323. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +457 -20
  324. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +421 -19
  325. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +425 -25
  326. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +457 -19
  327. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +421 -19
  328. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +421 -19
  329. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +425 -215
  330. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +430 -342
  331. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +5799 -1054
  332. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +421 -19
  333. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +447 -176
  334. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +460 -21
  335. nautobot/project-static/docs/development/apps/api/configuration-view.html +421 -19
  336. nautobot/project-static/docs/development/apps/api/database-backend-config.html +421 -19
  337. nautobot/project-static/docs/development/apps/api/models/django-admin.html +421 -19
  338. nautobot/project-static/docs/development/apps/api/models/global-search.html +421 -19
  339. nautobot/project-static/docs/development/apps/api/models/graphql.html +421 -19
  340. nautobot/project-static/docs/development/apps/api/models/index.html +421 -19
  341. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +421 -19
  342. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +421 -19
  343. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +421 -19
  344. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +421 -19
  345. nautobot/project-static/docs/development/apps/api/platform-features/index.html +421 -19
  346. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +421 -19
  347. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +421 -19
  348. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +421 -19
  349. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +421 -19
  350. nautobot/project-static/docs/development/apps/api/platform-features/table-extensions.html +424 -41
  351. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +421 -19
  352. nautobot/project-static/docs/development/apps/api/prometheus.html +421 -19
  353. nautobot/project-static/docs/development/apps/api/setup.html +425 -155
  354. nautobot/project-static/docs/development/apps/api/testing.html +421 -19
  355. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +421 -19
  356. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +421 -19
  357. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +421 -19
  358. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +421 -19
  359. nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +701 -130
  360. nautobot/project-static/docs/development/apps/api/views/base-template.html +421 -19
  361. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +421 -19
  362. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +421 -19
  363. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +421 -19
  364. nautobot/project-static/docs/development/apps/api/views/index.html +423 -20
  365. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +425 -19
  366. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +451 -19
  367. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +421 -19
  368. nautobot/project-static/docs/development/apps/api/views/notes.html +421 -19
  369. nautobot/project-static/docs/development/apps/api/views/rest-api.html +421 -19
  370. nautobot/project-static/docs/development/apps/api/views/urls.html +421 -19
  371. nautobot/project-static/docs/development/apps/index.html +421 -19
  372. nautobot/project-static/docs/development/apps/migration/code-updates.html +422 -52
  373. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +422 -20
  374. nautobot/project-static/docs/development/apps/migration/from-v1.html +421 -19
  375. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +421 -19
  376. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +421 -19
  377. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +421 -19
  378. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +424 -22
  379. nautobot/project-static/docs/development/apps/migration/ui-component-framework/best-practices.html +9219 -0
  380. nautobot/project-static/docs/development/apps/migration/ui-component-framework/custom-content.html +9333 -0
  381. nautobot/project-static/docs/development/apps/migration/ui-component-framework/index.html +9474 -0
  382. nautobot/project-static/docs/development/apps/migration/ui-component-framework/migration-steps.html +9517 -0
  383. nautobot/project-static/docs/development/apps/porting-from-netbox.html +424 -22
  384. nautobot/project-static/docs/development/core/application-registry.html +421 -19
  385. nautobot/project-static/docs/development/core/best-practices.html +421 -19
  386. nautobot/project-static/docs/development/core/bootstrap-ui.html +421 -19
  387. nautobot/project-static/docs/development/core/caching.html +421 -19
  388. nautobot/project-static/docs/development/core/controllers.html +423 -19
  389. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +490 -45
  390. nautobot/project-static/docs/development/core/generic-views.html +421 -19
  391. nautobot/project-static/docs/development/core/getting-started.html +566 -179
  392. nautobot/project-static/docs/development/core/homepage.html +432 -30
  393. nautobot/project-static/docs/development/core/index.html +421 -19
  394. nautobot/project-static/docs/development/core/local-k8s.html +9453 -0
  395. nautobot/project-static/docs/development/core/model-checklist.html +424 -22
  396. nautobot/project-static/docs/development/core/model-features.html +421 -19
  397. nautobot/project-static/docs/development/core/natural-keys.html +421 -19
  398. nautobot/project-static/docs/development/core/navigation-menu.html +438 -26
  399. nautobot/project-static/docs/development/core/release-checklist.html +435 -45
  400. nautobot/project-static/docs/development/core/role-internals.html +421 -19
  401. nautobot/project-static/docs/development/core/settings.html +421 -19
  402. nautobot/project-static/docs/development/core/style-guide.html +421 -19
  403. nautobot/project-static/docs/development/core/templates.html +431 -22
  404. nautobot/project-static/docs/development/core/testing.html +421 -19
  405. nautobot/project-static/docs/development/core/ui-component-framework.html +11020 -0
  406. nautobot/project-static/docs/development/core/user-preferences.html +424 -22
  407. nautobot/project-static/docs/development/index.html +421 -19
  408. nautobot/project-static/docs/development/jobs/index.html +546 -160
  409. nautobot/project-static/docs/development/jobs/migration/from-v1.html +421 -19
  410. nautobot/project-static/docs/index.html +421 -19
  411. nautobot/project-static/docs/media/development/core/ui-component-framework/basic-panel-layout.png +0 -0
  412. nautobot/project-static/docs/media/development/core/ui-component-framework/button-example.png +0 -0
  413. nautobot/project-static/docs/media/development/core/ui-component-framework/dropdown-button-example.png +0 -0
  414. nautobot/project-static/docs/media/development/core/ui-component-framework/grouped-key-value-table-panel-example-1.png +0 -0
  415. nautobot/project-static/docs/media/development/core/ui-component-framework/grouped-key-value-table-panel-example-2.png +0 -0
  416. nautobot/project-static/docs/media/development/core/ui-component-framework/object-fields-panel-example.png +0 -0
  417. nautobot/project-static/docs/media/development/core/ui-component-framework/stats-panel-example.png +0 -0
  418. nautobot/project-static/docs/media/development/core/ui-component-framework/table-panels-family.png +0 -0
  419. nautobot/project-static/docs/media/development/core/ui-component-framework/text-panels-family.png +0 -0
  420. nautobot/project-static/docs/media/development/core/ui-component-framework/ui-framework-example.png +0 -0
  421. nautobot/project-static/docs/media/models/virtual_device_context_overview.drawio +73 -0
  422. nautobot/project-static/docs/media/models/virtual_device_context_overview.png +0 -0
  423. nautobot/project-static/docs/models/dcim/virtualdevicecontext.html +14 -0
  424. nautobot/project-static/docs/models/extras/jobqueue.html +14 -0
  425. nautobot/project-static/docs/models/wireless/radioprofile.html +14 -0
  426. nautobot/project-static/docs/models/wireless/supporteddatarate.html +14 -0
  427. nautobot/project-static/docs/models/wireless/wirelessnetwork.html +14 -0
  428. nautobot/project-static/docs/objects.inv +0 -0
  429. nautobot/project-static/docs/overview/application_stack.html +426 -20
  430. nautobot/project-static/docs/overview/design_philosophy.html +421 -19
  431. nautobot/project-static/docs/release-notes/index.html +445 -22
  432. nautobot/project-static/docs/release-notes/version-1.0.html +421 -19
  433. nautobot/project-static/docs/release-notes/version-1.1.html +421 -19
  434. nautobot/project-static/docs/release-notes/version-1.2.html +421 -19
  435. nautobot/project-static/docs/release-notes/version-1.3.html +421 -19
  436. nautobot/project-static/docs/release-notes/version-1.4.html +421 -19
  437. nautobot/project-static/docs/release-notes/version-1.5.html +421 -19
  438. nautobot/project-static/docs/release-notes/version-1.6.html +634 -667
  439. nautobot/project-static/docs/release-notes/version-2.0.html +421 -19
  440. nautobot/project-static/docs/release-notes/version-2.1.html +421 -19
  441. nautobot/project-static/docs/release-notes/version-2.2.html +421 -19
  442. nautobot/project-static/docs/release-notes/version-2.3.html +684 -886
  443. nautobot/project-static/docs/release-notes/version-2.4.html +10007 -0
  444. nautobot/project-static/docs/requirements.txt +2 -2
  445. nautobot/project-static/docs/search/search_index.json +1 -1
  446. nautobot/project-static/docs/sitemap.xml +334 -270
  447. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  448. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +421 -19
  449. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +421 -19
  450. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +423 -21
  451. nautobot/project-static/docs/user-guide/administration/configuration/index.html +433 -32
  452. nautobot/project-static/docs/user-guide/administration/configuration/redis.html +421 -19
  453. nautobot/project-static/docs/user-guide/administration/configuration/settings.html +765 -180
  454. nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +421 -19
  455. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +421 -19
  456. nautobot/project-static/docs/user-guide/administration/guides/docker.html +434 -29
  457. nautobot/project-static/docs/user-guide/administration/guides/health-checks.html +421 -19
  458. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +421 -19
  459. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +421 -19
  460. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +421 -19
  461. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +421 -19
  462. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +421 -19
  463. nautobot/project-static/docs/user-guide/administration/guides/selinux-troubleshooting.html +421 -19
  464. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +421 -19
  465. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +421 -19
  466. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +421 -19
  467. nautobot/project-static/docs/user-guide/administration/installation/index.html +426 -20
  468. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +421 -19
  469. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +421 -19
  470. nautobot/project-static/docs/user-guide/administration/installation/services.html +421 -19
  471. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +421 -19
  472. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +442 -41
  473. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +435 -66
  474. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +435 -66
  475. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +421 -19
  476. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +421 -19
  477. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +421 -19
  478. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +421 -19
  479. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +421 -19
  480. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +421 -19
  481. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +421 -19
  482. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/tables/v2-code-nautobot-app-location.yaml +0 -16
  483. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +421 -19
  484. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +427 -21
  485. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +421 -19
  486. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +421 -19
  487. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +421 -19
  488. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +421 -19
  489. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +421 -19
  490. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +421 -19
  491. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +421 -19
  492. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +421 -19
  493. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +421 -19
  494. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +421 -19
  495. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +421 -19
  496. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +421 -19
  497. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +421 -19
  498. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +421 -19
  499. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +421 -19
  500. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +421 -19
  501. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +421 -19
  502. nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +457 -20
  503. nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +447 -22
  504. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +421 -19
  505. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +421 -19
  506. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +421 -19
  507. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +421 -19
  508. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +421 -19
  509. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +421 -19
  510. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +421 -19
  511. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +421 -19
  512. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +421 -19
  513. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +421 -19
  514. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +421 -19
  515. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +421 -19
  516. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +421 -19
  517. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +421 -19
  518. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +421 -19
  519. nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +421 -19
  520. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +421 -19
  521. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +421 -19
  522. nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +421 -19
  523. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +421 -19
  524. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +421 -19
  525. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +421 -19
  526. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +421 -19
  527. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +421 -19
  528. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +421 -19
  529. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +421 -19
  530. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +421 -19
  531. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +421 -19
  532. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +421 -19
  533. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +421 -19
  534. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +421 -19
  535. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +421 -19
  536. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +421 -19
  537. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +421 -19
  538. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualdevicecontext.html +9333 -0
  539. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +424 -22
  540. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +421 -19
  541. nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +421 -19
  542. nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +421 -19
  543. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +421 -19
  544. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +421 -19
  545. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +421 -19
  546. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +421 -19
  547. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +421 -19
  548. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +421 -19
  549. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +421 -19
  550. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +421 -19
  551. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +421 -19
  552. nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +421 -19
  553. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +421 -19
  554. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +421 -19
  555. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +421 -19
  556. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +421 -19
  557. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +421 -19
  558. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +421 -19
  559. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +424 -22
  560. nautobot/project-static/docs/user-guide/core-data-model/wireless/index.html +9271 -0
  561. nautobot/project-static/docs/user-guide/core-data-model/wireless/radioprofile.html +9175 -0
  562. nautobot/project-static/docs/user-guide/core-data-model/wireless/supporteddatarate.html +9169 -0
  563. nautobot/project-static/docs/user-guide/core-data-model/wireless/wirelessnetwork.html +9235 -0
  564. nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +421 -19
  565. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +421 -19
  566. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +421 -19
  567. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +421 -19
  568. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +421 -19
  569. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +421 -19
  570. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +421 -19
  571. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +421 -19
  572. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +421 -19
  573. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +421 -19
  574. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +421 -19
  575. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +421 -19
  576. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +421 -19
  577. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +421 -19
  578. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +421 -19
  579. nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +421 -19
  580. nautobot/project-static/docs/user-guide/index.html +421 -19
  581. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +424 -22
  582. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +421 -19
  583. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +421 -19
  584. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +421 -19
  585. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +421 -19
  586. nautobot/project-static/docs/user-guide/platform-functionality/events.html +9575 -0
  587. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +424 -22
  588. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +421 -19
  589. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +421 -19
  590. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +421 -19
  591. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +421 -19
  592. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +421 -19
  593. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +426 -20
  594. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +424 -22
  595. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +421 -19
  596. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +421 -19
  597. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobqueue.html +9182 -0
  598. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +424 -22
  599. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +421 -19
  600. nautobot/project-static/docs/user-guide/platform-functionality/note.html +421 -19
  601. nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +421 -19
  602. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +424 -22
  603. nautobot/project-static/docs/user-guide/platform-functionality/rendering-jinja-templates.html +9250 -0
  604. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +421 -19
  605. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +421 -19
  606. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +424 -22
  607. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +421 -19
  608. nautobot/project-static/docs/user-guide/platform-functionality/role.html +421 -19
  609. nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +421 -19
  610. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +421 -19
  611. nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +424 -22
  612. nautobot/project-static/docs/user-guide/platform-functionality/status.html +421 -19
  613. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +421 -19
  614. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +489 -56
  615. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +421 -19
  616. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +421 -19
  617. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +421 -19
  618. nautobot/project-static/img/jinja_logo.svg +97 -0
  619. nautobot/project-static/js/forms.js +5 -0
  620. nautobot/project-static/js/nav_menu.js +2 -1
  621. nautobot/tenancy/api/serializers.py +0 -2
  622. nautobot/tenancy/factory.py +1 -1
  623. nautobot/tenancy/navigation.py +0 -29
  624. nautobot/tenancy/templates/tenancy/tenant.html +4 -91
  625. nautobot/tenancy/tests/test_filters.py +29 -134
  626. nautobot/tenancy/views.py +32 -23
  627. nautobot/users/admin.py +3 -1
  628. nautobot/users/api/serializers.py +4 -5
  629. nautobot/users/api/views.py +1 -1
  630. nautobot/users/forms.py +19 -0
  631. nautobot/users/templates/users/preferences.html +22 -0
  632. nautobot/users/tests/test_filters.py +1 -19
  633. nautobot/users/tests/test_views.py +57 -0
  634. nautobot/users/utils.py +8 -0
  635. nautobot/users/views.py +48 -11
  636. nautobot/virtualization/api/serializers.py +4 -4
  637. nautobot/virtualization/filters.py +2 -20
  638. nautobot/virtualization/navigation.py +0 -48
  639. nautobot/virtualization/templates/virtualization/clustertype.html +0 -39
  640. nautobot/virtualization/tests/test_filters.py +57 -183
  641. nautobot/virtualization/views.py +18 -15
  642. nautobot/wireless/__init__.py +0 -0
  643. nautobot/wireless/api/__init__.py +0 -0
  644. nautobot/wireless/api/serializers.py +44 -0
  645. nautobot/wireless/api/urls.py +20 -0
  646. nautobot/wireless/api/views.py +34 -0
  647. nautobot/wireless/apps.py +8 -0
  648. nautobot/wireless/choices.py +345 -0
  649. nautobot/wireless/factory.py +138 -0
  650. nautobot/wireless/filters.py +167 -0
  651. nautobot/wireless/forms.py +283 -0
  652. nautobot/wireless/homepage.py +19 -0
  653. nautobot/wireless/migrations/0001_initial.py +223 -0
  654. nautobot/wireless/migrations/__init__.py +0 -0
  655. nautobot/wireless/models.py +207 -0
  656. nautobot/wireless/navigation.py +105 -0
  657. nautobot/wireless/tables.py +244 -0
  658. nautobot/wireless/templates/wireless/radioprofile_retrieve.html +81 -0
  659. nautobot/wireless/templates/wireless/supporteddatarate_retrieve.html +26 -0
  660. nautobot/wireless/templates/wireless/wirelessnetwork_create.html +88 -0
  661. nautobot/wireless/templates/wireless/wirelessnetwork_retrieve.html +64 -0
  662. nautobot/wireless/tests/__init__.py +0 -0
  663. nautobot/wireless/tests/test_api.py +247 -0
  664. nautobot/wireless/tests/test_filters.py +54 -0
  665. nautobot/wireless/tests/test_models.py +22 -0
  666. nautobot/wireless/tests/test_views.py +378 -0
  667. nautobot/wireless/urls.py +13 -0
  668. nautobot/wireless/views.py +129 -0
  669. {nautobot-2.3.16.dist-info → nautobot-2.4.0b1.dist-info}/METADATA +11 -14
  670. {nautobot-2.3.16.dist-info → nautobot-2.4.0b1.dist-info}/RECORD +674 -551
  671. {nautobot-2.3.16.dist-info → nautobot-2.4.0b1.dist-info}/WHEEL +1 -1
  672. nautobot/core/utils/navigation.py +0 -54
  673. {nautobot-2.3.16.dist-info → nautobot-2.4.0b1.dist-info}/LICENSE.txt +0 -0
  674. {nautobot-2.3.16.dist-info → nautobot-2.4.0b1.dist-info}/NOTICE +0 -0
  675. {nautobot-2.3.16.dist-info → nautobot-2.4.0b1.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.49">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.46">
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">
@@ -1962,15 +2025,6 @@
1962
2025
  </span>
1963
2026
  </a>
1964
2027
 
1965
- </li>
1966
-
1967
- <li class="md-nav__item">
1968
- <a href="#publish_robots_txt" class="md-nav__link">
1969
- <span class="md-ellipsis">
1970
- PUBLISH_ROBOTS_TXT
1971
- </span>
1972
- </a>
1973
-
1974
2028
  </li>
1975
2029
 
1976
2030
  <li class="md-nav__item">
@@ -5055,6 +5109,27 @@
5055
5109
 
5056
5110
 
5057
5111
 
5112
+
5113
+
5114
+
5115
+
5116
+
5117
+
5118
+ <li class="md-nav__item">
5119
+ <a href="../../core-data-model/dcim/virtualdevicecontext.html" class="md-nav__link">
5120
+
5121
+
5122
+ <span class="md-ellipsis">
5123
+ Virtual Device Context
5124
+ </span>
5125
+
5126
+
5127
+ </a>
5128
+ </li>
5129
+
5130
+
5131
+
5132
+
5058
5133
  </ul>
5059
5134
  </nav>
5060
5135
 
@@ -5667,6 +5742,123 @@
5667
5742
 
5668
5743
 
5669
5744
 
5745
+
5746
+
5747
+
5748
+
5749
+
5750
+
5751
+
5752
+
5753
+
5754
+
5755
+
5756
+
5757
+
5758
+ <li class="md-nav__item md-nav__item--nested">
5759
+
5760
+
5761
+
5762
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_9" >
5763
+
5764
+
5765
+
5766
+ <div class="md-nav__link md-nav__container">
5767
+ <a href="../../core-data-model/wireless/index.html" class="md-nav__link ">
5768
+
5769
+
5770
+ <span class="md-ellipsis">
5771
+ Wireless
5772
+ </span>
5773
+
5774
+
5775
+ </a>
5776
+
5777
+
5778
+ <label class="md-nav__link " for="__nav_2_3_9" id="__nav_2_3_9_label" tabindex="0">
5779
+ <span class="md-nav__icon md-icon"></span>
5780
+ </label>
5781
+
5782
+ </div>
5783
+
5784
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_9_label" aria-expanded="false">
5785
+ <label class="md-nav__title" for="__nav_2_3_9">
5786
+ <span class="md-nav__icon md-icon"></span>
5787
+ Wireless
5788
+ </label>
5789
+ <ul class="md-nav__list" data-md-scrollfix>
5790
+
5791
+
5792
+
5793
+
5794
+
5795
+
5796
+
5797
+ <li class="md-nav__item">
5798
+ <a href="../../core-data-model/wireless/supporteddatarate.html" class="md-nav__link">
5799
+
5800
+
5801
+ <span class="md-ellipsis">
5802
+ Supported Data Rate
5803
+ </span>
5804
+
5805
+
5806
+ </a>
5807
+ </li>
5808
+
5809
+
5810
+
5811
+
5812
+
5813
+
5814
+
5815
+
5816
+
5817
+
5818
+ <li class="md-nav__item">
5819
+ <a href="../../core-data-model/wireless/radioprofile.html" class="md-nav__link">
5820
+
5821
+
5822
+ <span class="md-ellipsis">
5823
+ Radio Profile
5824
+ </span>
5825
+
5826
+
5827
+ </a>
5828
+ </li>
5829
+
5830
+
5831
+
5832
+
5833
+
5834
+
5835
+
5836
+
5837
+
5838
+
5839
+ <li class="md-nav__item">
5840
+ <a href="../../core-data-model/wireless/wirelessnetwork.html" class="md-nav__link">
5841
+
5842
+
5843
+ <span class="md-ellipsis">
5844
+ Wireless Network
5845
+ </span>
5846
+
5847
+
5848
+ </a>
5849
+ </li>
5850
+
5851
+
5852
+
5853
+
5854
+ </ul>
5855
+ </nav>
5856
+
5857
+ </li>
5858
+
5859
+
5860
+
5861
+
5670
5862
  </ul>
5671
5863
  </nav>
5672
5864
 
@@ -5878,6 +6070,27 @@
5878
6070
 
5879
6071
 
5880
6072
 
6073
+ <li class="md-nav__item">
6074
+ <a href="../../platform-functionality/events.html" class="md-nav__link">
6075
+
6076
+
6077
+ <span class="md-ellipsis">
6078
+ Event Notifications
6079
+ </span>
6080
+
6081
+
6082
+ </a>
6083
+ </li>
6084
+
6085
+
6086
+
6087
+
6088
+
6089
+
6090
+
6091
+
6092
+
6093
+
5881
6094
  <li class="md-nav__item">
5882
6095
  <a href="../../platform-functionality/exporttemplate.html" class="md-nav__link">
5883
6096
 
@@ -5952,7 +6165,7 @@
5952
6165
 
5953
6166
 
5954
6167
 
5955
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_9" >
6168
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_10" >
5956
6169
 
5957
6170
 
5958
6171
 
@@ -5968,14 +6181,14 @@
5968
6181
  </a>
5969
6182
 
5970
6183
 
5971
- <label class="md-nav__link " for="__nav_2_4_9" id="__nav_2_4_9_label" tabindex="0">
6184
+ <label class="md-nav__link " for="__nav_2_4_10" id="__nav_2_4_10_label" tabindex="0">
5972
6185
  <span class="md-nav__icon md-icon"></span>
5973
6186
  </label>
5974
6187
 
5975
6188
  </div>
5976
6189
 
5977
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_9_label" aria-expanded="false">
5978
- <label class="md-nav__title" for="__nav_2_4_9">
6190
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_10_label" aria-expanded="false">
6191
+ <label class="md-nav__title" for="__nav_2_4_10">
5979
6192
  <span class="md-nav__icon md-icon"></span>
5980
6193
  GraphQL
5981
6194
  </label>
@@ -6048,7 +6261,7 @@
6048
6261
 
6049
6262
 
6050
6263
 
6051
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_11" >
6264
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_12" >
6052
6265
 
6053
6266
 
6054
6267
 
@@ -6064,14 +6277,14 @@
6064
6277
  </a>
6065
6278
 
6066
6279
 
6067
- <label class="md-nav__link " for="__nav_2_4_11" id="__nav_2_4_11_label" tabindex="0">
6280
+ <label class="md-nav__link " for="__nav_2_4_12" id="__nav_2_4_12_label" tabindex="0">
6068
6281
  <span class="md-nav__icon md-icon"></span>
6069
6282
  </label>
6070
6283
 
6071
6284
  </div>
6072
6285
 
6073
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_11_label" aria-expanded="false">
6074
- <label class="md-nav__title" for="__nav_2_4_11">
6286
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_12_label" aria-expanded="false">
6287
+ <label class="md-nav__title" for="__nav_2_4_12">
6075
6288
  <span class="md-nav__icon md-icon"></span>
6076
6289
  Jobs
6077
6290
  </label>
@@ -6146,6 +6359,27 @@
6146
6359
 
6147
6360
 
6148
6361
 
6362
+ <li class="md-nav__item">
6363
+ <a href="../../platform-functionality/jobs/jobqueue.html" class="md-nav__link">
6364
+
6365
+
6366
+ <span class="md-ellipsis">
6367
+ Job Queues
6368
+ </span>
6369
+
6370
+
6371
+ </a>
6372
+ </li>
6373
+
6374
+
6375
+
6376
+
6377
+
6378
+
6379
+
6380
+
6381
+
6382
+
6149
6383
  <li class="md-nav__item">
6150
6384
  <a href="../../platform-functionality/jobs/job-scheduling-and-approvals.html" class="md-nav__link">
6151
6385
 
@@ -6259,6 +6493,27 @@
6259
6493
 
6260
6494
 
6261
6495
 
6496
+ <li class="md-nav__item">
6497
+ <a href="../../platform-functionality/rendering-jinja-templates.html" class="md-nav__link">
6498
+
6499
+
6500
+ <span class="md-ellipsis">
6501
+ Rendering Jinja Templates
6502
+ </span>
6503
+
6504
+
6505
+ </a>
6506
+ </li>
6507
+
6508
+
6509
+
6510
+
6511
+
6512
+
6513
+
6514
+
6515
+
6516
+
6262
6517
 
6263
6518
 
6264
6519
 
@@ -6270,7 +6525,7 @@
6270
6525
 
6271
6526
 
6272
6527
 
6273
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_16" >
6528
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_18" >
6274
6529
 
6275
6530
 
6276
6531
 
@@ -6286,14 +6541,14 @@
6286
6541
  </a>
6287
6542
 
6288
6543
 
6289
- <label class="md-nav__link " for="__nav_2_4_16" id="__nav_2_4_16_label" tabindex="0">
6544
+ <label class="md-nav__link " for="__nav_2_4_18" id="__nav_2_4_18_label" tabindex="0">
6290
6545
  <span class="md-nav__icon md-icon"></span>
6291
6546
  </label>
6292
6547
 
6293
6548
  </div>
6294
6549
 
6295
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_16_label" aria-expanded="false">
6296
- <label class="md-nav__title" for="__nav_2_4_16">
6550
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_18_label" aria-expanded="false">
6551
+ <label class="md-nav__title" for="__nav_2_4_18">
6297
6552
  <span class="md-nav__icon md-icon"></span>
6298
6553
  REST API
6299
6554
  </label>
@@ -6513,10 +6768,10 @@
6513
6768
 
6514
6769
 
6515
6770
 
6516
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_23" >
6771
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_25" >
6517
6772
 
6518
6773
 
6519
- <label class="md-nav__link" for="__nav_2_4_23" id="__nav_2_4_23_label" tabindex="0">
6774
+ <label class="md-nav__link" for="__nav_2_4_25" id="__nav_2_4_25_label" tabindex="0">
6520
6775
 
6521
6776
 
6522
6777
  <span class="md-ellipsis">
@@ -6527,8 +6782,8 @@
6527
6782
  <span class="md-nav__icon md-icon"></span>
6528
6783
  </label>
6529
6784
 
6530
- <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_23_label" aria-expanded="false">
6531
- <label class="md-nav__title" for="__nav_2_4_23">
6785
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_25_label" aria-expanded="false">
6786
+ <label class="md-nav__title" for="__nav_2_4_25">
6532
6787
  <span class="md-nav__icon md-icon"></span>
6533
6788
  Users
6534
6789
  </label>
@@ -7933,6 +8188,27 @@
7933
8188
 
7934
8189
 
7935
8190
 
8191
+ <li class="md-nav__item">
8192
+ <a href="../../../code-reference/nautobot/apps/events.html" class="md-nav__link">
8193
+
8194
+
8195
+ <span class="md-ellipsis">
8196
+ nautobot.apps.events
8197
+ </span>
8198
+
8199
+
8200
+ </a>
8201
+ </li>
8202
+
8203
+
8204
+
8205
+
8206
+
8207
+
8208
+
8209
+
8210
+
8211
+
7936
8212
  <li class="md-nav__item">
7937
8213
  <a href="../../../code-reference/nautobot/apps/exceptions.html" class="md-nav__link">
7938
8214
 
@@ -8481,7 +8757,124 @@
8481
8757
 
8482
8758
 
8483
8759
 
8484
- </ul>
8760
+
8761
+
8762
+
8763
+
8764
+
8765
+
8766
+
8767
+
8768
+
8769
+
8770
+
8771
+
8772
+
8773
+ <li class="md-nav__item md-nav__item--nested">
8774
+
8775
+
8776
+
8777
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_9_5" >
8778
+
8779
+
8780
+
8781
+ <div class="md-nav__link md-nav__container">
8782
+ <a href="../../../development/apps/migration/ui-component-framework/index.html" class="md-nav__link ">
8783
+
8784
+
8785
+ <span class="md-ellipsis">
8786
+ UI Component Framework
8787
+ </span>
8788
+
8789
+
8790
+ </a>
8791
+
8792
+
8793
+ <label class="md-nav__link " for="__nav_3_2_9_5" id="__nav_3_2_9_5_label" tabindex="0">
8794
+ <span class="md-nav__icon md-icon"></span>
8795
+ </label>
8796
+
8797
+ </div>
8798
+
8799
+ <nav class="md-nav" data-md-level="4" aria-labelledby="__nav_3_2_9_5_label" aria-expanded="false">
8800
+ <label class="md-nav__title" for="__nav_3_2_9_5">
8801
+ <span class="md-nav__icon md-icon"></span>
8802
+ UI Component Framework
8803
+ </label>
8804
+ <ul class="md-nav__list" data-md-scrollfix>
8805
+
8806
+
8807
+
8808
+
8809
+
8810
+
8811
+
8812
+ <li class="md-nav__item">
8813
+ <a href="../../../development/apps/migration/ui-component-framework/migration-steps.html" class="md-nav__link">
8814
+
8815
+
8816
+ <span class="md-ellipsis">
8817
+ Migration steps
8818
+ </span>
8819
+
8820
+
8821
+ </a>
8822
+ </li>
8823
+
8824
+
8825
+
8826
+
8827
+
8828
+
8829
+
8830
+
8831
+
8832
+
8833
+ <li class="md-nav__item">
8834
+ <a href="../../../development/apps/migration/ui-component-framework/custom-content.html" class="md-nav__link">
8835
+
8836
+
8837
+ <span class="md-ellipsis">
8838
+ Custom content
8839
+ </span>
8840
+
8841
+
8842
+ </a>
8843
+ </li>
8844
+
8845
+
8846
+
8847
+
8848
+
8849
+
8850
+
8851
+
8852
+
8853
+
8854
+ <li class="md-nav__item">
8855
+ <a href="../../../development/apps/migration/ui-component-framework/best-practices.html" class="md-nav__link">
8856
+
8857
+
8858
+ <span class="md-ellipsis">
8859
+ Best practices
8860
+ </span>
8861
+
8862
+
8863
+ </a>
8864
+ </li>
8865
+
8866
+
8867
+
8868
+
8869
+ </ul>
8870
+ </nav>
8871
+
8872
+ </li>
8873
+
8874
+
8875
+
8876
+
8877
+ </ul>
8485
8878
  </nav>
8486
8879
 
8487
8880
  </li>
@@ -8826,6 +9219,27 @@
8826
9219
 
8827
9220
 
8828
9221
 
9222
+ <li class="md-nav__item">
9223
+ <a href="../../../development/core/local-k8s.html" class="md-nav__link">
9224
+
9225
+
9226
+ <span class="md-ellipsis">
9227
+ Local Kubernetes Cluster
9228
+ </span>
9229
+
9230
+
9231
+ </a>
9232
+ </li>
9233
+
9234
+
9235
+
9236
+
9237
+
9238
+
9239
+
9240
+
9241
+
9242
+
8829
9243
  <li class="md-nav__item">
8830
9244
  <a href="../../../development/core/model-checklist.html" class="md-nav__link">
8831
9245
 
@@ -9015,6 +9429,27 @@
9015
9429
 
9016
9430
 
9017
9431
 
9432
+ <li class="md-nav__item">
9433
+ <a href="../../../development/core/ui-component-framework.html" class="md-nav__link">
9434
+
9435
+
9436
+ <span class="md-ellipsis">
9437
+ UI Component Framework
9438
+ </span>
9439
+
9440
+
9441
+ </a>
9442
+ </li>
9443
+
9444
+
9445
+
9446
+
9447
+
9448
+
9449
+
9450
+
9451
+
9452
+
9018
9453
  <li class="md-nav__item">
9019
9454
  <a href="../../../development/core/release-checklist.html" class="md-nav__link">
9020
9455
 
@@ -9097,6 +9532,27 @@
9097
9532
 
9098
9533
 
9099
9534
 
9535
+ <li class="md-nav__item">
9536
+ <a href="../../../release-notes/version-2.4.html" class="md-nav__link">
9537
+
9538
+
9539
+ <span class="md-ellipsis">
9540
+ Version 2.4
9541
+ </span>
9542
+
9543
+
9544
+ </a>
9545
+ </li>
9546
+
9547
+
9548
+
9549
+
9550
+
9551
+
9552
+
9553
+
9554
+
9555
+
9100
9556
  <li class="md-nav__item">
9101
9557
  <a href="../../../release-notes/version-2.3.html" class="md-nav__link">
9102
9558
 
@@ -10061,6 +10517,15 @@
10061
10517
  </span>
10062
10518
  </a>
10063
10519
 
10520
+ </li>
10521
+
10522
+ <li class="md-nav__item">
10523
+ <a href="#event_brokers" class="md-nav__link">
10524
+ <span class="md-ellipsis">
10525
+ EVENT_BROKERS
10526
+ </span>
10527
+ </a>
10528
+
10064
10529
  </li>
10065
10530
 
10066
10531
  <li class="md-nav__item">
@@ -10187,6 +10652,60 @@
10187
10652
  </span>
10188
10653
  </a>
10189
10654
 
10655
+ </li>
10656
+
10657
+ <li class="md-nav__item">
10658
+ <a href="#kubernetes_default_service_address" class="md-nav__link">
10659
+ <span class="md-ellipsis">
10660
+ KUBERNETES_DEFAULT_SERVICE_ADDRESS
10661
+ </span>
10662
+ </a>
10663
+
10664
+ </li>
10665
+
10666
+ <li class="md-nav__item">
10667
+ <a href="#kubernetes_job_manifest" class="md-nav__link">
10668
+ <span class="md-ellipsis">
10669
+ KUBERNETES_JOB_MANIFEST
10670
+ </span>
10671
+ </a>
10672
+
10673
+ </li>
10674
+
10675
+ <li class="md-nav__item">
10676
+ <a href="#kubernetes_job_pod_name" class="md-nav__link">
10677
+ <span class="md-ellipsis">
10678
+ KUBERNETES_JOB_POD_NAME
10679
+ </span>
10680
+ </a>
10681
+
10682
+ </li>
10683
+
10684
+ <li class="md-nav__item">
10685
+ <a href="#kubernetes_job_pod_namespace" class="md-nav__link">
10686
+ <span class="md-ellipsis">
10687
+ KUBERNETES_JOB_POD_NAMESPACE
10688
+ </span>
10689
+ </a>
10690
+
10691
+ </li>
10692
+
10693
+ <li class="md-nav__item">
10694
+ <a href="#kubernetes_ssl_ca_cert_path" class="md-nav__link">
10695
+ <span class="md-ellipsis">
10696
+ KUBERNETES_SSL_CA_CERT_PATH
10697
+ </span>
10698
+ </a>
10699
+
10700
+ </li>
10701
+
10702
+ <li class="md-nav__item">
10703
+ <a href="#kubernetes_token_path" class="md-nav__link">
10704
+ <span class="md-ellipsis">
10705
+ KUBERNETES_TOKEN_PATH
10706
+ </span>
10707
+ </a>
10708
+
10190
10709
  </li>
10191
10710
 
10192
10711
  <li class="md-nav__item">
@@ -10391,15 +10910,6 @@
10391
10910
  </span>
10392
10911
  </a>
10393
10912
 
10394
- </li>
10395
-
10396
- <li class="md-nav__item">
10397
- <a href="#publish_robots_txt" class="md-nav__link">
10398
- <span class="md-ellipsis">
10399
- PUBLISH_ROBOTS_TXT
10400
- </span>
10401
- </a>
10402
-
10403
10913
  </li>
10404
10914
 
10405
10915
  <li class="md-nav__item">
@@ -11548,6 +12058,37 @@ installation metrics. This setting is not generally intended to be user-servicea
11548
12058
  <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>
11549
12059
  </div>
11550
12060
  <hr />
12061
+ <h3 id="event_brokers"><code>EVENT_BROKERS</code><a class="headerlink" href="#event_brokers" title="Permanent link">&para;</a></h3>
12062
+ <details class="version-added">
12063
+ <summary>Added in version 2.4.0</summary>
12064
+ </details>
12065
+ <p><strong>Default:</strong>
12066
+ <code>{}</code></p>
12067
+ <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>
12068
+ <p>Each broker consists of a name, the class it uses for publishing events, and the topics
12069
+ it filters. Topics are the categories of events that a broker will publish or exclude
12070
+ based on the provided filters.</p>
12071
+ <p>Example:</p>
12072
+ <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>
12073
+ <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>
12074
+ <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>
12075
+ <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>
12076
+ <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>
12077
+ <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>
12078
+ <a id="__codelineno-10-7" name="__codelineno-10-7" href="#__codelineno-10-7"></a> <span class="p">},</span>
12079
+ <a id="__codelineno-10-8" name="__codelineno-10-8" href="#__codelineno-10-8"></a> <span class="p">},</span>
12080
+ <a id="__codelineno-10-9" name="__codelineno-10-9" href="#__codelineno-10-9"></a><span class="p">}</span>
12081
+ </code></pre></div>
12082
+ <p>In this example:
12083
+ - <strong>SyslogEventBroker</strong> is the broker name.
12084
+ - <strong>CLASS</strong> specifies the path to the event broker's Python class.
12085
+ - <strong>INCLUDE</strong> filters the events the broker will publish, such as all topics starting with "nautobot.test."
12086
+ - <strong>EXCLUDE</strong> filters out specific topics like those with "no-publish" in the name.</p>
12087
+ <div class="admonition note">
12088
+ <p class="admonition-title">Note</p>
12089
+ <p>If <strong>INCLUDE</strong> is set to ["<em>"], all topics will be published unless excluded by </em><em>EXCLUDE</em>*.</p>
12090
+ </div>
12091
+ <hr />
11551
12092
  <h3 id="exempt_view_permissions"><code>EXEMPT_VIEW_PERMISSIONS</code><a class="headerlink" href="#exempt_view_permissions" title="Permanent link">&para;</a></h3>
11552
12093
  <p><strong>Default:</strong>
11553
12094
  <code>[]</code></p>
@@ -11555,15 +12096,15 @@ installation metrics. This setting is not generally intended to be user-servicea
11555
12096
  <p>Models listed here will be viewable by all users, both authenticated and anonymous.
11556
12097
  List models in the form <code>&lt;app&gt;.&lt;model&gt;</code>.</p>
11557
12098
  <p>Example:</p>
11558
- <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>
11559
- <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>
11560
- <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>
11561
- <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>
11562
- <a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a><span class="p">]</span>
12099
+ <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>
12100
+ <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>
12101
+ <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>
12102
+ <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>
12103
+ <a id="__codelineno-11-5" name="__codelineno-11-5" href="#__codelineno-11-5"></a><span class="p">]</span>
11563
12104
  </code></pre></div>
11564
12105
  <p>To exempt <em>all</em> models from view permission enforcement, set the following.
11565
12106
  (Note that <code>EXEMPT_VIEW_PERMISSIONS</code> must be an iterable.)</p>
11566
- <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>
12107
+ <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>
11567
12108
  </code></pre></div>
11568
12109
  <div class="admonition note">
11569
12110
  <p class="admonition-title">Note</p>
@@ -11617,23 +12158,23 @@ able to be created or edited.</p>
11617
12158
  </div>
11618
12159
  <p>The following example gives a user a reasonable amount of access to add devices to a single location
11619
12160
  (Building HQ in this case):</p>
11620
- <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>
11621
- <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>
11622
- <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>
11623
- <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>
11624
- <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>
11625
- <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>
11626
- <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>
11627
- <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>
11628
- <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>
11629
- <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>
11630
- <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>
11631
- <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>
11632
- <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>
11633
- <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>
11634
- <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>
11635
- <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>
11636
- <a id="__codelineno-12-17" name="__codelineno-12-17" href="#__codelineno-12-17"></a><span class="p">}</span>
12161
+ <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>
12162
+ <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>
12163
+ <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>
12164
+ <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>
12165
+ <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>
12166
+ <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>
12167
+ <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>
12168
+ <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>
12169
+ <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>
12170
+ <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>
12171
+ <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>
12172
+ <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>
12173
+ <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>
12174
+ <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>
12175
+ <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>
12176
+ <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>
12177
+ <a id="__codelineno-13-17" name="__codelineno-13-17" href="#__codelineno-13-17"></a><span class="p">}</span>
11637
12178
  </code></pre></div>
11638
12179
  <p><strong>See Also:</strong></p>
11639
12180
  <ul>
@@ -11685,16 +12226,16 @@ set <code>FORCE_SCRIPT_NAME = "/nautobot/"</code>.</p>
11685
12226
  <p>Proxies should be specified by schema (HTTP and HTTPS) as per the
11686
12227
  <a href="https://2.python-requests.org/en/master/user/advanced/">Python <code>requests</code> library documentation</a>.</p>
11687
12228
  <p>Example:</p>
11688
- <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>
11689
- <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>
11690
- <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>
11691
- <a id="__codelineno-13-4" name="__codelineno-13-4" href="#__codelineno-13-4"></a><span class="p">}</span>
12229
+ <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>
12230
+ <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>
12231
+ <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>
12232
+ <a id="__codelineno-14-4" name="__codelineno-14-4" href="#__codelineno-14-4"></a><span class="p">}</span>
11692
12233
  </code></pre></div>
11693
12234
  <div class="admonition note">
11694
12235
  <p class="admonition-title">Note</p>
11695
12236
  <p>When using Git repositories within Nautobot the Python library <code>GitPython</code> needs extra proxy configuration:</p>
11696
- <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
11697
- <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
12237
+ <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
12238
+ <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
11698
12239
  </code></pre></div>
11699
12240
  </div>
11700
12241
  <hr />
@@ -11795,6 +12336,59 @@ Migrating Job stored files from one backend to another is out of scope for this
11795
12336
  <p>This directory no longer requires an <code>__init__.py</code> file.</p>
11796
12337
  </details>
11797
12338
  <hr />
12339
+ <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>
12340
+ <details class="version-added">
12341
+ <summary>Added in version 2.4.0</summary>
12342
+ </details>
12343
+ <p><strong>Default:</strong>
12344
+ <code>""</code></p>
12345
+ <p><strong>Environment Variable:</strong> <code>NAUTOBOT_KUBERNETES_DEFAULT_SERVICE_ADDRESS</code></p>
12346
+ <p>HTTP address of the Kubernetes cluster. e.g. https://kubernetes.default.svc</p>
12347
+ <hr />
12348
+ <h3 id="kubernetes_job_manifest"><code>KUBERNETES_JOB_MANIFEST</code><a class="headerlink" href="#kubernetes_job_manifest" title="Permanent link">&para;</a></h3>
12349
+ <details class="version-added">
12350
+ <summary>Added in version 2.4.0</summary>
12351
+ </details>
12352
+ <p><strong>Default:</strong>
12353
+ <code>{}</code></p>
12354
+ <p>A dictionary that contains the pod manifest used to create a job pod in the kubernetes cluster.</p>
12355
+ <hr />
12356
+ <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>
12357
+ <details class="version-added">
12358
+ <summary>Added in version 2.4.0</summary>
12359
+ </details>
12360
+ <p><strong>Default:</strong>
12361
+ <code>""</code></p>
12362
+ <p><strong>Environment Variable:</strong> <code>NAUTOBOT_KUBERNETES_JOB_POD_NAME</code></p>
12363
+ <p>Name of the Kubernetes pod.</p>
12364
+ <hr />
12365
+ <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>
12366
+ <details class="version-added">
12367
+ <summary>Added in version 2.4.0</summary>
12368
+ </details>
12369
+ <p><strong>Default:</strong>
12370
+ <code>""</code></p>
12371
+ <p><strong>Environment Variable:</strong> <code>NAUTOBOT_KUBERNETES_JOB_POD_NAMESPACE</code></p>
12372
+ <p>Name of the namespace that the Kubernetes pod is created in.</p>
12373
+ <hr />
12374
+ <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>
12375
+ <details class="version-added">
12376
+ <summary>Added in version 2.4.0</summary>
12377
+ </details>
12378
+ <p><strong>Default:</strong>
12379
+ <code>"/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"</code></p>
12380
+ <p><strong>Environment Variable:</strong> <code>NAUTOBOT_KUBERNETES_SSL_CA_CERT_PATH</code></p>
12381
+ <p>File path to the SSL CA CERT used for authentication to create the job and job pod.</p>
12382
+ <hr />
12383
+ <h3 id="kubernetes_token_path"><code>KUBERNETES_TOKEN_PATH</code><a class="headerlink" href="#kubernetes_token_path" title="Permanent link">&para;</a></h3>
12384
+ <details class="version-added">
12385
+ <summary>Added in version 2.4.0</summary>
12386
+ </details>
12387
+ <p><strong>Default:</strong>
12388
+ <code>"/var/run/secrets/kubernetes.io/serviceaccount/token"</code></p>
12389
+ <p><strong>Environment Variable:</strong> <code>NAUTOBOT_KUBERNETES_TOKEN_PATH</code></p>
12390
+ <p>File path to the Bearer token used for authentication to create the job and job pod.</p>
12391
+ <hr />
11798
12392
  <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>
11799
12393
  <details class="version-added">
11800
12394
  <summary>Added in version 2.0.0</summary>
@@ -11831,37 +12425,37 @@ which can be useful when vetting various Nautobot Apps for future-proofness agai
11831
12425
  <hr />
11832
12426
  <h3 id="logging"><code>LOGGING</code><a class="headerlink" href="#logging" title="Permanent link">&para;</a></h3>
11833
12427
  <p><strong>Default:</strong></p>
11834
- <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>
11835
- <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>
11836
- <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>
11837
- <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>
11838
- <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>
11839
- <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>
11840
- <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>
11841
- <a id="__codelineno-15-8" name="__codelineno-15-8" href="#__codelineno-15-8"></a> <span class="p">},</span>
11842
- <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>
11843
- <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>
11844
- <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>
11845
- <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>
11846
- <a id="__codelineno-15-13" name="__codelineno-15-13" href="#__codelineno-15-13"></a> <span class="p">},</span>
11847
- <a id="__codelineno-15-14" name="__codelineno-15-14" href="#__codelineno-15-14"></a> <span class="p">},</span>
11848
- <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>
11849
- <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>
11850
- <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>
11851
- <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>
11852
- <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>
11853
- <a id="__codelineno-15-20" name="__codelineno-15-20" href="#__codelineno-15-20"></a> <span class="p">},</span>
11854
- <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>
11855
- <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>
11856
- <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>
11857
- <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>
11858
- <a id="__codelineno-15-25" name="__codelineno-15-25" href="#__codelineno-15-25"></a> <span class="p">},</span>
11859
- <a id="__codelineno-15-26" name="__codelineno-15-26" href="#__codelineno-15-26"></a> <span class="p">},</span>
11860
- <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>
11861
- <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>
11862
- <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>
11863
- <a id="__codelineno-15-30" name="__codelineno-15-30" href="#__codelineno-15-30"></a> <span class="p">},</span>
11864
- <a id="__codelineno-15-31" name="__codelineno-15-31" href="#__codelineno-15-31"></a><span class="p">}</span>
12428
+ <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>
12429
+ <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>
12430
+ <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>
12431
+ <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>
12432
+ <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>
12433
+ <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>
12434
+ <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>
12435
+ <a id="__codelineno-16-8" name="__codelineno-16-8" href="#__codelineno-16-8"></a> <span class="p">},</span>
12436
+ <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>
12437
+ <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>
12438
+ <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>
12439
+ <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>
12440
+ <a id="__codelineno-16-13" name="__codelineno-16-13" href="#__codelineno-16-13"></a> <span class="p">},</span>
12441
+ <a id="__codelineno-16-14" name="__codelineno-16-14" href="#__codelineno-16-14"></a> <span class="p">},</span>
12442
+ <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>
12443
+ <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>
12444
+ <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>
12445
+ <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>
12446
+ <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>
12447
+ <a id="__codelineno-16-20" name="__codelineno-16-20" href="#__codelineno-16-20"></a> <span class="p">},</span>
12448
+ <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>
12449
+ <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>
12450
+ <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>
12451
+ <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>
12452
+ <a id="__codelineno-16-25" name="__codelineno-16-25" href="#__codelineno-16-25"></a> <span class="p">},</span>
12453
+ <a id="__codelineno-16-26" name="__codelineno-16-26" href="#__codelineno-16-26"></a> <span class="p">},</span>
12454
+ <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>
12455
+ <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>
12456
+ <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>
12457
+ <a id="__codelineno-16-30" name="__codelineno-16-30" href="#__codelineno-16-30"></a> <span class="p">},</span>
12458
+ <a id="__codelineno-16-31" name="__codelineno-16-31" href="#__codelineno-16-31"></a><span class="p">}</span>
11865
12459
  </code></pre></div>
11866
12460
  <p>A dictionary containing the configuration settings for logging in Nautobot.</p>
11867
12461
  <p>The default translates to:</p>
@@ -11877,14 +12471,14 @@ production environments that expect one line per log message. Fortunately, the D
11877
12471
  extensive customization of logging format and destination.</p>
11878
12472
  <p>Below is an example configuration extension which will additionally write all INFO and higher messages to
11879
12473
  a local file:</p>
11880
- <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>
11881
- <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>
11882
- <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>
11883
- <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>
11884
- <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>
11885
- <a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a><span class="p">}</span>
11886
- <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>
11887
- <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>
12474
+ <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>
12475
+ <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>
12476
+ <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>
12477
+ <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>
12478
+ <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>
12479
+ <a id="__codelineno-17-6" name="__codelineno-17-6" href="#__codelineno-17-6"></a><span class="p">}</span>
12480
+ <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>
12481
+ <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>
11888
12482
  </code></pre></div>
11889
12483
  <h4 id="available-loggers">Available Loggers<a class="headerlink" href="#available-loggers" title="Permanent link">&para;</a></h4>
11890
12484
  <ul>
@@ -11898,17 +12492,17 @@ a local file:</p>
11898
12492
  </ul>
11899
12493
  <h4 id="structlog-configuration">Structlog Configuration<a class="headerlink" href="#structlog-configuration" title="Permanent link">&para;</a></h4>
11900
12494
  <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>
11901
- <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>
11902
- <a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a>
11903
- <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>
11904
- <a id="__codelineno-17-4" name="__codelineno-17-4" href="#__codelineno-17-4"></a> <span class="n">LOGGING</span><span class="p">,</span>
11905
- <a id="__codelineno-17-5" name="__codelineno-17-5" href="#__codelineno-17-5"></a> <span class="n">INSTALLED_APPS</span><span class="p">,</span>
11906
- <a id="__codelineno-17-6" name="__codelineno-17-6" href="#__codelineno-17-6"></a> <span class="n">MIDDLEWARE</span><span class="p">,</span>
11907
- <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>
11908
- <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>
11909
- <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>
11910
- <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>
11911
- <a id="__codelineno-17-11" name="__codelineno-17-11" href="#__codelineno-17-11"></a><span class="p">)</span>
12495
+ <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>
12496
+ <a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a>
12497
+ <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>
12498
+ <a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a> <span class="n">LOGGING</span><span class="p">,</span>
12499
+ <a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a> <span class="n">INSTALLED_APPS</span><span class="p">,</span>
12500
+ <a id="__codelineno-18-6" name="__codelineno-18-6" href="#__codelineno-18-6"></a> <span class="n">MIDDLEWARE</span><span class="p">,</span>
12501
+ <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>
12502
+ <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>
12503
+ <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>
12504
+ <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>
12505
+ <a id="__codelineno-18-11" name="__codelineno-18-11" href="#__codelineno-18-11"></a><span class="p">)</span>
11912
12506
  </code></pre></div>
11913
12507
  <p>Calling this function disables logging if running tests, otherwise:</p>
11914
12508
  <ul>
@@ -12025,20 +12619,20 @@ to avoid this.</p>
12025
12619
  <code>{}</code></p>
12026
12620
  <p>A dictionary of optional arguments to pass to NAPALM when instantiating a network driver.</p>
12027
12621
  <p>Example:</p>
12028
- <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>
12029
- <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>
12030
- <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>
12031
- <a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a><span class="p">}</span>
12622
+ <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>
12623
+ <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>
12624
+ <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>
12625
+ <a id="__codelineno-19-4" name="__codelineno-19-4" href="#__codelineno-19-4"></a><span class="p">}</span>
12032
12626
  </code></pre></div>
12033
12627
  <p>Some platforms (e.g. Cisco IOS) require an enable password to be passed in addition to the normal password.
12034
12628
  If desired, you can use the configured <code>NAPALM_PASSWORD</code> as the value for this argument:</p>
12035
- <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>
12036
- <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>
12037
- <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>
12038
- <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>
12039
- <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>
12040
- <a id="__codelineno-19-6" name="__codelineno-19-6" href="#__codelineno-19-6"></a> <span class="c1"># Include any additional args here</span>
12041
- <a id="__codelineno-19-7" name="__codelineno-19-7" href="#__codelineno-19-7"></a><span class="p">}</span>
12629
+ <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>
12630
+ <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>
12631
+ <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>
12632
+ <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>
12633
+ <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>
12634
+ <a id="__codelineno-20-6" name="__codelineno-20-6" href="#__codelineno-20-6"></a> <span class="c1"># Include any additional args here</span>
12635
+ <a id="__codelineno-20-7" name="__codelineno-20-7" href="#__codelineno-20-7"></a><span class="p">}</span>
12042
12636
  </code></pre></div>
12043
12637
  <div class="admonition note">
12044
12638
  <p class="admonition-title">Note</p>
@@ -12117,10 +12711,10 @@ If you need to customize this setting, please always set the <code>NAUTOBOT_ROOT
12117
12711
  <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>
12118
12712
  <p>For example, to add support for a custom <code>Platform.network_driver</code> value of <code>"my_network_driver"</code>
12119
12713
  for Netmiko and PyATS drivers:</p>
12120
- <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>
12121
- <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>
12122
- <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>
12123
- <a id="__codelineno-20-4" name="__codelineno-20-4" href="#__codelineno-20-4"></a><span class="p">}</span>
12714
+ <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>
12715
+ <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>
12716
+ <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>
12717
+ <a id="__codelineno-21-4" name="__codelineno-21-4" href="#__codelineno-21-4"></a><span class="p">}</span>
12124
12718
  </code></pre></div>
12125
12719
  <p>The default top-level keys are <code>ansible</code>, <code>hier_config</code>, <code>napalm</code>, <code>netmiko</code>, <code>netutils_parser</code>,
12126
12720
  <code>ntc_templates</code>, <code>pyats</code>, <code>pyntc</code>, and <code>scrapli</code>, but you can also add additional keys if you have
@@ -12169,15 +12763,15 @@ absolutely no guarantees about the integrity or security of your installation wi
12169
12763
  <p>It is defined as a dictionary, with each key using the name of an installed App.
12170
12764
  The specific parameters supported are unique to each App; reference the App's documentation to determine
12171
12765
  the supported parameters. An example configuration is shown below:</p>
12172
- <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>
12173
- <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>
12174
- <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>
12175
- <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>
12176
- <a id="__codelineno-21-5" name="__codelineno-21-5" href="#__codelineno-21-5"></a> <span class="p">},</span>
12177
- <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>
12178
- <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>
12179
- <a id="__codelineno-21-8" name="__codelineno-21-8" href="#__codelineno-21-8"></a> <span class="p">},</span>
12180
- <a id="__codelineno-21-9" name="__codelineno-21-9" href="#__codelineno-21-9"></a><span class="p">}</span>
12766
+ <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>
12767
+ <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>
12768
+ <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>
12769
+ <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>
12770
+ <a id="__codelineno-22-5" name="__codelineno-22-5" href="#__codelineno-22-5"></a> <span class="p">},</span>
12771
+ <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>
12772
+ <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>
12773
+ <a id="__codelineno-22-8" name="__codelineno-22-8" href="#__codelineno-22-8"></a> <span class="p">},</span>
12774
+ <a id="__codelineno-22-9" name="__codelineno-22-9" href="#__codelineno-22-9"></a><span class="p">}</span>
12181
12775
  </code></pre></div>
12182
12776
  <p>Note that an App must be listed in <code>PLUGINS</code> for its configuration to take effect.</p>
12183
12777
  <hr />
@@ -12191,15 +12785,6 @@ the supported parameters. An example configuration is shown below:</p>
12191
12785
  <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>
12192
12786
  </div>
12193
12787
  <hr />
12194
- <h3 id="publish_robots_txt"><code>PUBLISH_ROBOTS_TXT</code><a class="headerlink" href="#publish_robots_txt" title="Permanent link">&para;</a></h3>
12195
- <details class="version-added">
12196
- <summary>Added in version 2.3.15</summary>
12197
- </details>
12198
- <p><strong>Default:</strong>
12199
- <code>True</code></p>
12200
- <p><strong>Environment Variable:</strong> <code>NAUTOBOT_PUBLISH_ROBOTS_TXT</code></p>
12201
- <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>
12202
- <hr />
12203
12788
  <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>
12204
12789
  <p><strong>Default:</strong>
12205
12790
  <code>22</code></p>
@@ -12293,13 +12878,13 @@ or a custom fork. Set this to <code>None</code> to disable automatic update chec
12293
12878
  <summary>Added in version 1.3.4</summary>
12294
12879
  </details>
12295
12880
  <p><strong>Default:</strong></p>
12296
- <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>
12297
- <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>
12298
- <a id="__codelineno-22-3" name="__codelineno-22-3" href="#__codelineno-22-3"></a> <span class="p">(</span>
12299
- <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>
12300
- <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>
12301
- <a id="__codelineno-22-6" name="__codelineno-22-6" href="#__codelineno-22-6"></a> <span class="p">),</span>
12302
- <a id="__codelineno-22-7" name="__codelineno-22-7" href="#__codelineno-22-7"></a><span class="p">]</span>
12881
+ <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>
12882
+ <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>
12883
+ <a id="__codelineno-23-3" name="__codelineno-23-3" href="#__codelineno-23-3"></a> <span class="p">(</span>
12884
+ <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>
12885
+ <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>
12886
+ <a id="__codelineno-23-6" name="__codelineno-23-6" href="#__codelineno-23-6"></a> <span class="p">),</span>
12887
+ <a id="__codelineno-23-7" name="__codelineno-23-7" href="#__codelineno-23-7"></a><span class="p">]</span>
12303
12888
  </code></pre></div>
12304
12889
  <p>List of (regular expression, replacement pattern) tuples used by the <code>nautobot.core.utils.logging.sanitize()</code> function.</p>
12305
12890
  <p>As of Nautobot 1.3.4 this function is used primarily for sanitization of Job log entries,
@@ -12369,16 +12954,16 @@ but it may be used in other scopes in the future.</p>
12369
12954
  to create a new <code>nautobot_config.py</code>.</p>
12370
12955
  </div>
12371
12956
  <p>You may run <code>nautobot-server generate_secret_key</code> to generate a new key at any time.</p>
12372
- <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
12957
+ <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
12373
12958
  </code></pre></div>
12374
12959
  <p>Sample output:</p>
12375
- <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
12960
+ <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
12376
12961
  </code></pre></div>
12377
12962
  <p>Alternatively use the following command to generate a secret even before <code>nautobot-server</code> is runnable:</p>
12378
- <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
12963
+ <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
12379
12964
  </code></pre></div>
12380
12965
  <p>Example output:</p>
12381
- <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
12966
+ <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
12382
12967
  </code></pre></div>
12383
12968
  <div class="admonition warning">
12384
12969
  <p class="admonition-title">Warning</p>
@@ -12609,23 +13194,23 @@ provide support for Nautobot. Markdown formatting is supported within this messa
12609
13194
  <p><strong>Environment Variable:</strong> <code>NAUTOBOT_TEST_PERFORMANCE_BASELINE_FILE</code></p>
12610
13195
  <p>File path of a YAML file providing baseline times for all performance-related tests.</p>
12611
13196
  <p>The YAML file should conform to the following format:</p>
12612
- <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>
12613
- <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>
12614
- <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>
12615
- <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>
12616
- <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>
12617
- <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>
12618
- <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>
12619
- <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>
12620
- <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>
12621
- <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>
12622
- <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>
12623
- <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>
12624
- <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>
12625
- <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>
12626
- <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>
12627
- <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>
12628
- <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>
13197
+ <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>
13198
+ <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>
13199
+ <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>
13200
+ <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>
13201
+ <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>
13202
+ <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>
13203
+ <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>
13204
+ <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>
13205
+ <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>
13206
+ <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>
13207
+ <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>
13208
+ <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>
13209
+ <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>
13210
+ <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>
13211
+ <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>
13212
+ <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>
13213
+ <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>
12629
13214
  </code></pre></div>
12630
13215
  <hr />
12631
13216
  <h3 id="test_use_factories"><code>TEST_USE_FACTORIES</code><a class="headerlink" href="#test_use_factories" title="Permanent link">&para;</a></h3>
@@ -12695,8 +13280,8 @@ and all Nautobot web servers, or else your scheduled jobs may run in the wrong t
12695
13280
  <summary>Added in version 1.4.0</summary>
12696
13281
  </details>
12697
13282
  <p><strong>Default:</strong></p>
12698
- <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>
12699
- <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>
13283
+ <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>
13284
+ <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>
12700
13285
  </code></pre></div>
12701
13286
  <p>This setting function is used to perform the rack elevation truncation feature.</p>
12702
13287
  <p>This provides a way to tailor the truncation behavior to best suit the needs of the installation.
@@ -12884,10 +13469,10 @@ in order for the repository to sync.</p>
12884
13469
  </div>
12885
13470
 
12886
13471
 
12887
- <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>
13472
+ <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>
12888
13473
 
12889
13474
 
12890
- <script src="../../../assets/javascripts/bundle.88dd0f4e.min.js"></script>
13475
+ <script src="../../../assets/javascripts/bundle.83f73b43.min.js"></script>
12891
13476
 
12892
13477
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
12893
13478