nautobot 2.4.16__py3-none-any.whl → 2.4.17__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 (370) hide show
  1. nautobot/apps/utils.py +2 -0
  2. nautobot/cloud/templates/cloud/cloudresourcetype_retrieve.html +3 -3
  3. nautobot/cloud/views.py +7 -0
  4. nautobot/core/apps/__init__.py +1 -0
  5. nautobot/core/celery/__init__.py +2 -1
  6. nautobot/core/templates/components/panel/panel.html +1 -1
  7. nautobot/core/templates/inc/paginator.html +3 -3
  8. nautobot/core/templates/inc/table.html +2 -2
  9. nautobot/core/templatetags/helpers.py +80 -6
  10. nautobot/core/testing/mixins.py +1 -1
  11. nautobot/core/testing/views.py +2 -4
  12. nautobot/core/ui/bulk_buttons.py +53 -53
  13. nautobot/core/ui/object_detail.py +9 -4
  14. nautobot/core/utils/data.py +13 -0
  15. nautobot/core/utils/deprecation.py +2 -0
  16. nautobot/dcim/migrations/0073_alter_powerport_power_factor_and_more.py +41 -0
  17. nautobot/dcim/models/device_component_templates.py +4 -2
  18. nautobot/dcim/models/device_components.py +3 -2
  19. nautobot/dcim/templates/dcim/rack_elevation_list.html +4 -4
  20. nautobot/dcim/views.py +9 -0
  21. nautobot/extras/models/customfields.py +45 -9
  22. nautobot/extras/templates/extras/configcontext_retrieve.html +1 -1
  23. nautobot/extras/templates/extras/configcontext_update.html +49 -49
  24. nautobot/extras/templates/extras/configcontextschema_retrieve.html +47 -47
  25. nautobot/extras/templates/extras/configcontextschema_update.html +18 -18
  26. nautobot/extras/templates/extras/inc/job_table.html +1 -1
  27. nautobot/extras/templates/extras/inc/object_contact_header.html +2 -2
  28. nautobot/extras/templates/extras/note_retrieve.html +53 -53
  29. nautobot/extras/templates/extras/tag_retrieve.html +1 -1
  30. nautobot/extras/templates/extras/tag_update.html +14 -14
  31. nautobot/extras/templates/extras/team_retrieve.html +1 -1
  32. nautobot/extras/tests/test_models.py +216 -0
  33. nautobot/extras/tests/test_views.py +2 -2
  34. nautobot/extras/views.py +1 -0
  35. nautobot/ipam/apps.py +1 -0
  36. nautobot/ipam/jobs/__init__.py +10 -0
  37. nautobot/ipam/jobs/cleanup.py +296 -0
  38. nautobot/ipam/models.py +301 -178
  39. nautobot/ipam/templates/ipam/inc/ipadress_edit_header.html +3 -3
  40. nautobot/ipam/templates/ipam/inc/toggle_available.html +2 -2
  41. nautobot/ipam/templates/ipam/ipaddress_assign.html +1 -1
  42. nautobot/ipam/templates/ipam/prefix_list.html +1 -1
  43. nautobot/ipam/templates/ipam/vlan_retrieve.html +1 -77
  44. nautobot/ipam/tests/test_jobs.py +454 -0
  45. nautobot/ipam/tests/test_models.py +290 -122
  46. nautobot/ipam/tests/test_views.py +40 -164
  47. nautobot/ipam/urls.py +0 -11
  48. nautobot/ipam/utils/testing.py +9 -4
  49. nautobot/ipam/views.py +166 -235
  50. nautobot/project-static/docs/404.html +9 -6
  51. nautobot/project-static/docs/apps/index.html +9 -6
  52. nautobot/project-static/docs/apps/nautobot-apps.html +9 -6
  53. nautobot/project-static/docs/assets/javascripts/bundle.92b07e13.min.js +16 -0
  54. nautobot/project-static/docs/assets/javascripts/{bundle.50899def.min.js.map → bundle.92b07e13.min.js.map} +2 -2
  55. nautobot/project-static/docs/assets/javascripts/workers/{search.d50fe291.min.js → search.973d3a69.min.js} +4 -4
  56. nautobot/project-static/docs/assets/javascripts/workers/{search.d50fe291.min.js.map → search.973d3a69.min.js.map} +1 -1
  57. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +9 -6
  58. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +9 -6
  59. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +9 -6
  60. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +9 -6
  61. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +10 -7
  62. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +9 -6
  63. nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +9 -6
  64. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +9 -6
  65. nautobot/project-static/docs/code-reference/nautobot/apps/events.html +9 -6
  66. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +9 -6
  67. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +9 -6
  68. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +9 -6
  69. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +9 -6
  70. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +9 -6
  71. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +9 -6
  72. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +11 -8
  73. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +9 -6
  74. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +9 -6
  75. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +11 -8
  76. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +9 -6
  77. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +28 -9
  78. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +9 -6
  79. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +69 -7
  80. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +9 -6
  81. nautobot/project-static/docs/development/apps/api/configuration-view.html +13 -10
  82. nautobot/project-static/docs/development/apps/api/database-backend-config.html +11 -8
  83. nautobot/project-static/docs/development/apps/api/models/django-admin.html +13 -10
  84. nautobot/project-static/docs/development/apps/api/models/global-search.html +10 -7
  85. nautobot/project-static/docs/development/apps/api/models/graphql.html +18 -15
  86. nautobot/project-static/docs/development/apps/api/models/index.html +14 -11
  87. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +11 -8
  88. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +15 -12
  89. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +9 -6
  90. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +15 -12
  91. nautobot/project-static/docs/development/apps/api/platform-features/index.html +9 -6
  92. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +11 -8
  93. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +16 -13
  94. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +12 -10305
  95. nautobot/project-static/docs/development/apps/api/platform-features/prepopulating-data.html +10722 -0
  96. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +15 -12
  97. nautobot/project-static/docs/development/apps/api/platform-features/table-extensions.html +14 -11
  98. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +9 -6
  99. nautobot/project-static/docs/development/apps/api/prometheus.html +15 -12
  100. nautobot/project-static/docs/development/apps/api/setup.html +9 -6
  101. nautobot/project-static/docs/development/apps/api/testing.html +9 -6
  102. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +12 -9
  103. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +9 -6
  104. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +9 -6
  105. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +9 -6
  106. nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +20 -17
  107. nautobot/project-static/docs/development/apps/api/views/base-template.html +9 -6
  108. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +15 -12
  109. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +14 -11
  110. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +9 -6
  111. nautobot/project-static/docs/development/apps/api/views/index.html +9 -6
  112. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +10 -7
  113. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +24 -21
  114. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +12 -9
  115. nautobot/project-static/docs/development/apps/api/views/notes.html +10 -7
  116. nautobot/project-static/docs/development/apps/api/views/rest-api.html +19 -16
  117. nautobot/project-static/docs/development/apps/api/views/urls.html +11 -8
  118. nautobot/project-static/docs/development/apps/index.html +9 -6
  119. nautobot/project-static/docs/development/apps/migration/code-updates.html +19 -16
  120. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +9 -6
  121. nautobot/project-static/docs/development/apps/migration/from-v1.html +9 -6
  122. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +22 -19
  123. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +9 -6
  124. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +9 -6
  125. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +9 -6
  126. nautobot/project-static/docs/development/apps/migration/ui-component-framework/best-practices.html +9 -6
  127. nautobot/project-static/docs/development/apps/migration/ui-component-framework/breadcrumbs-titles.html +14 -11
  128. nautobot/project-static/docs/development/apps/migration/ui-component-framework/custom-content.html +27 -24
  129. nautobot/project-static/docs/development/apps/migration/ui-component-framework/index.html +20 -17
  130. nautobot/project-static/docs/development/apps/migration/ui-component-framework/migration-steps.html +20 -17
  131. nautobot/project-static/docs/development/apps/porting-from-netbox.html +9 -6
  132. nautobot/project-static/docs/development/core/application-registry.html +23 -20
  133. nautobot/project-static/docs/development/core/best-practices.html +23 -20
  134. nautobot/project-static/docs/development/core/bootstrap-ui.html +9 -6
  135. nautobot/project-static/docs/development/core/caching.html +9 -6
  136. nautobot/project-static/docs/development/core/controllers.html +9 -6
  137. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +10 -7
  138. nautobot/project-static/docs/development/core/generic-views.html +9 -6
  139. nautobot/project-static/docs/development/core/getting-started.html +9 -6
  140. nautobot/project-static/docs/development/core/homepage.html +12 -9
  141. nautobot/project-static/docs/development/core/index.html +9 -6
  142. nautobot/project-static/docs/development/core/minikube-dev-environment-for-k8s-jobs.html +9 -6
  143. nautobot/project-static/docs/development/core/model-checklist.html +9 -6
  144. nautobot/project-static/docs/development/core/model-features.html +11 -8
  145. nautobot/project-static/docs/development/core/natural-keys.html +21 -18
  146. nautobot/project-static/docs/development/core/navigation-menu.html +10 -7
  147. nautobot/project-static/docs/development/core/release-checklist.html +9 -6
  148. nautobot/project-static/docs/development/core/role-internals.html +9 -6
  149. nautobot/project-static/docs/development/core/settings.html +9 -6
  150. nautobot/project-static/docs/development/core/style-guide.html +32 -29
  151. nautobot/project-static/docs/development/core/templates.html +9 -6
  152. nautobot/project-static/docs/development/core/testing.html +10 -7
  153. nautobot/project-static/docs/development/core/ui-component-framework.html +36 -33
  154. nautobot/project-static/docs/development/core/user-preferences.html +9 -6
  155. nautobot/project-static/docs/development/index.html +9 -6
  156. nautobot/project-static/docs/development/jobs/getting-started.html +13 -10
  157. nautobot/project-static/docs/development/jobs/index.html +9 -6
  158. nautobot/project-static/docs/development/jobs/installation.html +23 -20
  159. nautobot/project-static/docs/development/jobs/job-extensions.html +25 -22
  160. nautobot/project-static/docs/development/jobs/job-logging.html +12 -9
  161. nautobot/project-static/docs/development/jobs/job-patterns.html +45 -42
  162. nautobot/project-static/docs/development/jobs/job-structure.html +53 -50
  163. nautobot/project-static/docs/development/jobs/migration/from-v1.html +23 -20
  164. nautobot/project-static/docs/development/jobs/testing.html +14 -11
  165. nautobot/project-static/docs/index.html +9 -6
  166. nautobot/project-static/docs/objects.inv +0 -0
  167. nautobot/project-static/docs/overview/application_stack.html +9 -6
  168. nautobot/project-static/docs/overview/design_philosophy.html +9 -6
  169. nautobot/project-static/docs/release-notes/index.html +9 -6
  170. nautobot/project-static/docs/release-notes/version-1.0.html +9 -6
  171. nautobot/project-static/docs/release-notes/version-1.1.html +9 -6
  172. nautobot/project-static/docs/release-notes/version-1.2.html +10 -7
  173. nautobot/project-static/docs/release-notes/version-1.3.html +9 -6
  174. nautobot/project-static/docs/release-notes/version-1.4.html +9 -6
  175. nautobot/project-static/docs/release-notes/version-1.5.html +13 -10
  176. nautobot/project-static/docs/release-notes/version-1.6.html +9 -6
  177. nautobot/project-static/docs/release-notes/version-2.0.html +9 -6
  178. nautobot/project-static/docs/release-notes/version-2.1.html +9 -6
  179. nautobot/project-static/docs/release-notes/version-2.2.html +9 -6
  180. nautobot/project-static/docs/release-notes/version-2.3.html +9 -6
  181. nautobot/project-static/docs/release-notes/version-2.4.html +267 -6
  182. nautobot/project-static/docs/requirements.txt +2 -2
  183. nautobot/project-static/docs/search/search_index.json +1 -1
  184. nautobot/project-static/docs/sitemap.xml +301 -301
  185. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  186. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +15 -12
  187. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +9 -6
  188. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +16 -13
  189. nautobot/project-static/docs/user-guide/administration/configuration/index.html +9 -6
  190. nautobot/project-static/docs/user-guide/administration/configuration/redis.html +9 -6
  191. nautobot/project-static/docs/user-guide/administration/configuration/settings.html +11 -8
  192. nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +9 -6
  193. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +9 -6
  194. nautobot/project-static/docs/user-guide/administration/guides/docker.html +9 -6
  195. nautobot/project-static/docs/user-guide/administration/guides/health-checks.html +9 -6
  196. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +9 -6
  197. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +9 -6
  198. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +9 -6
  199. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +9 -6
  200. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +16 -13
  201. nautobot/project-static/docs/user-guide/administration/guides/selinux-troubleshooting.html +9 -6
  202. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +9 -6
  203. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +9 -6
  204. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +9 -6
  205. nautobot/project-static/docs/user-guide/administration/installation/index.html +9 -6
  206. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +9 -6
  207. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +9 -6
  208. nautobot/project-static/docs/user-guide/administration/installation/services.html +12 -9
  209. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +13 -10
  210. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +10 -7
  211. nautobot/project-static/docs/user-guide/administration/security/index.html +9 -6
  212. nautobot/project-static/docs/user-guide/administration/security/notices.html +9 -6
  213. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +9 -6
  214. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +10 -7
  215. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +9 -6
  216. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +9 -6
  217. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +9 -6
  218. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +9 -6
  219. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +9 -6
  220. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +9 -6
  221. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +9 -6
  222. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +15 -12
  223. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +9 -6
  224. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +9 -6
  225. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +9 -6
  226. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +9 -6
  227. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +9 -6
  228. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +9 -6
  229. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +9 -6
  230. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +9 -6
  231. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +9 -6
  232. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +9 -6
  233. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +9 -6
  234. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +9 -6
  235. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +9 -6
  236. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +9 -6
  237. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +9 -6
  238. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +9 -6
  239. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +9 -6
  240. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +9 -6
  241. nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +9 -6
  242. nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +9 -6
  243. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +9 -6
  244. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +9 -6
  245. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +9 -6
  246. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +9 -6
  247. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +13 -10
  248. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +9 -6
  249. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +9 -6
  250. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +9 -6
  251. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +9 -6
  252. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +9 -6
  253. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +9 -6
  254. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +9 -6
  255. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +9 -6
  256. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +9 -6
  257. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +9 -6
  258. nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +9 -6
  259. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +9 -6
  260. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +9 -6
  261. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulefamily.html +9 -6
  262. nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +9 -6
  263. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +9 -6
  264. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +9 -6
  265. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +9 -6
  266. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +9 -6
  267. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +9 -6
  268. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +9 -6
  269. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +9 -6
  270. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +9 -6
  271. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +9 -6
  272. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +9 -6
  273. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +9 -6
  274. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +9 -6
  275. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +9 -6
  276. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +9 -6
  277. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +9 -6
  278. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualdevicecontext.html +9 -6
  279. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +9 -6
  280. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +9 -6
  281. nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +11 -8
  282. nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +11 -8
  283. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +41 -41
  284. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +9 -6
  285. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +197 -54
  286. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +9 -6
  287. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +9 -6
  288. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +9 -6
  289. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +9 -6
  290. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +9 -6
  291. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +9 -6
  292. nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +9 -6
  293. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +9 -6
  294. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +9 -6
  295. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +9 -6
  296. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +9 -6
  297. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +9 -6
  298. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +9 -6
  299. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +9 -6
  300. nautobot/project-static/docs/user-guide/core-data-model/wireless/index.html +9 -6
  301. nautobot/project-static/docs/user-guide/core-data-model/wireless/radioprofile.html +9 -6
  302. nautobot/project-static/docs/user-guide/core-data-model/wireless/supporteddatarate.html +9 -6
  303. nautobot/project-static/docs/user-guide/core-data-model/wireless/wirelessnetwork.html +9 -6
  304. nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +9 -6
  305. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +9 -6
  306. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +9 -6
  307. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +9 -6
  308. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +9 -6
  309. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +9 -6
  310. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +9 -6
  311. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +9 -6
  312. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +9 -6
  313. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +9 -6
  314. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +9 -6
  315. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +9 -6
  316. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +13 -10
  317. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +9 -6
  318. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +9 -6
  319. nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +9 -6
  320. nautobot/project-static/docs/user-guide/feature-guides/wireless-networks-and-controllers.html +9 -6
  321. nautobot/project-static/docs/user-guide/index.html +9 -6
  322. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +9 -6
  323. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +9 -6
  324. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +10 -7
  325. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +9 -6
  326. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +9 -6
  327. nautobot/project-static/docs/user-guide/platform-functionality/events.html +11 -8
  328. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +9 -6
  329. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +9 -6
  330. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +9 -6
  331. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +9 -6
  332. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +9 -6
  333. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +9 -6
  334. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +9 -6
  335. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +9 -6
  336. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +9 -6
  337. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +9 -6
  338. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobqueue.html +9 -6
  339. nautobot/project-static/docs/user-guide/platform-functionality/jobs/kubernetes-job-support.html +9 -6
  340. nautobot/project-static/docs/user-guide/platform-functionality/jobs/managing-jobs.html +9 -6
  341. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +9 -6
  342. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +9 -6
  343. nautobot/project-static/docs/user-guide/platform-functionality/note.html +9 -6
  344. nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +12 -9
  345. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +9 -6
  346. nautobot/project-static/docs/user-guide/platform-functionality/rendering-jinja-templates.html +9 -6
  347. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +9 -6
  348. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +9 -6
  349. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +9 -6
  350. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +9 -6
  351. nautobot/project-static/docs/user-guide/platform-functionality/role.html +9 -6
  352. nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +9 -6
  353. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +11 -8
  354. nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +9 -6
  355. nautobot/project-static/docs/user-guide/platform-functionality/status.html +9 -6
  356. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +9 -6
  357. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +9 -6
  358. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +9 -6
  359. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +9 -6
  360. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +9 -6
  361. nautobot/project-static/fonts/UFL.txt +96 -96
  362. nautobot/project-static/js/forms.js +35 -2
  363. nautobot/virtualization/filters.py +7 -0
  364. {nautobot-2.4.16.dist-info → nautobot-2.4.17.dist-info}/METADATA +6 -6
  365. {nautobot-2.4.16.dist-info → nautobot-2.4.17.dist-info}/RECORD +369 -364
  366. nautobot/project-static/docs/assets/javascripts/bundle.50899def.min.js +0 -16
  367. {nautobot-2.4.16.dist-info → nautobot-2.4.17.dist-info}/LICENSE.txt +0 -0
  368. {nautobot-2.4.16.dist-info → nautobot-2.4.17.dist-info}/NOTICE +0 -0
  369. {nautobot-2.4.16.dist-info → nautobot-2.4.17.dist-info}/WHEEL +0 -0
  370. {nautobot-2.4.16.dist-info → nautobot-2.4.17.dist-info}/entry_points.txt +0 -0
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.16">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.18">
22
22
 
23
23
 
24
24
 
@@ -35,6 +35,8 @@
35
35
 
36
36
 
37
37
 
38
+
39
+
38
40
 
39
41
 
40
42
 
@@ -4676,21 +4678,69 @@
4676
4678
  <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
4677
4679
 
4678
4680
  <li class="md-nav__item">
4679
- <a href="#prefix-utilization-calculation" class="md-nav__link">
4681
+ <a href="#prefix-and-ip-address-hierarchy" class="md-nav__link">
4682
+ <span class="md-ellipsis">
4683
+ Prefix and IP Address Hierarchy
4684
+ </span>
4685
+ </a>
4686
+
4687
+ <nav class="md-nav" aria-label="Prefix and IP Address Hierarchy">
4688
+ <ul class="md-nav__list">
4689
+
4690
+ <li class="md-nav__item">
4691
+ <a href="#hierarchy-updates-when-editing-prefixes" class="md-nav__link">
4692
+ <span class="md-ellipsis">
4693
+ Hierarchy Updates when Editing Prefixes
4694
+ </span>
4695
+ </a>
4696
+
4697
+ </li>
4698
+
4699
+ <li class="md-nav__item">
4700
+ <a href="#repairing-prefix-and-ip-address-hierarchy" class="md-nav__link">
4680
4701
  <span class="md-ellipsis">
4681
- Prefix utilization calculation
4702
+ Repairing Prefix and IP Address Hierarchy
4682
4703
  </span>
4683
4704
  </a>
4684
4705
 
4706
+ </li>
4707
+
4708
+ </ul>
4709
+ </nav>
4710
+
4685
4711
  </li>
4686
4712
 
4687
4713
  <li class="md-nav__item">
4688
- <a href="#prefix-hierarchy" class="md-nav__link">
4714
+ <a href="#prefix-types" class="md-nav__link">
4715
+ <span class="md-ellipsis">
4716
+ Prefix Types
4717
+ </span>
4718
+ </a>
4719
+
4720
+ <nav class="md-nav" aria-label="Prefix Types">
4721
+ <ul class="md-nav__list">
4722
+
4723
+ <li class="md-nav__item">
4724
+ <a href="#allocatable-hosts-by-prefix-type" class="md-nav__link">
4725
+ <span class="md-ellipsis">
4726
+ Allocatable Hosts by Prefix Type
4727
+ </span>
4728
+ </a>
4729
+
4730
+ </li>
4731
+
4732
+ <li class="md-nav__item">
4733
+ <a href="#prefix-utilization-calculation-by-prefix-type" class="md-nav__link">
4689
4734
  <span class="md-ellipsis">
4690
- Prefix hierarchy
4735
+ Prefix Utilization Calculation by Prefix Type
4691
4736
  </span>
4692
4737
  </a>
4693
4738
 
4739
+ </li>
4740
+
4741
+ </ul>
4742
+ </nav>
4743
+
4694
4744
  </li>
4695
4745
 
4696
4746
  </ul>
@@ -7458,12 +7508,12 @@
7458
7508
 
7459
7509
 
7460
7510
  <li class="md-nav__item">
7461
- <a href="../../../development/apps/api/platform-features/populating-extensibility-features.html" class="md-nav__link">
7511
+ <a href="../../../development/apps/api/platform-features/prepopulating-data.html" class="md-nav__link">
7462
7512
 
7463
7513
 
7464
7514
 
7465
7515
  <span class="md-ellipsis">
7466
- Populating Extensibility Features
7516
+ Prepopulating Data
7467
7517
 
7468
7518
  </span>
7469
7519
 
@@ -10139,21 +10189,69 @@
10139
10189
  <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
10140
10190
 
10141
10191
  <li class="md-nav__item">
10142
- <a href="#prefix-utilization-calculation" class="md-nav__link">
10192
+ <a href="#prefix-and-ip-address-hierarchy" class="md-nav__link">
10193
+ <span class="md-ellipsis">
10194
+ Prefix and IP Address Hierarchy
10195
+ </span>
10196
+ </a>
10197
+
10198
+ <nav class="md-nav" aria-label="Prefix and IP Address Hierarchy">
10199
+ <ul class="md-nav__list">
10200
+
10201
+ <li class="md-nav__item">
10202
+ <a href="#hierarchy-updates-when-editing-prefixes" class="md-nav__link">
10203
+ <span class="md-ellipsis">
10204
+ Hierarchy Updates when Editing Prefixes
10205
+ </span>
10206
+ </a>
10207
+
10208
+ </li>
10209
+
10210
+ <li class="md-nav__item">
10211
+ <a href="#repairing-prefix-and-ip-address-hierarchy" class="md-nav__link">
10143
10212
  <span class="md-ellipsis">
10144
- Prefix utilization calculation
10213
+ Repairing Prefix and IP Address Hierarchy
10145
10214
  </span>
10146
10215
  </a>
10147
10216
 
10217
+ </li>
10218
+
10219
+ </ul>
10220
+ </nav>
10221
+
10148
10222
  </li>
10149
10223
 
10150
10224
  <li class="md-nav__item">
10151
- <a href="#prefix-hierarchy" class="md-nav__link">
10225
+ <a href="#prefix-types" class="md-nav__link">
10152
10226
  <span class="md-ellipsis">
10153
- Prefix hierarchy
10227
+ Prefix Types
10154
10228
  </span>
10155
10229
  </a>
10156
10230
 
10231
+ <nav class="md-nav" aria-label="Prefix Types">
10232
+ <ul class="md-nav__list">
10233
+
10234
+ <li class="md-nav__item">
10235
+ <a href="#allocatable-hosts-by-prefix-type" class="md-nav__link">
10236
+ <span class="md-ellipsis">
10237
+ Allocatable Hosts by Prefix Type
10238
+ </span>
10239
+ </a>
10240
+
10241
+ </li>
10242
+
10243
+ <li class="md-nav__item">
10244
+ <a href="#prefix-utilization-calculation-by-prefix-type" class="md-nav__link">
10245
+ <span class="md-ellipsis">
10246
+ Prefix Utilization Calculation by Prefix Type
10247
+ </span>
10248
+ </a>
10249
+
10250
+ </li>
10251
+
10252
+ </ul>
10253
+ </nav>
10254
+
10157
10255
  </li>
10158
10256
 
10159
10257
  </ul>
@@ -10176,74 +10274,118 @@
10176
10274
 
10177
10275
 
10178
10276
  <h1 id="prefixes">Prefixes<a class="headerlink" href="#prefixes" title="Permanent link">&para;</a></h1>
10179
- <p>A prefix is an IPv4 or IPv6 network and mask expressed in CIDR notation (e.g. 192.0.2.0/24). A prefix entails only the "network portion" of an IP address: All bits in the address not covered by the mask must be zero. (In other words, a prefix cannot be a specific IP address, except in the case of /32 IPv4 prefixes and /128 IPv6 prefixes.)</p>
10180
- <p>Each prefix belongs to a specific namespace, and is unique within that namespace. Each prefix can also optionally be assigned to a particular location(s), as well as to zero or more virtual routing and forwarding (VRF) instances. All prefixes not assigned to a VRF are considered to be in the "global" VRF within their namespace.</p>
10277
+ <p>A prefix is an IPv4 or IPv6 network and mask expressed in CIDR notation (e.g. "192.0.2.0/24"). A prefix entails only the "network portion" of an IP address: All bits in the address not covered by the mask must be zero. (In other words, a prefix cannot be a specific IP host address, except in the case of /32 IPv4 prefixes and /128 IPv6 prefixes.)</p>
10278
+ <p>At the database level, a prefix stores its network information in the fields <code>network</code>, <code>broadcast</code>, <code>prefix_length</code>, and <code>ip_version</code>. For convenience, the Nautobot UI, REST API, and Django ORM permit defining all of these via a single <code>prefix</code> parameter as an alternative.</p>
10279
+ <p>Each prefix belongs to a specific <a href="namespace.html">Namespace</a>, and is unique within that namespace. Each prefix can also optionally be assigned to a particular <a href="../dcim/location.html">Location(s)</a>, as well as to zero or more <a href="vrf.html">virtual routing and forwarding (VRF)</a> instances. All prefixes not assigned to a VRF are considered to be in the "global" VRF within their namespace.</p>
10181
10280
  <details class="version-changed">
10182
- <summary>Changed in version 2.0.0</summary>
10281
+ <summary>Changed in version 2.0.0 — Prefixes are unique per Namespace</summary>
10183
10282
  <p>In Nautobot 1.x, prior to the introduction of the namespace data model, a prefix might or might not be unique within its assigned VRF. In Nautobot 2.0, prefixes are always unique within their namespace. You may need to do some cleanup of your data after migrating from Nautobot 1.x to suit the new data requirements.</p>
10184
10283
  </details>
10185
10284
  <details class="version-changed">
10186
- <summary>Changed in version 2.2.0</summary>
10285
+ <summary>Changed in version 2.2.0 — Prefixes can now be assigned to multiple Locations</summary>
10187
10286
  <p>A Prefix can now be assigned to multiple Locations if desired.</p>
10188
10287
  </details>
10189
- <p>Each prefix must be assigned a <a href="../../platform-functionality/status.html"><code>status</code></a> and can optionally be assigned a role. These terms are often used interchangeably so it's important to recognize the difference between them. The <strong>status</strong> defines a prefix's operational state. The following statuses are provided by default:</p>
10288
+ <p>Each prefix must be assigned a <a href="../../platform-functionality/status.html"><code>status</code></a> and can optionally be assigned a <a href="../../platform-functionality/role.html"><code>role</code></a>. These terms are often used interchangeably so it's important to recognize the difference between them. The <strong>status</strong> defines a prefix's operational state. The following statuses are provided by default:</p>
10190
10289
  <ul>
10191
10290
  <li>Active - Provisioned and in use</li>
10192
10291
  <li>Reserved - Designated for future use</li>
10193
10292
  <li>Deprecated - No longer in use</li>
10194
10293
  </ul>
10195
10294
  <details class="version-changed">
10196
- <summary>Changed in version 2.0.0</summary>
10197
- <p>The "Container" status was removed and its functionality was replaced by the <code>Prefix.type</code> field.</p>
10295
+ <summary>Changed in version 2.0.0 — Introduction of <code>type</code> field</summary>
10296
+ <p>The "Container" status was removed and its functionality was replaced by the <code>Prefix.type</code> field (<a href="#prefix-types">see below</a>).</p>
10198
10297
  </details>
10199
10298
  <p>On the other hand, a prefix's <strong>role</strong> defines its function. Role assignment is optional and roles are fully customizable. For example, you might create roles to differentiate between production and development infrastructure.</p>
10200
- <p>A prefix may also be assigned to a VLAN. This association is helpful for associating address space with layer two domains. A VLAN may have multiple prefixes assigned to it.</p>
10201
- <p>The prefix model can be set to one of three types through the <code>type</code> field. The valid prefix types are:</p>
10202
- <ul>
10203
- <li>Container</li>
10204
- <li>Network (default)</li>
10205
- <li>Pool</li>
10206
- </ul>
10207
- <p>If a prefix's type is set to "Pool", Nautobot will treat this prefix as a range (such as a NAT pool) wherein every IP address is valid and assignable. This logic is used when identifying available IP addresses within a prefix. If type is set to "Network", Nautobot will assume that the first and last (network and broadcast) addresses within an IPv4 prefix are unusable.</p>
10208
- <details class="version-changed">
10209
- <summary>Changed in version 2.0.0</summary>
10210
- <p>The <code>is_pool</code> field was removed and its functionality was replaced by the <code>Prefix.type</code> field.</p>
10211
- </details>
10299
+ <p>A prefix may also be assigned to a <a href="vlan.html">VLAN</a>. This association is helpful for associating address space with layer two domains. A VLAN may have multiple prefixes assigned to it.</p>
10212
10300
  <p>A prefix can be assigned to an <a href="rir.html">RIR</a> to track which RIR has granted your organization permission to use the specified IP space on the public Internet.</p>
10213
10301
  <p>The <code>date_allocated</code> field can be used to track any date and time you would like to define as the "allocated date" for a prefix. This could be the date an RIR assigned a prefix to your organization or the date a prefix was assigned to a specific internal team.</p>
10214
10302
  <details class="version-added">
10215
- <summary>Added in version 2.0.0</summary>
10303
+ <summary>Added in version 2.0.0 — Introduction of <code>date_allocated</code> and <code>rir</code> fields</summary>
10216
10304
  <p>The <code>date_allocated</code> and <code>rir</code> fields were added, migrating data from the removed <code>Aggregate</code> model.</p>
10217
10305
  </details>
10218
- <h2 id="prefix-utilization-calculation">Prefix utilization calculation<a class="headerlink" href="#prefix-utilization-calculation" title="Permanent link">&para;</a></h2>
10219
- <details class="version-changed">
10220
- <summary>Changed in version 2.0.0</summary>
10306
+ <h2 id="prefix-and-ip-address-hierarchy">Prefix and IP Address Hierarchy<a class="headerlink" href="#prefix-and-ip-address-hierarchy" title="Permanent link">&para;</a></h2>
10307
+ <p>The hierarchy of prefixes and their constituent <a href="ipaddress.html">IP addresses</a> is tracked in the Nautobot database via <code>parent</code> foreign keys. For example you might have in a given namespace:</p>
10308
+ <ul>
10309
+ <li>Prefix 10.0.0.0/8 (with no <code>parent</code>)<ul>
10310
+ <li>IP address 10.0.1.0/32 (with <code>parent</code> 10.0.0.0/8)</li>
10311
+ <li>Prefix 10.1.1.0/24 (with <code>parent</code> 10.0.0.0/8)<ul>
10312
+ <li>IP address 10.1.1.1/24 (with <code>parent</code> 10.1.1.0/24)</li>
10313
+ </ul>
10314
+ </li>
10315
+ </ul>
10316
+ </li>
10317
+ </ul>
10318
+ <p>Note that in Nautobot, all IP addresses <em>must</em> have a parent prefix; "orphaned" IP addresses are not permitted.</p>
10319
+ <p>In most cases, you will not need to ever explicitly specify the <code>parent</code> value yourself, as specifying the <code>namespace</code> is generally more user-friendly and will result in the <code>parent</code> being automatically determined and updated as needed by Nautobot.</p>
10320
+ <h3 id="hierarchy-updates-when-editing-prefixes">Hierarchy Updates when Editing Prefixes<a class="headerlink" href="#hierarchy-updates-when-editing-prefixes" title="Permanent link">&para;</a></h3>
10321
+ <details class="version-added">
10322
+ <summary>Added in version 2.4.17 — Added support and validation for changing <code>prefix</code> and <code>namespace</code> values</summary>
10323
+ <p>Prior to Nautobot v2.4.17, Nautobot lacked some essential logic for handling changes to these fields on an existing Prefix, and as a result, changing these fields could result in incorrect data in some cases. Refer to <a href="#repairing-prefix-and-ip-address-hierarchy">Repairing Prefix and IP Address Hierarchy</a> below for details.</p>
10221
10324
  </details>
10222
- <p>The <code>get_utilization</code> method on the <code>ipam.Prefix</code> model has been updated in 2.0 to account for the <code>Prefix.type</code> field. The behavior is now as follows:</p>
10325
+ <p>When editing a Prefix and changing its <code>prefix</code> value (<code>network</code>, <code>prefix_length</code>, etc.), or <code>namespace</code>, Nautobot will automatically update the <code>parent</code> field of the record and related Prefix and IP Address records as needed to preserve the correct hierarchy. <strong>Such edits to a Prefix do <em>not</em> "renumber" or "re-IP" the descendant Prefixes and IP Addresses below this Prefix.</strong> For example, if the aforementioned 10.1.1.0/24 Prefix were edited to have a <code>network</code> of 10.<strong>0</strong>.1.0/24, IP address 10.1.1.1/24 would be updated such that its <code>parent</code> was now the 10.0.0.0/8 Prefix, as 10.0.1.0/24 does not contain host 10.1.1.1, but 10.0.0.0/8 does. Similarly, IP address 10.0.1.0/32 would be updated to have its <code>parent</code> become the newly updated 10.0.1.0/24 Prefix:</p>
10223
10326
  <ul>
10224
- <li>If the <code>Prefix.type</code> is <code>Container</code>, the utilization is calculated as the sum of the total address space of all child prefixes.</li>
10225
- <li>If the <code>Prefix.type</code> is <code>Pool</code>, the utilization is calculated as the sum of the total number of IP addresses within the pool's range.</li>
10226
- <li>If the <code>Prefix.type</code> is <code>Network</code>:<ul>
10227
- <li>The utilization is calculated as the sum of the total address space of all child <code>Pool</code> prefixes plus the total number of child IP addresses.</li>
10228
- <li>For IPv4 networks larger than /31, if neither the first or last address is occupied by either a pool or an IP address, they are subtracted from the total size of the prefix.</li>
10327
+ <li>Prefix 10.0.0.0/8 (with no <code>parent</code>)<ul>
10328
+ <li>Prefix <del>10.1.1.0/24</del> <em>10.0.1.0/24</em> (with <code>parent</code> 10.0.0.0/8)<ul>
10329
+ <li>IP address 10.0.1.0/32 (with <code>parent</code> <del>10.0.0.0/8</del> <em>10.0.1.0/24</em>)</li>
10229
10330
  </ul>
10230
10331
  </li>
10332
+ <li>IP address 10.1.1.1/24 (with <code>parent</code> <del>10.1.1.0/24</del> <em>10.0.0.0/8</em>)</li>
10231
10333
  </ul>
10232
- <h2 id="prefix-hierarchy">Prefix hierarchy<a class="headerlink" href="#prefix-hierarchy" title="Permanent link">&para;</a></h2>
10334
+ </li>
10335
+ </ul>
10336
+ <details class="warning">
10337
+ <summary>Orphaned IP addresses</summary>
10338
+ <p>If editing an existing Prefix would result in some of its child IP Addresses becoming "orphans" with no valid <code>parent</code> Prefix, Nautobot will raise a validation error and reject the change with an appropriate explanation.</p>
10339
+ </details>
10340
+ <details class="version-changed">
10341
+ <summary>Changed in version 2.4.17 — Cascading <code>namespace</code> updates</summary>
10342
+ </details>
10343
+ <p>Additionally, when changing a Prefix's <code>namespace</code>, not only the specified Prefix record, but <em>also all of its descendant Prefix records</em> will be moved into the new Namespace. This is in service of the "principle of least surprise", because IP Address records do not have their own individual Namespaces but instead derive their namespace from their <code>parent</code> Prefixes, and it would be surprising to most users if only IPs directly under a given Prefix were brought along, while IPs under a nested subnet Prefix were left behind in the original Namespace.</p>
10344
+ <details class="warning">
10345
+ <summary>Uniqueness violations when changing Namespace</summary>
10346
+ <p>Because Prefix and IP Address uniqueness is enforced per-Namespace, if the target Namespace already contains existing Prefix and/or IP Address records, moving a Prefix and its descendants into that Namespace may result in data "collision" and violations of the uniqueness constraint. Nautobot will detect such a scenario and prevent the change.</p>
10347
+ </details>
10348
+ <details class="warning">
10349
+ <summary>VRFs are specific to a Namespace</summary>
10350
+ <p>Because VRFs are specific to a Namespace, moving a Prefix <em>that's associated to one or more VRFs</em> into a different Namespace is blocked by Nautobot, and will result in a validation error with a message about needing to disassociate the Prefix (and its descendants) from VRFs before changing the Namespace. The workflow you'd need to follow here would be:</p>
10351
+ <ol>
10352
+ <li>Disassociate the Prefix and its descendant Prefixes from any and all VRFs in the initial Namespace.</li>
10353
+ <li>Move the Prefix (and implicitly its descendants) into the target Namespace.</li>
10354
+ <li>Create and/or associate VRFs in the target Namespace to the Prefix(es) as desired.</li>
10355
+ </ol>
10356
+ <p>If you find yourself needing to perform this workflow frequently, consider implementing a simple Nautobot <a href="../../platform-functionality/jobs/index.html">Job</a> to consolidate these three steps into a single repeatable task.</p>
10357
+ </details>
10358
+ <h3 id="repairing-prefix-and-ip-address-hierarchy">Repairing Prefix and IP Address Hierarchy<a class="headerlink" href="#repairing-prefix-and-ip-address-hierarchy" title="Permanent link">&para;</a></h3>
10233
10359
  <details class="version-added">
10234
- <summary>Added in version 2.0.0</summary>
10360
+ <summary>Added in version 2.4.17 — Added system Job for repairing incorrect <code>parent</code> values</summary>
10235
10361
  </details>
10236
- <p>Prefixes and IP addresses within a namespace are organized into a hierarchy using the <code>parent</code> field. There is guidance for the types of prefixes that can be assigned as parents:</p>
10362
+ <p>It is possible in some cases, particularly due to insufficient validation in earlier Nautobot 2.x releases, but also due to incorrect logic in custom Jobs and the like, for <code>parent</code> values to become incorrectly set on some Prefix and IP Address records. One symptom of such an issue can be seen when a Prefix's reported <a href="#prefix-utilization-calculation-by-prefix-type">"utilization"</a> value is reported as an incorrect value, such as in some cases showing greater than 100% utilization.</p>
10363
+ <p>If you encounter or suspect an issue of this sort, Nautobot provides a system <a href="../../platform-functionality/jobs/index.html">Job</a> named "Check/Fix IPAM Parents" which can be run to efficiently detect and repair various problems of this sort.</p>
10364
+ <p>If, after running this Job, you later find that this issue recurs, we recommend reviewing any Apps and Jobs that are making programmatic updates to Prefix and IP Address data, as this should not recur during normal Nautobot UI or REST API updates in v2.4.17 and later.</p>
10365
+ <h2 id="prefix-types">Prefix Types<a class="headerlink" href="#prefix-types" title="Permanent link">&para;</a></h2>
10366
+ <p>The prefix model can be set to one of three types through the <code>type</code> field. The valid prefix types are:</p>
10237
10367
  <ul>
10238
- <li>A <code>Prefix</code> of type <code>Container</code> should only have a parent (if any) of type <code>Container</code></li>
10239
- <li>A <code>Prefix</code> of type <code>Network</code> should only have a parent (if any) of type <code>Container</code></li>
10240
- <li>A <code>Prefix</code> of type <code>Pool</code> should only have a parent (if any) of type <code>Network</code></li>
10241
- <li>Any <code>Prefix</code> can be a root prefix (i.e. have no parent)</li>
10368
+ <li>Container</li>
10369
+ <li>Network (default)</li>
10370
+ <li>Pool</li>
10371
+ </ul>
10372
+ <p>We recommend that you think of "Networks" as the actual host-containing subnets in your network, while "Containers" represent groups of related "Networks", and "Pools" are used as needed within a "Network". In other words, "Containers" contain "Networks" which may contain "Pools". However, Nautobot does not strictly enforce this hierarchy. There are however a few ways in which different prefix types behave differently, as described below.</p>
10373
+ <details class="version-changed">
10374
+ <summary>Changed in version 2.0.0 — Removal of <code>is_pool</code> field</summary>
10375
+ <p>The <code>is_pool</code> field was removed and its functionality was replaced by the <code>Prefix.type</code> field.</p>
10376
+ </details>
10377
+ <h3 id="allocatable-hosts-by-prefix-type">Allocatable Hosts by Prefix Type<a class="headerlink" href="#allocatable-hosts-by-prefix-type" title="Permanent link">&para;</a></h3>
10378
+ <p>If a prefix's <code>type</code> is set to "Pool", Nautobot will treat this prefix as a range (such as a NAT pool) wherein every IP address is valid and assignable. This logic is used when identifying available IP addresses within a prefix. If <code>type</code> is set to "Network" or "Container", Nautobot will assume that the first and last (network and broadcast) addresses within an IPv4 prefix are unusable as hosts.</p>
10379
+ <h3 id="prefix-utilization-calculation-by-prefix-type">Prefix Utilization Calculation by Prefix Type<a class="headerlink" href="#prefix-utilization-calculation-by-prefix-type" title="Permanent link">&para;</a></h3>
10380
+ <ul>
10381
+ <li>If the prefix <code>type</code> is "Container", the utilization is calculated as the sum of the total address space of all child prefixes. Individual IP addresses are not included in the calculation.</li>
10382
+ <li>Conversely, if the prefix <code>type</code> is "Pool", the utilization is calculated as the sum of the total number of IP addresses within the pool's range. Prefixes are not included in the calculation.</li>
10383
+ <li>If the prefix <code>type</code> is "Network":<ul>
10384
+ <li>The utilization is calculated as the sum of the total address space of all child prefixes plus the total number of child IP addresses not covered by a child prefix.</li>
10385
+ <li>For IPv4 networks larger than /31, if neither the first (network) or last (broadcast) address is occupied by either a pool or an IP address, they are subtracted from the total size of the prefix.</li>
10386
+ </ul>
10387
+ </li>
10242
10388
  </ul>
10243
- <div class="admonition warning">
10244
- <p class="admonition-title">Warning</p>
10245
- <p>In a future release of Nautobot, this guidance will become an enforced data constraint.</p>
10246
- </div>
10247
10389
 
10248
10390
 
10249
10391
 
@@ -10333,7 +10475,8 @@
10333
10475
  <!-- RTD version flyout injected on live site -->
10334
10476
  <div id="readthedocs-embed-flyout"></div>
10335
10477
 
10336
- <div class="md-social">
10478
+
10479
+ <div class="md-social">
10337
10480
 
10338
10481
 
10339
10482
 
@@ -10389,10 +10532,10 @@
10389
10532
 
10390
10533
 
10391
10534
 
10392
- <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.annotate", "content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../../assets/javascripts/workers/search.d50fe291.min.js", "tags": null, "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"}, "version": null}</script>
10535
+ <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.annotate", "content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../../assets/javascripts/workers/search.973d3a69.min.js", "tags": null, "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"}, "version": null}</script>
10393
10536
 
10394
10537
 
10395
- <script src="../../../assets/javascripts/bundle.50899def.min.js"></script>
10538
+ <script src="../../../assets/javascripts/bundle.92b07e13.min.js"></script>
10396
10539
 
10397
10540
 
10398
10541
  <script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.16">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.18">
22
22
 
23
23
 
24
24
 
@@ -35,6 +35,8 @@
35
35
 
36
36
 
37
37
 
38
+
39
+
38
40
 
39
41
 
40
42
 
@@ -7408,12 +7410,12 @@
7408
7410
 
7409
7411
 
7410
7412
  <li class="md-nav__item">
7411
- <a href="../../../development/apps/api/platform-features/populating-extensibility-features.html" class="md-nav__link">
7413
+ <a href="../../../development/apps/api/platform-features/prepopulating-data.html" class="md-nav__link">
7412
7414
 
7413
7415
 
7414
7416
 
7415
7417
  <span class="md-ellipsis">
7416
- Populating Extensibility Features
7418
+ Prepopulating Data
7417
7419
 
7418
7420
  </span>
7419
7421
 
@@ -10196,7 +10198,8 @@
10196
10198
  <!-- RTD version flyout injected on live site -->
10197
10199
  <div id="readthedocs-embed-flyout"></div>
10198
10200
 
10199
- <div class="md-social">
10201
+
10202
+ <div class="md-social">
10200
10203
 
10201
10204
 
10202
10205
 
@@ -10252,10 +10255,10 @@
10252
10255
 
10253
10256
 
10254
10257
 
10255
- <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.annotate", "content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../../assets/javascripts/workers/search.d50fe291.min.js", "tags": null, "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"}, "version": null}</script>
10258
+ <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.annotate", "content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../../assets/javascripts/workers/search.973d3a69.min.js", "tags": null, "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"}, "version": null}</script>
10256
10259
 
10257
10260
 
10258
- <script src="../../../assets/javascripts/bundle.50899def.min.js"></script>
10261
+ <script src="../../../assets/javascripts/bundle.92b07e13.min.js"></script>
10259
10262
 
10260
10263
 
10261
10264
  <script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.16">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.18">
22
22
 
23
23
 
24
24
 
@@ -35,6 +35,8 @@
35
35
 
36
36
 
37
37
 
38
+
39
+
38
40
 
39
41
 
40
42
 
@@ -7408,12 +7410,12 @@
7408
7410
 
7409
7411
 
7410
7412
  <li class="md-nav__item">
7411
- <a href="../../../development/apps/api/platform-features/populating-extensibility-features.html" class="md-nav__link">
7413
+ <a href="../../../development/apps/api/platform-features/prepopulating-data.html" class="md-nav__link">
7412
7414
 
7413
7415
 
7414
7416
 
7415
7417
  <span class="md-ellipsis">
7416
- Populating Extensibility Features
7418
+ Prepopulating Data
7417
7419
 
7418
7420
  </span>
7419
7421
 
@@ -10191,7 +10193,8 @@
10191
10193
  <!-- RTD version flyout injected on live site -->
10192
10194
  <div id="readthedocs-embed-flyout"></div>
10193
10195
 
10194
- <div class="md-social">
10196
+
10197
+ <div class="md-social">
10195
10198
 
10196
10199
 
10197
10200
 
@@ -10247,10 +10250,10 @@
10247
10250
 
10248
10251
 
10249
10252
 
10250
- <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.annotate", "content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../../assets/javascripts/workers/search.d50fe291.min.js", "tags": null, "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"}, "version": null}</script>
10253
+ <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.annotate", "content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../../assets/javascripts/workers/search.973d3a69.min.js", "tags": null, "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"}, "version": null}</script>
10251
10254
 
10252
10255
 
10253
- <script src="../../../assets/javascripts/bundle.50899def.min.js"></script>
10256
+ <script src="../../../assets/javascripts/bundle.92b07e13.min.js"></script>
10254
10257
 
10255
10258
 
10256
10259
  <script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.16">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.18">
22
22
 
23
23
 
24
24
 
@@ -35,6 +35,8 @@
35
35
 
36
36
 
37
37
 
38
+
39
+
38
40
 
39
41
 
40
42
 
@@ -7408,12 +7410,12 @@
7408
7410
 
7409
7411
 
7410
7412
  <li class="md-nav__item">
7411
- <a href="../../../development/apps/api/platform-features/populating-extensibility-features.html" class="md-nav__link">
7413
+ <a href="../../../development/apps/api/platform-features/prepopulating-data.html" class="md-nav__link">
7412
7414
 
7413
7415
 
7414
7416
 
7415
7417
  <span class="md-ellipsis">
7416
- Populating Extensibility Features
7418
+ Prepopulating Data
7417
7419
 
7418
7420
  </span>
7419
7421
 
@@ -10197,7 +10199,8 @@
10197
10199
  <!-- RTD version flyout injected on live site -->
10198
10200
  <div id="readthedocs-embed-flyout"></div>
10199
10201
 
10200
- <div class="md-social">
10202
+
10203
+ <div class="md-social">
10201
10204
 
10202
10205
 
10203
10206
 
@@ -10253,10 +10256,10 @@
10253
10256
 
10254
10257
 
10255
10258
 
10256
- <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.annotate", "content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../../assets/javascripts/workers/search.d50fe291.min.js", "tags": null, "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"}, "version": null}</script>
10259
+ <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.annotate", "content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../../assets/javascripts/workers/search.973d3a69.min.js", "tags": null, "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"}, "version": null}</script>
10257
10260
 
10258
10261
 
10259
- <script src="../../../assets/javascripts/bundle.50899def.min.js"></script>
10262
+ <script src="../../../assets/javascripts/bundle.92b07e13.min.js"></script>
10260
10263
 
10261
10264
 
10262
10265
  <script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.16">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.18">
22
22
 
23
23
 
24
24
 
@@ -35,6 +35,8 @@
35
35
 
36
36
 
37
37
 
38
+
39
+
38
40
 
39
41
 
40
42
 
@@ -7473,12 +7475,12 @@
7473
7475
 
7474
7476
 
7475
7477
  <li class="md-nav__item">
7476
- <a href="../../../development/apps/api/platform-features/populating-extensibility-features.html" class="md-nav__link">
7478
+ <a href="../../../development/apps/api/platform-features/prepopulating-data.html" class="md-nav__link">
7477
7479
 
7478
7480
 
7479
7481
 
7480
7482
  <span class="md-ellipsis">
7481
- Populating Extensibility Features
7483
+ Prepopulating Data
7482
7484
 
7483
7485
  </span>
7484
7486
 
@@ -10322,7 +10324,8 @@
10322
10324
  <!-- RTD version flyout injected on live site -->
10323
10325
  <div id="readthedocs-embed-flyout"></div>
10324
10326
 
10325
- <div class="md-social">
10327
+
10328
+ <div class="md-social">
10326
10329
 
10327
10330
 
10328
10331
 
@@ -10378,10 +10381,10 @@
10378
10381
 
10379
10382
 
10380
10383
 
10381
- <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.annotate", "content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../../assets/javascripts/workers/search.d50fe291.min.js", "tags": null, "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"}, "version": null}</script>
10384
+ <script id="__config" type="application/json">{"base": "../../..", "features": ["content.code.annotate", "content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../../assets/javascripts/workers/search.973d3a69.min.js", "tags": null, "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"}, "version": null}</script>
10382
10385
 
10383
10386
 
10384
- <script src="../../../assets/javascripts/bundle.50899def.min.js"></script>
10387
+ <script src="../../../assets/javascripts/bundle.92b07e13.min.js"></script>
10385
10388
 
10386
10389
 
10387
10390
  <script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});