nautobot 2.3.1__py3-none-any.whl → 2.3.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. nautobot/core/celery/schedulers.py +18 -0
  2. nautobot/core/settings.yaml +3 -3
  3. nautobot/core/tables.py +1 -1
  4. nautobot/core/templates/home.html +4 -3
  5. nautobot/core/templatetags/buttons.py +1 -1
  6. nautobot/core/tests/runner.py +27 -9
  7. nautobot/core/tests/test_utils.py +13 -0
  8. nautobot/core/utils/lookup.py +7 -1
  9. nautobot/core/views/utils.py +3 -3
  10. nautobot/dcim/factory.py +3 -3
  11. nautobot/dcim/tables/devices.py +7 -7
  12. nautobot/dcim/templates/dcim/device.html +12 -0
  13. nautobot/dcim/templates/dcim/softwareimagefile_retrieve.html +12 -0
  14. nautobot/dcim/utils.py +9 -6
  15. nautobot/extras/api/serializers.py +2 -0
  16. nautobot/extras/context_managers.py +11 -4
  17. nautobot/extras/filters/__init__.py +14 -2
  18. nautobot/extras/forms/forms.py +6 -0
  19. nautobot/extras/forms/mixins.py +2 -2
  20. nautobot/extras/jobs.py +0 -1
  21. nautobot/extras/management/__init__.py +3 -0
  22. nautobot/extras/migrations/0115_scheduledjob_time_zone.py +23 -0
  23. nautobot/extras/models/groups.py +4 -1
  24. nautobot/extras/models/jobs.py +24 -11
  25. nautobot/extras/tables.py +34 -4
  26. nautobot/extras/templates/extras/scheduledjob.html +13 -2
  27. nautobot/extras/tests/test_api.py +17 -18
  28. nautobot/extras/tests/test_context_managers.py +33 -14
  29. nautobot/extras/tests/test_dynamicgroups.py +11 -0
  30. nautobot/extras/tests/test_filters.py +57 -1
  31. nautobot/extras/tests/test_models.py +304 -1
  32. nautobot/extras/tests/test_views.py +4 -2
  33. nautobot/extras/views.py +7 -0
  34. nautobot/ipam/api/views.py +9 -2
  35. nautobot/ipam/choices.py +17 -0
  36. nautobot/ipam/factory.py +6 -0
  37. nautobot/ipam/filters.py +1 -1
  38. nautobot/ipam/forms.py +5 -3
  39. nautobot/ipam/migrations/0048_vrf_status.py +23 -0
  40. nautobot/ipam/migrations/0049_vrf_data_migration.py +25 -0
  41. nautobot/ipam/models.py +6 -0
  42. nautobot/ipam/tables.py +3 -2
  43. nautobot/ipam/templates/ipam/vrf.html +4 -0
  44. nautobot/ipam/templates/ipam/vrf_edit.html +1 -0
  45. nautobot/ipam/tests/test_api.py +44 -3
  46. nautobot/ipam/tests/test_views.py +3 -0
  47. nautobot/project-static/css/base.css +6 -0
  48. nautobot/project-static/docs/404.html +23 -23
  49. nautobot/project-static/docs/apps/index.html +25 -25
  50. nautobot/project-static/docs/apps/nautobot-apps.html +24 -24
  51. nautobot/project-static/docs/assets/javascripts/bundle.56dfad97.min.js +16 -0
  52. nautobot/project-static/docs/assets/javascripts/bundle.56dfad97.min.js.map +7 -0
  53. nautobot/project-static/docs/assets/javascripts/workers/{search.b8dbb3d2.min.js → search.07f07601.min.js} +1 -1
  54. nautobot/project-static/docs/assets/javascripts/workers/{search.b8dbb3d2.min.js.map → search.07f07601.min.js.map} +1 -1
  55. nautobot/project-static/docs/assets/stylesheets/main.35f28582.min.css +1 -0
  56. nautobot/project-static/docs/assets/stylesheets/main.35f28582.min.css.map +1 -0
  57. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +26 -26
  58. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +26 -26
  59. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +58 -58
  60. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +32 -31
  61. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +31 -31
  62. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +25 -25
  63. nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +25 -25
  64. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +30 -30
  65. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +34 -34
  66. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +41 -41
  67. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +48 -48
  68. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +92 -92
  69. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +41 -41
  70. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +85 -85
  71. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +84 -84
  72. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +26 -26
  73. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +28 -28
  74. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +40 -40
  75. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +78 -78
  76. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +77 -77
  77. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +26 -26
  78. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +80 -80
  79. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +67 -67
  80. nautobot/project-static/docs/development/apps/api/configuration-view.html +25 -25
  81. nautobot/project-static/docs/development/apps/api/database-backend-config.html +25 -25
  82. nautobot/project-static/docs/development/apps/api/models/django-admin.html +25 -25
  83. nautobot/project-static/docs/development/apps/api/models/global-search.html +25 -25
  84. nautobot/project-static/docs/development/apps/api/models/graphql.html +25 -25
  85. nautobot/project-static/docs/development/apps/api/models/index.html +25 -25
  86. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +25 -25
  87. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +25 -25
  88. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +25 -25
  89. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +25 -25
  90. nautobot/project-static/docs/development/apps/api/platform-features/index.html +25 -25
  91. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +25 -25
  92. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +25 -25
  93. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +25 -25
  94. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +25 -25
  95. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +25 -25
  96. nautobot/project-static/docs/development/apps/api/prometheus.html +25 -25
  97. nautobot/project-static/docs/development/apps/api/setup.html +25 -25
  98. nautobot/project-static/docs/development/apps/api/testing.html +25 -25
  99. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +25 -25
  100. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +25 -25
  101. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +25 -25
  102. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +25 -25
  103. nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +25 -25
  104. nautobot/project-static/docs/development/apps/api/views/base-template.html +25 -25
  105. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +25 -25
  106. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +25 -25
  107. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +25 -25
  108. nautobot/project-static/docs/development/apps/api/views/index.html +25 -25
  109. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +25 -25
  110. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +25 -25
  111. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +25 -25
  112. nautobot/project-static/docs/development/apps/api/views/notes.html +25 -25
  113. nautobot/project-static/docs/development/apps/api/views/rest-api.html +25 -25
  114. nautobot/project-static/docs/development/apps/api/views/urls.html +25 -25
  115. nautobot/project-static/docs/development/apps/index.html +25 -25
  116. nautobot/project-static/docs/development/apps/migration/code-updates.html +25 -25
  117. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +25 -25
  118. nautobot/project-static/docs/development/apps/migration/from-v1.html +25 -25
  119. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +25 -25
  120. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +25 -25
  121. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +25 -25
  122. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +25 -25
  123. nautobot/project-static/docs/development/apps/porting-from-netbox.html +25 -25
  124. nautobot/project-static/docs/development/core/application-registry.html +25 -25
  125. nautobot/project-static/docs/development/core/best-practices.html +25 -25
  126. nautobot/project-static/docs/development/core/bootstrap-ui.html +25 -25
  127. nautobot/project-static/docs/development/core/caching.html +25 -25
  128. nautobot/project-static/docs/development/core/controllers.html +25 -25
  129. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +25 -25
  130. nautobot/project-static/docs/development/core/generic-views.html +25 -25
  131. nautobot/project-static/docs/development/core/getting-started.html +25 -25
  132. nautobot/project-static/docs/development/core/homepage.html +25 -25
  133. nautobot/project-static/docs/development/core/index.html +25 -25
  134. nautobot/project-static/docs/development/core/model-checklist.html +25 -25
  135. nautobot/project-static/docs/development/core/model-features.html +25 -25
  136. nautobot/project-static/docs/development/core/natural-keys.html +25 -25
  137. nautobot/project-static/docs/development/core/navigation-menu.html +25 -25
  138. nautobot/project-static/docs/development/core/release-checklist.html +25 -25
  139. nautobot/project-static/docs/development/core/role-internals.html +25 -25
  140. nautobot/project-static/docs/development/core/settings.html +25 -25
  141. nautobot/project-static/docs/development/core/style-guide.html +25 -25
  142. nautobot/project-static/docs/development/core/templates.html +25 -25
  143. nautobot/project-static/docs/development/core/testing.html +25 -25
  144. nautobot/project-static/docs/development/core/user-preferences.html +25 -25
  145. nautobot/project-static/docs/development/index.html +25 -25
  146. nautobot/project-static/docs/development/jobs/index.html +25 -25
  147. nautobot/project-static/docs/development/jobs/migration/from-v1.html +25 -25
  148. nautobot/project-static/docs/index.html +30 -30
  149. nautobot/project-static/docs/overview/application_stack.html +31 -31
  150. nautobot/project-static/docs/overview/design_philosophy.html +25 -25
  151. nautobot/project-static/docs/release-notes/index.html +25 -25
  152. nautobot/project-static/docs/release-notes/version-1.0.html +25 -25
  153. nautobot/project-static/docs/release-notes/version-1.1.html +25 -25
  154. nautobot/project-static/docs/release-notes/version-1.2.html +25 -25
  155. nautobot/project-static/docs/release-notes/version-1.3.html +25 -25
  156. nautobot/project-static/docs/release-notes/version-1.4.html +25 -25
  157. nautobot/project-static/docs/release-notes/version-1.5.html +25 -25
  158. nautobot/project-static/docs/release-notes/version-1.6.html +25 -25
  159. nautobot/project-static/docs/release-notes/version-2.0.html +25 -25
  160. nautobot/project-static/docs/release-notes/version-2.1.html +25 -25
  161. nautobot/project-static/docs/release-notes/version-2.2.html +25 -25
  162. nautobot/project-static/docs/release-notes/version-2.3.html +318 -61
  163. nautobot/project-static/docs/search/search_index.json +1 -1
  164. nautobot/project-static/docs/sitemap.xml +271 -542
  165. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  166. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +25 -25
  167. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +25 -25
  168. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +25 -25
  169. nautobot/project-static/docs/user-guide/administration/configuration/index.html +25 -25
  170. nautobot/project-static/docs/user-guide/administration/configuration/optional-settings.html +28 -28
  171. nautobot/project-static/docs/user-guide/administration/configuration/required-settings.html +25 -25
  172. nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +25 -25
  173. nautobot/project-static/docs/user-guide/administration/guides/caching.html +25 -25
  174. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +25 -25
  175. nautobot/project-static/docs/user-guide/administration/guides/healthcheck.html +25 -25
  176. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +25 -25
  177. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +25 -25
  178. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +25 -25
  179. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +25 -25
  180. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +25 -25
  181. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +25 -25
  182. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +25 -25
  183. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +25 -25
  184. nautobot/project-static/docs/user-guide/administration/installation/index.html +25 -25
  185. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +25 -25
  186. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +25 -25
  187. nautobot/project-static/docs/user-guide/administration/installation/services.html +25 -25
  188. nautobot/project-static/docs/user-guide/administration/installation-extras/docker.html +25 -25
  189. nautobot/project-static/docs/user-guide/administration/installation-extras/health-checks.html +25 -25
  190. nautobot/project-static/docs/user-guide/administration/installation-extras/selinux-troubleshooting.html +25 -25
  191. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +25 -25
  192. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +25 -25
  193. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +25 -25
  194. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +25 -25
  195. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +25 -25
  196. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +25 -25
  197. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +25 -25
  198. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +25 -25
  199. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +25 -25
  200. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +25 -25
  201. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +25 -25
  202. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +25 -25
  203. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +25 -25
  204. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +25 -25
  205. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +25 -25
  206. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +25 -25
  207. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +25 -25
  208. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +25 -25
  209. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +25 -25
  210. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +25 -25
  211. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +25 -25
  212. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +25 -25
  213. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +25 -25
  214. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +25 -25
  215. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +25 -25
  216. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +25 -25
  217. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +25 -25
  218. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +25 -25
  219. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +25 -25
  220. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +25 -25
  221. nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +25 -25
  222. nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +25 -25
  223. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +25 -25
  224. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +25 -25
  225. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +25 -25
  226. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +25 -25
  227. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +25 -25
  228. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +25 -25
  229. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +25 -25
  230. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +25 -25
  231. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +25 -25
  232. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +25 -25
  233. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +25 -25
  234. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +25 -25
  235. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +25 -25
  236. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +25 -25
  237. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +25 -25
  238. nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +25 -25
  239. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +25 -25
  240. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +25 -25
  241. nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +25 -25
  242. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +25 -25
  243. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +25 -25
  244. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +25 -25
  245. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +25 -25
  246. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +25 -25
  247. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +25 -25
  248. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +25 -25
  249. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +25 -25
  250. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +25 -25
  251. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +25 -25
  252. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +25 -25
  253. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +25 -25
  254. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +25 -25
  255. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +25 -25
  256. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +25 -25
  257. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +25 -25
  258. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +25 -25
  259. nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +25 -25
  260. nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +25 -25
  261. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +25 -25
  262. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +25 -25
  263. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +25 -25
  264. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +25 -25
  265. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +25 -25
  266. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +25 -25
  267. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +25 -25
  268. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +25 -25
  269. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +25 -25
  270. nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +25 -25
  271. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +25 -25
  272. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +25 -25
  273. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +25 -25
  274. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +25 -25
  275. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +25 -25
  276. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +25 -25
  277. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +25 -25
  278. nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +25 -25
  279. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +25 -25
  280. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +25 -25
  281. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +25 -25
  282. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +25 -25
  283. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +25 -25
  284. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +25 -25
  285. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +25 -25
  286. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +25 -25
  287. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +25 -25
  288. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +25 -25
  289. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +25 -25
  290. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +25 -25
  291. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +25 -25
  292. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +25 -25
  293. nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +25 -25
  294. nautobot/project-static/docs/user-guide/index.html +25 -25
  295. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +25 -25
  296. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +25 -25
  297. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +25 -25
  298. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +25 -25
  299. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +25 -25
  300. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +25 -25
  301. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +25 -25
  302. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +25 -25
  303. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +25 -25
  304. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +25 -25
  305. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +25 -25
  306. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +25 -25
  307. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +25 -25
  308. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +25 -25
  309. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +25 -25
  310. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +25 -25
  311. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +25 -25
  312. nautobot/project-static/docs/user-guide/platform-functionality/note.html +25 -25
  313. nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +25 -25
  314. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +25 -25
  315. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +25 -25
  316. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +25 -25
  317. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +25 -25
  318. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +25 -25
  319. nautobot/project-static/docs/user-guide/platform-functionality/role.html +25 -25
  320. nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +25 -25
  321. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +25 -25
  322. nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +25 -25
  323. nautobot/project-static/docs/user-guide/platform-functionality/status.html +25 -25
  324. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +25 -25
  325. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +25 -25
  326. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +25 -25
  327. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +25 -25
  328. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +25 -25
  329. nautobot/project-static/js/homepage_layout.js +3 -0
  330. {nautobot-2.3.1.dist-info → nautobot-2.3.3.dist-info}/METADATA +4 -4
  331. {nautobot-2.3.1.dist-info → nautobot-2.3.3.dist-info}/RECORD +335 -332
  332. nautobot/project-static/docs/assets/javascripts/bundle.fe8b6f2b.min.js +0 -29
  333. nautobot/project-static/docs/assets/javascripts/bundle.fe8b6f2b.min.js.map +0 -7
  334. nautobot/project-static/docs/assets/stylesheets/main.3cba04c6.min.css +0 -1
  335. nautobot/project-static/docs/assets/stylesheets/main.3cba04c6.min.css.map +0 -1
  336. {nautobot-2.3.1.dist-info → nautobot-2.3.3.dist-info}/LICENSE.txt +0 -0
  337. {nautobot-2.3.1.dist-info → nautobot-2.3.3.dist-info}/NOTICE +0 -0
  338. {nautobot-2.3.1.dist-info → nautobot-2.3.3.dist-info}/WHEEL +0 -0
  339. {nautobot-2.3.1.dist-info → nautobot-2.3.3.dist-info}/entry_points.txt +0 -0
@@ -13,7 +13,7 @@ from nautobot.core.testing import APITestCase, APIViewTestCases, disable_warning
13
13
  from nautobot.core.testing.api import APITransactionTestCase
14
14
  from nautobot.dcim.choices import InterfaceTypeChoices
15
15
  from nautobot.dcim.models import Device, DeviceType, Interface, Location, LocationType, Manufacturer
16
- from nautobot.extras.models import Role, Status
16
+ from nautobot.extras.models import CustomField, Role, Status
17
17
  from nautobot.ipam import choices
18
18
  from nautobot.ipam.models import (
19
19
  IPAddress,
@@ -84,11 +84,14 @@ class VRFTest(APIViewTestCases.APIViewTestCase):
84
84
  @classmethod
85
85
  def setUpTestData(cls):
86
86
  namespace = Namespace.objects.first()
87
+ vrf_statuses = Status.objects.get_for_model(VRF)
88
+
87
89
  cls.create_data = [
88
90
  {
89
91
  "namespace": namespace.pk,
90
92
  "name": "VRF 4",
91
93
  "rd": "65000:4",
94
+ "status": vrf_statuses.first().pk,
92
95
  },
93
96
  {
94
97
  "namespace": namespace.pk,
@@ -98,10 +101,12 @@ class VRFTest(APIViewTestCases.APIViewTestCase):
98
101
  {
99
102
  "name": "VRF 6",
100
103
  "rd": "65000:6",
104
+ "status": vrf_statuses.last().pk,
101
105
  },
102
106
  ]
103
107
  cls.bulk_update_data = {
104
108
  "description": "New description",
109
+ "status": vrf_statuses.last().pk,
105
110
  }
106
111
 
107
112
 
@@ -332,6 +337,8 @@ class PrefixTest(APIViewTestCases.APIViewTestCase):
332
337
  cls.statuses = Status.objects.get_for_model(Prefix)
333
338
  cls.status = cls.statuses[0]
334
339
  cls.locations = Location.objects.get_for_model(Prefix)
340
+ cls.custom_field = CustomField.objects.create(key="prefixcf", label="Prefix Custom Field", type="text")
341
+ cls.custom_field.content_types.add(ContentType.objects.get_for_model(Prefix))
335
342
  cls.create_data = [
336
343
  {
337
344
  "prefix": "192.168.4.0/24",
@@ -346,6 +353,7 @@ class PrefixTest(APIViewTestCases.APIViewTestCase):
346
353
  "rir": rir.pk,
347
354
  "type": choices.PrefixTypeChoices.TYPE_NETWORK,
348
355
  "namespace": cls.namespace.pk,
356
+ "custom_fields": {"prefixcf": "hello world"},
349
357
  },
350
358
  {
351
359
  "prefix": "192.168.6.0/24",
@@ -435,6 +443,17 @@ class PrefixTest(APIViewTestCases.APIViewTestCase):
435
443
  for i, p in enumerate(response.data):
436
444
  self.assertEqual(p["prefix"], str(available_prefixes[i]))
437
445
 
446
+ def test_prefix_display_value(self):
447
+ """
448
+ Test that the `display` field is correctly populated.
449
+ """
450
+ url = reverse("ipam-api:prefix-list")
451
+ self.add_permissions("ipam.view_prefix")
452
+
453
+ response = self.client.get(f"{url}?depth=1", **self.header)
454
+ for p in response.data["results"]:
455
+ self.assertEqual(p["display"], f'{p["prefix"]}: {p["namespace"]["name"]}')
456
+
438
457
  def test_create_single_available_prefix(self):
439
458
  """
440
459
  Test retrieval of the first available prefix within a parent prefix.
@@ -457,12 +476,16 @@ class PrefixTest(APIViewTestCases.APIViewTestCase):
457
476
  "prefix_length": child_prefix_length,
458
477
  "status": self.status.pk,
459
478
  "description": f"Test Prefix {i + 1}",
479
+ "custom_fields": {"prefixcf": f"value {i+1}"},
460
480
  }
461
481
  response = self.client.post(url, data, format="json", **self.header)
462
482
  self.assertHttpStatus(response, status.HTTP_201_CREATED)
463
483
  self.assertEqual(response.data["prefix"], str(prefixes_to_be_created[i]))
464
484
  self.assertEqual(str(response.data["namespace"]["url"]), self.absolute_api_url(prefix.namespace))
465
485
  self.assertEqual(response.data["description"], data["description"])
486
+ self.assertIn("custom_fields", response.data)
487
+ self.assertIn("prefixcf", response.data["custom_fields"])
488
+ self.assertEqual(response.data["custom_fields"]["prefixcf"], data["custom_fields"]["prefixcf"])
466
489
 
467
490
  # Try to create one more prefix, and expect a HTTP 204 response.
468
491
  # This feels wrong to me (shouldn't it be a 4xx or 5xx?) but it's how the API has historically behaved.
@@ -501,6 +524,7 @@ class PrefixTest(APIViewTestCases.APIViewTestCase):
501
524
  "prefix_length": child_prefix_length,
502
525
  "description": "Test Prefix 1",
503
526
  "status": self.status.pk,
527
+ "custom_fields": {"prefixcf": "value 1"},
504
528
  },
505
529
  {
506
530
  "prefix_length": child_prefix_length,
@@ -537,6 +561,9 @@ class PrefixTest(APIViewTestCases.APIViewTestCase):
537
561
  response = self.client.post(url, data[:4], format="json", **self.header)
538
562
  self.assertHttpStatus(response, status.HTTP_201_CREATED)
539
563
  self.assertEqual(len(response.data), 4)
564
+ self.assertIn("custom_fields", response.data[0])
565
+ self.assertIn("prefixcf", response.data[0]["custom_fields"])
566
+ self.assertEqual("value 1", response.data[0]["custom_fields"]["prefixcf"])
540
567
 
541
568
  def test_list_available_ips(self):
542
569
  """
@@ -571,6 +598,8 @@ class PrefixTest(APIViewTestCases.APIViewTestCase):
571
598
  type=choices.PrefixTypeChoices.TYPE_NETWORK,
572
599
  status=self.status,
573
600
  )
601
+ cf = CustomField.objects.create(key="ipcf", label="IP Custom Field", type="text")
602
+ cf.content_types.add(ContentType.objects.get_for_model(IPAddress))
574
603
  url = reverse("ipam-api:prefix-available-ips", kwargs={"pk": prefix.pk})
575
604
  self.add_permissions("ipam.view_prefix", "ipam.add_ipaddress", "extras.view_status")
576
605
 
@@ -579,11 +608,15 @@ class PrefixTest(APIViewTestCases.APIViewTestCase):
579
608
  data = {
580
609
  "description": f"Test IP {i}",
581
610
  "status": self.status.pk,
611
+ "custom_fields": {"ipcf": f"value {i}"},
582
612
  }
583
613
  response = self.client.post(url, data, format="json", **self.header)
584
614
  self.assertHttpStatus(response, status.HTTP_201_CREATED)
585
615
  self.assertEqual(str(response.data["parent"]["url"]), self.absolute_api_url(prefix))
586
616
  self.assertEqual(response.data["description"], data["description"])
617
+ self.assertIn("custom_fields", response.data)
618
+ self.assertIn("ipcf", response.data["custom_fields"])
619
+ self.assertEqual(f"value {i}", response.data["custom_fields"]["ipcf"])
587
620
 
588
621
  # Try to create one more IP
589
622
  response = self.client.post(url, {"status": self.status.pk}, format="json", **self.header)
@@ -601,21 +634,29 @@ class PrefixTest(APIViewTestCases.APIViewTestCase):
601
634
  namespace=self.namespace,
602
635
  status=self.status,
603
636
  )
637
+ cf = CustomField.objects.create(key="ipcf", label="IP Custom Field", type="text")
638
+ cf.content_types.add(ContentType.objects.get_for_model(IPAddress))
604
639
  url = reverse("ipam-api:prefix-available-ips", kwargs={"pk": prefix.pk})
605
640
  self.add_permissions("ipam.view_prefix", "ipam.add_ipaddress", "extras.view_status")
606
641
 
607
642
  # Try to create seven IPs (only six are available)
608
- data = [{"description": f"Test IP {i}", "status": self.status.pk} for i in range(1, 8)] # 7 IPs
643
+ data = [
644
+ {"description": f"Test IP {i}", "status": self.status.pk, "custom_fields": {"ipcf": str(i)}}
645
+ for i in range(1, 8)
646
+ ] # 7 IPs
609
647
  response = self.client.post(url, data, format="json", **self.header)
610
648
  # This feels wrong to me (shouldn't it be a 4xx or 5xx?) but it's how the API has historically behaved.
611
649
  self.assertHttpStatus(response, status.HTTP_204_NO_CONTENT)
612
650
  self.assertIn("detail", response.data)
613
651
 
614
652
  # Create all six available IPs in a single request
615
- data = [{"description": f"Test IP {i}", "status": self.status.pk} for i in range(1, 7)] # 6 IPs
653
+ data = data[:6]
616
654
  response = self.client.post(url, data, format="json", **self.header)
617
655
  self.assertHttpStatus(response, status.HTTP_201_CREATED)
618
656
  self.assertEqual(len(response.data), 6)
657
+ self.assertIn("custom_fields", response.data[0])
658
+ self.assertIn("ipcf", response.data[0]["custom_fields"])
659
+ self.assertEqual("1", response.data[0]["custom_fields"]["ipcf"])
619
660
 
620
661
 
621
662
  class PrefixLocationAssignmentTest(APIViewTestCases.APIViewTestCase):
@@ -73,6 +73,7 @@ class VRFTestCase(ViewTestCases.PrimaryObjectViewTestCase):
73
73
  tenants = Tenant.objects.all()[:2]
74
74
  namespace = Prefix.objects.first().namespace
75
75
  prefixes = Prefix.objects.filter(namespace=namespace)
76
+ vrf_statuses = Status.objects.get_for_model(VRF)
76
77
 
77
78
  cls.form_data = {
78
79
  "name": "VRF X",
@@ -82,9 +83,11 @@ class VRFTestCase(ViewTestCases.PrimaryObjectViewTestCase):
82
83
  "description": "A new VRF",
83
84
  "prefixes": [prefixes[1].id],
84
85
  "tags": [t.pk for t in Tag.objects.get_for_model(VRF)],
86
+ "status": vrf_statuses.first().pk,
85
87
  }
86
88
 
87
89
  cls.bulk_edit_data = {
90
+ "status": vrf_statuses.first().pk,
88
91
  "tenant": tenants[1].pk,
89
92
  "description": "New description",
90
93
  "namespace": prefixes[0].namespace.id,
@@ -862,6 +862,12 @@ td span.hover_copy:hover .hover_copy_button {
862
862
  .collapse-icon {
863
863
  float: right;
864
864
  cursor: pointer !important;
865
+ transition: transform 0.3s ease;
866
+ }
867
+
868
+ /* Rotates element 180 degrees */
869
+ .rotated180 {
870
+ transform: rotate(180deg);
865
871
  }
866
872
 
867
873
  /* Draggable homepage panels fade in effect on page load */
@@ -12,7 +12,7 @@
12
12
 
13
13
 
14
14
  <link rel="icon" href="/projects/core/en/stable/assets/favicon.ico">
15
- <meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.31">
15
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.34">
16
16
 
17
17
 
18
18
 
@@ -20,7 +20,7 @@
20
20
 
21
21
 
22
22
 
23
- <link rel="stylesheet" href="/projects/core/en/stable/assets/stylesheets/main.3cba04c6.min.css">
23
+ <link rel="stylesheet" href="/projects/core/en/stable/assets/stylesheets/main.35f28582.min.css">
24
24
 
25
25
 
26
26
  <link rel="stylesheet" href="/projects/core/en/stable/assets/stylesheets/palette.06af60db.min.css">
@@ -32,7 +32,7 @@
32
32
 
33
33
 
34
34
 
35
- <style>:root{--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M288 0H128c-17.7 0-32 14.3-32 32s14.3 32 32 32v132.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6 0 480.9 31.1 512 69.4 512h309.2c38.3 0 69.4-31.1 69.4-69.4 0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32S337.7 0 320 0h-32zm-96 196.8V64h64v132.8c0 23.7 6.6 46.9 19 67.1l34.5 56.1h-171l34.5-56.1c12.4-20.2 19-43.4 19-67.1z"/></svg>');}</style>
35
+ <style>:root{--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M288 0H128c-17.7 0-32 14.3-32 32s14.3 32 32 32v132.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6 0 480.9 31.1 512 69.4 512h309.2c38.3 0 69.4-31.1 69.4-69.4 0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32S337.7 0 320 0zm-96 196.8V64h64v132.8c0 23.7 6.6 46.9 19 67.1l34.5 56.1h-171l34.5-56.1c12.4-20.2 19-43.4 19-67.1"/></svg>');}</style>
36
36
 
37
37
 
38
38
 
@@ -54,7 +54,7 @@
54
54
 
55
55
  <link rel="stylesheet" href="/projects/core/en/stable/assets/extra.css">
56
56
 
57
- <script>__md_scope=new URL("/projects/core/en/stable/",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
57
+ <script>__md_scope=new URL("/projects/core/en/stable/",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
58
58
 
59
59
 
60
60
 
@@ -98,7 +98,7 @@
98
98
  </a>
99
99
  <label class="md-header__button md-icon" for="__drawer">
100
100
 
101
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
101
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
102
102
  </label>
103
103
  <div class="md-header__title" data-md-component="header-title">
104
104
  <div class="md-header__ellipsis">
@@ -126,7 +126,7 @@
126
126
  <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="black" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
127
127
 
128
128
  <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
129
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5c-.84 0-1.65.15-2.39.42L12 2M3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29L3.34 7m.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14L3.36 17M20.65 7l-1.77 3.79a7.023 7.023 0 0 0-2.38-4.15l4.15.36m-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29L20.64 17M12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44L12 22Z"/></svg>
129
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5s-1.65.15-2.39.42zM3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29zm.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14zM20.65 7l-1.77 3.79a7.02 7.02 0 0 0-2.38-4.15zm-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29zM12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44z"/></svg>
130
130
  </label>
131
131
 
132
132
 
@@ -136,7 +136,7 @@
136
136
  <input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="black" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
137
137
 
138
138
  <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
139
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3 3.19.09m3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95 2.06.05m-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31Z"/></svg>
139
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3zm3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95zm-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31"/></svg>
140
140
  </label>
141
141
 
142
142
 
@@ -144,13 +144,13 @@
144
144
 
145
145
 
146
146
 
147
- <script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
147
+ <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
148
148
 
149
149
 
150
150
 
151
151
  <label class="md-header__button md-icon" for="__search">
152
152
 
153
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
153
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
154
154
  </label>
155
155
  <div class="md-search" data-md-component="search" role="dialog">
156
156
  <label class="md-search__overlay" for="__search"></label>
@@ -159,20 +159,20 @@
159
159
  <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
160
160
  <label class="md-search__icon md-icon" for="__search">
161
161
 
162
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
162
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
163
163
 
164
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
164
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
165
165
  </label>
166
166
  <nav class="md-search__options" aria-label="Search">
167
167
 
168
168
  <a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
169
169
 
170
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7 0-.24-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91 1.61 0 2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08Z"/></svg>
170
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg>
171
171
  </a>
172
172
 
173
173
  <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
174
174
 
175
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
175
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
176
176
  </button>
177
177
  </nav>
178
178
 
@@ -197,7 +197,7 @@
197
197
  <a href="https://github.com/nautobot/nautobot" title="Go to repository" class="md-source" data-md-component="source">
198
198
  <div class="md-source__icon md-icon">
199
199
 
200
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
200
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
201
201
  </div>
202
202
  <div class="md-source__repository">
203
203
  GitHub
@@ -355,7 +355,7 @@
355
355
  <a href="https://github.com/nautobot/nautobot" title="Go to repository" class="md-source" data-md-component="source">
356
356
  <div class="md-source__icon md-icon">
357
357
 
358
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
358
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
359
359
  </div>
360
360
  <div class="md-source__repository">
361
361
  GitHub
@@ -8626,7 +8626,7 @@
8626
8626
  </div>
8627
8627
 
8628
8628
 
8629
- <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
8629
+ <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
8630
8630
 
8631
8631
  <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
8632
8632
  </div>
@@ -8667,7 +8667,7 @@
8667
8667
 
8668
8668
 
8669
8669
  <a href="https://blog.networktocode.com/blog/tags/nautobot" target="_blank" rel="noopener" title="Network to Code Blog" class="md-social__link">
8670
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M0 64c0-17.7 14.3-32 32-32 229.8 0 416 186.2 416 416 0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96 14.3 96 0 81.7 0 64zm0 352a64 64 0 1 1 128 0 64 64 0 1 1-128 0zm32-256c159.1 0 288 128.9 288 288 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224-17.7 0-32-14.3-32-32s14.3-32 32-32z"/></svg>
8670
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M0 64c0-17.7 14.3-32 32-32 229.8 0 416 186.2 416 416 0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96 14.3 96 0 81.7 0 64m0 352a64 64 0 1 1 128 0 64 64 0 1 1-128 0m32-256c159.1 0 288 128.9 288 288 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224-17.7 0-32-14.3-32-32s14.3-32 32-32"/></svg>
8671
8671
  </a>
8672
8672
 
8673
8673
 
@@ -8675,7 +8675,7 @@
8675
8675
 
8676
8676
 
8677
8677
  <a href="https://www.youtube.com/playlist?list=PLjA0bhxgryJ2Ts4GJMDA-tPzVWEncv4pb" target="_blank" rel="noopener" title="Nautobot Videos" class="md-social__link">
8678
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"/></svg>
8678
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305m-317.51 213.508V175.185l142.739 81.205z"/></svg>
8679
8679
  </a>
8680
8680
 
8681
8681
 
@@ -8683,7 +8683,7 @@
8683
8683
 
8684
8684
 
8685
8685
  <a href="https://www.networktocode.com/community/" target="_blank" rel="noopener" title="Network to Code Community" class="md-social__link">
8686
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"/></svg>
8686
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1s21.16-47.06 47.06-47.06h47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06S448 171 448 196.9s-21.16 47.06-47.06 47.06h-47.06zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06S309 480 283.1 480s-47.06-21.16-47.06-47.06v-47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06s21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06z"/></svg>
8687
8687
  </a>
8688
8688
 
8689
8689
 
@@ -8691,7 +8691,7 @@
8691
8691
 
8692
8692
 
8693
8693
  <a href="https://github.com/nautobot/nautobot" target="_blank" rel="noopener" title="GitHub Repo" class="md-social__link">
8694
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
8694
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
8695
8695
  </a>
8696
8696
 
8697
8697
 
@@ -8699,7 +8699,7 @@
8699
8699
 
8700
8700
 
8701
8701
  <a href="https://twitter.com/networktocode" target="_blank" rel="noopener" title="Network to Code Twitter" class="md-social__link">
8702
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg>
8702
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253"/></svg>
8703
8703
  </a>
8704
8704
 
8705
8705
  </div>
@@ -8714,10 +8714,10 @@
8714
8714
  </div>
8715
8715
 
8716
8716
 
8717
- <script id="__config" type="application/json">{"base": "/projects/core/en/stable/", "features": ["content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "/projects/core/en/stable/assets/javascripts/workers/search.b8dbb3d2.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>
8717
+ <script id="__config" type="application/json">{"base": "/projects/core/en/stable/", "features": ["content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "/projects/core/en/stable/assets/javascripts/workers/search.07f07601.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>
8718
8718
 
8719
8719
 
8720
- <script src="/projects/core/en/stable/assets/javascripts/bundle.fe8b6f2b.min.js"></script>
8720
+ <script src="/projects/core/en/stable/assets/javascripts/bundle.56dfad97.min.js"></script>
8721
8721
 
8722
8722
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
8723
8723