nautobot 2.3.11__py3-none-any.whl → 2.3.12__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 (490) hide show
  1. nautobot/core/settings.py +26 -0
  2. nautobot/core/settings.yaml +31 -0
  3. nautobot/core/templates/generic/object_notes.html +1 -1
  4. nautobot/core/templates/generic/object_retrieve.html +1 -1
  5. nautobot/core/testing/views.py +15 -4
  6. nautobot/dcim/choices.py +6 -0
  7. nautobot/dcim/tables/devices.py +2 -6
  8. nautobot/dcim/templates/dcim/controller_retrieve.html +1 -1
  9. nautobot/dcim/templates/dcim/device/base.html +1 -1
  10. nautobot/extras/group_sync.py +42 -0
  11. nautobot/extras/models/metadata.py +1 -0
  12. nautobot/extras/models/models.py +1 -1
  13. nautobot/extras/plugins/__init__.py +2 -1
  14. nautobot/extras/tables.py +1 -0
  15. nautobot/extras/templates/extras/inc/job_table.html +1 -1
  16. nautobot/extras/tests/test_views.py +0 -2
  17. nautobot/extras/views.py +0 -2
  18. nautobot/ipam/tables.py +4 -11
  19. nautobot/ipam/templates/ipam/ipaddresstointerface_retrieve.html +1 -1
  20. nautobot/project-static/docs/404.html +10 -10
  21. nautobot/project-static/docs/additional-features/caching.html +1 -2
  22. nautobot/project-static/docs/additional-features/change-logging.html +1 -2
  23. nautobot/project-static/docs/additional-features/config-contexts.html +1 -2
  24. nautobot/project-static/docs/additional-features/healthcheck.html +1 -2
  25. nautobot/project-static/docs/additional-features/jobs.html +1 -2
  26. nautobot/project-static/docs/additional-features/prometheus-metrics.html +1 -2
  27. nautobot/project-static/docs/administration/celery-queues.html +1 -2
  28. nautobot/project-static/docs/administration/nautobot-server.html +1 -2
  29. nautobot/project-static/docs/administration/nautobot-shell.html +1 -2
  30. nautobot/project-static/docs/administration/permissions.html +1 -2
  31. nautobot/project-static/docs/administration/replicating-nautobot.html +1 -2
  32. nautobot/project-static/docs/apps/index.html +10 -10
  33. nautobot/project-static/docs/apps/migrating-jobs-from-nautobot-v1.html +1 -2
  34. nautobot/project-static/docs/apps/nautobot-apps.html +10 -10
  35. nautobot/project-static/docs/assets/stylesheets/main.6f8fc17f.min.css +1 -0
  36. nautobot/project-static/docs/assets/stylesheets/main.6f8fc17f.min.css.map +1 -0
  37. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +10 -10
  38. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +10 -10
  39. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +10 -10
  40. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +10 -10
  41. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +10 -10
  42. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +10 -10
  43. nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +10 -10
  44. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +10 -10
  45. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +10 -10
  46. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +10 -10
  47. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +10 -10
  48. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +10 -10
  49. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +10 -10
  50. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +10 -10
  51. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +10 -10
  52. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +10 -10
  53. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +10 -10
  54. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +10 -10
  55. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +10 -10
  56. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +10 -10
  57. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +10 -10
  58. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +10 -10
  59. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +10 -10
  60. nautobot/project-static/docs/configuration/authentication/ldap.html +1 -2
  61. nautobot/project-static/docs/configuration/authentication/remote.html +1 -2
  62. nautobot/project-static/docs/configuration/authentication/sso.html +1 -2
  63. nautobot/project-static/docs/configuration/index.html +1 -2
  64. nautobot/project-static/docs/configuration/optional-settings.html +1 -2
  65. nautobot/project-static/docs/configuration/required-settings.html +1 -2
  66. nautobot/project-static/docs/core-functionality/circuits.html +1 -2
  67. nautobot/project-static/docs/core-functionality/device-types.html +1 -2
  68. nautobot/project-static/docs/core-functionality/devices.html +1 -2
  69. nautobot/project-static/docs/core-functionality/ipam.html +1 -2
  70. nautobot/project-static/docs/core-functionality/power.html +1 -2
  71. nautobot/project-static/docs/core-functionality/secrets.html +1 -2
  72. nautobot/project-static/docs/core-functionality/services.html +1 -2
  73. nautobot/project-static/docs/core-functionality/sites-and-racks.html +1 -2
  74. nautobot/project-static/docs/core-functionality/tenancy.html +1 -2
  75. nautobot/project-static/docs/core-functionality/virtualization.html +1 -2
  76. nautobot/project-static/docs/core-functionality/vlans.html +1 -2
  77. nautobot/project-static/docs/development/application-registry.html +1 -2
  78. nautobot/project-static/docs/development/apps/api/configuration-view.html +10 -10
  79. nautobot/project-static/docs/development/apps/api/database-backend-config.html +10 -10
  80. nautobot/project-static/docs/development/apps/api/models/django-admin.html +10 -10
  81. nautobot/project-static/docs/development/apps/api/models/global-search.html +10 -10
  82. nautobot/project-static/docs/development/apps/api/models/graphql.html +10 -10
  83. nautobot/project-static/docs/development/apps/api/models/index.html +10 -10
  84. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +10 -10
  85. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +10 -10
  86. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +10 -10
  87. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +10 -10
  88. nautobot/project-static/docs/development/apps/api/platform-features/index.html +10 -10
  89. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +10 -10
  90. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +10 -10
  91. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +10 -10
  92. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +10 -10
  93. nautobot/project-static/docs/development/apps/api/platform-features/table-extensions.html +10 -10
  94. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +10 -10
  95. nautobot/project-static/docs/development/apps/api/prometheus.html +10 -10
  96. nautobot/project-static/docs/development/apps/api/setup.html +10 -10
  97. nautobot/project-static/docs/development/apps/api/testing.html +10 -10
  98. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +10 -10
  99. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +10 -10
  100. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +10 -10
  101. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +10 -10
  102. nautobot/project-static/docs/development/apps/api/ui-extensions/object-detail-views.html +1 -2
  103. nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +10 -10
  104. nautobot/project-static/docs/development/apps/api/ui-extensions/tabs.html +1 -2
  105. nautobot/project-static/docs/development/apps/api/views/base-template.html +10 -10
  106. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +10 -10
  107. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +10 -10
  108. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +10 -10
  109. nautobot/project-static/docs/development/apps/api/views/index.html +10 -10
  110. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +10 -10
  111. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +10 -10
  112. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +10 -10
  113. nautobot/project-static/docs/development/apps/api/views/notes.html +10 -10
  114. nautobot/project-static/docs/development/apps/api/views/rest-api.html +10 -10
  115. nautobot/project-static/docs/development/apps/api/views/urls.html +10 -10
  116. nautobot/project-static/docs/development/apps/api/views/view-overrides.html +1 -2
  117. nautobot/project-static/docs/development/apps/index.html +10 -10
  118. nautobot/project-static/docs/development/apps/migration/code-updates.html +10 -10
  119. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +10 -10
  120. nautobot/project-static/docs/development/apps/migration/from-v1.html +10 -10
  121. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +10 -10
  122. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +10 -10
  123. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +10 -10
  124. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +10 -10
  125. nautobot/project-static/docs/development/apps/porting-from-netbox.html +10 -10
  126. nautobot/project-static/docs/development/best-practices.html +1 -2
  127. nautobot/project-static/docs/development/core/application-registry.html +10 -10
  128. nautobot/project-static/docs/development/core/best-practices.html +10 -10
  129. nautobot/project-static/docs/development/core/bootstrap-ui.html +10 -10
  130. nautobot/project-static/docs/development/core/caching.html +10 -10
  131. nautobot/project-static/docs/development/core/controllers.html +10 -10
  132. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +10 -10
  133. nautobot/project-static/docs/development/core/extending-models.html +1 -2
  134. nautobot/project-static/docs/development/core/generic-views.html +10 -10
  135. nautobot/project-static/docs/development/core/getting-started.html +10 -10
  136. nautobot/project-static/docs/development/core/homepage.html +10 -10
  137. nautobot/project-static/docs/development/core/index.html +10 -10
  138. nautobot/project-static/docs/development/core/model-checklist.html +10 -10
  139. nautobot/project-static/docs/development/core/model-features.html +10 -10
  140. nautobot/project-static/docs/development/core/natural-keys.html +10 -10
  141. nautobot/project-static/docs/development/core/navigation-menu.html +10 -10
  142. nautobot/project-static/docs/development/core/react-ui.html +1 -2
  143. nautobot/project-static/docs/development/core/release-checklist.html +10 -10
  144. nautobot/project-static/docs/development/core/role-internals.html +10 -10
  145. nautobot/project-static/docs/development/core/settings.html +10 -10
  146. nautobot/project-static/docs/development/core/style-guide.html +10 -10
  147. nautobot/project-static/docs/development/core/templates.html +10 -10
  148. nautobot/project-static/docs/development/core/testing.html +12 -12
  149. nautobot/project-static/docs/development/core/user-preferences.html +10 -10
  150. nautobot/project-static/docs/development/docker-compose-advanced-use-cases.html +1 -2
  151. nautobot/project-static/docs/development/extending-models.html +1 -2
  152. nautobot/project-static/docs/development/generic-views.html +1 -2
  153. nautobot/project-static/docs/development/getting-started.html +1 -2
  154. nautobot/project-static/docs/development/homepage.html +1 -2
  155. nautobot/project-static/docs/development/index.html +10 -10
  156. nautobot/project-static/docs/development/jobs/index.html +10 -10
  157. nautobot/project-static/docs/development/jobs/migration/from-v1.html +10 -10
  158. nautobot/project-static/docs/development/model-features.html +1 -2
  159. nautobot/project-static/docs/development/natural-keys.html +1 -2
  160. nautobot/project-static/docs/development/navigation-menu.html +1 -2
  161. nautobot/project-static/docs/development/react-ui.html +1 -2
  162. nautobot/project-static/docs/development/release-checklist.html +1 -2
  163. nautobot/project-static/docs/development/role-internals.html +1 -2
  164. nautobot/project-static/docs/development/style-guide.html +1 -2
  165. nautobot/project-static/docs/development/templates.html +1 -2
  166. nautobot/project-static/docs/development/testing.html +1 -2
  167. nautobot/project-static/docs/development/user-preferences.html +1 -2
  168. nautobot/project-static/docs/docker/index.html +1 -2
  169. nautobot/project-static/docs/index.html +10 -10
  170. nautobot/project-static/docs/installation/centos.html +1 -2
  171. nautobot/project-static/docs/installation/external-authentication.html +1 -2
  172. nautobot/project-static/docs/installation/http-server.html +1 -2
  173. nautobot/project-static/docs/installation/index.html +1 -2
  174. nautobot/project-static/docs/installation/migrating-from-netbox.html +1 -2
  175. nautobot/project-static/docs/installation/migrating-from-postgresql.html +1 -2
  176. nautobot/project-static/docs/installation/nautobot.html +1 -2
  177. nautobot/project-static/docs/installation/region-and-site-data-migration-guide.html +1 -2
  178. nautobot/project-static/docs/installation/selinux-troubleshooting.html +1 -2
  179. nautobot/project-static/docs/installation/services.html +1 -2
  180. nautobot/project-static/docs/installation/ubuntu.html +1 -2
  181. nautobot/project-static/docs/installation/upgrading-from-nautobot-v1.html +1 -2
  182. nautobot/project-static/docs/installation/upgrading.html +1 -2
  183. nautobot/project-static/docs/models/circuits/circuit.html +1 -2
  184. nautobot/project-static/docs/models/circuits/circuittermination.html +1 -2
  185. nautobot/project-static/docs/models/circuits/circuittype.html +1 -2
  186. nautobot/project-static/docs/models/circuits/provider.html +1 -2
  187. nautobot/project-static/docs/models/circuits/providernetwork.html +1 -2
  188. nautobot/project-static/docs/models/cloud/cloudaccount.html +1 -2
  189. nautobot/project-static/docs/models/cloud/cloudnetwork.html +1 -2
  190. nautobot/project-static/docs/models/cloud/cloudnetworkprefixassignment.html +1 -2
  191. nautobot/project-static/docs/models/cloud/cloudresourcetype.html +1 -2
  192. nautobot/project-static/docs/models/cloud/cloudservice.html +1 -2
  193. nautobot/project-static/docs/models/cloud/cloudservicenetworkassignment.html +1 -2
  194. nautobot/project-static/docs/models/dcim/cable.html +1 -2
  195. nautobot/project-static/docs/models/dcim/consoleport.html +1 -2
  196. nautobot/project-static/docs/models/dcim/consoleporttemplate.html +1 -2
  197. nautobot/project-static/docs/models/dcim/consoleserverport.html +1 -2
  198. nautobot/project-static/docs/models/dcim/consoleserverporttemplate.html +1 -2
  199. nautobot/project-static/docs/models/dcim/controller.html +1 -2
  200. nautobot/project-static/docs/models/dcim/controllermanageddevicegroup.html +1 -2
  201. nautobot/project-static/docs/models/dcim/device.html +1 -2
  202. nautobot/project-static/docs/models/dcim/devicebay.html +1 -2
  203. nautobot/project-static/docs/models/dcim/devicebaytemplate.html +1 -2
  204. nautobot/project-static/docs/models/dcim/devicefamily.html +1 -2
  205. nautobot/project-static/docs/models/dcim/deviceredundancygroup.html +1 -2
  206. nautobot/project-static/docs/models/dcim/devicetype.html +1 -2
  207. nautobot/project-static/docs/models/dcim/frontport.html +1 -2
  208. nautobot/project-static/docs/models/dcim/frontporttemplate.html +1 -2
  209. nautobot/project-static/docs/models/dcim/interface.html +1 -2
  210. nautobot/project-static/docs/models/dcim/interfacetemplate.html +1 -2
  211. nautobot/project-static/docs/models/dcim/inventoryitem.html +1 -2
  212. nautobot/project-static/docs/models/dcim/location.html +1 -2
  213. nautobot/project-static/docs/models/dcim/locationtype.html +1 -2
  214. nautobot/project-static/docs/models/dcim/manufacturer.html +1 -2
  215. nautobot/project-static/docs/models/dcim/module.html +1 -2
  216. nautobot/project-static/docs/models/dcim/modulebay.html +1 -2
  217. nautobot/project-static/docs/models/dcim/modulebaytemplate.html +1 -2
  218. nautobot/project-static/docs/models/dcim/moduletype.html +1 -2
  219. nautobot/project-static/docs/models/dcim/platform.html +1 -2
  220. nautobot/project-static/docs/models/dcim/powerfeed.html +1 -2
  221. nautobot/project-static/docs/models/dcim/poweroutlet.html +1 -2
  222. nautobot/project-static/docs/models/dcim/poweroutlettemplate.html +1 -2
  223. nautobot/project-static/docs/models/dcim/powerpanel.html +1 -2
  224. nautobot/project-static/docs/models/dcim/powerport.html +1 -2
  225. nautobot/project-static/docs/models/dcim/powerporttemplate.html +1 -2
  226. nautobot/project-static/docs/models/dcim/rack.html +1 -2
  227. nautobot/project-static/docs/models/dcim/rackgroup.html +1 -2
  228. nautobot/project-static/docs/models/dcim/rackreservation.html +1 -2
  229. nautobot/project-static/docs/models/dcim/rearport.html +1 -2
  230. nautobot/project-static/docs/models/dcim/rearporttemplate.html +1 -2
  231. nautobot/project-static/docs/models/dcim/softwareimagefile.html +1 -2
  232. nautobot/project-static/docs/models/dcim/softwareversion.html +1 -2
  233. nautobot/project-static/docs/models/dcim/virtualchassis.html +1 -2
  234. nautobot/project-static/docs/models/extras/computedfield.html +1 -2
  235. nautobot/project-static/docs/models/extras/configcontext.html +1 -2
  236. nautobot/project-static/docs/models/extras/configcontextschema.html +1 -2
  237. nautobot/project-static/docs/models/extras/contact.html +1 -2
  238. nautobot/project-static/docs/models/extras/customfield.html +1 -2
  239. nautobot/project-static/docs/models/extras/customlink.html +1 -2
  240. nautobot/project-static/docs/models/extras/dynamicgroup.html +1 -2
  241. nautobot/project-static/docs/models/extras/exporttemplate.html +1 -2
  242. nautobot/project-static/docs/models/extras/gitrepository.html +1 -2
  243. nautobot/project-static/docs/models/extras/jobhook.html +1 -2
  244. nautobot/project-static/docs/models/extras/joblogentry.html +1 -2
  245. nautobot/project-static/docs/models/extras/jobresult.html +1 -2
  246. nautobot/project-static/docs/models/extras/metadatachoice.html +1 -2
  247. nautobot/project-static/docs/models/extras/metadatatype.html +1 -2
  248. nautobot/project-static/docs/models/extras/objectmetadata.html +1 -2
  249. nautobot/project-static/docs/models/extras/role.html +1 -2
  250. nautobot/project-static/docs/models/extras/savedview.html +1 -2
  251. nautobot/project-static/docs/models/extras/secret.html +1 -2
  252. nautobot/project-static/docs/models/extras/secretsgroup.html +1 -2
  253. nautobot/project-static/docs/models/extras/staticgroupassociation.html +1 -2
  254. nautobot/project-static/docs/models/extras/status.html +1 -2
  255. nautobot/project-static/docs/models/extras/team.html +1 -2
  256. nautobot/project-static/docs/models/ipam/ipaddress.html +1 -2
  257. nautobot/project-static/docs/models/ipam/prefix.html +1 -2
  258. nautobot/project-static/docs/models/ipam/rir.html +1 -2
  259. nautobot/project-static/docs/models/ipam/routetarget.html +1 -2
  260. nautobot/project-static/docs/models/ipam/service.html +1 -2
  261. nautobot/project-static/docs/models/ipam/vlan.html +1 -2
  262. nautobot/project-static/docs/models/ipam/vlangroup.html +1 -2
  263. nautobot/project-static/docs/models/ipam/vrf.html +1 -2
  264. nautobot/project-static/docs/models/tenancy/tenant.html +1 -2
  265. nautobot/project-static/docs/models/tenancy/tenantgroup.html +1 -2
  266. nautobot/project-static/docs/models/virtualization/cluster.html +1 -2
  267. nautobot/project-static/docs/models/virtualization/clustergroup.html +1 -2
  268. nautobot/project-static/docs/models/virtualization/clustertype.html +1 -2
  269. nautobot/project-static/docs/models/virtualization/virtualmachine.html +1 -2
  270. nautobot/project-static/docs/models/virtualization/vminterface.html +1 -2
  271. nautobot/project-static/docs/overview/application_stack.html +10 -10
  272. nautobot/project-static/docs/overview/design_philosophy.html +10 -10
  273. nautobot/project-static/docs/overview/index.html +1 -2
  274. nautobot/project-static/docs/plugins/development.html +1 -2
  275. nautobot/project-static/docs/plugins/index.html +1 -2
  276. nautobot/project-static/docs/plugins/porting-from-netbox.html +1 -2
  277. nautobot/project-static/docs/release-notes/index.html +15 -15
  278. nautobot/project-static/docs/release-notes/version-1.0.html +10 -10
  279. nautobot/project-static/docs/release-notes/version-1.1.html +10 -10
  280. nautobot/project-static/docs/release-notes/version-1.2.html +10 -10
  281. nautobot/project-static/docs/release-notes/version-1.3.html +10 -10
  282. nautobot/project-static/docs/release-notes/version-1.4.html +10 -10
  283. nautobot/project-static/docs/release-notes/version-1.5.html +10 -10
  284. nautobot/project-static/docs/release-notes/version-1.6.html +10 -10
  285. nautobot/project-static/docs/release-notes/version-2.0.html +10 -10
  286. nautobot/project-static/docs/release-notes/version-2.1.html +10 -10
  287. nautobot/project-static/docs/release-notes/version-2.2.html +10 -10
  288. nautobot/project-static/docs/release-notes/version-2.3.html +308 -154
  289. nautobot/project-static/docs/requirements.txt +2 -2
  290. nautobot/project-static/docs/rest-api/overview.html +1 -2
  291. nautobot/project-static/docs/search/search_index.json +1 -1
  292. nautobot/project-static/docs/sitemap.xml +270 -270
  293. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  294. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +10 -10
  295. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +10 -10
  296. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +65 -12
  297. nautobot/project-static/docs/user-guide/administration/configuration/index.html +10 -10
  298. nautobot/project-static/docs/user-guide/administration/configuration/node-configuration.html +1 -2
  299. nautobot/project-static/docs/user-guide/administration/configuration/optional-settings.html +1 -2
  300. nautobot/project-static/docs/user-guide/administration/configuration/redis.html +10 -10
  301. nautobot/project-static/docs/user-guide/administration/configuration/required-settings.html +1 -2
  302. nautobot/project-static/docs/user-guide/administration/configuration/settings.html +122 -10
  303. nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +10 -10
  304. nautobot/project-static/docs/user-guide/administration/guides/caching.html +1 -2
  305. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +10 -10
  306. nautobot/project-static/docs/user-guide/administration/guides/docker.html +10 -10
  307. nautobot/project-static/docs/user-guide/administration/guides/health-checks.html +10 -10
  308. nautobot/project-static/docs/user-guide/administration/guides/healthcheck.html +1 -2
  309. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +10 -10
  310. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +10 -10
  311. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +10 -10
  312. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +10 -10
  313. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +10 -10
  314. nautobot/project-static/docs/user-guide/administration/guides/selinux-troubleshooting.html +10 -10
  315. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +10 -10
  316. nautobot/project-static/docs/user-guide/administration/installation/docker.html +1 -2
  317. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +10 -10
  318. nautobot/project-static/docs/user-guide/administration/installation/health-checks.html +1 -2
  319. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +10 -10
  320. nautobot/project-static/docs/user-guide/administration/installation/index.html +10 -10
  321. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +10 -10
  322. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +10 -10
  323. nautobot/project-static/docs/user-guide/administration/installation/selinux-troubleshooting.html +1 -2
  324. nautobot/project-static/docs/user-guide/administration/installation/services.html +10 -10
  325. nautobot/project-static/docs/user-guide/administration/installation-extras/docker.html +1 -2
  326. nautobot/project-static/docs/user-guide/administration/installation-extras/health-checks.html +1 -2
  327. nautobot/project-static/docs/user-guide/administration/installation-extras/selinux-troubleshooting.html +1 -2
  328. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +10 -10
  329. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +10 -10
  330. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +10 -10
  331. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +10 -10
  332. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +10 -10
  333. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +10 -10
  334. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +10 -10
  335. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +10 -10
  336. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +10 -10
  337. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +10 -10
  338. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +10 -10
  339. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +10 -10
  340. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +10 -10
  341. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +10 -10
  342. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +10 -10
  343. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +10 -10
  344. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +10 -10
  345. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +10 -10
  346. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +10 -10
  347. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +10 -10
  348. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +10 -10
  349. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +10 -10
  350. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +10 -10
  351. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +10 -10
  352. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +10 -10
  353. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +10 -10
  354. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +10 -10
  355. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +10 -10
  356. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +10 -10
  357. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +10 -10
  358. nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +10 -10
  359. nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +10 -10
  360. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +10 -10
  361. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +10 -10
  362. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +10 -10
  363. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +10 -10
  364. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +10 -10
  365. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +10 -10
  366. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +10 -10
  367. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +10 -10
  368. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +10 -10
  369. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +10 -10
  370. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +10 -10
  371. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +10 -10
  372. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +10 -10
  373. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +10 -10
  374. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +10 -10
  375. nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +10 -10
  376. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +10 -10
  377. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +10 -10
  378. nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +10 -10
  379. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +10 -10
  380. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +10 -10
  381. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +10 -10
  382. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +10 -10
  383. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +10 -10
  384. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +10 -10
  385. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +10 -10
  386. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +10 -10
  387. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +10 -10
  388. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +10 -10
  389. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +10 -10
  390. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +10 -10
  391. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +10 -10
  392. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +10 -10
  393. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +10 -10
  394. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +10 -10
  395. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +10 -10
  396. nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +10 -10
  397. nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +10 -10
  398. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +10 -10
  399. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +10 -10
  400. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +10 -10
  401. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +10 -10
  402. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +10 -10
  403. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +10 -10
  404. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +10 -10
  405. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +10 -10
  406. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +10 -10
  407. nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +10 -10
  408. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +10 -10
  409. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +10 -10
  410. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +10 -10
  411. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +10 -10
  412. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +10 -10
  413. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +10 -10
  414. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +10 -10
  415. nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +10 -10
  416. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +10 -10
  417. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +10 -10
  418. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +10 -10
  419. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +10 -10
  420. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +10 -10
  421. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +10 -10
  422. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +10 -10
  423. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +10 -10
  424. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +10 -10
  425. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +10 -10
  426. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +10 -10
  427. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +10 -10
  428. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +10 -10
  429. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +10 -10
  430. nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +10 -10
  431. nautobot/project-static/docs/user-guide/index.html +10 -10
  432. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +10 -10
  433. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +10 -10
  434. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +10 -10
  435. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +10 -10
  436. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +10 -10
  437. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +10 -10
  438. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +10 -10
  439. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +10 -10
  440. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +10 -10
  441. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +10 -10
  442. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +10 -10
  443. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +10 -10
  444. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +10 -10
  445. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +10 -10
  446. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +10 -10
  447. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +10 -10
  448. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +10 -10
  449. nautobot/project-static/docs/user-guide/platform-functionality/note.html +10 -10
  450. nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +10 -10
  451. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +10 -10
  452. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +10 -10
  453. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +10 -10
  454. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +10 -10
  455. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +10 -10
  456. nautobot/project-static/docs/user-guide/platform-functionality/role.html +10 -10
  457. nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +10 -10
  458. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +10 -10
  459. nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +10 -10
  460. nautobot/project-static/docs/user-guide/platform-functionality/status.html +10 -10
  461. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +10 -10
  462. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +10 -10
  463. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +10 -10
  464. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +10 -10
  465. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +10 -10
  466. nautobot/project-static/docs/user-guides/custom-fields.html +1 -2
  467. nautobot/project-static/docs/user-guides/getting-started/creating-devices.html +1 -2
  468. nautobot/project-static/docs/user-guides/getting-started/index.html +1 -2
  469. nautobot/project-static/docs/user-guides/getting-started/interfaces.html +1 -2
  470. nautobot/project-static/docs/user-guides/getting-started/ipam.html +1 -2
  471. nautobot/project-static/docs/user-guides/getting-started/platforms.html +1 -2
  472. nautobot/project-static/docs/user-guides/getting-started/search-bar.html +1 -2
  473. nautobot/project-static/docs/user-guides/getting-started/tenants.html +1 -2
  474. nautobot/project-static/docs/user-guides/getting-started/vlans-and-vlan-groups.html +1 -2
  475. nautobot/project-static/docs/user-guides/git-data-source.html +1 -2
  476. nautobot/project-static/docs/user-guides/graphql.html +1 -2
  477. nautobot/project-static/docs/user-guides/ip-address-merge-tool.html +1 -2
  478. nautobot/project-static/docs/user-guides/relationships.html +1 -2
  479. nautobot/project-static/docs/user-guides/s3-django-storage.html +1 -2
  480. nautobot/project-static/js/forms.js +10 -0
  481. nautobot/virtualization/forms.py +3 -3
  482. nautobot/virtualization/templates/virtualization/vminterface.html +4 -0
  483. {nautobot-2.3.11.dist-info → nautobot-2.3.12.dist-info}/METADATA +2 -2
  484. {nautobot-2.3.11.dist-info → nautobot-2.3.12.dist-info}/RECORD +488 -487
  485. nautobot/project-static/docs/assets/stylesheets/main.0253249f.min.css +0 -1
  486. nautobot/project-static/docs/assets/stylesheets/main.0253249f.min.css.map +0 -1
  487. {nautobot-2.3.11.dist-info → nautobot-2.3.12.dist-info}/LICENSE.txt +0 -0
  488. {nautobot-2.3.11.dist-info → nautobot-2.3.12.dist-info}/NOTICE +0 -0
  489. {nautobot-2.3.11.dist-info → nautobot-2.3.12.dist-info}/WHEEL +0 -0
  490. {nautobot-2.3.11.dist-info → nautobot-2.3.12.dist-info}/entry_points.txt +0 -0
nautobot/core/settings.py CHANGED
@@ -212,6 +212,32 @@ SOCIAL_AUTH_POSTGRES_JSONFIELD = False
212
212
  # Nautobot related - May be overridden if using custom social auth backend
213
213
  SOCIAL_AUTH_BACKEND_PREFIX = "social_core.backends"
214
214
 
215
+ # Enables adding the OAuth2/OIDC group sync module to the authentication pipeline
216
+ SSO_ENABLE_GROUP_SYNC = is_truthy(os.getenv("NAUTOBOT_SSO_ENABLE_GROUP_SYNC", "false"))
217
+ if SSO_ENABLE_GROUP_SYNC:
218
+ SOCIAL_AUTH_PIPELINE = (
219
+ "social_core.pipeline.social_auth.social_details",
220
+ "social_core.pipeline.social_auth.social_uid",
221
+ "social_core.pipeline.social_auth.auth_allowed",
222
+ "social_core.pipeline.social_auth.social_user",
223
+ "social_core.pipeline.user.get_username",
224
+ "social_core.pipeline.user.create_user",
225
+ "social_core.pipeline.social_auth.associate_user",
226
+ "social_core.pipeline.social_auth.load_extra_data",
227
+ "social_core.pipeline.user.user_details",
228
+ "nautobot.extras.group_sync",
229
+ )
230
+ # OAuth2/OIDC claim where the list of groups the authenticating user is a part of
231
+ SSO_CLAIMS_GROUP = os.getenv("NAUTOBOT_SSO_CLAIMS_GROUP", "groups")
232
+ # list of groups that an authenticating user can be a part of to get the Django staff permission
233
+ SSO_STAFF_GROUPS = [
234
+ group for group in os.getenv("NAUTOBOT_SSO_STAFF_GROUPS", "").split(_CONFIG_SETTING_SEPARATOR) if group != ""
235
+ ]
236
+ # list of groups that an authenticating user can be a part of to be a Django super user
237
+ SSO_SUPERUSER_GROUPS = [
238
+ group for group in os.getenv("NAUTOBOT_SSO_SUPERUSER_GROUPS", "").split(_CONFIG_SETTING_SEPARATOR) if group != ""
239
+ ]
240
+
215
241
  # Job log entry sanitization and similar
216
242
  SANITIZER_PATTERNS = [
217
243
  # General removal of username-like and password-like tokens
@@ -1705,6 +1705,37 @@ properties:
1705
1705
  "Single Sign On": "./authentication/sso.md"
1706
1706
  "`social-auth-app-django`": "https://python-social-auth.readthedocs.io/en/latest/configuration/django.html"
1707
1707
  type: "string"
1708
+ SSO_CLAIMS_GROUP:
1709
+ default: "groups"
1710
+ description: "OAuth2/OIDC claim which will contain the groups which the authenticated user is a member of."
1711
+ environment_variable: "NAUTOBOT_SSO_CLAIMS_GROUP"
1712
+ see_also:
1713
+ "Single Sign On": "./authentication/sso.md"
1714
+ SSO_ENABLE_GROUP_SYNC:
1715
+ default: false
1716
+ type: "boolean"
1717
+ description: "Enables the group syncing authentication module."
1718
+ environment_variable: "NAUTOBOT_SSO_ENABLE_GROUP_SYNC"
1719
+ see_also:
1720
+ "Single Sign On": "./authentication/sso.md"
1721
+ SSO_STAFF_GROUPS:
1722
+ default: []
1723
+ description: "List of groups that a user can be a member of to get the Django Staff permission."
1724
+ environment_variable: "NAUTOBOT_SSO_STAFF_GROUPS"
1725
+ see_also:
1726
+ "Single Sign On": "./authentication/sso.md"
1727
+ items:
1728
+ type: "string"
1729
+ type: "array"
1730
+ SSO_SUPERUSER_GROUPS:
1731
+ default: []
1732
+ description: "List of groups that a user can be a member of to be a Django Super User."
1733
+ environment_variable: "NAUTOBOT_SSO_SUPERUSER_GROUPS"
1734
+ see_also:
1735
+ "Single Sign On": "./authentication/sso.md"
1736
+ items:
1737
+ type: "string"
1738
+ type: "array"
1708
1739
  STATIC_ROOT:
1709
1740
  "$ref": "#/definitions/absolute_path"
1710
1741
  default: "~/.nautobot/static"
@@ -21,7 +21,7 @@
21
21
  </div>
22
22
  </div>
23
23
  <div class="col-md-6 col-md-offset-3 text-right" style="margin-bottom: 20px;">
24
- <button type="submit" class="btn btn-primary">Create</button>
24
+ <button id="createNote" type="submit" class="btn btn-primary">Create</button>
25
25
  <a href="{{ object.get_absolute_url }}" class="btn btn-default">Cancel</a>
26
26
  </div>
27
27
  </div>
@@ -54,7 +54,7 @@
54
54
  <h1>
55
55
  <span class="hover_copy">
56
56
  <span id="copy_title">{% block title %}{{object.display|default:object}}{% endblock %}</span>
57
- <button type="button" class="btn btn-inline btn-default hover_copy_button" data-clipboard-target="#copy_title">
57
+ <button type="button" class="btn btn-inline btn-default hover_copy_button" data-clipboard-text="{{ object.display | default:object }}">
58
58
  <span class="mdi mdi-content-copy"></span>
59
59
  </button>
60
60
  </span>
@@ -1,3 +1,4 @@
1
+ import contextlib
1
2
  import re
2
3
  from typing import Optional, Sequence
3
4
  from unittest import skipIf
@@ -792,11 +793,16 @@ class ViewTestCases:
792
793
  response = self.client.get(f"{self._get_url('list')}?id={instance1.pk}")
793
794
  self.assertHttpStatus(response, 200)
794
795
  content = utils.extract_page_body(response.content.decode(response.charset))
796
+ # There should be only one row in the table
797
+ self.assertIn('<tr class="even', content)
798
+ self.assertNotIn('<tr class="odd', content)
795
799
  if hasattr(self.model, "name"):
796
800
  self.assertRegex(content, r">\s*" + re.escape(escape(instance1.name)) + r"\s*<", msg=content)
797
801
  self.assertNotRegex(content, r">\s*" + re.escape(escape(instance2.name)) + r"\s*<", msg=content)
798
- if instance1.get_absolute_url() in content:
799
- self.assertNotIn(instance2.get_absolute_url(), content, msg=content)
802
+ with contextlib.suppress(AttributeError):
803
+ # Some models, such as ObjectMetadata, don't have a detail URL
804
+ if instance1.get_absolute_url() in content:
805
+ self.assertNotIn(instance2.get_absolute_url(), content, msg=content)
800
806
 
801
807
  @override_settings(EXEMPT_VIEW_PERMISSIONS=["*"], STRICT_FILTERING=True)
802
808
  def test_list_objects_unknown_filter_strict_filtering(self):
@@ -833,11 +839,16 @@ class ViewTestCases:
833
839
  content = utils.extract_page_body(response.content.decode(response.charset))
834
840
  self.assertNotIn("Unknown filter field", content, msg=content)
835
841
  self.assertIn("None", content, msg=content)
842
+ # There should be at least two rows in the table
843
+ self.assertIn('<tr class="even', content)
844
+ self.assertIn('<tr class="odd', content)
836
845
  if hasattr(self.model, "name"):
837
846
  self.assertRegex(content, r">\s*" + re.escape(escape(instance1.name)) + r"\s*<", msg=content)
838
847
  self.assertRegex(content, r">\s*" + re.escape(escape(instance2.name)) + r"\s*<", msg=content)
839
- if instance1.get_absolute_url() in content:
840
- self.assertIn(instance2.get_absolute_url(), content, msg=content)
848
+ with contextlib.suppress(AttributeError):
849
+ # Some models, such as ObjectMetadata, don't have a detail URL
850
+ if instance1.get_absolute_url() in content:
851
+ self.assertIn(instance2.get_absolute_url(), content, msg=content)
841
852
 
842
853
  @override_settings(EXEMPT_VIEW_PERMISSIONS=[])
843
854
  def test_list_objects_without_permission(self):
nautobot/dcim/choices.py CHANGED
@@ -804,6 +804,9 @@ class InterfaceTypeChoices(ChoiceSet):
804
804
  TYPE_400GE_CFP8 = "400gbase-x-cfp8"
805
805
  TYPE_800GE_QSFP_DD = "800gbase-x-qsfpdd"
806
806
  TYPE_800GE_OSFP = "800gbase-x-osfp"
807
+ TYPE_800GE_OSFP_XD = "800gbase-x-osfp-xd"
808
+ TYPE_1600GE_OSFP = "1600gbase-x-osfp"
809
+ TYPE_1600GE_OSFP_XD = "1600gbase-x-osfp-xd"
807
810
 
808
811
  # Ethernet Backplane
809
812
  TYPE_1GE_KX = "1000base-kx"
@@ -977,6 +980,9 @@ class InterfaceTypeChoices(ChoiceSet):
977
980
  (TYPE_400GE_CFP8, "CPF8 (400GE)"),
978
981
  (TYPE_800GE_QSFP_DD, "QSFP-DD (800GE)"),
979
982
  (TYPE_800GE_OSFP, "OSFP (800GE)"),
983
+ (TYPE_800GE_OSFP_XD, "OSFP-XD (800GE)"),
984
+ (TYPE_1600GE_OSFP, "OSFP (1600GE)"),
985
+ (TYPE_1600GE_OSFP_XD, "OSFP-XD (1600GE)"),
980
986
  ),
981
987
  ),
982
988
  (
@@ -220,13 +220,11 @@ class DeviceTable(StatusTableMixin, RoleTableMixin, BaseTable):
220
220
  )
221
221
 
222
222
 
223
- class DeviceImportTable(BaseTable):
223
+ class DeviceImportTable(StatusTableMixin, RoleTableMixin, BaseTable):
224
224
  name = tables.TemplateColumn(template_code=DEVICE_LINK)
225
- status = ColoredLabelColumn()
226
225
  tenant = TenantColumn()
227
226
  location = tables.Column(linkify=True)
228
227
  rack = tables.Column(linkify=True)
229
- role = tables.Column(verbose_name="Role")
230
228
  device_type = tables.Column(verbose_name="Type")
231
229
 
232
230
  class Meta(BaseTable.Meta):
@@ -1333,15 +1331,13 @@ class SoftwareVersionTable(StatusTableMixin, BaseTable):
1333
1331
  )
1334
1332
 
1335
1333
 
1336
- class ControllerTable(BaseTable):
1334
+ class ControllerTable(StatusTableMixin, RoleTableMixin, BaseTable):
1337
1335
  """Table for list view."""
1338
1336
 
1339
1337
  pk = ToggleColumn()
1340
1338
  name = tables.Column(linkify=True)
1341
- status = ColoredLabelColumn()
1342
1339
  location = tables.Column(linkify=True)
1343
1340
  platform = tables.Column(linkify=True)
1344
- role = tables.Column(linkify=True)
1345
1341
  tenant = TenantColumn()
1346
1342
  external_integration = tables.Column(linkify=True)
1347
1343
  controller_device = tables.Column(linkify=True)
@@ -20,7 +20,7 @@
20
20
  </tr>
21
21
  <tr>
22
22
  <td>Role</td>
23
- <td>{{ object.role|hyperlinked_object }}</td>
23
+ <td>{{ object.role|hyperlinked_object_with_color }}</td>
24
24
  </tr>
25
25
  <tr>
26
26
  <td>Location</td>
@@ -58,7 +58,7 @@
58
58
  <span class="hover_copy">
59
59
  <h1>
60
60
  <span id="devicename">{% block title %}{{ object }}{% endblock title %}</span>
61
- <button class="btn btn-xs btn-default hover_copy_button" data-clipboard-target="#devicename">
61
+ <button class="btn btn-xs btn-default hover_copy_button" data-clipboard-text="{{ object }}">
62
62
  <span class="mdi mdi-content-copy"></span>
63
63
  </button>
64
64
  </h1>
@@ -0,0 +1,42 @@
1
+ """Additional functions to process an OAuth2/OIDC user."""
2
+
3
+ import logging
4
+
5
+ from django.conf import settings
6
+ from django.contrib.auth.models import Group
7
+
8
+ logger = logging.getLogger(__name__)
9
+
10
+
11
+ CLAIMS_GROUP_NAME = getattr(settings, "NAUTOBOT_SSO_CLAIMS_GROUP", "groups")
12
+ """ Which claim to look at in the OAuth2/OIDC response
13
+
14
+ For Okta you can look at `Okta -> Authorization Servers -> Claims`. And a reasonable
15
+ default is "groups". For Azure a reasonable default is "roles".
16
+ """
17
+
18
+ SUPERUSER_GROUPS = getattr(settings, "NAUTOBOT_SSO_SUPERUSER_GROUPS", [])
19
+ STAFF_GROUPS = getattr(settings, "NAUTOBOT_SSO_STAFF_GROUPS", [])
20
+
21
+
22
+ def group_sync(uid, user=None, response=None, *args, **kwargs):
23
+ """Sync the users groups from OAuth2/OIDC auth and set staff/superuser as appropriate."""
24
+ if user and response and CLAIMS_GROUP_NAME and response.get(CLAIMS_GROUP_NAME, False):
25
+ group_memberships = response.get(CLAIMS_GROUP_NAME)
26
+ is_staff = False
27
+ is_superuser = False
28
+ logger.debug(f"User {uid} is a member of {', '.join(group_memberships)}")
29
+ # Make sure all groups exist in Nautobot
30
+ group_ids = []
31
+ for group in group_memberships:
32
+ if group in SUPERUSER_GROUPS:
33
+ is_superuser = True
34
+ if group in STAFF_GROUPS:
35
+ is_staff = True
36
+ group_ids.append(Group.objects.get_or_create(name=group)[0].id)
37
+ user.groups.set(group_ids)
38
+ user.is_superuser = is_superuser
39
+ user.is_staff = is_staff
40
+ user.save()
41
+ else:
42
+ logger.debug(f"Did not receive groups from OAuth2/OIDC, response: {response}")
@@ -201,6 +201,7 @@ class ObjectMetadata(ChangeLoggedModel, BaseModel):
201
201
  objects = ObjectMetadataManager()
202
202
  natural_key_field_names = ["pk"]
203
203
  documentation_static_path = "docs/user-guide/platform-functionality/objectmetadata.html"
204
+ is_metadata_associable_model = False
204
205
 
205
206
  class Meta:
206
207
  ordering = ["metadata_type"]
@@ -831,7 +831,7 @@ class Note(ChangeLoggedModel, BaseModel):
831
831
  unique_together = [["assigned_object_type", "assigned_object_id", "user_name", "created"]]
832
832
 
833
833
  def __str__(self):
834
- return f"{self.assigned_object} - {self.created.isoformat()}"
834
+ return f"{self.assigned_object} - {self.created.isoformat() if self.created else None}"
835
835
 
836
836
  def save(self, *args, **kwargs):
837
837
  # Record the user's name as static strings
@@ -207,8 +207,9 @@ class NautobotAppConfig(NautobotConfig):
207
207
  override_views = import_object(f"{self.__module__}.{self.override_views}")
208
208
  if override_views is not None:
209
209
  for qualified_view_name, view in override_views.items():
210
+ view_class_name = view.view_class.__name__ if hasattr(view, "view_class") else view.cls.__name__
210
211
  self.features.setdefault("overridden_views", []).append(
211
- (qualified_view_name, f"{view.__module__}.{view.view_class.__name__}")
212
+ (qualified_view_name, f"{view.__module__}.{view_class_name}")
212
213
  )
213
214
  register_override_views(override_views, self.name)
214
215
 
nautobot/extras/tables.py CHANGED
@@ -978,6 +978,7 @@ class MetadataTypeTable(BaseTable):
978
978
 
979
979
  class ObjectMetadataTable(BaseTable):
980
980
  pk = ToggleColumn()
981
+ # NOTE: there is no identity column in this table; this is intentional as we have no detail view for ObjectMetadata
981
982
  metadata_type = tables.Column(linkify=True)
982
983
  assigned_object = tables.TemplateColumn(
983
984
  template_code=ASSIGNED_OBJECT, verbose_name="Assigned object", orderable=False
@@ -28,7 +28,7 @@
28
28
  </th>
29
29
  </tr>
30
30
  {% endifchanged %}
31
- <tr class="collapseme-{{ row.record.grouping|slugify }}{% if not perms.extras.run_job or not row.record.runnable %} disabled{% endif %} collapse in" data-parent="#accordion" {{ row.attrs.as_html }}>
31
+ <tr class="{% cycle 'even' 'odd' %} collapseme-{{ row.record.grouping|slugify }}{% if not perms.extras.run_job or not row.record.runnable %} disabled{% endif %} collapse in" data-parent="#accordion" {{ row.attrs.as_html }}>
32
32
  {% for column, cell in row.items %}
33
33
  <td {{ column.attrs.td.as_html }}>{{ cell }}</td>
34
34
  {% endfor %}
@@ -3033,8 +3033,6 @@ class ObjectChangeTestCase(TestCase):
3033
3033
 
3034
3034
 
3035
3035
  class ObjectMetadataTestCase(
3036
- ViewTestCases.GetObjectViewTestCase,
3037
- ViewTestCases.GetObjectChangelogViewTestCase,
3038
3036
  ViewTestCases.ListObjectsViewTestCase,
3039
3037
  ):
3040
3038
  model = ObjectMetadata
nautobot/extras/views.py CHANGED
@@ -2228,8 +2228,6 @@ class MetadataTypeUIViewSet(NautobotUIViewSet):
2228
2228
 
2229
2229
 
2230
2230
  class ObjectMetadataUIViewSet(
2231
- ObjectChangeLogViewMixin,
2232
- ObjectDetailViewMixin,
2233
2231
  ObjectListViewMixin,
2234
2232
  ):
2235
2233
  filterset_class = filters.ObjectMetadataFilterSet
nautobot/ipam/tables.py CHANGED
@@ -175,14 +175,6 @@ VLAN_PREFIXES = """
175
175
  {% endfor %}
176
176
  """
177
177
 
178
- VLAN_ROLE_LINK = """
179
- {% if record.role %}
180
- <a href="{% url 'ipam:vlan_list' %}?role={{ record.role.name }}">{{ record.role }}</a>
181
- {% else %}
182
- &mdash;
183
- {% endif %}
184
- """
185
-
186
178
  VLANGROUP_ADD_VLAN = """
187
179
  {% with next_vid=record.get_next_available_vid %}
188
180
  {% if next_vid and perms.ipam.add_vlan %}
@@ -346,7 +338,9 @@ class PrefixTable(StatusTableMixin, RoleTableMixin, BaseTable):
346
338
  prefix = tables.TemplateColumn(
347
339
  template_code=PREFIX_COPY_LINK, attrs={"td": {"class": "text-nowrap"}}, order_by=("network", "prefix_length")
348
340
  )
349
- vrf_count = LinkedCountColumn(viewname="ipam:vrf_list", url_params={"prefixes": "pk"}, verbose_name="VRFs")
341
+ vrf_count = LinkedCountColumn(
342
+ viewname="ipam:vrf_list", url_params={"prefix": "pk"}, reverse_lookup="prefixes", verbose_name="VRFs"
343
+ )
350
344
  tenant = TenantColumn()
351
345
  namespace = tables.Column(linkify=True)
352
346
  vlan = tables.Column(linkify=True, verbose_name="VLAN")
@@ -766,7 +760,7 @@ class VLANVirtualMachinesTable(VLANMembersTable):
766
760
  fields = ("virtual_machine", "name", "tagged", "actions")
767
761
 
768
762
 
769
- class InterfaceVLANTable(StatusTableMixin, BaseTable):
763
+ class InterfaceVLANTable(StatusTableMixin, RoleTableMixin, BaseTable):
770
764
  """
771
765
  List VLANs assigned to a specific Interface.
772
766
  """
@@ -775,7 +769,6 @@ class InterfaceVLANTable(StatusTableMixin, BaseTable):
775
769
  tagged = BooleanColumn()
776
770
  vlan_group = tables.Column(accessor=Accessor("vlan_group__name"), verbose_name="Group")
777
771
  tenant = TenantColumn()
778
- role = tables.TemplateColumn(template_code=VLAN_ROLE_LINK)
779
772
  location_count = LinkedCountColumn(
780
773
  viewname="dcim:location_list",
781
774
  url_params={"vlans": "pk"},
@@ -4,7 +4,7 @@
4
4
 
5
5
  {% block masthead %}
6
6
  <h1>
7
- <span class="hover_copy"><span id="copy_title">{{ object }}</span><button type="button" class="btn btn-inline btn-default hover_copy_button" data-clipboard-target="#copy_title">
7
+ <span class="hover_copy"><span id="copy_title">{{ object }}</span><button type="button" class="btn btn-inline btn-default hover_copy_button" data-clipboard-text="{{ object }}">
8
8
  <span class="mdi mdi-content-copy"></span>
9
9
  </button>
10
10
  </span>
@@ -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.1, mkdocs-material-9.5.42">
15
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.46">
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.0253249f.min.css">
23
+ <link rel="stylesheet" href="/projects/core/en/stable/assets/stylesheets/main.6f8fc17f.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 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>
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.7.1 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
 
@@ -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.81"/></svg>
200
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.1 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.81"/></svg>
358
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.1 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
@@ -8600,7 +8600,7 @@
8600
8600
 
8601
8601
 
8602
8602
  <a href="https://blog.networktocode.com/blog/tags/nautobot" target="_blank" rel="noopener" title="Network to Code Blog" class="md-social__link">
8603
- <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>
8603
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.1 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>
8604
8604
  </a>
8605
8605
 
8606
8606
 
@@ -8608,7 +8608,7 @@
8608
8608
 
8609
8609
 
8610
8610
  <a href="https://www.youtube.com/playlist?list=PLjA0bhxgryJ2Ts4GJMDA-tPzVWEncv4pb" target="_blank" rel="noopener" title="Nautobot Videos" class="md-social__link">
8611
- <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>
8611
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.7.1 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>
8612
8612
  </a>
8613
8613
 
8614
8614
 
@@ -8616,7 +8616,7 @@
8616
8616
 
8617
8617
 
8618
8618
  <a href="https://www.networktocode.com/community/" target="_blank" rel="noopener" title="Network to Code Community" class="md-social__link">
8619
- <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>
8619
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.1 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>
8620
8620
  </a>
8621
8621
 
8622
8622
 
@@ -8624,7 +8624,7 @@
8624
8624
 
8625
8625
 
8626
8626
  <a href="https://github.com/nautobot/nautobot" target="_blank" rel="noopener" title="GitHub Repo" class="md-social__link">
8627
- <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>
8627
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.7.1 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>
8628
8628
  </a>
8629
8629
 
8630
8630
 
@@ -8632,7 +8632,7 @@
8632
8632
 
8633
8633
 
8634
8634
  <a href="https://twitter.com/networktocode" target="_blank" rel="noopener" title="Network to Code Twitter" class="md-social__link">
8635
- <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>
8635
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.1 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>
8636
8636
  </a>
8637
8637
 
8638
8638
  </div>
@@ -5,11 +5,10 @@
5
5
  <meta charset="utf-8">
6
6
  <title>Redirecting...</title>
7
7
  <link rel="canonical" href="../user-guide/administration/configuration/redis.html">
8
- <meta name="robots" content="noindex">
9
8
  <script>var anchor=window.location.hash.substr(1);location.href="../user-guide/administration/configuration/redis.html"+(anchor?"#"+anchor:"")</script>
10
9
  <meta http-equiv="refresh" content="0; url=../user-guide/administration/configuration/redis.html">
11
10
  </head>
12
11
  <body>
13
- Redirecting...
12
+ You're being redirected to a <a href="../user-guide/administration/configuration/redis.html">new destination</a>.
14
13
  </body>
15
14
  </html>
@@ -5,11 +5,10 @@
5
5
  <meta charset="utf-8">
6
6
  <title>Redirecting...</title>
7
7
  <link rel="canonical" href="../user-guide/platform-functionality/change-logging.html">
8
- <meta name="robots" content="noindex">
9
8
  <script>var anchor=window.location.hash.substr(1);location.href="../user-guide/platform-functionality/change-logging.html"+(anchor?"#"+anchor:"")</script>
10
9
  <meta http-equiv="refresh" content="0; url=../user-guide/platform-functionality/change-logging.html">
11
10
  </head>
12
11
  <body>
13
- Redirecting...
12
+ You're being redirected to a <a href="../user-guide/platform-functionality/change-logging.html">new destination</a>.
14
13
  </body>
15
14
  </html>
@@ -5,11 +5,10 @@
5
5
  <meta charset="utf-8">
6
6
  <title>Redirecting...</title>
7
7
  <link rel="canonical" href="../user-guide/core-data-model/extras/configcontext.html">
8
- <meta name="robots" content="noindex">
9
8
  <script>var anchor=window.location.hash.substr(1);location.href="../user-guide/core-data-model/extras/configcontext.html"+(anchor?"#"+anchor:"")</script>
10
9
  <meta http-equiv="refresh" content="0; url=../user-guide/core-data-model/extras/configcontext.html">
11
10
  </head>
12
11
  <body>
13
- Redirecting...
12
+ You're being redirected to a <a href="../user-guide/core-data-model/extras/configcontext.html">new destination</a>.
14
13
  </body>
15
14
  </html>
@@ -5,11 +5,10 @@
5
5
  <meta charset="utf-8">
6
6
  <title>Redirecting...</title>
7
7
  <link rel="canonical" href="../user-guide/administration/guides/health-checks.html">
8
- <meta name="robots" content="noindex">
9
8
  <script>var anchor=window.location.hash.substr(1);location.href="../user-guide/administration/guides/health-checks.html"+(anchor?"#"+anchor:"")</script>
10
9
  <meta http-equiv="refresh" content="0; url=../user-guide/administration/guides/health-checks.html">
11
10
  </head>
12
11
  <body>
13
- Redirecting...
12
+ You're being redirected to a <a href="../user-guide/administration/guides/health-checks.html">new destination</a>.
14
13
  </body>
15
14
  </html>
@@ -5,11 +5,10 @@
5
5
  <meta charset="utf-8">
6
6
  <title>Redirecting...</title>
7
7
  <link rel="canonical" href="../development/jobs/index.html">
8
- <meta name="robots" content="noindex">
9
8
  <script>var anchor=window.location.hash.substr(1);location.href="../development/jobs/index.html"+(anchor?"#"+anchor:"")</script>
10
9
  <meta http-equiv="refresh" content="0; url=../development/jobs/index.html">
11
10
  </head>
12
11
  <body>
13
- Redirecting...
12
+ You're being redirected to a <a href="../development/jobs/index.html">new destination</a>.
14
13
  </body>
15
14
  </html>
@@ -5,11 +5,10 @@
5
5
  <meta charset="utf-8">
6
6
  <title>Redirecting...</title>
7
7
  <link rel="canonical" href="../user-guide/administration/guides/prometheus-metrics.html">
8
- <meta name="robots" content="noindex">
9
8
  <script>var anchor=window.location.hash.substr(1);location.href="../user-guide/administration/guides/prometheus-metrics.html"+(anchor?"#"+anchor:"")</script>
10
9
  <meta http-equiv="refresh" content="0; url=../user-guide/administration/guides/prometheus-metrics.html">
11
10
  </head>
12
11
  <body>
13
- Redirecting...
12
+ You're being redirected to a <a href="../user-guide/administration/guides/prometheus-metrics.html">new destination</a>.
14
13
  </body>
15
14
  </html>
@@ -5,11 +5,10 @@
5
5
  <meta charset="utf-8">
6
6
  <title>Redirecting...</title>
7
7
  <link rel="canonical" href="../user-guide/administration/guides/celery-queues.html">
8
- <meta name="robots" content="noindex">
9
8
  <script>var anchor=window.location.hash.substr(1);location.href="../user-guide/administration/guides/celery-queues.html"+(anchor?"#"+anchor:"")</script>
10
9
  <meta http-equiv="refresh" content="0; url=../user-guide/administration/guides/celery-queues.html">
11
10
  </head>
12
11
  <body>
13
- Redirecting...
12
+ You're being redirected to a <a href="../user-guide/administration/guides/celery-queues.html">new destination</a>.
14
13
  </body>
15
14
  </html>
@@ -5,11 +5,10 @@
5
5
  <meta charset="utf-8">
6
6
  <title>Redirecting...</title>
7
7
  <link rel="canonical" href="../user-guide/administration/tools/nautobot-server.html">
8
- <meta name="robots" content="noindex">
9
8
  <script>var anchor=window.location.hash.substr(1);location.href="../user-guide/administration/tools/nautobot-server.html"+(anchor?"#"+anchor:"")</script>
10
9
  <meta http-equiv="refresh" content="0; url=../user-guide/administration/tools/nautobot-server.html">
11
10
  </head>
12
11
  <body>
13
- Redirecting...
12
+ You're being redirected to a <a href="../user-guide/administration/tools/nautobot-server.html">new destination</a>.
14
13
  </body>
15
14
  </html>
@@ -5,11 +5,10 @@
5
5
  <meta charset="utf-8">
6
6
  <title>Redirecting...</title>
7
7
  <link rel="canonical" href="../user-guide/administration/tools/nautobot-shell.html">
8
- <meta name="robots" content="noindex">
9
8
  <script>var anchor=window.location.hash.substr(1);location.href="../user-guide/administration/tools/nautobot-shell.html"+(anchor?"#"+anchor:"")</script>
10
9
  <meta http-equiv="refresh" content="0; url=../user-guide/administration/tools/nautobot-shell.html">
11
10
  </head>
12
11
  <body>
13
- Redirecting...
12
+ You're being redirected to a <a href="../user-guide/administration/tools/nautobot-shell.html">new destination</a>.
14
13
  </body>
15
14
  </html>