nautobot 2.0.0a3__py3-none-any.whl → 2.0.0b1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (780) hide show
  1. nautobot/apps/api.py +6 -8
  2. nautobot/apps/forms.py +0 -2
  3. nautobot/apps/ui.py +0 -8
  4. nautobot/circuits/api/serializers.py +9 -117
  5. nautobot/circuits/api/urls.py +1 -1
  6. nautobot/circuits/api/views.py +0 -1
  7. nautobot/circuits/forms.py +0 -65
  8. nautobot/circuits/migrations/0014_related_name_changes.py +1 -1
  9. nautobot/circuits/migrations/0016_tagsfield.py +34 -0
  10. nautobot/circuits/migrations/0017_fixup_null_statuses.py +22 -0
  11. nautobot/circuits/migrations/0018_status_nonnullable.py +22 -0
  12. nautobot/circuits/models.py +3 -87
  13. nautobot/circuits/navigation.py +14 -69
  14. nautobot/circuits/signals.py +0 -2
  15. nautobot/circuits/tables.py +39 -1
  16. nautobot/circuits/tests/integration/test_relationships.py +9 -9
  17. nautobot/circuits/tests/test_api.py +4 -8
  18. nautobot/circuits/tests/test_filters.py +10 -4
  19. nautobot/circuits/tests/test_models.py +5 -1
  20. nautobot/circuits/tests/test_views.py +27 -5
  21. nautobot/circuits/views.py +18 -10
  22. nautobot/core/api/__init__.py +8 -2
  23. nautobot/core/api/fields.py +15 -6
  24. nautobot/core/api/filter_backends.py +3 -2
  25. nautobot/core/api/metadata.py +237 -30
  26. nautobot/core/api/mixins.py +94 -0
  27. nautobot/core/api/pagination.py +4 -0
  28. nautobot/core/api/parsers.py +154 -0
  29. nautobot/core/api/renderers.py +153 -2
  30. nautobot/core/api/schema.py +46 -2
  31. nautobot/core/api/serializers.py +377 -35
  32. nautobot/core/api/urls.py +11 -3
  33. nautobot/core/api/utils.py +174 -2
  34. nautobot/core/api/versioning.py +32 -10
  35. nautobot/core/api/views.py +266 -72
  36. nautobot/core/apps/__init__.py +138 -220
  37. nautobot/core/celery/__init__.py +112 -41
  38. nautobot/core/celery/backends.py +19 -12
  39. nautobot/core/celery/control.py +46 -0
  40. nautobot/core/celery/encoders.py +53 -0
  41. nautobot/core/celery/log.py +38 -0
  42. nautobot/core/celery/schedulers.py +23 -4
  43. nautobot/core/celery/task.py +1 -16
  44. nautobot/core/checks.py +0 -27
  45. nautobot/core/choices.py +0 -113
  46. nautobot/core/{cli.py → cli/__init__.py} +1 -1
  47. nautobot/core/cli/__main__.py +3 -0
  48. nautobot/core/constants.py +0 -24
  49. nautobot/core/context_processors.py +12 -0
  50. nautobot/core/filters.py +2 -2
  51. nautobot/core/forms/__init__.py +0 -4
  52. nautobot/core/forms/fields.py +38 -65
  53. nautobot/core/forms/forms.py +4 -1
  54. nautobot/core/forms/utils.py +0 -52
  55. nautobot/core/graphql/schema.py +4 -27
  56. nautobot/core/jobs/__init__.py +75 -0
  57. nautobot/core/management/commands/build_ui.py +255 -0
  58. nautobot/core/management/commands/generate_test_data.py +3 -2
  59. nautobot/core/management/commands/post_upgrade.py +24 -24
  60. nautobot/core/models/__init__.py +26 -1
  61. nautobot/core/models/fields.py +24 -5
  62. nautobot/core/models/generics.py +2 -42
  63. nautobot/core/models/managers.py +5 -0
  64. nautobot/core/models/name_color_content_types.py +0 -14
  65. nautobot/core/models/tree_queries.py +14 -4
  66. nautobot/core/models/utils.py +5 -6
  67. nautobot/core/models/validators.py +17 -8
  68. nautobot/core/releases.py +8 -10
  69. nautobot/core/settings.py +80 -42
  70. nautobot/core/tables.py +5 -5
  71. nautobot/core/tasks.py +4 -7
  72. nautobot/core/templates/base.html +1 -49
  73. nautobot/core/templates/base_django.html +49 -0
  74. nautobot/core/templates/base_react.html +55 -0
  75. nautobot/core/templates/buttons/export.html +6 -4
  76. nautobot/core/templates/generic/object_bulk_create.html +10 -21
  77. nautobot/core/templates/generic/object_list.html +3 -1
  78. nautobot/core/templates/generic/object_retrieve_plugin_full_width.html +3 -0
  79. nautobot/core/templates/inc/footer.html +1 -0
  80. nautobot/core/templates/inc/javascript.html +0 -14
  81. nautobot/core/templates/inc/nav_menu.html +28 -33
  82. nautobot/core/templates/inc/object_details_advanced_panel.html +13 -0
  83. nautobot/core/templates/inc/relationships_table_rows.html +2 -2
  84. nautobot/core/templates/nautobot_config.py.j2 +8 -20
  85. nautobot/core/templates/plugin_template/__init__.py-tpl +1 -2
  86. nautobot/core/templates/rest_framework/api.html +8 -0
  87. nautobot/core/templatetags/buttons.py +32 -28
  88. nautobot/core/testing/__init__.py +47 -44
  89. nautobot/core/testing/api.py +362 -47
  90. nautobot/core/testing/filters.py +1 -1
  91. nautobot/core/testing/migrations.py +2 -0
  92. nautobot/core/testing/mixins.py +22 -9
  93. nautobot/core/testing/schema.py +2 -1
  94. nautobot/core/testing/views.py +21 -46
  95. nautobot/core/tests/integration/test_filters.py +17 -8
  96. nautobot/core/tests/integration/test_navbar.py +11 -34
  97. nautobot/core/tests/integration/test_plugin_navbar.py +9 -103
  98. nautobot/core/tests/nautobot_config.py +2 -3
  99. nautobot/core/tests/test_api.py +290 -21
  100. nautobot/core/tests/test_checks.py +0 -7
  101. nautobot/core/tests/test_filters.py +107 -59
  102. nautobot/core/tests/test_forms.py +26 -92
  103. nautobot/core/tests/test_graphql.py +110 -77
  104. nautobot/core/tests/test_logging.py +4 -0
  105. nautobot/core/tests/test_managers.py +3 -1
  106. nautobot/core/tests/test_models.py +2 -0
  107. nautobot/core/tests/test_paginator.py +3 -1
  108. nautobot/core/tests/test_releases.py +12 -12
  109. nautobot/core/tests/test_templatetags_helpers.py +4 -4
  110. nautobot/core/tests/test_utils.py +32 -68
  111. nautobot/core/tests/test_views.py +12 -15
  112. nautobot/core/utils/data.py +17 -0
  113. nautobot/core/utils/deprecation.py +9 -6
  114. nautobot/core/utils/filtering.py +8 -3
  115. nautobot/core/utils/git.py +12 -4
  116. nautobot/core/utils/lookup.py +3 -1
  117. nautobot/core/utils/requests.py +1 -104
  118. nautobot/core/views/__init__.py +1 -0
  119. nautobot/core/views/generic.py +75 -110
  120. nautobot/core/views/mixins.py +52 -61
  121. nautobot/core/views/renderers.py +6 -7
  122. nautobot/core/views/utils.py +80 -0
  123. nautobot/dcim/api/serializers.py +160 -667
  124. nautobot/dcim/api/urls.py +1 -1
  125. nautobot/dcim/api/views.py +7 -44
  126. nautobot/dcim/choices.py +2 -0
  127. nautobot/dcim/filters/__init__.py +21 -0
  128. nautobot/dcim/form_mixins.py +1 -27
  129. nautobot/dcim/forms.py +19 -765
  130. nautobot/dcim/migrations/0024_alter_device_and_rack_role_add_new_role.py +2 -1
  131. nautobot/dcim/migrations/0025_device_and_rack_roles_data_migrations.py +19 -13
  132. nautobot/dcim/migrations/0027_remove_device_role_and_rack_role.py +1 -1
  133. nautobot/dcim/migrations/0028_rename_foreignkey_fields.py +1 -1
  134. nautobot/dcim/migrations/0030_migrate_region_and_site_data_to_locations.py +2 -2
  135. nautobot/dcim/migrations/0035_related_name_changes.py +1 -1
  136. nautobot/dcim/migrations/0036_remove_region_and_site.py +1 -1
  137. nautobot/dcim/migrations/0040_tagsfield.py +109 -0
  138. nautobot/dcim/migrations/{0040_ipam__namespaces.py → 0041_ipam__namespaces.py} +1 -1
  139. nautobot/dcim/migrations/0042_fixup_null_statuses.py +51 -0
  140. nautobot/dcim/migrations/0043_status_nonnullable.py +72 -0
  141. nautobot/dcim/models/cables.py +3 -33
  142. nautobot/dcim/models/device_component_templates.py +6 -0
  143. nautobot/dcim/models/device_components.py +12 -198
  144. nautobot/dcim/models/devices.py +30 -143
  145. nautobot/dcim/models/locations.py +3 -64
  146. nautobot/dcim/models/power.py +3 -50
  147. nautobot/dcim/models/racks.py +7 -84
  148. nautobot/dcim/navigation.py +141 -467
  149. nautobot/dcim/signals.py +0 -2
  150. nautobot/dcim/tables/locations.py +2 -2
  151. nautobot/dcim/tables/power.py +1 -2
  152. nautobot/dcim/templates/dcim/console_port_connection_list.html +7 -0
  153. nautobot/dcim/templates/dcim/devicetype.html +2 -2
  154. nautobot/dcim/templates/dcim/interface_connection_list.html +7 -0
  155. nautobot/dcim/templates/dcim/location.html +16 -1
  156. nautobot/dcim/templates/dcim/locationtype.html +15 -0
  157. nautobot/dcim/templates/dcim/power_port_connection_list.html +7 -0
  158. nautobot/dcim/templates/dcim/rackgroup.html +0 -12
  159. nautobot/dcim/tests/test_api.py +166 -81
  160. nautobot/dcim/tests/test_cablepaths.py +41 -35
  161. nautobot/dcim/tests/test_filters.py +67 -23
  162. nautobot/dcim/tests/test_forms.py +5 -205
  163. nautobot/dcim/tests/test_graphql.py +7 -2
  164. nautobot/dcim/tests/test_migrations.py +6 -11
  165. nautobot/dcim/tests/test_models.py +182 -110
  166. nautobot/dcim/tests/test_natural_ordering.py +11 -8
  167. nautobot/dcim/tests/test_signals.py +6 -3
  168. nautobot/dcim/tests/test_views.py +197 -175
  169. nautobot/dcim/urls.py +11 -16
  170. nautobot/dcim/views.py +7 -134
  171. nautobot/docs/additional-features/caching.md +6 -87
  172. nautobot/docs/additional-features/job-scheduling-and-approvals.md +3 -0
  173. nautobot/docs/additional-features/jobs.md +177 -195
  174. nautobot/docs/administration/nautobot-server.md +6 -21
  175. nautobot/docs/administration/replicating-nautobot.md +0 -10
  176. nautobot/docs/configuration/optional-settings.md +32 -41
  177. nautobot/docs/configuration/required-settings.md +11 -52
  178. nautobot/docs/development/application-registry.md +2 -13
  179. nautobot/docs/development/extending-models.md +15 -17
  180. nautobot/docs/development/generic-views.md +0 -2
  181. nautobot/docs/development/getting-started.md +55 -5
  182. nautobot/docs/development/navigation-menu.md +22 -93
  183. nautobot/docs/development/react-ui.md +105 -0
  184. nautobot/docs/development/role-internals.md +1 -3
  185. nautobot/docs/development/style-guide.md +6 -4
  186. nautobot/docs/index.md +3 -2
  187. nautobot/docs/installation/migrating-from-netbox.md +11 -42
  188. nautobot/docs/installation/nautobot.md +1 -1
  189. nautobot/docs/installation/tables/v2-api-behavior-changes.yaml +70 -0
  190. nautobot/docs/installation/tables/v2-api-removed-fields.yaml +142 -0
  191. nautobot/docs/installation/tables/v2-api-renamed-fields.yaml +124 -0
  192. nautobot/docs/installation/tables/v2-code-location-changes.yaml +241 -0
  193. nautobot/docs/installation/tables/v2-code-removals.yaml +67 -0
  194. nautobot/docs/installation/tables/v2-database-behavior-changes.yaml +37 -0
  195. nautobot/docs/installation/tables/v2-database-removed-fields.yaml +166 -0
  196. nautobot/docs/installation/tables/v2-database-renamed-fields.yaml +340 -0
  197. nautobot/docs/installation/tables/v2-filters-corrected-fields.yaml +28 -0
  198. nautobot/docs/installation/tables/v2-filters-enhanced-fields.yaml +241 -0
  199. nautobot/docs/installation/tables/v2-filters-removed-fields.yaml +553 -0
  200. nautobot/docs/installation/tables/v2-filters-renamed-fields.yaml +223 -0
  201. nautobot/docs/installation/tables/v2-logging-renamed-loggers.yaml +23 -0
  202. nautobot/docs/installation/upgrading-from-nautobot-v1.md +170 -747
  203. nautobot/docs/models/dcim/device.md +3 -0
  204. nautobot/docs/models/dcim/deviceredundancygroup.md +3 -3
  205. nautobot/docs/models/extras/computedfield.md +4 -4
  206. nautobot/docs/models/extras/gitrepository.md +3 -0
  207. nautobot/docs/models/extras/job.md +1 -0
  208. nautobot/docs/models/extras/jobbutton.md +18 -13
  209. nautobot/docs/models/extras/jobhook.md +7 -4
  210. nautobot/docs/models/extras/jobresult.md +6 -2
  211. nautobot/docs/models/extras/relationship.md +2 -2
  212. nautobot/docs/models/extras/status.md +6 -19
  213. nautobot/docs/models/ipam/ipaddress.md +3 -0
  214. nautobot/docs/models/virtualization/virtualmachine.md +3 -0
  215. nautobot/docs/plugins/development.md +83 -21
  216. nautobot/docs/release-notes/version-1.5.md +53 -0
  217. nautobot/docs/release-notes/version-2.0.md +180 -0
  218. nautobot/docs/requirements.txt +1 -0
  219. nautobot/docs/rest-api/overview.md +384 -215
  220. nautobot/docs/rest-api/ui-related-endpoints.md +9 -0
  221. nautobot/extras/admin.py +3 -5
  222. nautobot/extras/api/customfields.py +15 -39
  223. nautobot/extras/api/fields.py +0 -11
  224. nautobot/extras/api/mixins.py +45 -0
  225. nautobot/extras/api/relationships.py +63 -158
  226. nautobot/extras/api/serializers.py +165 -700
  227. nautobot/extras/api/urls.py +1 -1
  228. nautobot/extras/api/views.py +294 -280
  229. nautobot/extras/apps.py +4 -7
  230. nautobot/extras/choices.py +11 -9
  231. nautobot/extras/constants.py +9 -3
  232. nautobot/extras/datasources/__init__.py +2 -0
  233. nautobot/extras/datasources/git.py +135 -186
  234. nautobot/extras/datasources/registry.py +25 -35
  235. nautobot/extras/filters/__init__.py +20 -19
  236. nautobot/extras/filters/mixins.py +4 -4
  237. nautobot/extras/forms/forms.py +63 -127
  238. nautobot/extras/forms/mixins.py +23 -51
  239. nautobot/extras/health_checks.py +0 -33
  240. nautobot/extras/jobs.py +387 -565
  241. nautobot/extras/management/commands/runjob.py +24 -62
  242. nautobot/extras/managers.py +30 -7
  243. nautobot/extras/migrations/0058_jobresult_add_time_status_idxs.py +38 -0
  244. nautobot/extras/migrations/{0058_joblogentry_scheduledjob_webhook_data_migration.py → 0059_joblogentry_scheduledjob_webhook_data_migration.py} +1 -1
  245. nautobot/extras/migrations/{0059_alter_joblogentry_scheduledjob_webhook_fields.py → 0060_alter_joblogentry_scheduledjob_webhook_fields.py} +1 -1
  246. nautobot/extras/migrations/{0060_role_and_alter_status.py → 0061_role_and_alter_status.py} +1 -7
  247. nautobot/extras/migrations/{0061_collect_roles_from_related_apps_roles.py → 0062_collect_roles_from_related_apps_roles.py} +33 -32
  248. nautobot/extras/migrations/{0062_alter_role_options.py → 0063_alter_role_options.py} +1 -1
  249. nautobot/extras/migrations/{0063_alter_configcontext_and_add_new_role.py → 0064_alter_configcontext_and_add_new_role.py} +1 -1
  250. nautobot/extras/migrations/0065_configcontext_data_migrations.py +44 -0
  251. nautobot/extras/migrations/{0065_rename_configcontext_role.py → 0066_rename_configcontext_role.py} +1 -1
  252. nautobot/extras/migrations/{0066_jobresult__add_celery_fields.py → 0067_jobresult__add_celery_fields.py} +36 -2
  253. nautobot/extras/migrations/{0067_created_datetime.py → 0068_created_datetime.py} +1 -1
  254. nautobot/extras/migrations/{0068_remove_site_and_region_attributes_from_config_context.py → 0069_remove_site_and_region_attributes_from_config_context.py} +1 -1
  255. nautobot/extras/migrations/{0069_replace_related_names.py → 0070_replace_related_names.py} +1 -1
  256. nautobot/extras/migrations/{0070_rename_model_fields.py → 0071_rename_model_fields.py} +1 -1
  257. nautobot/extras/migrations/0072_job__unique_name_data_migration.py +86 -0
  258. nautobot/extras/migrations/{0072_job__unique_name.py → 0073_job__unique_name.py} +13 -9
  259. nautobot/extras/migrations/{0073_remove_gitrepository_fields.py → 0074_remove_gitrepository_fields.py} +1 -1
  260. nautobot/extras/migrations/{0074_rename_slug_to_key_for_custom_field.py → 0075_rename_slug_to_key_for_custom_field.py} +1 -1
  261. nautobot/extras/migrations/{0075_migrate_custom_field_data.py → 0076_migrate_custom_field_data.py} +1 -1
  262. nautobot/extras/migrations/{0076_remove_name_field_and_make_label_field_non_nullable.py → 0077_remove_name_field_and_make_label_field_non_nullable.py} +1 -1
  263. nautobot/extras/migrations/{0077_remove_slug.py → 0078_remove_slug.py} +1 -5
  264. nautobot/extras/migrations/0079_tagsfield.py +28 -0
  265. nautobot/extras/migrations/0080_rename_relationship_slug_to_key.py +17 -0
  266. nautobot/extras/migrations/0081_rename_relationship_name_to_label.py +29 -0
  267. nautobot/extras/migrations/0082_ensure_relationship_keys_are_unique.py +43 -0
  268. nautobot/extras/migrations/0083_rename_computed_field_slug_to_key.py +21 -0
  269. nautobot/extras/migrations/0084_taggeditem_cleanup.py +43 -0
  270. nautobot/extras/migrations/0085_taggeditem_uniqueness.py +22 -0
  271. nautobot/extras/migrations/0086_job__celery_task_fields__dryrun_support.py +81 -0
  272. nautobot/extras/migrations/0087_job__commit_default_data_migration.py +26 -0
  273. nautobot/extras/migrations/0088_joblogentry__log_level_default.py +17 -0
  274. nautobot/extras/migrations/0089_joblogentry__log_level_data_migration.py +34 -0
  275. nautobot/extras/migrations/0090_scheduledjob__data_migration.py +57 -0
  276. nautobot/extras/models/__init__.py +2 -3
  277. nautobot/extras/models/change_logging.py +0 -36
  278. nautobot/extras/models/customfields.py +39 -33
  279. nautobot/extras/models/datasources.py +48 -50
  280. nautobot/extras/models/groups.py +5 -6
  281. nautobot/extras/models/jobs.py +189 -321
  282. nautobot/extras/models/mixins.py +0 -71
  283. nautobot/extras/models/models.py +0 -19
  284. nautobot/extras/models/relationships.py +19 -13
  285. nautobot/extras/models/roles.py +0 -34
  286. nautobot/extras/models/secrets.py +2 -26
  287. nautobot/extras/models/statuses.py +6 -5
  288. nautobot/extras/models/tags.py +2 -17
  289. nautobot/extras/navigation.py +89 -307
  290. nautobot/extras/plugins/__init__.py +3 -120
  291. nautobot/extras/plugins/utils.py +0 -3
  292. nautobot/extras/plugins/validators.py +5 -4
  293. nautobot/extras/plugins/views.py +16 -3
  294. nautobot/extras/querysets.py +1 -7
  295. nautobot/extras/registry.py +3 -0
  296. nautobot/extras/signals.py +26 -60
  297. nautobot/extras/tables.py +34 -40
  298. nautobot/extras/tasks.py +0 -12
  299. nautobot/extras/templates/extras/configcontext.html +1 -1
  300. nautobot/extras/templates/extras/configcontextschema.html +16 -1
  301. nautobot/extras/templates/extras/customfield.html +0 -13
  302. nautobot/extras/templates/extras/gitrepository.html +3 -3
  303. nautobot/extras/templates/extras/inc/jobresult.html +10 -0
  304. nautobot/extras/templates/extras/inc/panel_jobhistory.html +1 -1
  305. nautobot/extras/templates/extras/job.html +35 -25
  306. nautobot/extras/templates/extras/job_approval_request.html +15 -30
  307. nautobot/extras/templates/extras/job_detail.html +13 -31
  308. nautobot/extras/templates/extras/job_edit.html +15 -17
  309. nautobot/extras/templates/extras/jobresult.html +24 -6
  310. nautobot/extras/templates/extras/scheduledjob.html +2 -2
  311. nautobot/extras/templates/extras/secret.html +28 -0
  312. nautobot/extras/templatetags/job_buttons.py +1 -0
  313. nautobot/extras/{tests/example_jobs → test_jobs}/api_test_job.py +13 -6
  314. nautobot/extras/test_jobs/atomic_transaction.py +53 -0
  315. nautobot/extras/test_jobs/dry_run.py +29 -0
  316. nautobot/extras/{tests/example_jobs/test_duplicate_name.py → test_jobs/duplicate_name.py} +4 -0
  317. nautobot/extras/test_jobs/duplicate_name2.py +9 -0
  318. nautobot/extras/test_jobs/fail.py +23 -0
  319. nautobot/extras/{tests/example_jobs/test_field_default.py → test_jobs/field_default.py} +4 -0
  320. nautobot/extras/{tests/example_jobs/test_field_order.py → test_jobs/field_order.py} +4 -0
  321. nautobot/extras/{tests/example_jobs/test_file_upload_fail.py → test_jobs/file_upload_fail.py} +11 -6
  322. nautobot/extras/test_jobs/file_upload_pass.py +25 -0
  323. nautobot/extras/test_jobs/has_sensitive_variables.py +25 -0
  324. nautobot/extras/test_jobs/ipaddress_vars.py +66 -0
  325. nautobot/extras/test_jobs/job_button_receiver.py +28 -0
  326. nautobot/extras/test_jobs/job_hook_receiver.py +29 -0
  327. nautobot/extras/test_jobs/job_variables.py +88 -0
  328. nautobot/extras/test_jobs/location_with_custom_field.py +45 -0
  329. nautobot/extras/test_jobs/log_redaction.py +20 -0
  330. nautobot/extras/test_jobs/log_skip_db_logging.py +17 -0
  331. nautobot/extras/test_jobs/modify_db.py +25 -0
  332. nautobot/extras/{tests/example_jobs/test_no_field_order.py → test_jobs/no_field_order.py} +4 -0
  333. nautobot/extras/test_jobs/object_var_optional.py +21 -0
  334. nautobot/extras/test_jobs/object_var_required.py +21 -0
  335. nautobot/extras/test_jobs/object_vars.py +26 -0
  336. nautobot/extras/test_jobs/pass.py +25 -0
  337. nautobot/extras/test_jobs/profiling.py +32 -0
  338. nautobot/extras/test_jobs/read_only_job.py +15 -0
  339. nautobot/extras/{tests/example_jobs/test_required_args.py → test_jobs/required_args.py} +4 -0
  340. nautobot/extras/{tests/example_jobs/test_soft_time_limit_greater_than_time_limit.py → test_jobs/soft_time_limit_greater_than_time_limit.py} +5 -1
  341. nautobot/extras/{tests/example_jobs/test_task_queues.py → test_jobs/task_queues.py} +5 -1
  342. nautobot/extras/tests/integration/test_computedfields.py +1 -1
  343. nautobot/extras/tests/integration/test_configcontextschema.py +5 -3
  344. nautobot/extras/tests/integration/test_customfields.py +4 -2
  345. nautobot/extras/tests/integration/test_dynamicgroups.py +1 -1
  346. nautobot/extras/tests/integration/test_jobs.py +25 -27
  347. nautobot/extras/tests/integration/test_notes.py +8 -4
  348. nautobot/extras/tests/integration/test_relationships.py +2 -2
  349. nautobot/extras/tests/test_api.py +649 -642
  350. nautobot/extras/tests/test_changelog.py +3 -3
  351. nautobot/extras/tests/test_context_managers.py +5 -3
  352. nautobot/extras/tests/test_customfields.py +92 -50
  353. nautobot/extras/tests/test_datasources.py +189 -112
  354. nautobot/extras/tests/test_dynamicgroups.py +7 -8
  355. nautobot/extras/tests/test_filters.py +137 -89
  356. nautobot/extras/tests/test_forms.py +73 -75
  357. nautobot/extras/tests/{test_scripts.py → test_job_variables.py} +43 -49
  358. nautobot/extras/tests/test_jobs.py +262 -263
  359. nautobot/extras/tests/test_migrations.py +4 -3
  360. nautobot/extras/tests/test_models.py +116 -161
  361. nautobot/extras/tests/test_plugins.py +38 -60
  362. nautobot/extras/tests/test_relationships.py +167 -120
  363. nautobot/extras/tests/test_tags.py +6 -11
  364. nautobot/extras/tests/test_utils.py +31 -1
  365. nautobot/extras/tests/test_views.py +201 -145
  366. nautobot/extras/tests/test_webhooks.py +6 -2
  367. nautobot/extras/urls.py +42 -42
  368. nautobot/extras/utils.py +137 -163
  369. nautobot/extras/views.py +78 -152
  370. nautobot/ipam/api/fields.py +17 -0
  371. nautobot/ipam/api/serializers.py +58 -164
  372. nautobot/ipam/api/urls.py +1 -1
  373. nautobot/ipam/api/views.py +3 -2
  374. nautobot/ipam/apps.py +1 -2
  375. nautobot/ipam/filters.py +1 -10
  376. nautobot/ipam/forms.py +4 -177
  377. nautobot/ipam/lookups.py +1 -0
  378. nautobot/ipam/management/commands/__init__.py +0 -0
  379. nautobot/ipam/management/commands/fix_prefix_broadcast.py +17 -0
  380. nautobot/ipam/migrations/0010_alter_ipam_role_add_new_role.py +1 -1
  381. nautobot/ipam/migrations/0011_migrate_ipam_role_data.py +32 -38
  382. nautobot/ipam/migrations/0020_related_name_changes.py +1 -1
  383. nautobot/ipam/migrations/0022_aggregate_to_prefix_data_migration.py +2 -2
  384. nautobot/ipam/migrations/0028_tagsfield.py +44 -0
  385. nautobot/ipam/migrations/0029_ip_address_to_interface_uniqueness_constraints.py +18 -0
  386. nautobot/ipam/migrations/{0028_ipam__namespaces.py → 0030_ipam__namespaces.py} +77 -28
  387. nautobot/ipam/migrations/0031_ipam__prefix__add_parent.py +58 -0
  388. nautobot/ipam/migrations/0032_ipam__namespaces_finish.py +63 -0
  389. nautobot/ipam/migrations/0033_fixup_null_statuses.py +26 -0
  390. nautobot/ipam/migrations/0034_status_nonnullable.py +36 -0
  391. nautobot/ipam/models.py +100 -236
  392. nautobot/ipam/navigation.py +36 -181
  393. nautobot/ipam/querysets.py +20 -25
  394. nautobot/ipam/signals.py +49 -6
  395. nautobot/ipam/tables.py +10 -3
  396. nautobot/ipam/templates/ipam/namespace_ipaddresses.html +11 -0
  397. nautobot/ipam/templates/ipam/namespace_prefixes.html +11 -0
  398. nautobot/ipam/templates/ipam/namespace_retrieve.html +17 -4
  399. nautobot/ipam/templates/ipam/namespace_vrfs.html +11 -0
  400. nautobot/ipam/templates/ipam/prefix.html +1 -1
  401. nautobot/ipam/templates/ipam/vlangroup.html +0 -13
  402. nautobot/ipam/templates/ipam/vrf_edit.html +6 -0
  403. nautobot/ipam/tests/integration/test_prefixes.py +3 -26
  404. nautobot/ipam/tests/test_api.py +22 -19
  405. nautobot/ipam/tests/test_filters.py +59 -23
  406. nautobot/ipam/tests/test_migrations.py +6 -10
  407. nautobot/ipam/tests/test_models.py +323 -198
  408. nautobot/ipam/tests/test_ordering.py +2 -2
  409. nautobot/ipam/tests/test_querysets.py +44 -24
  410. nautobot/ipam/tests/test_views.py +73 -26
  411. nautobot/ipam/urls.py +16 -0
  412. nautobot/ipam/{utils.py → utils/__init__.py} +2 -2
  413. nautobot/ipam/utils/migrations.py +713 -0
  414. nautobot/ipam/views.py +137 -20
  415. nautobot/project-static/docs/404.html +1178 -10
  416. nautobot/project-static/docs/additional-features/caching.html +1224 -159
  417. nautobot/project-static/docs/additional-features/change-logging.html +1180 -12
  418. nautobot/project-static/docs/additional-features/config-contexts.html +1180 -12
  419. nautobot/project-static/docs/additional-features/graphql.html +1179 -11
  420. nautobot/project-static/docs/additional-features/healthcheck.html +1180 -12
  421. nautobot/project-static/docs/additional-features/job-scheduling-and-approvals.html +1184 -12
  422. nautobot/project-static/docs/additional-features/jobs.html +1514 -328
  423. nautobot/project-static/docs/additional-features/napalm.html +1180 -12
  424. nautobot/project-static/docs/additional-features/prometheus-metrics.html +1180 -12
  425. nautobot/project-static/docs/additional-features/template-filters.html +1180 -12
  426. nautobot/project-static/docs/administration/celery-queues.html +1178 -10
  427. nautobot/project-static/docs/administration/nautobot-server.html +1451 -304
  428. nautobot/project-static/docs/administration/nautobot-shell.html +1178 -10
  429. nautobot/project-static/docs/administration/permissions.html +1178 -10
  430. nautobot/project-static/docs/administration/replicating-nautobot.html +1262 -113
  431. nautobot/project-static/docs/apps/index.html +1178 -10
  432. nautobot/project-static/docs/apps/nautobot-apps.html +1178 -10
  433. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +1580 -426
  434. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +1178 -10
  435. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +3481 -1838
  436. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +1178 -10
  437. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +1178 -10
  438. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +1185 -11
  439. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +1719 -551
  440. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +2062 -930
  441. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +1946 -659
  442. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +1180 -12
  443. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +1189 -21
  444. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +9283 -6218
  445. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +2734 -2122
  446. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +1178 -10
  447. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +2337 -1300
  448. nautobot/project-static/docs/configuration/authentication/ldap.html +1178 -10
  449. nautobot/project-static/docs/configuration/authentication/remote.html +1178 -10
  450. nautobot/project-static/docs/configuration/authentication/sso.html +1178 -10
  451. nautobot/project-static/docs/configuration/index.html +1178 -10
  452. nautobot/project-static/docs/configuration/optional-settings.html +1311 -160
  453. nautobot/project-static/docs/configuration/required-settings.html +1312 -211
  454. nautobot/project-static/docs/core-functionality/circuits.html +1178 -10
  455. nautobot/project-static/docs/core-functionality/device-types.html +1178 -10
  456. nautobot/project-static/docs/core-functionality/devices.html +1182 -10
  457. nautobot/project-static/docs/core-functionality/ipam.html +1182 -10
  458. nautobot/project-static/docs/core-functionality/power.html +1178 -10
  459. nautobot/project-static/docs/core-functionality/secrets.html +1178 -10
  460. nautobot/project-static/docs/core-functionality/services.html +1178 -10
  461. nautobot/project-static/docs/core-functionality/sites-and-racks.html +1178 -10
  462. nautobot/project-static/docs/core-functionality/tenancy.html +1178 -10
  463. nautobot/project-static/docs/core-functionality/virtualization.html +1182 -10
  464. nautobot/project-static/docs/core-functionality/vlans.html +1179 -11
  465. nautobot/project-static/docs/development/application-registry.html +1190 -42
  466. nautobot/project-static/docs/development/best-practices.html +1178 -10
  467. nautobot/project-static/docs/development/docker-compose-advanced-use-cases.html +1178 -10
  468. nautobot/project-static/docs/development/extending-models.html +1238 -83
  469. nautobot/project-static/docs/development/generic-views.html +1180 -14
  470. nautobot/project-static/docs/development/getting-started.html +1365 -90
  471. nautobot/project-static/docs/development/homepage.html +1178 -10
  472. nautobot/project-static/docs/development/index.html +1178 -10
  473. nautobot/project-static/docs/development/model-features.html +1178 -10
  474. nautobot/project-static/docs/development/natural-keys.html +1178 -10
  475. nautobot/project-static/docs/development/navigation-menu.html +1215 -125
  476. nautobot/project-static/docs/development/react-ui.html +4199 -0
  477. nautobot/project-static/docs/development/release-checklist.html +1178 -10
  478. nautobot/project-static/docs/development/role-internals.html +1179 -12
  479. nautobot/project-static/docs/development/style-guide.html +1188 -19
  480. nautobot/project-static/docs/development/templates.html +1178 -10
  481. nautobot/project-static/docs/development/testing.html +1178 -10
  482. nautobot/project-static/docs/development/user-preferences.html +1178 -10
  483. nautobot/project-static/docs/docker/index.html +1178 -10
  484. nautobot/project-static/docs/index.html +1183 -12
  485. nautobot/project-static/docs/installation/centos.html +1178 -10
  486. nautobot/project-static/docs/installation/external-authentication.html +1178 -10
  487. nautobot/project-static/docs/installation/http-server.html +1178 -10
  488. nautobot/project-static/docs/installation/index.html +1178 -10
  489. nautobot/project-static/docs/installation/migrating-from-netbox.html +1305 -189
  490. nautobot/project-static/docs/installation/migrating-from-postgresql.html +1178 -10
  491. nautobot/project-static/docs/installation/nautobot.html +1179 -11
  492. nautobot/project-static/docs/installation/region-and-site-data-migration-guide.html +1178 -10
  493. nautobot/project-static/docs/installation/selinux-troubleshooting.html +1178 -10
  494. nautobot/project-static/docs/installation/services.html +1178 -10
  495. nautobot/project-static/docs/installation/tables/v2-api-behavior-changes.yaml +70 -0
  496. nautobot/project-static/docs/installation/tables/v2-api-removed-fields.yaml +142 -0
  497. nautobot/project-static/docs/installation/tables/v2-api-renamed-fields.yaml +124 -0
  498. nautobot/project-static/docs/installation/tables/v2-code-location-changes.yaml +241 -0
  499. nautobot/project-static/docs/installation/tables/v2-code-removals.yaml +67 -0
  500. nautobot/project-static/docs/installation/tables/v2-database-behavior-changes.yaml +37 -0
  501. nautobot/project-static/docs/installation/tables/v2-database-removed-fields.yaml +166 -0
  502. nautobot/project-static/docs/installation/tables/v2-database-renamed-fields.yaml +340 -0
  503. nautobot/project-static/docs/installation/tables/v2-filters-corrected-fields.yaml +28 -0
  504. nautobot/project-static/docs/installation/tables/v2-filters-enhanced-fields.yaml +241 -0
  505. nautobot/project-static/docs/installation/tables/v2-filters-removed-fields.yaml +553 -0
  506. nautobot/project-static/docs/installation/tables/v2-filters-renamed-fields.yaml +223 -0
  507. nautobot/project-static/docs/installation/tables/v2-logging-renamed-loggers.yaml +23 -0
  508. nautobot/project-static/docs/installation/ubuntu.html +1178 -10
  509. nautobot/project-static/docs/installation/upgrading-from-nautobot-v1.html +3823 -2152
  510. nautobot/project-static/docs/installation/upgrading.html +1178 -10
  511. nautobot/project-static/docs/models/circuits/circuit.html +1293 -103
  512. nautobot/project-static/docs/models/circuits/circuittermination.html +1293 -103
  513. nautobot/project-static/docs/models/circuits/circuittype.html +1293 -103
  514. nautobot/project-static/docs/models/circuits/provider.html +1293 -103
  515. nautobot/project-static/docs/models/circuits/providernetwork.html +1293 -103
  516. nautobot/project-static/docs/models/dcim/cable.html +1324 -103
  517. nautobot/project-static/docs/models/dcim/consoleport.html +1293 -103
  518. nautobot/project-static/docs/models/dcim/consoleporttemplate.html +1293 -103
  519. nautobot/project-static/docs/models/dcim/consoleserverport.html +1293 -103
  520. nautobot/project-static/docs/models/dcim/consoleserverporttemplate.html +1293 -103
  521. nautobot/project-static/docs/models/dcim/device.html +1326 -132
  522. nautobot/project-static/docs/models/dcim/devicebay.html +1293 -103
  523. nautobot/project-static/docs/models/dcim/devicebaytemplate.html +1293 -103
  524. nautobot/project-static/docs/models/dcim/deviceredundancygroup.html +1379 -97
  525. nautobot/project-static/docs/models/dcim/devicetype.html +1293 -103
  526. nautobot/project-static/docs/models/dcim/frontport.html +1293 -103
  527. nautobot/project-static/docs/models/dcim/frontporttemplate.html +1293 -103
  528. nautobot/project-static/docs/models/dcim/interface.html +1293 -103
  529. nautobot/project-static/docs/models/dcim/interfacetemplate.html +1293 -103
  530. nautobot/project-static/docs/models/dcim/inventoryitem.html +1293 -103
  531. nautobot/project-static/docs/models/dcim/location.html +1293 -103
  532. nautobot/project-static/docs/models/dcim/locationtype.html +1293 -103
  533. nautobot/project-static/docs/models/dcim/manufacturer.html +1292 -102
  534. nautobot/project-static/docs/models/dcim/platform.html +1272 -82
  535. nautobot/project-static/docs/models/dcim/powerfeed.html +1270 -80
  536. nautobot/project-static/docs/models/dcim/poweroutlet.html +1272 -82
  537. nautobot/project-static/docs/models/dcim/poweroutlettemplate.html +1272 -82
  538. nautobot/project-static/docs/models/dcim/powerpanel.html +1270 -80
  539. nautobot/project-static/docs/models/dcim/powerport.html +1272 -82
  540. nautobot/project-static/docs/models/dcim/powerporttemplate.html +1272 -82
  541. nautobot/project-static/docs/models/dcim/rack.html +1272 -82
  542. nautobot/project-static/docs/models/dcim/rackgroup.html +1272 -82
  543. nautobot/project-static/docs/models/dcim/rackreservation.html +1272 -82
  544. nautobot/project-static/docs/models/dcim/rearport.html +1286 -96
  545. nautobot/project-static/docs/models/dcim/rearporttemplate.html +1286 -96
  546. nautobot/project-static/docs/models/dcim/region.html +1178 -10
  547. nautobot/project-static/docs/models/dcim/site.html +1178 -10
  548. nautobot/project-static/docs/models/dcim/virtualchassis.html +1284 -94
  549. nautobot/project-static/docs/models/extras/computedfield.html +1184 -16
  550. nautobot/project-static/docs/models/extras/configcontext.html +1314 -86
  551. nautobot/project-static/docs/models/extras/configcontextschema.html +1276 -86
  552. nautobot/project-static/docs/models/extras/customfield.html +1180 -12
  553. nautobot/project-static/docs/models/extras/customlink.html +1180 -12
  554. nautobot/project-static/docs/models/extras/dynamicgroup.html +1180 -12
  555. nautobot/project-static/docs/models/extras/exporttemplate.html +1180 -12
  556. nautobot/project-static/docs/models/extras/gitrepository.html +1184 -12
  557. nautobot/project-static/docs/models/extras/graphqlquery.html +1321 -86
  558. nautobot/project-static/docs/models/extras/imageattachment.html +1276 -86
  559. nautobot/project-static/docs/models/extras/job.html +1277 -86
  560. nautobot/project-static/docs/models/extras/jobbutton.html +1201 -29
  561. nautobot/project-static/docs/models/extras/jobhook.html +1188 -16
  562. nautobot/project-static/docs/models/extras/joblogentry.html +1274 -84
  563. nautobot/project-static/docs/models/extras/jobresult.html +1364 -169
  564. nautobot/project-static/docs/models/extras/note.html +1180 -12
  565. nautobot/project-static/docs/models/extras/relationship.html +1182 -14
  566. nautobot/project-static/docs/models/extras/role.html +1320 -86
  567. nautobot/project-static/docs/models/extras/secret.html +1314 -86
  568. nautobot/project-static/docs/models/extras/secretsgroup.html +1276 -86
  569. nautobot/project-static/docs/models/extras/status.html +1188 -59
  570. nautobot/project-static/docs/models/extras/tag.html +1180 -12
  571. nautobot/project-static/docs/models/extras/webhook.html +1180 -12
  572. nautobot/project-static/docs/models/ipam/ipaddress.html +1327 -102
  573. nautobot/project-static/docs/models/ipam/prefix.html +1276 -86
  574. nautobot/project-static/docs/models/ipam/rir.html +1276 -86
  575. nautobot/project-static/docs/models/ipam/routetarget.html +1276 -86
  576. nautobot/project-static/docs/models/ipam/service.html +1276 -86
  577. nautobot/project-static/docs/models/ipam/vlan.html +1276 -86
  578. nautobot/project-static/docs/models/ipam/vlangroup.html +1276 -86
  579. nautobot/project-static/docs/models/ipam/vrf.html +1276 -86
  580. nautobot/project-static/docs/models/tenancy/tenant.html +1276 -86
  581. nautobot/project-static/docs/models/tenancy/tenantgroup.html +1276 -86
  582. nautobot/project-static/docs/models/users/objectpermission.html +1314 -86
  583. nautobot/project-static/docs/models/users/token.html +1276 -86
  584. nautobot/project-static/docs/models/virtualization/cluster.html +1276 -86
  585. nautobot/project-static/docs/models/virtualization/clustergroup.html +1276 -86
  586. nautobot/project-static/docs/models/virtualization/clustertype.html +1276 -86
  587. nautobot/project-static/docs/models/virtualization/virtualmachine.html +1321 -127
  588. nautobot/project-static/docs/models/virtualization/vminterface.html +1276 -86
  589. nautobot/project-static/docs/objects.inv +0 -0
  590. nautobot/project-static/docs/plugins/development.html +1726 -495
  591. nautobot/project-static/docs/plugins/index.html +1178 -10
  592. nautobot/project-static/docs/plugins/porting-from-netbox.html +1178 -10
  593. nautobot/project-static/docs/release-notes/index.html +1178 -10
  594. nautobot/project-static/docs/release-notes/version-1.0.html +1178 -10
  595. nautobot/project-static/docs/release-notes/version-1.1.html +1178 -10
  596. nautobot/project-static/docs/release-notes/version-1.2.html +1178 -10
  597. nautobot/project-static/docs/release-notes/version-1.3.html +1178 -10
  598. nautobot/project-static/docs/release-notes/version-1.4.html +1178 -10
  599. nautobot/project-static/docs/release-notes/version-1.5.html +1608 -225
  600. nautobot/project-static/docs/release-notes/version-2.0.html +1547 -47
  601. nautobot/project-static/docs/requirements.txt +1 -0
  602. nautobot/project-static/docs/rest-api/authentication.html +1179 -11
  603. nautobot/project-static/docs/rest-api/filtering.html +1178 -10
  604. nautobot/project-static/docs/rest-api/overview.html +1841 -446
  605. nautobot/project-static/docs/rest-api/ui-related-endpoints.html +4057 -0
  606. nautobot/project-static/docs/search/search_index.json +1 -1
  607. nautobot/project-static/docs/sitemap.xml +197 -187
  608. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  609. nautobot/project-static/docs/user-guides/custom-fields.html +1178 -10
  610. nautobot/project-static/docs/user-guides/getting-started/creating-devices.html +1178 -10
  611. nautobot/project-static/docs/user-guides/getting-started/index.html +1178 -10
  612. nautobot/project-static/docs/user-guides/getting-started/interfaces.html +1178 -10
  613. nautobot/project-static/docs/user-guides/getting-started/ipam.html +1178 -10
  614. nautobot/project-static/docs/user-guides/getting-started/platforms.html +1178 -10
  615. nautobot/project-static/docs/user-guides/getting-started/regions.html +1178 -10
  616. nautobot/project-static/docs/user-guides/getting-started/search-bar.html +1178 -10
  617. nautobot/project-static/docs/user-guides/getting-started/tenants.html +1178 -10
  618. nautobot/project-static/docs/user-guides/getting-started/vlans-and-vlan-groups.html +1178 -10
  619. nautobot/project-static/docs/user-guides/git-data-source.html +1178 -10
  620. nautobot/project-static/docs/user-guides/graphql.html +1178 -10
  621. nautobot/project-static/docs/user-guides/relationships.html +1178 -10
  622. nautobot/project-static/docs/user-guides/s3-django-storage.html +1178 -10
  623. nautobot/project-static/js/forms.js +16 -9
  624. nautobot/project-static/js/theme.js +5 -0
  625. nautobot/tenancy/api/serializers.py +4 -32
  626. nautobot/tenancy/api/urls.py +1 -1
  627. nautobot/tenancy/forms.py +0 -28
  628. nautobot/tenancy/migrations/0008_tagsfield.py +19 -0
  629. nautobot/tenancy/models.py +0 -25
  630. nautobot/tenancy/navigation.py +6 -39
  631. nautobot/tenancy/templates/tenancy/tenant.html +12 -12
  632. nautobot/tenancy/templates/tenancy/tenantgroup.html +1 -1
  633. nautobot/tenancy/tests/test_api.py +1 -3
  634. nautobot/tenancy/tests/test_filters.py +10 -5
  635. nautobot/tenancy/views.py +0 -2
  636. nautobot/ui/.eslintignore +6 -0
  637. nautobot/ui/.gitignore +10 -0
  638. nautobot/ui/.prettierignore +9 -0
  639. nautobot/ui/.prettierrc +4 -0
  640. nautobot/ui/README.md +33 -0
  641. nautobot/ui/app_imports.js.j2 +7 -0
  642. nautobot/ui/craco.config.js +46 -0
  643. nautobot/ui/jsconfig-base.json +11 -0
  644. nautobot/ui/jsconfig.json +5 -0
  645. nautobot/ui/lib/nautobot-craco-alias-plugin.js +40 -0
  646. nautobot/ui/package-lock.json +21451 -0
  647. nautobot/ui/package.json +70 -0
  648. nautobot/ui/public/index.html +47 -0
  649. nautobot/ui/public/logo192.png +0 -0
  650. nautobot/ui/public/logo512.png +0 -0
  651. nautobot/ui/public/manifest.json +25 -0
  652. nautobot/ui/public/nautobot_logo.svg +131 -0
  653. nautobot/ui/public/robots.txt +3 -0
  654. nautobot/ui/src/App.js +71 -0
  655. nautobot/ui/src/components/AppFullWidthComponents.js +8 -0
  656. nautobot/ui/src/components/AppTab.js +40 -0
  657. nautobot/ui/src/components/Apps.js +60 -0
  658. nautobot/ui/src/components/HomeChangelogPanel.js +98 -0
  659. nautobot/ui/src/components/HomePanel.js +58 -0
  660. nautobot/ui/src/components/JobHistoryTable.js +78 -0
  661. nautobot/ui/src/components/Layout.js +53 -0
  662. nautobot/ui/src/components/LoadingWidget.js +25 -0
  663. nautobot/ui/src/components/Navbar.js +116 -0
  664. nautobot/ui/src/components/NotificationPopover.js +27 -0
  665. nautobot/ui/src/components/ObjectListTable.js +209 -0
  666. nautobot/ui/src/components/ReferenceDataTag.js +35 -0
  667. nautobot/ui/src/components/RouterButton.js +10 -0
  668. nautobot/ui/src/components/RouterLink.js +10 -0
  669. nautobot/ui/src/components/SidebarNav.js +147 -0
  670. nautobot/ui/src/components/Table.js +48 -0
  671. nautobot/ui/src/components/TableItem.js +71 -0
  672. nautobot/ui/src/components/__tests__/AppFullWidthComponents.test.js +16 -0
  673. nautobot/ui/src/components/__tests__/AppTab.test.js +21 -0
  674. nautobot/ui/src/components/__tests__/Apps.test.js +14 -0
  675. nautobot/ui/src/components/__tests__/Layout.test.js +33 -0
  676. nautobot/ui/src/components/__tests__/Table.test.js +36 -0
  677. nautobot/ui/src/components/__tests__/TableItem.test.js +37 -0
  678. nautobot/ui/src/components/__tests__/paginator.test.js +43 -0
  679. nautobot/ui/src/components/__tests__/paginator_form.test.js +13 -0
  680. nautobot/ui/src/components/pagination.js +93 -0
  681. nautobot/ui/src/components/paginator.js +79 -0
  682. nautobot/ui/src/components/paginator_form.js +43 -0
  683. nautobot/ui/src/components/usePagination.js +57 -0
  684. nautobot/ui/src/constants/apiPath.js +10 -0
  685. nautobot/ui/src/constants/icons.js +15 -0
  686. nautobot/ui/src/constants/size.js +15 -0
  687. nautobot/ui/src/index.js +65 -0
  688. nautobot/ui/src/reportWebVitals.js +15 -0
  689. nautobot/ui/src/router.js +77 -0
  690. nautobot/ui/src/utils/api.js +131 -0
  691. nautobot/ui/src/utils/app-import.js +15 -0
  692. nautobot/ui/src/utils/color.js +15 -0
  693. nautobot/ui/src/utils/date.js +14 -0
  694. nautobot/ui/src/utils/index.js +15 -0
  695. nautobot/ui/src/utils/navigation.js +32 -0
  696. nautobot/ui/src/utils/session.js +64 -0
  697. nautobot/ui/src/utils/store.js +242 -0
  698. nautobot/ui/src/utils/string.js +6 -0
  699. nautobot/ui/src/utils/url.js +4 -0
  700. nautobot/ui/src/views/Home.js +138 -0
  701. nautobot/ui/src/views/InstalledApps.js +80 -0
  702. nautobot/ui/src/views/Login.js +48 -0
  703. nautobot/ui/src/views/Logout.js +20 -0
  704. nautobot/ui/src/views/__tests__/BSCreateViewTemplate.test.js +11 -0
  705. nautobot/ui/src/views/__tests__/BSListViewTemplate.test.js +107 -0
  706. nautobot/ui/src/views/__tests__/Login.test.js +15 -0
  707. nautobot/ui/src/views/generic/GenericView.js +142 -0
  708. nautobot/ui/src/views/generic/ObjectCreate.js +96 -0
  709. nautobot/ui/src/views/generic/ObjectList.js +127 -0
  710. nautobot/ui/src/views/generic/ObjectRetrieve.js +551 -0
  711. nautobot/users/admin.py +1 -1
  712. nautobot/users/api/serializers.py +51 -61
  713. nautobot/users/api/urls.py +1 -1
  714. nautobot/users/api/views.py +53 -2
  715. nautobot/users/tests/test_api.py +110 -25
  716. nautobot/virtualization/api/serializers.py +18 -130
  717. nautobot/virtualization/api/urls.py +1 -1
  718. nautobot/virtualization/api/views.py +1 -22
  719. nautobot/virtualization/forms.py +13 -99
  720. nautobot/virtualization/migrations/0012_alter_virtualmachine_role_add_new_role.py +1 -1
  721. nautobot/virtualization/migrations/0013_migrate_virtualmachine_role_data.py +18 -11
  722. nautobot/virtualization/migrations/0015_rename_foreignkey_fields.py +1 -1
  723. nautobot/virtualization/migrations/0018_related_name_changes.py +1 -1
  724. nautobot/virtualization/migrations/0021_tagsfield_and_vminterface_to_primarymodel.py +39 -0
  725. nautobot/virtualization/migrations/0022_vminterface_timestamps_data_migration.py +17 -0
  726. nautobot/virtualization/migrations/{0021_ipam__namespaces.py → 0023_ipam__namespaces.py} +2 -2
  727. nautobot/virtualization/migrations/0024_fixup_null_statuses.py +25 -0
  728. nautobot/virtualization/migrations/0025_status_nonnullable.py +29 -0
  729. nautobot/virtualization/models.py +31 -123
  730. nautobot/virtualization/navigation.py +18 -99
  731. nautobot/virtualization/templates/virtualization/virtualmachine.html +2 -1
  732. nautobot/virtualization/templates/virtualization/virtualmachine_edit.html +6 -0
  733. nautobot/virtualization/tests/test_api.py +25 -26
  734. nautobot/virtualization/tests/test_filters.py +41 -15
  735. nautobot/virtualization/tests/test_models.py +31 -7
  736. nautobot/virtualization/tests/test_views.py +42 -25
  737. nautobot/virtualization/views.py +7 -6
  738. {nautobot-2.0.0a3.dist-info → nautobot-2.0.0b1.dist-info}/METADATA +3 -7
  739. {nautobot-2.0.0a3.dist-info → nautobot-2.0.0b1.dist-info}/RECORD +744 -602
  740. {nautobot-2.0.0a3.dist-info → nautobot-2.0.0b1.dist-info}/WHEEL +1 -1
  741. nautobot/circuits/api/nested_serializers.py +0 -69
  742. nautobot/core/templates/plugin_template/navigation.py-tpl +0 -22
  743. nautobot/dcim/api/nested_serializers.py +0 -356
  744. nautobot/dcim/templates/dcim/device_import.html +0 -5
  745. nautobot/dcim/templates/dcim/device_import_child.html +0 -5
  746. nautobot/dcim/templates/dcim/inc/device_import_header.html +0 -4
  747. nautobot/extras/api/nested_serializers.py +0 -353
  748. nautobot/extras/migrations/0064_configcontext_data_migrations.py +0 -41
  749. nautobot/extras/migrations/0071_job__unique_name_data_migration.py +0 -46
  750. nautobot/extras/reports.py +0 -60
  751. nautobot/extras/scripts.py +0 -72
  752. nautobot/extras/tests/example_jobs/script_variables.py +0 -67
  753. nautobot/extras/tests/example_jobs/test_duplicate_name2.py +0 -5
  754. nautobot/extras/tests/example_jobs/test_fail.py +0 -16
  755. nautobot/extras/tests/example_jobs/test_file_upload_pass.py +0 -20
  756. nautobot/extras/tests/example_jobs/test_ipaddress_vars.py +0 -52
  757. nautobot/extras/tests/example_jobs/test_job_button_receiver.py +0 -21
  758. nautobot/extras/tests/example_jobs/test_job_hook_receiver.py +0 -20
  759. nautobot/extras/tests/example_jobs/test_location_with_custom_field.py +0 -35
  760. nautobot/extras/tests/example_jobs/test_log_redaction.py +0 -14
  761. nautobot/extras/tests/example_jobs/test_modify_db.py +0 -18
  762. nautobot/extras/tests/example_jobs/test_object_var_optional.py +0 -14
  763. nautobot/extras/tests/example_jobs/test_object_var_required.py +0 -14
  764. nautobot/extras/tests/example_jobs/test_object_vars.py +0 -29
  765. nautobot/extras/tests/example_jobs/test_pass.py +0 -19
  766. nautobot/extras/tests/example_jobs/test_read_only_fail.py +0 -24
  767. nautobot/extras/tests/example_jobs/test_read_only_no_commit_field.py +0 -10
  768. nautobot/extras/tests/example_jobs/test_read_only_pass.py +0 -22
  769. nautobot/ipam/api/nested_serializers.py +0 -159
  770. nautobot/ipam/migrations/0029_ipam__prefix__add_parent.py +0 -31
  771. nautobot/ipam/migrations/0030_ipam__prefix__data_migration.py +0 -13
  772. nautobot/ipam/migrations/0031_ipam__ipaddress__add_parent.py +0 -41
  773. nautobot/ipam/migrations/0032_ipam__ipaddress__data_migration.py +0 -11
  774. nautobot/tenancy/api/nested_serializers.py +0 -31
  775. nautobot/users/api/nested_serializers.py +0 -67
  776. nautobot/virtualization/api/nested_serializers.py +0 -65
  777. /nautobot/extras/{tests/example_jobs → test_jobs}/__init__.py +0 -0
  778. /nautobot/{dcim/models/sites.py → ipam/management/__init__.py} +0 -0
  779. {nautobot-2.0.0a3.dist-info → nautobot-2.0.0b1.dist-info}/LICENSE.txt +0 -0
  780. {nautobot-2.0.0a3.dist-info → nautobot-2.0.0b1.dist-info}/entry_points.txt +0 -0
@@ -686,13 +686,6 @@
686
686
  <nav class="md-nav" aria-label="Display name">
687
687
  <ul class="md-nav__list">
688
688
 
689
- <li class="md-nav__item">
690
- <a href="#csv-imports" class="md-nav__link">
691
- CSV Imports
692
- </a>
693
-
694
- </li>
695
-
696
689
  <li class="md-nav__item">
697
690
  <a href="#default-choices" class="md-nav__link">
698
691
  Default Choices
@@ -771,15 +764,8 @@
771
764
  </li>
772
765
 
773
766
  <li class="md-nav__item">
774
- <a href="#ipaddress-prefix_length-contains-the-prefix-length" class="md-nav__link">
775
- IPAddress prefix_length contains the prefix length
776
- </a>
777
-
778
- </li>
779
-
780
- <li class="md-nav__item">
781
- <a href="#ipaddress-broadcast-contains-the-broadcast-address" class="md-nav__link">
782
- IPAddress broadcast contains the broadcast address
767
+ <a href="#ipaddress-mask_length-contains-the-prefix-length" class="md-nav__link">
768
+ IPAddress mask_length contains the prefix length
783
769
  </a>
784
770
 
785
771
  </li>
@@ -1151,8 +1137,1053 @@
1151
1137
 
1152
1138
 
1153
1139
  <li class="md-nav__item">
1154
- <a href="../administration/nautobot-server.html" class="md-nav__link">
1155
- Nautobot Server
1140
+ <a href="../administration/nautobot-server.html" class="md-nav__link">
1141
+ Nautobot Server
1142
+ </a>
1143
+ </li>
1144
+
1145
+
1146
+
1147
+
1148
+
1149
+
1150
+
1151
+
1152
+
1153
+ <li class="md-nav__item">
1154
+ <a href="../administration/nautobot-shell.html" class="md-nav__link">
1155
+ Nautobot Shell
1156
+ </a>
1157
+ </li>
1158
+
1159
+
1160
+
1161
+
1162
+
1163
+
1164
+
1165
+
1166
+
1167
+ <li class="md-nav__item">
1168
+ <a href="../administration/permissions.html" class="md-nav__link">
1169
+ Permissions
1170
+ </a>
1171
+ </li>
1172
+
1173
+
1174
+
1175
+
1176
+
1177
+
1178
+
1179
+
1180
+
1181
+ <li class="md-nav__item">
1182
+ <a href="../administration/replicating-nautobot.html" class="md-nav__link">
1183
+ Replicating Nautobot
1184
+ </a>
1185
+ </li>
1186
+
1187
+
1188
+
1189
+
1190
+
1191
+
1192
+
1193
+
1194
+
1195
+ <li class="md-nav__item">
1196
+ <a href="../administration/celery-queues.html" class="md-nav__link">
1197
+ Task Queues
1198
+ </a>
1199
+ </li>
1200
+
1201
+
1202
+
1203
+
1204
+ </ul>
1205
+ </nav>
1206
+ </li>
1207
+
1208
+
1209
+
1210
+
1211
+
1212
+
1213
+
1214
+
1215
+
1216
+
1217
+ <li class="md-nav__item md-nav__item--nested">
1218
+
1219
+
1220
+
1221
+
1222
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_6" >
1223
+
1224
+
1225
+
1226
+ <label class="md-nav__link" for="__nav_2_6" id="__nav_2_6_label" tabindex="0">
1227
+ User Guides
1228
+ <span class="md-nav__icon md-icon"></span>
1229
+ </label>
1230
+
1231
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_6_label" aria-expanded="false">
1232
+ <label class="md-nav__title" for="__nav_2_6">
1233
+ <span class="md-nav__icon md-icon"></span>
1234
+ User Guides
1235
+ </label>
1236
+ <ul class="md-nav__list" data-md-scrollfix>
1237
+
1238
+
1239
+
1240
+
1241
+
1242
+
1243
+ <li class="md-nav__item">
1244
+ <a href="../user-guides/getting-started/creating-devices.html" class="md-nav__link">
1245
+ Creating Devices
1246
+ </a>
1247
+ </li>
1248
+
1249
+
1250
+
1251
+
1252
+
1253
+
1254
+
1255
+
1256
+
1257
+ <li class="md-nav__item">
1258
+ <a href="../user-guides/custom-fields.html" class="md-nav__link">
1259
+ Custom Fields
1260
+ </a>
1261
+ </li>
1262
+
1263
+
1264
+
1265
+
1266
+
1267
+
1268
+
1269
+
1270
+
1271
+ <li class="md-nav__item">
1272
+ <a href="../user-guides/getting-started/index.html" class="md-nav__link">
1273
+ Getting Started In the Web UI
1274
+ </a>
1275
+ </li>
1276
+
1277
+
1278
+
1279
+
1280
+
1281
+
1282
+
1283
+
1284
+
1285
+ <li class="md-nav__item">
1286
+ <a href="../user-guides/git-data-source.html" class="md-nav__link">
1287
+ Git as a Data Source
1288
+ </a>
1289
+ </li>
1290
+
1291
+
1292
+
1293
+
1294
+
1295
+
1296
+
1297
+
1298
+
1299
+ <li class="md-nav__item">
1300
+ <a href="../user-guides/graphql.html" class="md-nav__link">
1301
+ GraphQL
1302
+ </a>
1303
+ </li>
1304
+
1305
+
1306
+
1307
+
1308
+
1309
+
1310
+
1311
+
1312
+
1313
+ <li class="md-nav__item">
1314
+ <a href="../user-guides/getting-started/interfaces.html" class="md-nav__link">
1315
+ Interfaces
1316
+ </a>
1317
+ </li>
1318
+
1319
+
1320
+
1321
+
1322
+
1323
+
1324
+
1325
+
1326
+
1327
+ <li class="md-nav__item">
1328
+ <a href="../user-guides/getting-started/ipam.html" class="md-nav__link">
1329
+ IP Address Management
1330
+ </a>
1331
+ </li>
1332
+
1333
+
1334
+
1335
+
1336
+
1337
+
1338
+
1339
+
1340
+
1341
+ <li class="md-nav__item">
1342
+ <a href="../user-guides/getting-started/platforms.html" class="md-nav__link">
1343
+ Platforms
1344
+ </a>
1345
+ </li>
1346
+
1347
+
1348
+
1349
+
1350
+
1351
+
1352
+
1353
+
1354
+
1355
+ <li class="md-nav__item">
1356
+ <a href="../user-guides/getting-started/regions.html" class="md-nav__link">
1357
+ Regions
1358
+ </a>
1359
+ </li>
1360
+
1361
+
1362
+
1363
+
1364
+
1365
+
1366
+
1367
+
1368
+
1369
+ <li class="md-nav__item">
1370
+ <a href="../user-guides/getting-started/tenants.html" class="md-nav__link">
1371
+ Tenants
1372
+ </a>
1373
+ </li>
1374
+
1375
+
1376
+
1377
+
1378
+
1379
+
1380
+
1381
+
1382
+
1383
+ <li class="md-nav__item">
1384
+ <a href="../user-guides/getting-started/search-bar.html" class="md-nav__link">
1385
+ The Search Bar
1386
+ </a>
1387
+ </li>
1388
+
1389
+
1390
+
1391
+
1392
+
1393
+
1394
+
1395
+
1396
+
1397
+ <li class="md-nav__item">
1398
+ <a href="../user-guides/git-data-source.html" class="md-nav__link">
1399
+ Git as a Data Source
1400
+ </a>
1401
+ </li>
1402
+
1403
+
1404
+
1405
+
1406
+
1407
+
1408
+
1409
+
1410
+
1411
+ <li class="md-nav__item">
1412
+ <a href="../user-guides/graphql.html" class="md-nav__link">
1413
+ GraphQL
1414
+ </a>
1415
+ </li>
1416
+
1417
+
1418
+
1419
+
1420
+
1421
+
1422
+
1423
+
1424
+
1425
+ <li class="md-nav__item">
1426
+ <a href="../user-guides/relationships.html" class="md-nav__link">
1427
+ Relationships
1428
+ </a>
1429
+ </li>
1430
+
1431
+
1432
+
1433
+
1434
+
1435
+
1436
+
1437
+
1438
+
1439
+ <li class="md-nav__item">
1440
+ <a href="../user-guides/s3-django-storage.html" class="md-nav__link">
1441
+ Django Storages with S3
1442
+ </a>
1443
+ </li>
1444
+
1445
+
1446
+
1447
+
1448
+
1449
+
1450
+
1451
+
1452
+
1453
+ <li class="md-nav__item">
1454
+ <a href="../user-guides/getting-started/vlans-and-vlan-groups.html" class="md-nav__link">
1455
+ VLANS and VLAN Groups
1456
+ </a>
1457
+ </li>
1458
+
1459
+
1460
+
1461
+
1462
+ </ul>
1463
+ </nav>
1464
+ </li>
1465
+
1466
+
1467
+
1468
+
1469
+
1470
+
1471
+
1472
+
1473
+
1474
+
1475
+ <li class="md-nav__item md-nav__item--nested">
1476
+
1477
+
1478
+
1479
+
1480
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_7" >
1481
+
1482
+
1483
+
1484
+ <label class="md-nav__link" for="__nav_2_7" id="__nav_2_7_label" tabindex="0">
1485
+ Core Functionality
1486
+ <span class="md-nav__icon md-icon"></span>
1487
+ </label>
1488
+
1489
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_7_label" aria-expanded="false">
1490
+ <label class="md-nav__title" for="__nav_2_7">
1491
+ <span class="md-nav__icon md-icon"></span>
1492
+ Core Functionality
1493
+ </label>
1494
+ <ul class="md-nav__list" data-md-scrollfix>
1495
+
1496
+
1497
+
1498
+
1499
+
1500
+
1501
+ <li class="md-nav__item">
1502
+ <a href="../core-functionality/circuits.html" class="md-nav__link">
1503
+ Circuits
1504
+ </a>
1505
+ </li>
1506
+
1507
+
1508
+
1509
+
1510
+
1511
+
1512
+
1513
+
1514
+
1515
+ <li class="md-nav__item">
1516
+ <a href="../core-functionality/devices.html" class="md-nav__link">
1517
+ Devices and Cabling
1518
+ </a>
1519
+ </li>
1520
+
1521
+
1522
+
1523
+
1524
+
1525
+
1526
+
1527
+
1528
+
1529
+ <li class="md-nav__item">
1530
+ <a href="../core-functionality/device-types.html" class="md-nav__link">
1531
+ Device Types
1532
+ </a>
1533
+ </li>
1534
+
1535
+
1536
+
1537
+
1538
+
1539
+
1540
+
1541
+
1542
+
1543
+ <li class="md-nav__item">
1544
+ <a href="../core-functionality/ipam.html" class="md-nav__link">
1545
+ IP Address Management
1546
+ </a>
1547
+ </li>
1548
+
1549
+
1550
+
1551
+
1552
+
1553
+
1554
+
1555
+
1556
+
1557
+ <li class="md-nav__item">
1558
+ <a href="../core-functionality/power.html" class="md-nav__link">
1559
+ Power Tracking
1560
+ </a>
1561
+ </li>
1562
+
1563
+
1564
+
1565
+
1566
+
1567
+
1568
+
1569
+
1570
+
1571
+ <li class="md-nav__item">
1572
+ <a href="../core-functionality/secrets.html" class="md-nav__link">
1573
+ Secrets
1574
+ </a>
1575
+ </li>
1576
+
1577
+
1578
+
1579
+
1580
+
1581
+
1582
+
1583
+
1584
+
1585
+ <li class="md-nav__item">
1586
+ <a href="../core-functionality/services.html" class="md-nav__link">
1587
+ Service Mapping
1588
+ </a>
1589
+ </li>
1590
+
1591
+
1592
+
1593
+
1594
+
1595
+
1596
+
1597
+
1598
+
1599
+ <li class="md-nav__item">
1600
+ <a href="../core-functionality/sites-and-racks.html" class="md-nav__link">
1601
+ Sites, Locations, and Racks
1602
+ </a>
1603
+ </li>
1604
+
1605
+
1606
+
1607
+
1608
+
1609
+
1610
+
1611
+
1612
+
1613
+ <li class="md-nav__item">
1614
+ <a href="../core-functionality/tenancy.html" class="md-nav__link">
1615
+ Tenancy
1616
+ </a>
1617
+ </li>
1618
+
1619
+
1620
+
1621
+
1622
+
1623
+
1624
+
1625
+
1626
+
1627
+ <li class="md-nav__item">
1628
+ <a href="../core-functionality/virtualization.html" class="md-nav__link">
1629
+ Virtualization
1630
+ </a>
1631
+ </li>
1632
+
1633
+
1634
+
1635
+
1636
+
1637
+
1638
+
1639
+
1640
+
1641
+ <li class="md-nav__item">
1642
+ <a href="../core-functionality/vlans.html" class="md-nav__link">
1643
+ VLAN Management
1644
+ </a>
1645
+ </li>
1646
+
1647
+
1648
+
1649
+
1650
+ </ul>
1651
+ </nav>
1652
+ </li>
1653
+
1654
+
1655
+
1656
+
1657
+
1658
+
1659
+
1660
+
1661
+
1662
+
1663
+ <li class="md-nav__item md-nav__item--nested">
1664
+
1665
+
1666
+
1667
+
1668
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8" >
1669
+
1670
+
1671
+
1672
+ <label class="md-nav__link" for="__nav_2_8" id="__nav_2_8_label" tabindex="0">
1673
+ Model Details
1674
+ <span class="md-nav__icon md-icon"></span>
1675
+ </label>
1676
+
1677
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_8_label" aria-expanded="false">
1678
+ <label class="md-nav__title" for="__nav_2_8">
1679
+ <span class="md-nav__icon md-icon"></span>
1680
+ Model Details
1681
+ </label>
1682
+ <ul class="md-nav__list" data-md-scrollfix>
1683
+
1684
+
1685
+
1686
+
1687
+
1688
+
1689
+
1690
+ <li class="md-nav__item md-nav__item--nested">
1691
+
1692
+
1693
+
1694
+
1695
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_1" >
1696
+
1697
+
1698
+
1699
+ <label class="md-nav__link" for="__nav_2_8_1" id="__nav_2_8_1_label" tabindex="0">
1700
+ Circuits
1701
+ <span class="md-nav__icon md-icon"></span>
1702
+ </label>
1703
+
1704
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_1_label" aria-expanded="false">
1705
+ <label class="md-nav__title" for="__nav_2_8_1">
1706
+ <span class="md-nav__icon md-icon"></span>
1707
+ Circuits
1708
+ </label>
1709
+ <ul class="md-nav__list" data-md-scrollfix>
1710
+
1711
+
1712
+
1713
+
1714
+
1715
+
1716
+ <li class="md-nav__item">
1717
+ <a href="../models/circuits/circuit.html" class="md-nav__link">
1718
+ Circuit
1719
+ </a>
1720
+ </li>
1721
+
1722
+
1723
+
1724
+
1725
+
1726
+
1727
+
1728
+
1729
+
1730
+ <li class="md-nav__item">
1731
+ <a href="../models/circuits/circuittermination.html" class="md-nav__link">
1732
+ Circuit Termination
1733
+ </a>
1734
+ </li>
1735
+
1736
+
1737
+
1738
+
1739
+
1740
+
1741
+
1742
+
1743
+
1744
+ <li class="md-nav__item">
1745
+ <a href="../models/circuits/circuittype.html" class="md-nav__link">
1746
+ Circuit Type
1747
+ </a>
1748
+ </li>
1749
+
1750
+
1751
+
1752
+
1753
+
1754
+
1755
+
1756
+
1757
+
1758
+ <li class="md-nav__item">
1759
+ <a href="../models/circuits/provider.html" class="md-nav__link">
1760
+ Circuit Provider
1761
+ </a>
1762
+ </li>
1763
+
1764
+
1765
+
1766
+
1767
+
1768
+
1769
+
1770
+
1771
+
1772
+ <li class="md-nav__item">
1773
+ <a href="../models/circuits/providernetwork.html" class="md-nav__link">
1774
+ Circuit Provider Network
1775
+ </a>
1776
+ </li>
1777
+
1778
+
1779
+
1780
+
1781
+ </ul>
1782
+ </nav>
1783
+ </li>
1784
+
1785
+
1786
+
1787
+
1788
+
1789
+
1790
+
1791
+
1792
+
1793
+
1794
+ <li class="md-nav__item md-nav__item--nested">
1795
+
1796
+
1797
+
1798
+
1799
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_2" >
1800
+
1801
+
1802
+
1803
+ <label class="md-nav__link" for="__nav_2_8_2" id="__nav_2_8_2_label" tabindex="0">
1804
+ DCIM
1805
+ <span class="md-nav__icon md-icon"></span>
1806
+ </label>
1807
+
1808
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_2_label" aria-expanded="false">
1809
+ <label class="md-nav__title" for="__nav_2_8_2">
1810
+ <span class="md-nav__icon md-icon"></span>
1811
+ DCIM
1812
+ </label>
1813
+ <ul class="md-nav__list" data-md-scrollfix>
1814
+
1815
+
1816
+
1817
+
1818
+
1819
+
1820
+ <li class="md-nav__item">
1821
+ <a href="../models/dcim/cable.html" class="md-nav__link">
1822
+ Cable
1823
+ </a>
1824
+ </li>
1825
+
1826
+
1827
+
1828
+
1829
+
1830
+
1831
+
1832
+
1833
+
1834
+ <li class="md-nav__item">
1835
+ <a href="../models/dcim/consoleport.html" class="md-nav__link">
1836
+ Console Port
1837
+ </a>
1838
+ </li>
1839
+
1840
+
1841
+
1842
+
1843
+
1844
+
1845
+
1846
+
1847
+
1848
+ <li class="md-nav__item">
1849
+ <a href="../models/dcim/consoleporttemplate.html" class="md-nav__link">
1850
+ Console Port Template
1851
+ </a>
1852
+ </li>
1853
+
1854
+
1855
+
1856
+
1857
+
1858
+
1859
+
1860
+
1861
+
1862
+ <li class="md-nav__item">
1863
+ <a href="../models/dcim/consoleserverport.html" class="md-nav__link">
1864
+ Console Server Port
1865
+ </a>
1866
+ </li>
1867
+
1868
+
1869
+
1870
+
1871
+
1872
+
1873
+
1874
+
1875
+
1876
+ <li class="md-nav__item">
1877
+ <a href="../models/dcim/consoleserverporttemplate.html" class="md-nav__link">
1878
+ Console Server Port Template
1879
+ </a>
1880
+ </li>
1881
+
1882
+
1883
+
1884
+
1885
+
1886
+
1887
+
1888
+
1889
+
1890
+ <li class="md-nav__item">
1891
+ <a href="../models/dcim/device.html" class="md-nav__link">
1892
+ Device
1893
+ </a>
1894
+ </li>
1895
+
1896
+
1897
+
1898
+
1899
+
1900
+
1901
+
1902
+
1903
+
1904
+ <li class="md-nav__item">
1905
+ <a href="../models/dcim/devicebay.html" class="md-nav__link">
1906
+ Device Bay
1907
+ </a>
1908
+ </li>
1909
+
1910
+
1911
+
1912
+
1913
+
1914
+
1915
+
1916
+
1917
+
1918
+ <li class="md-nav__item">
1919
+ <a href="../models/dcim/devicebaytemplate.html" class="md-nav__link">
1920
+ Device Bay Template
1921
+ </a>
1922
+ </li>
1923
+
1924
+
1925
+
1926
+
1927
+
1928
+
1929
+
1930
+
1931
+
1932
+ <li class="md-nav__item">
1933
+ <a href="../models/dcim/deviceredundancygroup.html" class="md-nav__link">
1934
+ Device Redundancy Group
1935
+ </a>
1936
+ </li>
1937
+
1938
+
1939
+
1940
+
1941
+
1942
+
1943
+
1944
+
1945
+
1946
+ <li class="md-nav__item">
1947
+ <a href="../models/dcim/devicetype.html" class="md-nav__link">
1948
+ Device Type
1949
+ </a>
1950
+ </li>
1951
+
1952
+
1953
+
1954
+
1955
+
1956
+
1957
+
1958
+
1959
+
1960
+ <li class="md-nav__item">
1961
+ <a href="../models/dcim/frontport.html" class="md-nav__link">
1962
+ Front Port
1963
+ </a>
1964
+ </li>
1965
+
1966
+
1967
+
1968
+
1969
+
1970
+
1971
+
1972
+
1973
+
1974
+ <li class="md-nav__item">
1975
+ <a href="../models/dcim/frontporttemplate.html" class="md-nav__link">
1976
+ Front Port Template
1977
+ </a>
1978
+ </li>
1979
+
1980
+
1981
+
1982
+
1983
+
1984
+
1985
+
1986
+
1987
+
1988
+ <li class="md-nav__item">
1989
+ <a href="../models/dcim/interface.html" class="md-nav__link">
1990
+ Interface
1991
+ </a>
1992
+ </li>
1993
+
1994
+
1995
+
1996
+
1997
+
1998
+
1999
+
2000
+
2001
+
2002
+ <li class="md-nav__item">
2003
+ <a href="../models/dcim/interfacetemplate.html" class="md-nav__link">
2004
+ Interface Template
2005
+ </a>
2006
+ </li>
2007
+
2008
+
2009
+
2010
+
2011
+
2012
+
2013
+
2014
+
2015
+
2016
+ <li class="md-nav__item">
2017
+ <a href="../models/dcim/inventoryitem.html" class="md-nav__link">
2018
+ Inventory Item
2019
+ </a>
2020
+ </li>
2021
+
2022
+
2023
+
2024
+
2025
+
2026
+
2027
+
2028
+
2029
+
2030
+ <li class="md-nav__item">
2031
+ <a href="../models/dcim/location.html" class="md-nav__link">
2032
+ Location
2033
+ </a>
2034
+ </li>
2035
+
2036
+
2037
+
2038
+
2039
+
2040
+
2041
+
2042
+
2043
+
2044
+ <li class="md-nav__item">
2045
+ <a href="../models/dcim/locationtype.html" class="md-nav__link">
2046
+ Location Type
2047
+ </a>
2048
+ </li>
2049
+
2050
+
2051
+
2052
+
2053
+
2054
+
2055
+
2056
+
2057
+
2058
+ <li class="md-nav__item">
2059
+ <a href="../models/dcim/manufacturer.html" class="md-nav__link">
2060
+ Manufacturer
2061
+ </a>
2062
+ </li>
2063
+
2064
+
2065
+
2066
+
2067
+
2068
+
2069
+
2070
+
2071
+
2072
+ <li class="md-nav__item">
2073
+ <a href="../models/dcim/platform.html" class="md-nav__link">
2074
+ Platform
2075
+ </a>
2076
+ </li>
2077
+
2078
+
2079
+
2080
+
2081
+
2082
+
2083
+
2084
+
2085
+
2086
+ <li class="md-nav__item">
2087
+ <a href="../models/dcim/powerfeed.html" class="md-nav__link">
2088
+ Power Feed
2089
+ </a>
2090
+ </li>
2091
+
2092
+
2093
+
2094
+
2095
+
2096
+
2097
+
2098
+
2099
+
2100
+ <li class="md-nav__item">
2101
+ <a href="../models/dcim/poweroutlet.html" class="md-nav__link">
2102
+ Power Outlet
2103
+ </a>
2104
+ </li>
2105
+
2106
+
2107
+
2108
+
2109
+
2110
+
2111
+
2112
+
2113
+
2114
+ <li class="md-nav__item">
2115
+ <a href="../models/dcim/poweroutlettemplate.html" class="md-nav__link">
2116
+ Power Outlet Template
2117
+ </a>
2118
+ </li>
2119
+
2120
+
2121
+
2122
+
2123
+
2124
+
2125
+
2126
+
2127
+
2128
+ <li class="md-nav__item">
2129
+ <a href="../models/dcim/powerpanel.html" class="md-nav__link">
2130
+ Power Panel
2131
+ </a>
2132
+ </li>
2133
+
2134
+
2135
+
2136
+
2137
+
2138
+
2139
+
2140
+
2141
+
2142
+ <li class="md-nav__item">
2143
+ <a href="../models/dcim/powerport.html" class="md-nav__link">
2144
+ Power Port
2145
+ </a>
2146
+ </li>
2147
+
2148
+
2149
+
2150
+
2151
+
2152
+
2153
+
2154
+
2155
+
2156
+ <li class="md-nav__item">
2157
+ <a href="../models/dcim/powerporttemplate.html" class="md-nav__link">
2158
+ Power Port Template
2159
+ </a>
2160
+ </li>
2161
+
2162
+
2163
+
2164
+
2165
+
2166
+
2167
+
2168
+
2169
+
2170
+ <li class="md-nav__item">
2171
+ <a href="../models/dcim/rack.html" class="md-nav__link">
2172
+ Rack
2173
+ </a>
2174
+ </li>
2175
+
2176
+
2177
+
2178
+
2179
+
2180
+
2181
+
2182
+
2183
+
2184
+ <li class="md-nav__item">
2185
+ <a href="../models/dcim/rackgroup.html" class="md-nav__link">
2186
+ Rack Group
1156
2187
  </a>
1157
2188
  </li>
1158
2189
 
@@ -1165,8 +2196,8 @@
1165
2196
 
1166
2197
 
1167
2198
  <li class="md-nav__item">
1168
- <a href="../administration/nautobot-shell.html" class="md-nav__link">
1169
- Nautobot Shell
2199
+ <a href="../models/dcim/rackreservation.html" class="md-nav__link">
2200
+ Rack Reservation
1170
2201
  </a>
1171
2202
  </li>
1172
2203
 
@@ -1179,8 +2210,8 @@
1179
2210
 
1180
2211
 
1181
2212
  <li class="md-nav__item">
1182
- <a href="../administration/permissions.html" class="md-nav__link">
1183
- Permissions
2213
+ <a href="../models/dcim/rearport.html" class="md-nav__link">
2214
+ Rear Port
1184
2215
  </a>
1185
2216
  </li>
1186
2217
 
@@ -1193,8 +2224,8 @@
1193
2224
 
1194
2225
 
1195
2226
  <li class="md-nav__item">
1196
- <a href="../administration/replicating-nautobot.html" class="md-nav__link">
1197
- Replicating Nautobot
2227
+ <a href="../models/dcim/rearporttemplate.html" class="md-nav__link">
2228
+ Rear Port Template
1198
2229
  </a>
1199
2230
  </li>
1200
2231
 
@@ -1207,8 +2238,8 @@
1207
2238
 
1208
2239
 
1209
2240
  <li class="md-nav__item">
1210
- <a href="../administration/celery-queues.html" class="md-nav__link">
1211
- Task Queues
2241
+ <a href="../models/dcim/virtualchassis.html" class="md-nav__link">
2242
+ Virtual Chassis
1212
2243
  </a>
1213
2244
  </li>
1214
2245
 
@@ -1233,19 +2264,19 @@
1233
2264
 
1234
2265
 
1235
2266
 
1236
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_6" >
2267
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_3" >
1237
2268
 
1238
2269
 
1239
2270
 
1240
- <label class="md-nav__link" for="__nav_2_6" id="__nav_2_6_label" tabindex="0">
1241
- User Guides
2271
+ <label class="md-nav__link" for="__nav_2_8_3" id="__nav_2_8_3_label" tabindex="0">
2272
+ Extras
1242
2273
  <span class="md-nav__icon md-icon"></span>
1243
2274
  </label>
1244
2275
 
1245
- <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_6_label" aria-expanded="false">
1246
- <label class="md-nav__title" for="__nav_2_6">
2276
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_3_label" aria-expanded="false">
2277
+ <label class="md-nav__title" for="__nav_2_8_3">
1247
2278
  <span class="md-nav__icon md-icon"></span>
1248
- User Guides
2279
+ Extras
1249
2280
  </label>
1250
2281
  <ul class="md-nav__list" data-md-scrollfix>
1251
2282
 
@@ -1255,8 +2286,8 @@
1255
2286
 
1256
2287
 
1257
2288
  <li class="md-nav__item">
1258
- <a href="../user-guides/getting-started/creating-devices.html" class="md-nav__link">
1259
- Creating Devices
2289
+ <a href="../models/extras/configcontext.html" class="md-nav__link">
2290
+ Config Context
1260
2291
  </a>
1261
2292
  </li>
1262
2293
 
@@ -1269,8 +2300,8 @@
1269
2300
 
1270
2301
 
1271
2302
  <li class="md-nav__item">
1272
- <a href="../user-guides/custom-fields.html" class="md-nav__link">
1273
- Custom Fields
2303
+ <a href="../models/extras/configcontextschema.html" class="md-nav__link">
2304
+ Config Context Schema
1274
2305
  </a>
1275
2306
  </li>
1276
2307
 
@@ -1283,8 +2314,8 @@
1283
2314
 
1284
2315
 
1285
2316
  <li class="md-nav__item">
1286
- <a href="../user-guides/getting-started/index.html" class="md-nav__link">
1287
- Getting Started In the Web UI
2317
+ <a href="../models/extras/graphqlquery.html" class="md-nav__link">
2318
+ GraphQL Query
1288
2319
  </a>
1289
2320
  </li>
1290
2321
 
@@ -1297,8 +2328,8 @@
1297
2328
 
1298
2329
 
1299
2330
  <li class="md-nav__item">
1300
- <a href="../user-guides/git-data-source.html" class="md-nav__link">
1301
- Git as a Data Source
2331
+ <a href="../models/extras/imageattachment.html" class="md-nav__link">
2332
+ Image Attachment
1302
2333
  </a>
1303
2334
  </li>
1304
2335
 
@@ -1311,8 +2342,8 @@
1311
2342
 
1312
2343
 
1313
2344
  <li class="md-nav__item">
1314
- <a href="../user-guides/graphql.html" class="md-nav__link">
1315
- GraphQL
2345
+ <a href="../models/extras/job.html" class="md-nav__link">
2346
+ Job
1316
2347
  </a>
1317
2348
  </li>
1318
2349
 
@@ -1325,8 +2356,8 @@
1325
2356
 
1326
2357
 
1327
2358
  <li class="md-nav__item">
1328
- <a href="../user-guides/getting-started/interfaces.html" class="md-nav__link">
1329
- Interfaces
2359
+ <a href="../models/extras/joblogentry.html" class="md-nav__link">
2360
+ Job Log Entry
1330
2361
  </a>
1331
2362
  </li>
1332
2363
 
@@ -1339,8 +2370,8 @@
1339
2370
 
1340
2371
 
1341
2372
  <li class="md-nav__item">
1342
- <a href="../user-guides/getting-started/ipam.html" class="md-nav__link">
1343
- IP Address Management
2373
+ <a href="../models/extras/jobresult.html" class="md-nav__link">
2374
+ Job Result
1344
2375
  </a>
1345
2376
  </li>
1346
2377
 
@@ -1353,8 +2384,8 @@
1353
2384
 
1354
2385
 
1355
2386
  <li class="md-nav__item">
1356
- <a href="../user-guides/getting-started/platforms.html" class="md-nav__link">
1357
- Platforms
2387
+ <a href="../models/extras/role.html" class="md-nav__link">
2388
+ Role
1358
2389
  </a>
1359
2390
  </li>
1360
2391
 
@@ -1367,8 +2398,8 @@
1367
2398
 
1368
2399
 
1369
2400
  <li class="md-nav__item">
1370
- <a href="../user-guides/getting-started/regions.html" class="md-nav__link">
1371
- Regions
2401
+ <a href="../models/extras/secret.html" class="md-nav__link">
2402
+ Secret
1372
2403
  </a>
1373
2404
  </li>
1374
2405
 
@@ -1381,8 +2412,56 @@
1381
2412
 
1382
2413
 
1383
2414
  <li class="md-nav__item">
1384
- <a href="../user-guides/getting-started/tenants.html" class="md-nav__link">
1385
- Tenants
2415
+ <a href="../models/extras/secretsgroup.html" class="md-nav__link">
2416
+ Secrets group
2417
+ </a>
2418
+ </li>
2419
+
2420
+
2421
+
2422
+
2423
+ </ul>
2424
+ </nav>
2425
+ </li>
2426
+
2427
+
2428
+
2429
+
2430
+
2431
+
2432
+
2433
+
2434
+
2435
+
2436
+ <li class="md-nav__item md-nav__item--nested">
2437
+
2438
+
2439
+
2440
+
2441
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_4" >
2442
+
2443
+
2444
+
2445
+ <label class="md-nav__link" for="__nav_2_8_4" id="__nav_2_8_4_label" tabindex="0">
2446
+ IPAM
2447
+ <span class="md-nav__icon md-icon"></span>
2448
+ </label>
2449
+
2450
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_4_label" aria-expanded="false">
2451
+ <label class="md-nav__title" for="__nav_2_8_4">
2452
+ <span class="md-nav__icon md-icon"></span>
2453
+ IPAM
2454
+ </label>
2455
+ <ul class="md-nav__list" data-md-scrollfix>
2456
+
2457
+
2458
+
2459
+
2460
+
2461
+
2462
+ <li class="md-nav__item">
2463
+ <a href="../models/ipam/ipaddress.html" class="md-nav__link">
2464
+ IP Address
1386
2465
  </a>
1387
2466
  </li>
1388
2467
 
@@ -1395,8 +2474,8 @@
1395
2474
 
1396
2475
 
1397
2476
  <li class="md-nav__item">
1398
- <a href="../user-guides/getting-started/search-bar.html" class="md-nav__link">
1399
- The Search Bar
2477
+ <a href="../models/ipam/prefix.html" class="md-nav__link">
2478
+ Prefix
1400
2479
  </a>
1401
2480
  </li>
1402
2481
 
@@ -1409,8 +2488,8 @@
1409
2488
 
1410
2489
 
1411
2490
  <li class="md-nav__item">
1412
- <a href="../user-guides/git-data-source.html" class="md-nav__link">
1413
- Git as a Data Source
2491
+ <a href="../models/ipam/rir.html" class="md-nav__link">
2492
+ Rir
1414
2493
  </a>
1415
2494
  </li>
1416
2495
 
@@ -1423,8 +2502,8 @@
1423
2502
 
1424
2503
 
1425
2504
  <li class="md-nav__item">
1426
- <a href="../user-guides/graphql.html" class="md-nav__link">
1427
- GraphQL
2505
+ <a href="../models/ipam/routetarget.html" class="md-nav__link">
2506
+ Route Target
1428
2507
  </a>
1429
2508
  </li>
1430
2509
 
@@ -1437,8 +2516,8 @@
1437
2516
 
1438
2517
 
1439
2518
  <li class="md-nav__item">
1440
- <a href="../user-guides/relationships.html" class="md-nav__link">
1441
- Relationships
2519
+ <a href="../models/ipam/service.html" class="md-nav__link">
2520
+ Service
1442
2521
  </a>
1443
2522
  </li>
1444
2523
 
@@ -1451,8 +2530,8 @@
1451
2530
 
1452
2531
 
1453
2532
  <li class="md-nav__item">
1454
- <a href="../user-guides/s3-django-storage.html" class="md-nav__link">
1455
- Django Storages with S3
2533
+ <a href="../models/ipam/vlan.html" class="md-nav__link">
2534
+ VLAN
1456
2535
  </a>
1457
2536
  </li>
1458
2537
 
@@ -1465,8 +2544,22 @@
1465
2544
 
1466
2545
 
1467
2546
  <li class="md-nav__item">
1468
- <a href="../user-guides/getting-started/vlans-and-vlan-groups.html" class="md-nav__link">
1469
- VLANS and VLAN Groups
2547
+ <a href="../models/ipam/vlangroup.html" class="md-nav__link">
2548
+ VLAN Group
2549
+ </a>
2550
+ </li>
2551
+
2552
+
2553
+
2554
+
2555
+
2556
+
2557
+
2558
+
2559
+
2560
+ <li class="md-nav__item">
2561
+ <a href="../models/ipam/vrf.html" class="md-nav__link">
2562
+ VRF
1470
2563
  </a>
1471
2564
  </li>
1472
2565
 
@@ -1491,19 +2584,19 @@
1491
2584
 
1492
2585
 
1493
2586
 
1494
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_7" >
2587
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_5" >
1495
2588
 
1496
2589
 
1497
2590
 
1498
- <label class="md-nav__link" for="__nav_2_7" id="__nav_2_7_label" tabindex="0">
1499
- Core Functionality
2591
+ <label class="md-nav__link" for="__nav_2_8_5" id="__nav_2_8_5_label" tabindex="0">
2592
+ Tenancy
1500
2593
  <span class="md-nav__icon md-icon"></span>
1501
2594
  </label>
1502
2595
 
1503
- <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_7_label" aria-expanded="false">
1504
- <label class="md-nav__title" for="__nav_2_7">
2596
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_5_label" aria-expanded="false">
2597
+ <label class="md-nav__title" for="__nav_2_8_5">
1505
2598
  <span class="md-nav__icon md-icon"></span>
1506
- Core Functionality
2599
+ Tenancy
1507
2600
  </label>
1508
2601
  <ul class="md-nav__list" data-md-scrollfix>
1509
2602
 
@@ -1513,8 +2606,8 @@
1513
2606
 
1514
2607
 
1515
2608
  <li class="md-nav__item">
1516
- <a href="../core-functionality/circuits.html" class="md-nav__link">
1517
- Circuits
2609
+ <a href="../models/tenancy/tenant.html" class="md-nav__link">
2610
+ Tenant
1518
2611
  </a>
1519
2612
  </li>
1520
2613
 
@@ -1527,27 +2620,47 @@
1527
2620
 
1528
2621
 
1529
2622
  <li class="md-nav__item">
1530
- <a href="../core-functionality/devices.html" class="md-nav__link">
1531
- Devices and Cabling
2623
+ <a href="../models/tenancy/tenantgroup.html" class="md-nav__link">
2624
+ Tenant Group
1532
2625
  </a>
1533
2626
  </li>
1534
2627
 
1535
2628
 
1536
2629
 
1537
2630
 
2631
+ </ul>
2632
+ </nav>
2633
+ </li>
2634
+
2635
+
2636
+
2637
+
1538
2638
 
1539
2639
 
1540
2640
 
1541
2641
 
1542
2642
 
1543
- <li class="md-nav__item">
1544
- <a href="../core-functionality/device-types.html" class="md-nav__link">
1545
- Device Types
1546
- </a>
1547
- </li>
1548
-
1549
-
1550
-
2643
+
2644
+ <li class="md-nav__item md-nav__item--nested">
2645
+
2646
+
2647
+
2648
+
2649
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_6" >
2650
+
2651
+
2652
+
2653
+ <label class="md-nav__link" for="__nav_2_8_6" id="__nav_2_8_6_label" tabindex="0">
2654
+ Users
2655
+ <span class="md-nav__icon md-icon"></span>
2656
+ </label>
2657
+
2658
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_6_label" aria-expanded="false">
2659
+ <label class="md-nav__title" for="__nav_2_8_6">
2660
+ <span class="md-nav__icon md-icon"></span>
2661
+ Users
2662
+ </label>
2663
+ <ul class="md-nav__list" data-md-scrollfix>
1551
2664
 
1552
2665
 
1553
2666
 
@@ -1555,8 +2668,8 @@
1555
2668
 
1556
2669
 
1557
2670
  <li class="md-nav__item">
1558
- <a href="../core-functionality/ipam.html" class="md-nav__link">
1559
- IP Address Management
2671
+ <a href="../models/users/objectpermission.html" class="md-nav__link">
2672
+ Object Permission
1560
2673
  </a>
1561
2674
  </li>
1562
2675
 
@@ -1569,27 +2682,47 @@
1569
2682
 
1570
2683
 
1571
2684
  <li class="md-nav__item">
1572
- <a href="../core-functionality/power.html" class="md-nav__link">
1573
- Power Tracking
2685
+ <a href="../models/users/token.html" class="md-nav__link">
2686
+ Token
1574
2687
  </a>
1575
2688
  </li>
1576
2689
 
1577
2690
 
1578
2691
 
1579
2692
 
2693
+ </ul>
2694
+ </nav>
2695
+ </li>
2696
+
2697
+
2698
+
2699
+
1580
2700
 
1581
2701
 
1582
2702
 
1583
2703
 
1584
2704
 
1585
- <li class="md-nav__item">
1586
- <a href="../core-functionality/secrets.html" class="md-nav__link">
1587
- Secrets
1588
- </a>
1589
- </li>
1590
-
1591
-
1592
-
2705
+
2706
+ <li class="md-nav__item md-nav__item--nested">
2707
+
2708
+
2709
+
2710
+
2711
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8_7" >
2712
+
2713
+
2714
+
2715
+ <label class="md-nav__link" for="__nav_2_8_7" id="__nav_2_8_7_label" tabindex="0">
2716
+ Virtualization
2717
+ <span class="md-nav__icon md-icon"></span>
2718
+ </label>
2719
+
2720
+ <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_8_7_label" aria-expanded="false">
2721
+ <label class="md-nav__title" for="__nav_2_8_7">
2722
+ <span class="md-nav__icon md-icon"></span>
2723
+ Virtualization
2724
+ </label>
2725
+ <ul class="md-nav__list" data-md-scrollfix>
1593
2726
 
1594
2727
 
1595
2728
 
@@ -1597,8 +2730,8 @@
1597
2730
 
1598
2731
 
1599
2732
  <li class="md-nav__item">
1600
- <a href="../core-functionality/services.html" class="md-nav__link">
1601
- Service Mapping
2733
+ <a href="../models/virtualization/cluster.html" class="md-nav__link">
2734
+ Cluster
1602
2735
  </a>
1603
2736
  </li>
1604
2737
 
@@ -1611,8 +2744,8 @@
1611
2744
 
1612
2745
 
1613
2746
  <li class="md-nav__item">
1614
- <a href="../core-functionality/sites-and-racks.html" class="md-nav__link">
1615
- Sites, Locations, and Racks
2747
+ <a href="../models/virtualization/clustergroup.html" class="md-nav__link">
2748
+ Cluster Group
1616
2749
  </a>
1617
2750
  </li>
1618
2751
 
@@ -1625,8 +2758,8 @@
1625
2758
 
1626
2759
 
1627
2760
  <li class="md-nav__item">
1628
- <a href="../core-functionality/tenancy.html" class="md-nav__link">
1629
- Tenancy
2761
+ <a href="../models/virtualization/clustertype.html" class="md-nav__link">
2762
+ Cluster Type
1630
2763
  </a>
1631
2764
  </li>
1632
2765
 
@@ -1639,8 +2772,8 @@
1639
2772
 
1640
2773
 
1641
2774
  <li class="md-nav__item">
1642
- <a href="../core-functionality/virtualization.html" class="md-nav__link">
1643
- Virtualization
2775
+ <a href="../models/virtualization/virtualmachine.html" class="md-nav__link">
2776
+ Virtual Machine
1644
2777
  </a>
1645
2778
  </li>
1646
2779
 
@@ -1653,8 +2786,8 @@
1653
2786
 
1654
2787
 
1655
2788
  <li class="md-nav__item">
1656
- <a href="../core-functionality/vlans.html" class="md-nav__link">
1657
- VLAN Management
2789
+ <a href="../models/virtualization/vminterface.html" class="md-nav__link">
2790
+ VM Interface
1658
2791
  </a>
1659
2792
  </li>
1660
2793
 
@@ -1668,6 +2801,13 @@
1668
2801
 
1669
2802
 
1670
2803
 
2804
+ </ul>
2805
+ </nav>
2806
+ </li>
2807
+
2808
+
2809
+
2810
+
1671
2811
 
1672
2812
 
1673
2813
 
@@ -1679,17 +2819,17 @@
1679
2819
 
1680
2820
 
1681
2821
 
1682
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_8" >
2822
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_9" >
1683
2823
 
1684
2824
 
1685
2825
 
1686
- <label class="md-nav__link" for="__nav_2_8" id="__nav_2_8_label" tabindex="0">
2826
+ <label class="md-nav__link" for="__nav_2_9" id="__nav_2_9_label" tabindex="0">
1687
2827
  Additional Features
1688
2828
  <span class="md-nav__icon md-icon"></span>
1689
2829
  </label>
1690
2830
 
1691
- <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_8_label" aria-expanded="false">
1692
- <label class="md-nav__title" for="__nav_2_8">
2831
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_9_label" aria-expanded="false">
2832
+ <label class="md-nav__title" for="__nav_2_9">
1693
2833
  <span class="md-nav__icon md-icon"></span>
1694
2834
  Additional Features
1695
2835
  </label>
@@ -2021,17 +3161,17 @@
2021
3161
 
2022
3162
 
2023
3163
 
2024
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_9" >
3164
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_10" >
2025
3165
 
2026
3166
 
2027
3167
 
2028
- <label class="md-nav__link" for="__nav_2_9" id="__nav_2_9_label" tabindex="0">
3168
+ <label class="md-nav__link" for="__nav_2_10" id="__nav_2_10_label" tabindex="0">
2029
3169
  REST API
2030
3170
  <span class="md-nav__icon md-icon"></span>
2031
3171
  </label>
2032
3172
 
2033
- <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_9_label" aria-expanded="false">
2034
- <label class="md-nav__title" for="__nav_2_9">
3173
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_10_label" aria-expanded="false">
3174
+ <label class="md-nav__title" for="__nav_2_10">
2035
3175
  <span class="md-nav__icon md-icon"></span>
2036
3176
  REST API
2037
3177
  </label>
@@ -2079,6 +3219,20 @@
2079
3219
 
2080
3220
 
2081
3221
 
3222
+
3223
+
3224
+
3225
+
3226
+
3227
+ <li class="md-nav__item">
3228
+ <a href="../rest-api/ui-related-endpoints.html" class="md-nav__link">
3229
+ UI Endpoints
3230
+ </a>
3231
+ </li>
3232
+
3233
+
3234
+
3235
+
2082
3236
  </ul>
2083
3237
  </nav>
2084
3238
  </li>
@@ -2097,17 +3251,17 @@
2097
3251
 
2098
3252
 
2099
3253
 
2100
- <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_10" >
3254
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_11" >
2101
3255
 
2102
3256
 
2103
3257
 
2104
- <label class="md-nav__link" for="__nav_2_10" id="__nav_2_10_label" tabindex="0">
3258
+ <label class="md-nav__link" for="__nav_2_11" id="__nav_2_11_label" tabindex="0">
2105
3259
  GraphQL API
2106
3260
  <span class="md-nav__icon md-icon"></span>
2107
3261
  </label>
2108
3262
 
2109
- <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_10_label" aria-expanded="false">
2110
- <label class="md-nav__title" for="__nav_2_10">
3263
+ <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_11_label" aria-expanded="false">
3264
+ <label class="md-nav__title" for="__nav_2_11">
2111
3265
  <span class="md-nav__icon md-icon"></span>
2112
3266
  GraphQL API
2113
3267
  </label>
@@ -3181,13 +4335,6 @@
3181
4335
  <nav class="md-nav" aria-label="Display name">
3182
4336
  <ul class="md-nav__list">
3183
4337
 
3184
- <li class="md-nav__item">
3185
- <a href="#csv-imports" class="md-nav__link">
3186
- CSV Imports
3187
- </a>
3188
-
3189
- </li>
3190
-
3191
4338
  <li class="md-nav__item">
3192
4339
  <a href="#default-choices" class="md-nav__link">
3193
4340
  Default Choices
@@ -3266,15 +4413,8 @@
3266
4413
  </li>
3267
4414
 
3268
4415
  <li class="md-nav__item">
3269
- <a href="#ipaddress-prefix_length-contains-the-prefix-length" class="md-nav__link">
3270
- IPAddress prefix_length contains the prefix length
3271
- </a>
3272
-
3273
- </li>
3274
-
3275
- <li class="md-nav__item">
3276
- <a href="#ipaddress-broadcast-contains-the-broadcast-address" class="md-nav__link">
3277
- IPAddress broadcast contains the broadcast address
4416
+ <a href="#ipaddress-mask_length-contains-the-prefix-length" class="md-nav__link">
4417
+ IPAddress mask_length contains the prefix length
3278
4418
  </a>
3279
4419
 
3280
4420
  </li>
@@ -3455,22 +4595,11 @@
3455
4595
  <h2 id="data-model-changes">Data Model Changes<a class="headerlink" href="#data-model-changes" title="Permanent link">&para;</a></h2>
3456
4596
  <p>The following backwards-incompatible changes have been made to the data model in Nautobot.</p>
3457
4597
  <h3 id="status-fields">Status Fields<a class="headerlink" href="#status-fields" title="Permanent link">&para;</a></h3>
3458
- <div class="admonition tip">
3459
- <p class="admonition-title">Tip</p>
3460
- <p>Status names are now lower-cased when setting the <code>status</code> field on CSV imports. The <code>slug</code> value is used for create/update of objects and for filtering in the API.</p>
3461
- </div>
3462
- <p>A new <a href="../models/extras/status.html"><code>Status</code></a> model has been added to represent the <code>status</code> field for many models. Each status has a human-readable <code>name</code> field (e.g. <code>Active</code>), and a <code>slug</code> field (e.g. <code>active</code>).</p>
4598
+ <p>A new <a href="../models/extras/status.html"><code>Status</code></a> model has been added to represent the <code>status</code> field for many models. Each status has a human-readable <code>name</code> field (e.g. <code>Active</code>), a <code>color</code>, a <code>description</code>, and a set of <code>content_types</code> that it can be applied to (for example, <code>Device</code> and <code>Location</code>).</p>
3463
4599
  <h3 id="display-name">Display name<a class="headerlink" href="#display-name" title="Permanent link">&para;</a></h3>
3464
4600
  <p>Several models such as device type and VLAN exposed a <code>display_name</code> property, which has now been renamed to <code>display</code>. In fact, there are several other instances, especially in the REST API, where the <code>display_name</code> field was used and as such, all instances have been renamed to <code>display</code>.</p>
3465
- <h4 id="csv-imports">CSV Imports<a class="headerlink" href="#csv-imports" title="Permanent link">&para;</a></h4>
3466
- <p>When using CSV import to define a <code>status</code> field on imported objects, such as when importing Devices or Prefixes, the <code>Status.slug</code> field is used.</p>
3467
- <p>For example, the built-in <strong>Active</strong> status has a slug of <code>active</code>, so the <code>active</code> value would be used for import.</p>
3468
4601
  <h4 id="default-choices">Default Choices<a class="headerlink" href="#default-choices" title="Permanent link">&para;</a></h4>
3469
4602
  <p>Because <code>status</code> fields are now stored in the database, they cannot have a default value, just like other similar objects like Device Roles or Device Types. In cases where <code>status</code> was not required to be set because it would use the default value, you must now provide a <code>status</code> yourself. </p>
3470
- <div class="admonition note">
3471
- <p class="admonition-title">Note</p>
3472
- <p>For consistency in the API, the <code>slug</code> value of a <code>status</code> is used when creating or updating an object.</p>
3473
- </div>
3474
4603
  <h4 id="choices-in-code">Choices in Code<a class="headerlink" href="#choices-in-code" title="Permanent link">&para;</a></h4>
3475
4604
  <p>All <code>*StatusChoices</code> enums used for populated <code>status</code> field choices (such as <code>nautobot.dcim.choices.DeviceStatusChoices</code>) are deprecated. Any code you have that is leveraging these will now result in an error when performing lookups on objects with <code>status</code> fields.</p>
3476
4605
  <p>Anywhere you have code like this:</p>
@@ -3512,10 +4641,10 @@
3512
4641
  <h4 id="technical-details">Technical Details<a class="headerlink" href="#technical-details" title="Permanent link">&para;</a></h4>
3513
4642
  <p>Below is a summary of the underlying technical changes to network fields. These will be explained in more detail in the following sections.</p>
3514
4643
  <ul>
3515
- <li>For <code>IPAddress</code>, the <code>address</code> field was exploded out to <code>host</code>, <code>broadcast</code>, and <code>prefix_length</code> fields; <code>address</code> was converted into a computed field.</li>
4644
+ <li>For <code>IPAddress</code>, the <code>address</code> field was exploded out to <code>host</code> and <code>mask_length</code> fields; <code>address</code> was converted into a computed field.</li>
3516
4645
  <li>For <code>Prefix</code> objects, the <code>prefix</code> field was exploded out to <code>network</code>, <code>broadcast</code>, and <code>prefix_length</code> fields; <code>prefix</code> was converted into a computed field.</li>
3517
4646
  <li>The <code>host</code>, <code>network</code>, and <code>broadcast</code> fields are now of a <code>varbinary</code> database type, which is represented as a packed binary integer (for example, the host <code>1.1.1.1</code> is packed as <code>b"\x01\x01\x01\x01"</code>)</li>
3518
- <li>Network membership queries are accomplished by triangulating the "position" of an address using the IP, broadcast, and prefix length of the source and target addresses.</li>
4647
+ <li>Network membership queries are accomplished by triangulating the "position" of an address using the <code>host</code> of the <code>IPAddress</code> and the <code>network</code> and <code>broadcast</code> of the <code>Prefix</code>.</li>
3519
4648
  </ul>
3520
4649
  <div class="admonition note">
3521
4650
  <p class="admonition-title">Note</p>
@@ -3524,7 +4653,7 @@
3524
4653
  <h4 id="changes-to-ipaddress">Changes to <code>IPAddress</code><a class="headerlink" href="#changes-to-ipaddress" title="Permanent link">&para;</a></h4>
3525
4654
  <p>The following fields have changed when working with <code>ipam.IPAddress</code> objects:</p>
3526
4655
  <h5 id="address-is-now-a-computed-field"><code>address</code> is now a computed field<a class="headerlink" href="#address-is-now-a-computed-field" title="Permanent link">&para;</a></h5>
3527
- <p>This field is computed from <code>{host}/{prefix_length}</code> and is represented as a <code>netaddr.IPNetwork</code> object.</p>
4656
+ <p>This field is computed from <code>{host}/{mask_length}</code> and is represented as a <code>netaddr.IPNetwork</code> object.</p>
3528
4657
  <div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">ip</span> <span class="o">=</span> <span class="n">IPAddress</span><span class="p">(</span><span class="n">address</span><span class="o">=</span><span class="s2">&quot;1.1.1.1/30&quot;</span><span class="p">)</span>
3529
4658
  <a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">ip</span><span class="o">.</span><span class="n">address</span>
3530
4659
  <a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a><span class="n">IPNetwork</span><span class="p">(</span><span class="s1">&#39;1.1.1.1/30&#39;</span><span class="p">)</span>
@@ -3541,7 +4670,7 @@
3541
4670
  </code></pre></div>
3542
4671
  <div class="admonition note">
3543
4672
  <p class="admonition-title">Note</p>
3544
- <p>If you use a <code>prefix_length</code> other than <code>/32</code> (IPv4) or <code>/128</code> (IPv6) it <strong>must</strong> be included in your lookups</p>
4673
+ <p>If you use a <code>mask_length</code> other than <code>/32</code> (IPv4) or <code>/128</code> (IPv6) it <strong>must</strong> be included in your lookups</p>
3545
4674
  </div>
3546
4675
  <p>This field <em>cannot be used in </em><em>nested</em><em> filter expressions</em>:</p>
3547
4676
  <div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">Device</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">primary_ip4__address</span><span class="o">=</span><span class="s2">&quot;1.1.1.1&quot;</span><span class="p">)</span>
@@ -3555,33 +4684,20 @@
3555
4684
  <p>This field <em>can</em> be used in nested filter expressions, for example:</p>
3556
4685
  <div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">Device</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">primary_ip4__host</span><span class="o">=</span><span class="s2">&quot;1.1.1.1&quot;</span><span class="p">)</span>
3557
4686
  </code></pre></div>
3558
- <h5 id="ipaddress-prefix_length-contains-the-prefix-length">IPAddress <code>prefix_length</code> contains the prefix length<a class="headerlink" href="#ipaddress-prefix_length-contains-the-prefix-length" title="Permanent link">&para;</a></h5>
4687
+ <h5 id="ipaddress-mask_length-contains-the-prefix-length">IPAddress <code>mask_length</code> contains the prefix length<a class="headerlink" href="#ipaddress-mask_length-contains-the-prefix-length" title="Permanent link">&para;</a></h5>
3559
4688
  <p>This is an integer, such as <code>30</code> for <code>/30</code>.</p>
3560
- <div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">ip</span><span class="o">.</span><span class="n">prefix_length</span>
4689
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">ip</span><span class="o">.</span><span class="n">mask_length</span>
3561
4690
  <a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="mi">30</span>
3562
4691
  </code></pre></div>
3563
- <p>For IP addresses with a prefix length other than a host prefix, you will need to filter using <code>host</code> and <code>prefix_length</code> fields for greater accuracy.</p>
3564
- <p>For example, if you have multiple <code>IPAddress</code> objects with the same <code>host</code> value but different <code>prefix_length</code>:</p>
4692
+ <p>For IP addresses with a mask length other than a host prefix, you will need to filter using <code>host</code> and <code>mask_length</code> fields for greater accuracy.</p>
4693
+ <p>For example, if you have multiple <code>IPAddress</code> objects with the same <code>host</code> value but different <code>mask_length</code>:</p>
3565
4694
  <div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">IPAddress</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">address</span><span class="o">=</span><span class="s2">&quot;1.1.1.1/32&quot;</span><span class="p">)</span>
3566
4695
  <a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a><span class="o">&lt;</span><span class="n">IPAddress</span><span class="p">:</span> <span class="mf">1.1.1.1</span><span class="o">/</span><span class="mi">32</span><span class="o">&gt;</span>
3567
4696
  <a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">IPAddress</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">host</span><span class="o">=</span><span class="s2">&quot;1.1.1.1&quot;</span><span class="p">)</span>
3568
4697
  <a id="__codelineno-11-4" name="__codelineno-11-4" href="#__codelineno-11-4"></a><span class="o">&lt;</span><span class="n">IPAddressQuerySet</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">IPAddress</span><span class="p">:</span> <span class="mf">1.1.1.1</span><span class="o">/</span><span class="mi">30</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">&lt;</span><span class="n">IPAddress</span><span class="p">:</span> <span class="mf">1.1.1.1</span><span class="o">/</span><span class="mi">32</span><span class="o">&gt;</span><span class="p">]</span><span class="o">&gt;</span>
3569
- <a id="__codelineno-11-5" name="__codelineno-11-5" href="#__codelineno-11-5"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">IPAddress</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">host</span><span class="o">=</span><span class="s2">&quot;1.1.1.1&quot;</span><span class="p">,</span> <span class="n">prefix_length</span><span class="o">=</span><span class="mi">30</span><span class="p">)</span>
4698
+ <a id="__codelineno-11-5" name="__codelineno-11-5" href="#__codelineno-11-5"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">IPAddress</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">host</span><span class="o">=</span><span class="s2">&quot;1.1.1.1&quot;</span><span class="p">,</span> <span class="n">mask_length</span><span class="o">=</span><span class="mi">30</span><span class="p">)</span>
3570
4699
  <a id="__codelineno-11-6" name="__codelineno-11-6" href="#__codelineno-11-6"></a><span class="o">&lt;</span><span class="n">IPAddressQuerySet</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">IPAddress</span><span class="p">:</span> <span class="mf">1.1.1.1</span><span class="o">/</span><span class="mi">30</span><span class="o">&gt;</span><span class="p">]</span><span class="o">&gt;</span>
3571
4700
  </code></pre></div>
3572
- <h5 id="ipaddress-broadcast-contains-the-broadcast-address">IPAddress <code>broadcast</code> contains the broadcast address<a class="headerlink" href="#ipaddress-broadcast-contains-the-broadcast-address" title="Permanent link">&para;</a></h5>
3573
- <p>If the prefix length is that of a host prefix (e.g. <code>/32</code>), <code>broadcast</code> will be the same as the <code>host</code> :</p>
3574
- <div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">IPAddress</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">address</span><span class="o">=</span><span class="s2">&quot;1.1.1.1/32&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">broadcast</span>
3575
- <a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a><span class="s1">&#39;1.1.1.1&#39;</span>
3576
- </code></pre></div>
3577
- <p>If the prefix length is any larger (e.g. <code>/24</code>), <code>broadcast</code> will be that of the containing network for that prefix length (e.g. <code>1.1.1.255</code>):</p>
3578
- <div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">IPAddress</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">address</span><span class="o">=</span><span class="s2">&quot;1.1.1.1/24&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">broadcast</span>
3579
- <a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a><span class="s1">&#39;1.1.1.255&#39;</span>
3580
- </code></pre></div>
3581
- <div class="admonition note">
3582
- <p class="admonition-title">Note</p>
3583
- <p>This field is largely for internal use only for facilitating network membership queries and it is not recommend that you use it for filtering.</p>
3584
- </div>
3585
4701
  <h4 id="changes-to-aggregate-and-prefix">Changes to <code>Aggregate</code> and <code>Prefix</code><a class="headerlink" href="#changes-to-aggregate-and-prefix" title="Permanent link">&para;</a></h4>
3586
4702
  <p>The following fields have changed when working with <code>ipam.Aggregate</code> and <code>ipam.Prefix</code> objects.</p>
3587
4703
  <h5 id="aggregate-model-merged-into-prefix"><code>Aggregate</code> model merged into <code>Prefix</code><a class="headerlink" href="#aggregate-model-merged-into-prefix" title="Permanent link">&para;</a></h5>
@@ -3590,37 +4706,37 @@
3590
4706
  <p>This field is computed from <code>{network}/{prefix_length}</code> and is represented as a <code>netaddr.IPNetwork</code> object.</p>
3591
4707
  <p>While this field is now a virtual field, it can still be used in many ways.</p>
3592
4708
  <p>It can be used to create objects:</p>
3593
- <div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">net</span> <span class="o">=</span> <span class="n">Prefix</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">prefix</span><span class="o">=</span><span class="s2">&quot;1.1.1.0/24&quot;</span><span class="p">)</span>
4709
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">net</span> <span class="o">=</span> <span class="n">Prefix</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">prefix</span><span class="o">=</span><span class="s2">&quot;1.1.1.0/24&quot;</span><span class="p">)</span>
3594
4710
  </code></pre></div>
3595
4711
  <p>It can be used in <code>.get()</code> and <code>.filter()</code> lookups where <code>prefix</code> is the primary argument:</p>
3596
- <div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">Prefix</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">prefix</span><span class="o">=</span><span class="s2">&quot;1.1.1.0/24&quot;</span><span class="p">)</span>
3597
- <a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a><span class="o">&lt;</span><span class="n">Prefix</span><span class="p">:</span> <span class="mf">1.1.1.0</span><span class="o">/</span><span class="mi">24</span><span class="o">&gt;</span>
3598
- <a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">Prefix</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">prefix</span><span class="o">=</span><span class="s2">&quot;1.1.1.0/24&quot;</span><span class="p">)</span>
3599
- <a id="__codelineno-15-4" name="__codelineno-15-4" href="#__codelineno-15-4"></a><span class="o">&lt;</span><span class="n">PrefixQuerySet</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">Prefix</span><span class="p">:</span> <span class="mf">1.1.1.0</span><span class="o">/</span><span class="mi">24</span><span class="o">&gt;</span><span class="p">]</span><span class="o">&gt;</span>
4712
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">Prefix</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">prefix</span><span class="o">=</span><span class="s2">&quot;1.1.1.0/24&quot;</span><span class="p">)</span>
4713
+ <a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a><span class="o">&lt;</span><span class="n">Prefix</span><span class="p">:</span> <span class="mf">1.1.1.0</span><span class="o">/</span><span class="mi">24</span><span class="o">&gt;</span>
4714
+ <a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">Prefix</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">prefix</span><span class="o">=</span><span class="s2">&quot;1.1.1.0/24&quot;</span><span class="p">)</span>
4715
+ <a id="__codelineno-13-4" name="__codelineno-13-4" href="#__codelineno-13-4"></a><span class="o">&lt;</span><span class="n">PrefixQuerySet</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">Prefix</span><span class="p">:</span> <span class="mf">1.1.1.0</span><span class="o">/</span><span class="mi">24</span><span class="o">&gt;</span><span class="p">]</span><span class="o">&gt;</span>
3600
4716
  </code></pre></div>
3601
4717
  <h5 id="network-contains-the-network-address"><code>network</code> contains the network address<a class="headerlink" href="#network-contains-the-network-address" title="Permanent link">&para;</a></h5>
3602
4718
  <p>The network component of the address is now stored in the <code>network</code> field.</p>
3603
- <div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">net</span><span class="o">.</span><span class="n">network</span>
3604
- <a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a><span class="s1">&#39;1.1.1.0&#39;</span>
4719
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">net</span><span class="o">.</span><span class="n">network</span>
4720
+ <a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a><span class="s1">&#39;1.1.1.0&#39;</span>
3605
4721
  </code></pre></div>
3606
4722
  <h5 id="prefix-prefix_length-contains-the-prefix-length">Prefix <code>prefix_length</code> contains the prefix length<a class="headerlink" href="#prefix-prefix_length-contains-the-prefix-length" title="Permanent link">&para;</a></h5>
3607
4723
  <p>This is an integer, such as <code>24</code> for <code>/24</code>.</p>
3608
- <div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">net</span><span class="o">.</span><span class="n">prefix_length</span>
3609
- <a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a><span class="mi">24</span>
4724
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">net</span><span class="o">.</span><span class="n">prefix_length</span>
4725
+ <a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a><span class="mi">24</span>
3610
4726
  </code></pre></div>
3611
4727
  <p>It's highly likely that you will have multiple objects with the same <code>network</code> address but varying prefix lengths, so you will need to filter using <code>network</code> and <code>prefix_length</code> fields for greater accuracy.</p>
3612
4728
  <p>For example, if you have multiple <code>Prefix</code> objects with the same <code>network</code> value but different <code>prefix_length</code>:</p>
3613
- <div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">Prefix</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">prefix</span><span class="o">=</span><span class="s2">&quot;1.1.1.0/25&quot;</span><span class="p">)</span>
3614
- <a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a><span class="o">&lt;</span><span class="n">Prefix</span><span class="p">:</span> <span class="mf">1.1.1.0</span><span class="o">/</span><span class="mi">25</span><span class="o">&gt;</span>
3615
- <a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">Prefix</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">network</span><span class="o">=</span><span class="s2">&quot;1.1.1.0&quot;</span><span class="p">)</span>
3616
- <a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a><span class="o">&lt;</span><span class="n">PrefixQuerySet</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">Prefix</span><span class="p">:</span> <span class="mf">1.1.1.0</span><span class="o">/</span><span class="mi">24</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">&lt;</span><span class="n">Prefix</span><span class="p">:</span> <span class="mf">1.1.1.0</span><span class="o">/</span><span class="mi">25</span><span class="o">&gt;</span><span class="p">]</span><span class="o">&gt;</span>
3617
- <a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">Prefix</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">network</span><span class="o">=</span><span class="s2">&quot;1.1.1.0&quot;</span><span class="p">,</span> <span class="n">prefix_length</span><span class="o">=</span><span class="mi">25</span><span class="p">)</span>
3618
- <a id="__codelineno-18-6" name="__codelineno-18-6" href="#__codelineno-18-6"></a><span class="o">&lt;</span><span class="n">PrefixQuerySet</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">Prefix</span><span class="p">:</span> <span class="mf">1.1.1.0</span><span class="o">/</span><span class="mi">25</span><span class="o">&gt;</span><span class="p">]</span><span class="o">&gt;</span>
4729
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">Prefix</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">prefix</span><span class="o">=</span><span class="s2">&quot;1.1.1.0/25&quot;</span><span class="p">)</span>
4730
+ <a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a><span class="o">&lt;</span><span class="n">Prefix</span><span class="p">:</span> <span class="mf">1.1.1.0</span><span class="o">/</span><span class="mi">25</span><span class="o">&gt;</span>
4731
+ <a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">Prefix</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">network</span><span class="o">=</span><span class="s2">&quot;1.1.1.0&quot;</span><span class="p">)</span>
4732
+ <a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a><span class="o">&lt;</span><span class="n">PrefixQuerySet</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">Prefix</span><span class="p">:</span> <span class="mf">1.1.1.0</span><span class="o">/</span><span class="mi">24</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">&lt;</span><span class="n">Prefix</span><span class="p">:</span> <span class="mf">1.1.1.0</span><span class="o">/</span><span class="mi">25</span><span class="o">&gt;</span><span class="p">]</span><span class="o">&gt;</span>
4733
+ <a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">Prefix</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">network</span><span class="o">=</span><span class="s2">&quot;1.1.1.0&quot;</span><span class="p">,</span> <span class="n">prefix_length</span><span class="o">=</span><span class="mi">25</span><span class="p">)</span>
4734
+ <a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a><span class="o">&lt;</span><span class="n">PrefixQuerySet</span> <span class="p">[</span><span class="o">&lt;</span><span class="n">Prefix</span><span class="p">:</span> <span class="mf">1.1.1.0</span><span class="o">/</span><span class="mi">25</span><span class="o">&gt;</span><span class="p">]</span><span class="o">&gt;</span>
3619
4735
  </code></pre></div>
3620
4736
  <h5 id="prefix-broadcast-contains-the-broadcast-address">Prefix <code>broadcast</code> contains the broadcast address<a class="headerlink" href="#prefix-broadcast-contains-the-broadcast-address" title="Permanent link">&para;</a></h5>
3621
4737
  <p>The <code>broadcast</code> will be derived from the <code>prefix_length</code> and will be that of the last network address for that prefix length (e.g. <code>1.1.1.255</code>):</p>
3622
- <div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">Prefix</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">prefix</span><span class="o">=</span><span class="s2">&quot;1.1.1.0/24&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">broadcast</span>
3623
- <a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a><span class="s1">&#39;1.1.1.255&#39;</span>
4738
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a><span class="o">&gt;&gt;&gt;</span> <span class="n">Prefix</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">prefix</span><span class="o">=</span><span class="s2">&quot;1.1.1.0/24&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">broadcast</span>
4739
+ <a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a><span class="s1">&#39;1.1.1.255&#39;</span>
3624
4740
  </code></pre></div>
3625
4741
  <div class="admonition note">
3626
4742
  <p class="admonition-title">Note</p>
@@ -3640,14 +4756,14 @@
3640
4756
  <p>The NetBox filter net_mask_length should use the <code>prefix_length</code> field for filtering.</p>
3641
4757
  </div>
3642
4758
  <p>NetBox:</p>
3643
- <div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a><span class="n">IPAddress</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">address__net_mask_length</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
3644
- <a id="__codelineno-20-2" name="__codelineno-20-2" href="#__codelineno-20-2"></a><span class="c1"># or</span>
3645
- <a id="__codelineno-20-3" name="__codelineno-20-3" href="#__codelineno-20-3"></a><span class="n">Prefix</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">prefix__net_mask_length</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
4759
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a><span class="n">IPAddress</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">address__net_mask_length</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
4760
+ <a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a><span class="c1"># or</span>
4761
+ <a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a><span class="n">Prefix</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">prefix__net_mask_length</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
3646
4762
  </code></pre></div>
3647
4763
  <p>Nautobot:</p>
3648
- <div class="highlight"><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a><span class="n">IPAddress</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">prefix_length</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
3649
- <a id="__codelineno-21-2" name="__codelineno-21-2" href="#__codelineno-21-2"></a><span class="c1"># or</span>
3650
- <a id="__codelineno-21-3" name="__codelineno-21-3" href="#__codelineno-21-3"></a><span class="n">Prefix</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">prefix_length</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
4764
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a><span class="n">IPAddress</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">mask_length</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
4765
+ <a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a><span class="c1"># or</span>
4766
+ <a id="__codelineno-19-3" name="__codelineno-19-3" href="#__codelineno-19-3"></a><span class="n">Prefix</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">prefix_length</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
3651
4767
  </code></pre></div>
3652
4768
  <h2 id="rest-api-changes">REST API Changes<a class="headerlink" href="#rest-api-changes" title="Permanent link">&para;</a></h2>
3653
4769
  <p>The following backwards-incompatible changes have been made to the REST API in Nautobot.</p>