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

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

Potentially problematic release.


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

Files changed (592) hide show
  1. nautobot/apps/__init__.py +1 -1
  2. nautobot/apps/api.py +8 -8
  3. nautobot/apps/change_logging.py +2 -2
  4. nautobot/apps/choices.py +4 -4
  5. nautobot/apps/events.py +3 -3
  6. nautobot/apps/factory.py +2 -2
  7. nautobot/apps/filters.py +1 -1
  8. nautobot/apps/forms.py +20 -20
  9. nautobot/apps/graphql.py +2 -2
  10. nautobot/apps/jobs.py +8 -8
  11. nautobot/apps/models.py +19 -19
  12. nautobot/apps/tables.py +1 -1
  13. nautobot/apps/testing.py +10 -10
  14. nautobot/apps/ui.py +2 -2
  15. nautobot/apps/utils.py +7 -7
  16. nautobot/apps/views.py +7 -7
  17. nautobot/circuits/api/serializers.py +0 -1
  18. nautobot/circuits/api/views.py +8 -4
  19. nautobot/circuits/tables.py +1 -2
  20. nautobot/circuits/templates/circuits/circuit_create.html +7 -1
  21. nautobot/circuits/views.py +3 -3
  22. nautobot/cloud/api/views.py +10 -6
  23. nautobot/cloud/models.py +1 -1
  24. nautobot/cloud/views.py +16 -0
  25. nautobot/core/api/fields.py +5 -5
  26. nautobot/core/api/filter_backends.py +9 -3
  27. nautobot/core/api/schema.py +2 -13
  28. nautobot/core/api/serializers.py +34 -40
  29. nautobot/core/api/views.py +4 -56
  30. nautobot/core/celery/log.py +4 -4
  31. nautobot/core/celery/schedulers.py +1 -1
  32. nautobot/core/choices.py +2 -2
  33. nautobot/core/events/__init__.py +3 -3
  34. nautobot/core/filters.py +16 -21
  35. nautobot/core/fixtures/user-data.json +59 -0
  36. nautobot/core/forms/__init__.py +19 -19
  37. nautobot/core/forms/fields.py +11 -14
  38. nautobot/core/forms/forms.py +2 -33
  39. nautobot/core/graphql/types.py +1 -1
  40. nautobot/core/jobs/__init__.py +7 -28
  41. nautobot/core/jobs/cleanup.py +12 -48
  42. nautobot/core/jobs/groups.py +1 -1
  43. nautobot/core/management/commands/validate_models.py +1 -1
  44. nautobot/core/models/__init__.py +1 -1
  45. nautobot/core/models/query_functions.py +2 -2
  46. nautobot/core/models/tree_queries.py +3 -6
  47. nautobot/core/settings.py +2 -29
  48. nautobot/core/settings.yaml +0 -21
  49. nautobot/core/tables.py +60 -74
  50. nautobot/core/templates/inc/media.html +0 -3
  51. nautobot/core/templates/inc/nav_menu.html +0 -1
  52. nautobot/core/templates/nautobot_config.py.j2 +0 -13
  53. nautobot/core/templates/search.html +0 -7
  54. nautobot/core/templates/utilities/render_jinja2.html +1 -1
  55. nautobot/core/templates/utilities/templatetags/tag.html +1 -1
  56. nautobot/core/templates/utilities/theme_preview.html +0 -7
  57. nautobot/core/templatetags/helpers.py +2 -11
  58. nautobot/core/testing/__init__.py +8 -8
  59. nautobot/core/testing/api.py +15 -170
  60. nautobot/core/testing/filters.py +2 -25
  61. nautobot/core/testing/forms.py +0 -2
  62. nautobot/core/testing/mixins.py +2 -7
  63. nautobot/core/testing/views.py +29 -44
  64. nautobot/core/tests/integration/test_app_home.py +1 -0
  65. nautobot/core/tests/integration/test_app_navbar.py +1 -0
  66. nautobot/core/tests/integration/test_filters.py +2 -0
  67. nautobot/core/tests/integration/test_home.py +1 -0
  68. nautobot/core/tests/integration/test_navbar.py +1 -0
  69. nautobot/core/tests/integration/test_view_authentication.py +0 -1
  70. nautobot/core/tests/runner.py +1 -1
  71. nautobot/core/tests/test_api.py +1 -98
  72. nautobot/core/tests/test_csv.py +3 -25
  73. nautobot/core/tests/test_forms.py +0 -1
  74. nautobot/core/tests/test_jobs.py +1 -303
  75. nautobot/core/tests/test_settings_schema.py +0 -7
  76. nautobot/core/tests/test_tables.py +0 -100
  77. nautobot/core/tests/test_utils.py +1 -63
  78. nautobot/core/tests/test_views.py +3 -30
  79. nautobot/core/ui/nav.py +0 -1
  80. nautobot/core/ui/object_detail.py +1 -15
  81. nautobot/core/urls.py +0 -11
  82. nautobot/core/utils/lookup.py +8 -11
  83. nautobot/core/utils/requests.py +9 -24
  84. nautobot/core/views/__init__.py +0 -42
  85. nautobot/core/views/generic.py +176 -78
  86. nautobot/core/views/mixins.py +34 -94
  87. nautobot/core/views/renderers.py +6 -6
  88. nautobot/dcim/api/serializers.py +62 -54
  89. nautobot/dcim/api/views.py +113 -47
  90. nautobot/dcim/filters/__init__.py +2 -31
  91. nautobot/dcim/forms.py +17 -36
  92. nautobot/dcim/graphql/types.py +2 -2
  93. nautobot/dcim/models/__init__.py +1 -1
  94. nautobot/dcim/models/device_component_templates.py +2 -2
  95. nautobot/dcim/models/device_components.py +20 -22
  96. nautobot/dcim/models/devices.py +1 -10
  97. nautobot/dcim/models/locations.py +3 -3
  98. nautobot/dcim/models/power.py +5 -6
  99. nautobot/dcim/models/racks.py +4 -4
  100. nautobot/dcim/tables/__init__.py +3 -3
  101. nautobot/dcim/tables/devices.py +5 -7
  102. nautobot/dcim/tables/devicetypes.py +2 -2
  103. nautobot/dcim/tables/racks.py +1 -1
  104. nautobot/dcim/templates/dcim/controller_create.html +7 -1
  105. nautobot/dcim/templates/dcim/controller_retrieve.html +9 -1
  106. nautobot/dcim/templates/dcim/controllermanageddevicegroup_create.html +0 -2
  107. nautobot/dcim/templates/dcim/controllermanageddevicegroup_retrieve.html +0 -5
  108. nautobot/dcim/templates/dcim/device.html +9 -1
  109. nautobot/dcim/templates/dcim/device_edit.html +37 -36
  110. nautobot/dcim/templates/dcim/location.html +9 -1
  111. nautobot/dcim/templates/dcim/location_edit.html +7 -1
  112. nautobot/dcim/templates/dcim/rack.html +9 -1
  113. nautobot/dcim/templates/dcim/rack_edit.html +7 -1
  114. nautobot/dcim/templates/dcim/rackreservation.html +9 -1
  115. nautobot/dcim/templates/dcim/virtualdevicecontext_retrieve.html +9 -1
  116. nautobot/dcim/templates/dcim/virtualdevicecontext_update.html +7 -1
  117. nautobot/dcim/tests/test_api.py +3 -16
  118. nautobot/dcim/tests/test_filters.py +0 -33
  119. nautobot/dcim/tests/test_forms.py +2 -51
  120. nautobot/dcim/tests/test_graphql.py +0 -52
  121. nautobot/dcim/tests/test_models.py +5 -34
  122. nautobot/dcim/tests/test_views.py +83 -21
  123. nautobot/dcim/views.py +13 -1
  124. nautobot/extras/api/customfields.py +2 -2
  125. nautobot/extras/api/serializers.py +85 -90
  126. nautobot/extras/api/views.py +27 -22
  127. nautobot/extras/constants.py +0 -2
  128. nautobot/extras/filters/__init__.py +6 -8
  129. nautobot/extras/forms/base.py +2 -2
  130. nautobot/extras/forms/forms.py +31 -139
  131. nautobot/extras/forms/mixins.py +5 -13
  132. nautobot/extras/group_sync.py +3 -3
  133. nautobot/extras/health_checks.py +2 -1
  134. nautobot/extras/jobs.py +12 -70
  135. nautobot/extras/managers.py +1 -3
  136. nautobot/extras/migrations/0018_joblog_data_migration.py +9 -7
  137. nautobot/extras/models/__init__.py +1 -1
  138. nautobot/extras/models/contacts.py +1 -1
  139. nautobot/extras/models/customfields.py +11 -12
  140. nautobot/extras/models/groups.py +9 -11
  141. nautobot/extras/models/jobs.py +4 -23
  142. nautobot/extras/models/models.py +2 -2
  143. nautobot/extras/plugins/__init__.py +2 -13
  144. nautobot/extras/plugins/marketplace_manifest.yml +79 -84
  145. nautobot/extras/plugins/tables.py +14 -16
  146. nautobot/extras/plugins/views.py +69 -65
  147. nautobot/extras/registry.py +1 -1
  148. nautobot/extras/secrets/__init__.py +2 -2
  149. nautobot/extras/tables.py +5 -7
  150. nautobot/extras/templates/extras/dynamicgroup.html +9 -1
  151. nautobot/extras/templates/extras/job_detail.html +0 -16
  152. nautobot/extras/templates/extras/job_edit.html +0 -1
  153. nautobot/extras/templates/extras/jobqueue_retrieve.html +9 -1
  154. nautobot/extras/templates/extras/marketplace.html +11 -29
  155. nautobot/extras/templates/extras/plugin_detail.html +15 -32
  156. nautobot/extras/templates/extras/plugins_tiles.html +10 -21
  157. nautobot/extras/test_jobs/api_test_job.py +1 -1
  158. nautobot/extras/test_jobs/atomic_transaction.py +2 -2
  159. nautobot/extras/test_jobs/dry_run.py +1 -1
  160. nautobot/extras/test_jobs/fail.py +5 -5
  161. nautobot/extras/test_jobs/file_output.py +1 -1
  162. nautobot/extras/test_jobs/file_upload_fail.py +1 -1
  163. nautobot/extras/test_jobs/file_upload_pass.py +1 -1
  164. nautobot/extras/test_jobs/ipaddress_vars.py +1 -3
  165. nautobot/extras/test_jobs/jobs_module/jobs_submodule/jobs.py +1 -1
  166. nautobot/extras/test_jobs/location_with_custom_field.py +1 -1
  167. nautobot/extras/test_jobs/log_redaction.py +1 -1
  168. nautobot/extras/test_jobs/log_skip_db_logging.py +1 -1
  169. nautobot/extras/test_jobs/modify_db.py +1 -1
  170. nautobot/extras/test_jobs/object_var_optional.py +1 -1
  171. nautobot/extras/test_jobs/object_var_required.py +1 -1
  172. nautobot/extras/test_jobs/object_vars.py +1 -1
  173. nautobot/extras/test_jobs/pass.py +3 -3
  174. nautobot/extras/test_jobs/profiling.py +1 -1
  175. nautobot/extras/test_jobs/relative_import.py +3 -3
  176. nautobot/extras/test_jobs/soft_time_limit_greater_than_time_limit.py +1 -1
  177. nautobot/extras/test_jobs/task_queues.py +1 -1
  178. nautobot/extras/tests/integration/test_plugin_banner.py +2 -0
  179. nautobot/extras/tests/test_api.py +13 -13
  180. nautobot/extras/tests/test_customfields.py +1 -1
  181. nautobot/extras/tests/test_datasources.py +1 -2
  182. nautobot/extras/tests/test_dynamicgroups.py +1 -1
  183. nautobot/extras/tests/test_filters.py +6 -6
  184. nautobot/extras/tests/test_forms.py +1 -20
  185. nautobot/extras/tests/test_jobs.py +19 -160
  186. nautobot/extras/tests/test_models.py +10 -10
  187. nautobot/extras/tests/test_plugins.py +9 -62
  188. nautobot/extras/tests/test_relationships.py +9 -120
  189. nautobot/extras/tests/test_views.py +191 -52
  190. nautobot/extras/utils.py +2 -3
  191. nautobot/extras/views.py +98 -30
  192. nautobot/ipam/api/fields.py +3 -3
  193. nautobot/ipam/api/serializers.py +33 -41
  194. nautobot/ipam/api/views.py +117 -68
  195. nautobot/ipam/factory.py +1 -1
  196. nautobot/ipam/filters.py +2 -3
  197. nautobot/ipam/lookups.py +62 -101
  198. nautobot/ipam/models.py +16 -66
  199. nautobot/ipam/querysets.py +2 -2
  200. nautobot/ipam/tables.py +7 -23
  201. nautobot/ipam/templates/ipam/ipaddress.html +9 -1
  202. nautobot/ipam/templates/ipam/ipaddress_bulk_add.html +7 -1
  203. nautobot/ipam/templates/ipam/ipaddress_edit.html +7 -1
  204. nautobot/ipam/templates/ipam/prefix.html +9 -1
  205. nautobot/ipam/templates/ipam/prefix_edit.html +7 -1
  206. nautobot/ipam/templates/ipam/vlan.html +9 -1
  207. nautobot/ipam/templates/ipam/vlan_edit.html +7 -1
  208. nautobot/ipam/templates/ipam/vrf_edit.html +7 -1
  209. nautobot/ipam/tests/test_api.py +3 -416
  210. nautobot/ipam/tests/test_forms.py +47 -49
  211. nautobot/ipam/tests/test_migrations.py +30 -30
  212. nautobot/ipam/tests/test_models.py +34 -95
  213. nautobot/ipam/tests/test_querysets.py +1 -63
  214. nautobot/ipam/tests/test_views.py +0 -3
  215. nautobot/ipam/utils/__init__.py +6 -36
  216. nautobot/ipam/views.py +87 -61
  217. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.css.map +1 -1
  218. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap-theme.min.css.map +1 -1
  219. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.css +2 -40
  220. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.css.map +1 -1
  221. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.min.css +1 -1
  222. nautobot/project-static/bootstrap-3.4.1-dist/css/bootstrap.min.css.map +1 -1
  223. nautobot/project-static/docs/404.html +4 -46
  224. nautobot/project-static/docs/apps/index.html +4 -46
  225. nautobot/project-static/docs/apps/nautobot-apps.html +6 -47
  226. nautobot/project-static/docs/assets/_mkdocstrings.css +1 -25
  227. nautobot/project-static/docs/assets/javascripts/{bundle.88dd0f4e.min.js → bundle.83f73b43.min.js} +2 -2
  228. nautobot/project-static/docs/assets/javascripts/{bundle.88dd0f4e.min.js.map → bundle.83f73b43.min.js.map} +2 -2
  229. nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +10 -62
  230. nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +7 -59
  231. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +122 -374
  232. nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +18 -90
  233. nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +21 -95
  234. nautobot/project-static/docs/code-reference/nautobot/apps/config.html +6 -53
  235. nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +5 -52
  236. nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +17 -79
  237. nautobot/project-static/docs/code-reference/nautobot/apps/events.html +28 -102
  238. nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +21 -108
  239. nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +38 -131
  240. nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +65 -239
  241. nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +165 -581
  242. nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +36 -109
  243. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +167 -453
  244. nautobot/project-static/docs/code-reference/nautobot/apps/models.html +211 -493
  245. nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +8 -60
  246. nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +15 -71
  247. nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +55 -407
  248. nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +205 -585
  249. nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +412 -858
  250. nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +7 -59
  251. nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +186 -448
  252. nautobot/project-static/docs/code-reference/nautobot/apps/views.html +147 -365
  253. nautobot/project-static/docs/development/apps/api/configuration-view.html +4 -46
  254. nautobot/project-static/docs/development/apps/api/database-backend-config.html +4 -46
  255. nautobot/project-static/docs/development/apps/api/models/django-admin.html +4 -46
  256. nautobot/project-static/docs/development/apps/api/models/global-search.html +4 -46
  257. nautobot/project-static/docs/development/apps/api/models/graphql.html +4 -46
  258. nautobot/project-static/docs/development/apps/api/models/index.html +4 -46
  259. nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +4 -46
  260. nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +4 -46
  261. nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +4 -46
  262. nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +4 -46
  263. nautobot/project-static/docs/development/apps/api/platform-features/index.html +4 -46
  264. nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +4 -46
  265. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +4 -46
  266. nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +4 -46
  267. nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +4 -46
  268. nautobot/project-static/docs/development/apps/api/platform-features/table-extensions.html +7 -68
  269. nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +4 -46
  270. nautobot/project-static/docs/development/apps/api/prometheus.html +4 -46
  271. nautobot/project-static/docs/development/apps/api/setup.html +4 -46
  272. nautobot/project-static/docs/development/apps/api/testing.html +4 -46
  273. nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +4 -46
  274. nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +4 -46
  275. nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +4 -46
  276. nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +4 -46
  277. nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +4 -46
  278. nautobot/project-static/docs/development/apps/api/views/base-template.html +4 -46
  279. nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +4 -46
  280. nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +4 -46
  281. nautobot/project-static/docs/development/apps/api/views/help-documentation.html +4 -46
  282. nautobot/project-static/docs/development/apps/api/views/index.html +4 -46
  283. nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +4 -46
  284. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +4 -46
  285. nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +4 -46
  286. nautobot/project-static/docs/development/apps/api/views/notes.html +4 -46
  287. nautobot/project-static/docs/development/apps/api/views/rest-api.html +6 -52
  288. nautobot/project-static/docs/development/apps/api/views/urls.html +4 -46
  289. nautobot/project-static/docs/development/apps/index.html +4 -46
  290. nautobot/project-static/docs/development/apps/migration/code-updates.html +4 -46
  291. nautobot/project-static/docs/development/apps/migration/dependency-updates.html +4 -46
  292. nautobot/project-static/docs/development/apps/migration/from-v1.html +4 -46
  293. nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +4 -46
  294. nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +4 -46
  295. nautobot/project-static/docs/development/apps/migration/model-updates/global.html +4 -46
  296. nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +4 -46
  297. nautobot/project-static/docs/development/apps/migration/ui-component-framework/best-practices.html +8 -50
  298. nautobot/project-static/docs/development/apps/migration/ui-component-framework/custom-content.html +4 -46
  299. nautobot/project-static/docs/development/apps/migration/ui-component-framework/index.html +14 -211
  300. nautobot/project-static/docs/development/apps/migration/ui-component-framework/migration-steps.html +4 -46
  301. nautobot/project-static/docs/development/apps/porting-from-netbox.html +4 -46
  302. nautobot/project-static/docs/development/core/application-registry.html +4 -46
  303. nautobot/project-static/docs/development/core/best-practices.html +4 -46
  304. nautobot/project-static/docs/development/core/bootstrap-ui.html +4 -46
  305. nautobot/project-static/docs/development/core/caching.html +4 -46
  306. nautobot/project-static/docs/development/core/controllers.html +4 -46
  307. nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +74 -73
  308. nautobot/project-static/docs/development/core/generic-views.html +4 -46
  309. nautobot/project-static/docs/development/core/getting-started.html +224 -249
  310. nautobot/project-static/docs/development/core/homepage.html +7 -49
  311. nautobot/project-static/docs/development/core/index.html +4 -46
  312. nautobot/project-static/docs/development/core/{minikube-dev-environment-for-k8s-jobs.html → local-k8s.html} +168 -469
  313. nautobot/project-static/docs/development/core/model-checklist.html +12 -56
  314. nautobot/project-static/docs/development/core/model-features.html +4 -46
  315. nautobot/project-static/docs/development/core/natural-keys.html +4 -46
  316. nautobot/project-static/docs/development/core/navigation-menu.html +4 -46
  317. nautobot/project-static/docs/development/core/release-checklist.html +7 -49
  318. nautobot/project-static/docs/development/core/role-internals.html +4 -46
  319. nautobot/project-static/docs/development/core/settings.html +4 -46
  320. nautobot/project-static/docs/development/core/style-guide.html +7 -49
  321. nautobot/project-static/docs/development/core/templates.html +4 -46
  322. nautobot/project-static/docs/development/core/testing.html +4 -46
  323. nautobot/project-static/docs/development/core/ui-component-framework.html +273 -369
  324. nautobot/project-static/docs/development/core/user-preferences.html +4 -46
  325. nautobot/project-static/docs/development/index.html +4 -46
  326. nautobot/project-static/docs/development/jobs/index.html +122 -216
  327. nautobot/project-static/docs/development/jobs/migration/from-v1.html +4 -46
  328. nautobot/project-static/docs/index.html +23 -54
  329. nautobot/project-static/docs/objects.inv +0 -0
  330. nautobot/project-static/docs/overview/application_stack.html +7 -47
  331. nautobot/project-static/docs/overview/design_philosophy.html +4 -46
  332. nautobot/project-static/docs/release-notes/index.html +12 -52
  333. nautobot/project-static/docs/release-notes/version-1.0.html +193 -234
  334. nautobot/project-static/docs/release-notes/version-1.1.html +190 -231
  335. nautobot/project-static/docs/release-notes/version-1.2.html +265 -306
  336. nautobot/project-static/docs/release-notes/version-1.3.html +291 -332
  337. nautobot/project-static/docs/release-notes/version-1.4.html +377 -417
  338. nautobot/project-static/docs/release-notes/version-1.5.html +566 -605
  339. nautobot/project-static/docs/release-notes/version-1.6.html +447 -904
  340. nautobot/project-static/docs/release-notes/version-2.0.html +489 -528
  341. nautobot/project-static/docs/release-notes/version-2.1.html +324 -363
  342. nautobot/project-static/docs/release-notes/version-2.2.html +317 -356
  343. nautobot/project-static/docs/release-notes/version-2.3.html +352 -997
  344. nautobot/project-static/docs/release-notes/version-2.4.html +101 -417
  345. nautobot/project-static/docs/requirements.txt +2 -2
  346. nautobot/project-static/docs/search/search_index.json +1 -1
  347. nautobot/project-static/docs/sitemap.xml +287 -295
  348. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  349. nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +4 -46
  350. nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +4 -46
  351. nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +6 -48
  352. nautobot/project-static/docs/user-guide/administration/configuration/index.html +4 -46
  353. nautobot/project-static/docs/user-guide/administration/configuration/redis.html +4 -46
  354. nautobot/project-static/docs/user-guide/administration/configuration/settings.html +8 -110
  355. nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +4 -46
  356. nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +4 -46
  357. nautobot/project-static/docs/user-guide/administration/guides/docker.html +4 -46
  358. nautobot/project-static/docs/user-guide/administration/guides/health-checks.html +4 -46
  359. nautobot/project-static/docs/user-guide/administration/guides/permissions.html +4 -46
  360. nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +4 -46
  361. nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +4 -46
  362. nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +4 -46
  363. nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +6 -48
  364. nautobot/project-static/docs/user-guide/administration/guides/selinux-troubleshooting.html +4 -46
  365. nautobot/project-static/docs/user-guide/administration/installation/app-install.html +4 -46
  366. nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +4 -46
  367. nautobot/project-static/docs/user-guide/administration/installation/http-server.html +8 -66
  368. nautobot/project-static/docs/user-guide/administration/installation/index.html +4 -46
  369. nautobot/project-static/docs/user-guide/administration/installation/install_system.html +5 -47
  370. nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +4 -46
  371. nautobot/project-static/docs/user-guide/administration/installation/services.html +4 -46
  372. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +4 -46
  373. nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +4 -46
  374. nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +4 -46
  375. nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +4 -46
  376. nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +4 -46
  377. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +4 -46
  378. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +4 -46
  379. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +4 -46
  380. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +4 -46
  381. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +8 -49
  382. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +4 -46
  383. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +4 -46
  384. nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +4 -46
  385. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +4 -46
  386. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +4 -46
  387. nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +4 -46
  388. nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +4 -46
  389. nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +4 -46
  390. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +4 -46
  391. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +4 -46
  392. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +4 -46
  393. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +4 -46
  394. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +4 -46
  395. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +4 -46
  396. nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +4 -46
  397. nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +4 -46
  398. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +4 -46
  399. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +4 -46
  400. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +4 -46
  401. nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +4 -46
  402. nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +4 -46
  403. nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +4 -46
  404. nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +4 -46
  405. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +4 -46
  406. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +4 -46
  407. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +4 -46
  408. nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +4 -46
  409. nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +4 -46
  410. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +4 -46
  411. nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +4 -46
  412. nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +4 -46
  413. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +4 -46
  414. nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +4 -46
  415. nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +4 -46
  416. nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +4 -46
  417. nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +4 -46
  418. nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +4 -46
  419. nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +4 -46
  420. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +4 -46
  421. nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +4 -46
  422. nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +4 -46
  423. nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +4 -46
  424. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +4 -46
  425. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +4 -46
  426. nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +4 -46
  427. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +4 -46
  428. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +4 -46
  429. nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +4 -46
  430. nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +4 -46
  431. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +4 -46
  432. nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +4 -46
  433. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +4 -46
  434. nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +4 -46
  435. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +4 -46
  436. nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +4 -46
  437. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +4 -46
  438. nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualdevicecontext.html +4 -46
  439. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +12 -50
  440. nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +4 -46
  441. nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +4 -46
  442. nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +4 -46
  443. nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +4 -46
  444. nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +4 -46
  445. nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +4 -46
  446. nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +4 -46
  447. nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +4 -46
  448. nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +4 -46
  449. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +4 -46
  450. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +4 -46
  451. nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +4 -46
  452. nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +7 -49
  453. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +4 -46
  454. nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +4 -46
  455. nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +4 -46
  456. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +4 -46
  457. nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +4 -46
  458. nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +4 -46
  459. nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +4 -46
  460. nautobot/project-static/docs/user-guide/core-data-model/wireless/index.html +4 -46
  461. nautobot/project-static/docs/user-guide/core-data-model/wireless/radioprofile.html +4 -46
  462. nautobot/project-static/docs/user-guide/core-data-model/wireless/supporteddatarate.html +4 -46
  463. nautobot/project-static/docs/user-guide/core-data-model/wireless/wirelessnetwork.html +4 -46
  464. nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +4 -46
  465. nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +4 -46
  466. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +4 -46
  467. nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +4 -46
  468. nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +4 -46
  469. nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +4 -46
  470. nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +4 -46
  471. nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +4 -46
  472. nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +4 -46
  473. nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +4 -46
  474. nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +4 -46
  475. nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +7 -51
  476. nautobot/project-static/docs/user-guide/feature-guides/graphql.html +4 -46
  477. nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +4 -46
  478. nautobot/project-static/docs/user-guide/feature-guides/relationships.html +4 -46
  479. nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +7 -49
  480. nautobot/project-static/docs/user-guide/index.html +4 -46
  481. nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +4 -46
  482. nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +8 -50
  483. nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +4 -46
  484. nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +4 -46
  485. nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +4 -46
  486. nautobot/project-static/docs/user-guide/platform-functionality/events.html +4 -46
  487. nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +4 -46
  488. nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +4 -46
  489. nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +4 -46
  490. nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +4 -46
  491. nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +4 -46
  492. nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +4 -46
  493. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +7 -50
  494. nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +4 -46
  495. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +7 -49
  496. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +4 -46
  497. nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobqueue.html +4 -46
  498. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +4 -46
  499. nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +4 -46
  500. nautobot/project-static/docs/user-guide/platform-functionality/note.html +4 -46
  501. nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +4 -46
  502. nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +5 -47
  503. nautobot/project-static/docs/user-guide/platform-functionality/rendering-jinja-templates.html +4 -46
  504. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +4 -46
  505. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +25 -94
  506. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +5 -74
  507. nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +4 -46
  508. nautobot/project-static/docs/user-guide/platform-functionality/role.html +4 -46
  509. nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +4 -46
  510. nautobot/project-static/docs/user-guide/platform-functionality/secret.html +4 -46
  511. nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +4 -46
  512. nautobot/project-static/docs/user-guide/platform-functionality/status.html +4 -46
  513. nautobot/project-static/docs/user-guide/platform-functionality/tag.html +4 -46
  514. nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +4 -46
  515. nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +4 -46
  516. nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +4 -46
  517. nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +4 -46
  518. nautobot/project-static/js/forms.js +1 -1
  519. nautobot/tenancy/api/views.py +13 -9
  520. nautobot/tenancy/views.py +2 -4
  521. nautobot/users/admin.py +1 -1
  522. nautobot/users/api/serializers.py +4 -5
  523. nautobot/users/api/views.py +3 -3
  524. nautobot/virtualization/api/serializers.py +4 -4
  525. nautobot/virtualization/api/views.py +24 -5
  526. nautobot/virtualization/filters.py +3 -20
  527. nautobot/virtualization/models.py +1 -1
  528. nautobot/virtualization/tables.py +2 -2
  529. nautobot/virtualization/templates/virtualization/cluster_edit.html +7 -1
  530. nautobot/virtualization/templates/virtualization/virtualmachine.html +9 -1
  531. nautobot/virtualization/templates/virtualization/virtualmachine_edit.html +8 -2
  532. nautobot/virtualization/tests/test_filters.py +0 -17
  533. nautobot/wireless/filters.py +2 -2
  534. nautobot/wireless/forms.py +1 -1
  535. nautobot/wireless/templates/wireless/wirelessnetwork_retrieve.html +9 -1
  536. nautobot/wireless/tests/test_filters.py +1 -29
  537. nautobot/wireless/views.py +10 -0
  538. {nautobot-2.4.0.dist-info → nautobot-2.4.0b1.dist-info}/METADATA +6 -6
  539. {nautobot-2.4.0.dist-info → nautobot-2.4.0b1.dist-info}/RECORD +543 -591
  540. {nautobot-2.4.0.dist-info → nautobot-2.4.0b1.dist-info}/WHEEL +1 -1
  541. nautobot/core/api/constants.py +0 -11
  542. nautobot/core/jobs/bulk_actions.py +0 -248
  543. nautobot/core/templates/about.html +0 -67
  544. nautobot/core/templates/inc/tenancy_form_panel.html +0 -9
  545. nautobot/core/templates/inc/tenant_table_row.html +0 -11
  546. nautobot/core/utils/querysets.py +0 -64
  547. nautobot/dcim/migrations/0067_controllermanageddevicegroup_tenant.py +0 -25
  548. nautobot/dcim/tests/integration/test_controller.py +0 -62
  549. nautobot/dcim/tests/integration/test_controller_managed_device_group.py +0 -71
  550. nautobot/dcim/tests/test_jobs.py +0 -118
  551. nautobot/extras/migrations/0120_job_is_singleton_job_is_singleton_override.py +0 -22
  552. nautobot/extras/migrations/0121_alter_team_contacts.py +0 -17
  553. nautobot/extras/test_jobs/singleton.py +0 -16
  554. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_edit.png +0 -0
  555. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_edit_button.png +0 -0
  556. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_list_nav.png +0 -0
  557. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_list_view.png +0 -0
  558. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_queue.png +0 -0
  559. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_queue_add.png +0 -0
  560. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_queue_config.png +0 -0
  561. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_result_completed.png +0 -0
  562. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_result_nav.png +0 -0
  563. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_result_pending.png +0 -0
  564. nautobot/project-static/docs/media/development/core/kubernetes/k8s_job_run_form.png +0 -0
  565. nautobot/project-static/docs/media/development/core/kubernetes/k8s_nautobot_login.png +0 -0
  566. nautobot/project-static/docs/media/development/core/kubernetes/k8s_run_job.png +0 -0
  567. nautobot/project-static/docs/media/development/core/kubernetes/k8s_run_scheduled_job_form.png +0 -0
  568. nautobot/project-static/docs/media/development/core/kubernetes/k8s_scheduled_job_result.png +0 -0
  569. nautobot/project-static/docs/media/development/core/ui-component-framework/buttons-example.png +0 -0
  570. nautobot/project-static/docs/media/development/core/ui-component-framework/cluster-type-before-after-example.png +0 -0
  571. nautobot/project-static/docs/media/development/core/ui-component-framework/object-fields-panel-example_2.png +0 -0
  572. nautobot/project-static/docs/media/development/core/ui-component-framework/stats-panel-example-code.png +0 -0
  573. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/central-mode.png +0 -0
  574. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/device-group-add.png +0 -0
  575. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/device-group-create-1.png +0 -0
  576. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/device-group-create-2.png +0 -0
  577. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/radio-profile-add.png +0 -0
  578. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/radio-profile-create.png +0 -0
  579. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/supported-data-rate-add.png +0 -0
  580. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/supported-data-rate-create.png +0 -0
  581. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-controller-add.png +0 -0
  582. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-controller-create-1.png +0 -0
  583. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-controller-create-2.png +0 -0
  584. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-network-add.png +0 -0
  585. nautobot/project-static/docs/user-guide/feature-guides/images/wireless/wireless-network-create.png +0 -0
  586. nautobot/project-static/docs/user-guide/feature-guides/wireless-networks-and-controllers.html +0 -9444
  587. nautobot/project-static/docs/user-guide/platform-functionality/jobs/kubernetes-job-support.html +0 -9722
  588. nautobot/wireless/tests/integration/__init__.py +0 -0
  589. nautobot/wireless/tests/integration/test_radio_profile.py +0 -42
  590. {nautobot-2.4.0.dist-info → nautobot-2.4.0b1.dist-info}/LICENSE.txt +0 -0
  591. {nautobot-2.4.0.dist-info → nautobot-2.4.0b1.dist-info}/NOTICE +0 -0
  592. {nautobot-2.4.0.dist-info → nautobot-2.4.0b1.dist-info}/entry_points.txt +0 -0
@@ -8,7 +8,7 @@
8
8
 
9
9
 
10
10
 
11
- <link rel="canonical" href="https://docs.nautobot.com/projects/core/en/stable/development/core/minikube-dev-environment-for-k8s-jobs.html">
11
+ <link rel="canonical" href="https://docs.nautobot.com/projects/core/en/stable/development/core/local-k8s.html">
12
12
 
13
13
 
14
14
  <link rel="prev" href="homepage.html">
@@ -18,11 +18,11 @@
18
18
 
19
19
 
20
20
  <link rel="icon" href="../../assets/favicon.ico">
21
- <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.49">
21
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.46">
22
22
 
23
23
 
24
24
 
25
- <title>Minikube Dev Environment for K8s Jobs - Nautobot Documentation</title>
25
+ <title>Local Kubernetes Cluster - Nautobot Documentation</title>
26
26
 
27
27
 
28
28
 
@@ -95,7 +95,7 @@
95
95
  <div data-md-component="skip">
96
96
 
97
97
 
98
- <a href="#minikube-dev-environment-for-k8s-jobs" class="md-skip">
98
+ <a href="#using-local-kubernetes-cluster" class="md-skip">
99
99
  Skip to content
100
100
  </a>
101
101
 
@@ -130,7 +130,7 @@
130
130
  <div class="md-header__topic" data-md-component="header-topic">
131
131
  <span class="md-ellipsis">
132
132
 
133
- Minikube Dev Environment for K8s Jobs
133
+ Local Kubernetes Cluster
134
134
 
135
135
  </span>
136
136
  </div>
@@ -2112,27 +2112,6 @@
2112
2112
 
2113
2113
 
2114
2114
 
2115
-
2116
-
2117
-
2118
-
2119
-
2120
-
2121
- <li class="md-nav__item">
2122
- <a href="../../user-guide/feature-guides/wireless-networks-and-controllers.html" class="md-nav__link">
2123
-
2124
-
2125
- <span class="md-ellipsis">
2126
- Wireless Networks and Controllers
2127
- </span>
2128
-
2129
-
2130
- </a>
2131
- </li>
2132
-
2133
-
2134
-
2135
-
2136
2115
  </ul>
2137
2116
  </nav>
2138
2117
 
@@ -5152,27 +5131,6 @@
5152
5131
 
5153
5132
 
5154
5133
 
5155
- <li class="md-nav__item">
5156
- <a href="../../user-guide/platform-functionality/jobs/kubernetes-job-support.html" class="md-nav__link">
5157
-
5158
-
5159
- <span class="md-ellipsis">
5160
- Kubernetes Job Support
5161
- </span>
5162
-
5163
-
5164
- </a>
5165
- </li>
5166
-
5167
-
5168
-
5169
-
5170
-
5171
-
5172
-
5173
-
5174
-
5175
-
5176
5134
  <li class="md-nav__item">
5177
5135
  <a href="../../user-guide/platform-functionality/jobs/jobbutton.html" class="md-nav__link">
5178
5136
 
@@ -8117,18 +8075,18 @@
8117
8075
 
8118
8076
 
8119
8077
  <span class="md-ellipsis">
8120
- Minikube Dev Environment for K8s Jobs
8078
+ Local Kubernetes Cluster
8121
8079
  </span>
8122
8080
 
8123
8081
 
8124
8082
  <span class="md-nav__icon md-icon"></span>
8125
8083
  </label>
8126
8084
 
8127
- <a href="minikube-dev-environment-for-k8s-jobs.html" class="md-nav__link md-nav__link--active">
8085
+ <a href="local-k8s.html" class="md-nav__link md-nav__link--active">
8128
8086
 
8129
8087
 
8130
8088
  <span class="md-ellipsis">
8131
- Minikube Dev Environment for K8s Jobs
8089
+ Local Kubernetes Cluster
8132
8090
  </span>
8133
8091
 
8134
8092
 
@@ -8150,138 +8108,54 @@
8150
8108
  <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
8151
8109
 
8152
8110
  <li class="md-nav__item">
8153
- <a href="#preliminary-setup" class="md-nav__link">
8111
+ <a href="#installing-kind" class="md-nav__link">
8154
8112
  <span class="md-ellipsis">
8155
- Preliminary Setup
8113
+ Installing Kind
8156
8114
  </span>
8157
8115
  </a>
8158
8116
 
8159
8117
  </li>
8160
8118
 
8161
8119
  <li class="md-nav__item">
8162
- <a href="#starting-required-deployments" class="md-nav__link">
8120
+ <a href="#creating-a-kind-kubernetes-cluster" class="md-nav__link">
8163
8121
  <span class="md-ellipsis">
8164
- Starting Required Deployments
8165
- </span>
8166
- </a>
8167
-
8168
- <nav class="md-nav" aria-label="Starting Required Deployments">
8169
- <ul class="md-nav__list">
8170
-
8171
- <li class="md-nav__item">
8172
- <a href="#check-required-files" class="md-nav__link">
8173
- <span class="md-ellipsis">
8174
- Check Required Files
8122
+ Creating a Kind Kubernetes Cluster
8175
8123
  </span>
8176
8124
  </a>
8177
8125
 
8178
- </li>
8179
-
8180
- <li class="md-nav__item">
8181
- <a href="#build-an-up-to-date-nautobot-docker-image" class="md-nav__link">
8182
- <span class="md-ellipsis">
8183
- Build an up-to-date Nautobot Docker Image
8184
- </span>
8185
- </a>
8186
-
8187
- </li>
8188
-
8189
- <li class="md-nav__item">
8190
- <a href="#starting-the-deployments-and-services" class="md-nav__link">
8191
- <span class="md-ellipsis">
8192
- Starting the Deployments and Services
8193
- </span>
8194
- </a>
8195
-
8196
- </li>
8197
-
8198
- <li class="md-nav__item">
8199
- <a href="#starting-the-configuration-maps-and-persistent-volume-claims" class="md-nav__link">
8200
- <span class="md-ellipsis">
8201
- Starting the Configuration Maps and Persistent Volume Claims
8202
- </span>
8203
- </a>
8204
-
8205
- </li>
8206
-
8207
- <li class="md-nav__item">
8208
- <a href="#port-forward-to-local-host" class="md-nav__link">
8209
- <span class="md-ellipsis">
8210
- Port Forward to Local Host
8211
- </span>
8212
- </a>
8213
-
8214
- </li>
8215
-
8216
- </ul>
8217
- </nav>
8218
-
8219
8126
  </li>
8220
8127
 
8221
8128
  <li class="md-nav__item">
8222
- <a href="#run-a-kubernetes-job" class="md-nav__link">
8129
+ <a href="#connecting-nautobot-containers" class="md-nav__link">
8223
8130
  <span class="md-ellipsis">
8224
- Run a Kubernetes Job
8225
- </span>
8226
- </a>
8227
-
8228
- <nav class="md-nav" aria-label="Run a Kubernetes Job">
8229
- <ul class="md-nav__list">
8230
-
8231
- <li class="md-nav__item">
8232
- <a href="#configure-a-new-job-queue-of-type-kubernetes" class="md-nav__link">
8233
- <span class="md-ellipsis">
8234
- Configure a New Job Queue of Type Kubernetes
8235
- </span>
8236
- </a>
8237
-
8238
- </li>
8239
-
8240
- <li class="md-nav__item">
8241
- <a href="#assign-that-job-queue-to-a-job" class="md-nav__link">
8242
- <span class="md-ellipsis">
8243
- Assign that Job Queue to a Job
8131
+ Connecting Nautobot Containers
8244
8132
  </span>
8245
8133
  </a>
8246
8134
 
8247
8135
  </li>
8248
-
8249
- <li class="md-nav__item">
8250
- <a href="#run-the-job" class="md-nav__link">
8251
- <span class="md-ellipsis">
8252
- Run the Job
8253
- </span>
8254
- </a>
8255
-
8256
- </li>
8257
-
8258
- <li class="md-nav__item">
8259
- <a href="#inspect-the-job-result" class="md-nav__link">
8136
+
8137
+ <li class="md-nav__item">
8138
+ <a href="#using-kubectl" class="md-nav__link">
8260
8139
  <span class="md-ellipsis">
8261
- Inspect the Job Result
8140
+ Using kubectl
8262
8141
  </span>
8263
8142
  </a>
8264
8143
 
8265
8144
  </li>
8266
-
8267
- <li class="md-nav__item">
8268
- <a href="#running-a-scheduled-job" class="md-nav__link">
8145
+
8146
+ <li class="md-nav__item">
8147
+ <a href="#running-a-test-job" class="md-nav__link">
8269
8148
  <span class="md-ellipsis">
8270
- Running a Scheduled Job
8149
+ Running a Test Job
8271
8150
  </span>
8272
8151
  </a>
8273
8152
 
8274
- </li>
8275
-
8276
- </ul>
8277
- </nav>
8278
-
8279
8153
  </li>
8280
8154
 
8281
8155
  <li class="md-nav__item">
8282
- <a href="#after-running-a-job" class="md-nav__link">
8156
+ <a href="#cleaning-up" class="md-nav__link">
8283
8157
  <span class="md-ellipsis">
8284
- After Running a Job
8158
+ Cleaning Up
8285
8159
  </span>
8286
8160
  </a>
8287
8161
 
@@ -9203,138 +9077,54 @@
9203
9077
  <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
9204
9078
 
9205
9079
  <li class="md-nav__item">
9206
- <a href="#preliminary-setup" class="md-nav__link">
9080
+ <a href="#installing-kind" class="md-nav__link">
9207
9081
  <span class="md-ellipsis">
9208
- Preliminary Setup
9082
+ Installing Kind
9209
9083
  </span>
9210
9084
  </a>
9211
9085
 
9212
9086
  </li>
9213
9087
 
9214
9088
  <li class="md-nav__item">
9215
- <a href="#starting-required-deployments" class="md-nav__link">
9216
- <span class="md-ellipsis">
9217
- Starting Required Deployments
9218
- </span>
9219
- </a>
9220
-
9221
- <nav class="md-nav" aria-label="Starting Required Deployments">
9222
- <ul class="md-nav__list">
9223
-
9224
- <li class="md-nav__item">
9225
- <a href="#check-required-files" class="md-nav__link">
9226
- <span class="md-ellipsis">
9227
- Check Required Files
9228
- </span>
9229
- </a>
9230
-
9231
- </li>
9232
-
9233
- <li class="md-nav__item">
9234
- <a href="#build-an-up-to-date-nautobot-docker-image" class="md-nav__link">
9235
- <span class="md-ellipsis">
9236
- Build an up-to-date Nautobot Docker Image
9237
- </span>
9238
- </a>
9239
-
9240
- </li>
9241
-
9242
- <li class="md-nav__item">
9243
- <a href="#starting-the-deployments-and-services" class="md-nav__link">
9244
- <span class="md-ellipsis">
9245
- Starting the Deployments and Services
9246
- </span>
9247
- </a>
9248
-
9249
- </li>
9250
-
9251
- <li class="md-nav__item">
9252
- <a href="#starting-the-configuration-maps-and-persistent-volume-claims" class="md-nav__link">
9253
- <span class="md-ellipsis">
9254
- Starting the Configuration Maps and Persistent Volume Claims
9255
- </span>
9256
- </a>
9257
-
9258
- </li>
9259
-
9260
- <li class="md-nav__item">
9261
- <a href="#port-forward-to-local-host" class="md-nav__link">
9089
+ <a href="#creating-a-kind-kubernetes-cluster" class="md-nav__link">
9262
9090
  <span class="md-ellipsis">
9263
- Port Forward to Local Host
9091
+ Creating a Kind Kubernetes Cluster
9264
9092
  </span>
9265
9093
  </a>
9266
9094
 
9267
- </li>
9268
-
9269
- </ul>
9270
- </nav>
9271
-
9272
9095
  </li>
9273
9096
 
9274
9097
  <li class="md-nav__item">
9275
- <a href="#run-a-kubernetes-job" class="md-nav__link">
9276
- <span class="md-ellipsis">
9277
- Run a Kubernetes Job
9278
- </span>
9279
- </a>
9280
-
9281
- <nav class="md-nav" aria-label="Run a Kubernetes Job">
9282
- <ul class="md-nav__list">
9283
-
9284
- <li class="md-nav__item">
9285
- <a href="#configure-a-new-job-queue-of-type-kubernetes" class="md-nav__link">
9286
- <span class="md-ellipsis">
9287
- Configure a New Job Queue of Type Kubernetes
9288
- </span>
9289
- </a>
9290
-
9291
- </li>
9292
-
9293
- <li class="md-nav__item">
9294
- <a href="#assign-that-job-queue-to-a-job" class="md-nav__link">
9098
+ <a href="#connecting-nautobot-containers" class="md-nav__link">
9295
9099
  <span class="md-ellipsis">
9296
- Assign that Job Queue to a Job
9100
+ Connecting Nautobot Containers
9297
9101
  </span>
9298
9102
  </a>
9299
9103
 
9300
9104
  </li>
9301
-
9302
- <li class="md-nav__item">
9303
- <a href="#run-the-job" class="md-nav__link">
9304
- <span class="md-ellipsis">
9305
- Run the Job
9306
- </span>
9307
- </a>
9308
-
9309
- </li>
9310
-
9311
- <li class="md-nav__item">
9312
- <a href="#inspect-the-job-result" class="md-nav__link">
9105
+
9106
+ <li class="md-nav__item">
9107
+ <a href="#using-kubectl" class="md-nav__link">
9313
9108
  <span class="md-ellipsis">
9314
- Inspect the Job Result
9109
+ Using kubectl
9315
9110
  </span>
9316
9111
  </a>
9317
9112
 
9318
9113
  </li>
9319
-
9320
- <li class="md-nav__item">
9321
- <a href="#running-a-scheduled-job" class="md-nav__link">
9114
+
9115
+ <li class="md-nav__item">
9116
+ <a href="#running-a-test-job" class="md-nav__link">
9322
9117
  <span class="md-ellipsis">
9323
- Running a Scheduled Job
9118
+ Running a Test Job
9324
9119
  </span>
9325
9120
  </a>
9326
9121
 
9327
- </li>
9328
-
9329
- </ul>
9330
- </nav>
9331
-
9332
9122
  </li>
9333
9123
 
9334
9124
  <li class="md-nav__item">
9335
- <a href="#after-running-a-job" class="md-nav__link">
9125
+ <a href="#cleaning-up" class="md-nav__link">
9336
9126
  <span class="md-ellipsis">
9337
- After Running a Job
9127
+ Cleaning Up
9338
9128
  </span>
9339
9129
  </a>
9340
9130
 
@@ -9358,244 +9148,153 @@
9358
9148
 
9359
9149
 
9360
9150
 
9361
- <h1 id="minikube-dev-environment-for-k8s-jobs">Minikube Dev Environment for K8s Jobs<a class="headerlink" href="#minikube-dev-environment-for-k8s-jobs" title="Permanent link">&para;</a></h1>
9362
- <p>Kubernetes Job Support is added in Nautobot v2.4.0. This documentation is a end-to-end development guide on topics from how to set up your local Kubernetes cluster with <a href="https://minikube.sigs.k8s.io/docs/">minikube</a> and how to run a Nautobot Job in a Kubernetes job pod.</p>
9363
- <h2 id="preliminary-setup">Preliminary Setup<a class="headerlink" href="#preliminary-setup" title="Permanent link">&para;</a></h2>
9364
- <p>First you need to install minikube, go to the offical <a href="https://minikube.sigs.k8s.io/docs/start/">get started page</a> to learn how to download minikube for your specific OS and architecture.</p>
9365
- <p>Once minikube is downloaded, create and start your minikube cluster with the following command:</p>
9366
- <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>minikube<span class="w"> </span>start
9367
- </code></pre></div>
9368
- <p>You should see the following output:</p>
9369
- <div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>😄<span class="w"> </span>minikube<span class="w"> </span>v1.34.0<span class="w"> </span>on<span class="w"> </span>Darwin<span class="w"> </span><span class="m">14</span>.4<span class="w"> </span><span class="o">(</span>arm64<span class="o">)</span>
9370
- <a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a>✨<span class="w"> </span>Using<span class="w"> </span>the<span class="w"> </span>docker<span class="w"> </span>driver<span class="w"> </span>based<span class="w"> </span>on<span class="w"> </span>existing<span class="w"> </span>profile
9371
- <a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a>👍<span class="w"> </span>Starting<span class="w"> </span><span class="s2">&quot;minikube&quot;</span><span class="w"> </span>primary<span class="w"> </span>control-plane<span class="w"> </span>node<span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="s2">&quot;minikube&quot;</span><span class="w"> </span>cluster
9372
- <a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a>🚜<span class="w"> </span>Pulling<span class="w"> </span>base<span class="w"> </span>image<span class="w"> </span>v0.0.45<span class="w"> </span>...
9373
- <a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a>🏃<span class="w"> </span>Updating<span class="w"> </span>the<span class="w"> </span>running<span class="w"> </span>docker<span class="w"> </span><span class="s2">&quot;minikube&quot;</span><span class="w"> </span>container<span class="w"> </span>...
9374
- <a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a>🐳<span class="w"> </span>Preparing<span class="w"> </span>Kubernetes<span class="w"> </span>v1.31.0<span class="w"> </span>on<span class="w"> </span>Docker<span class="w"> </span><span class="m">27</span>.2.0<span class="w"> </span>...
9375
- <a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a>🔎<span class="w"> </span>Verifying<span class="w"> </span>Kubernetes<span class="w"> </span>components...
9376
- <a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a><span class="w"> </span>▪<span class="w"> </span>Using<span class="w"> </span>image<span class="w"> </span>gcr.io/k8s-minikube/storage-provisioner:v5
9377
- <a id="__codelineno-1-9" name="__codelineno-1-9" href="#__codelineno-1-9"></a>🌟<span class="w"> </span>Enabled<span class="w"> </span>addons:<span class="w"> </span>storage-provisioner,<span class="w"> </span>default-storageclass
9378
- <a id="__codelineno-1-10" name="__codelineno-1-10" href="#__codelineno-1-10"></a>🏄<span class="w"> </span>Done!<span class="w"> </span>kubectl<span class="w"> </span>is<span class="w"> </span>now<span class="w"> </span>configured<span class="w"> </span>to<span class="w"> </span>use<span class="w"> </span><span class="s2">&quot;minikube&quot;</span><span class="w"> </span>cluster<span class="w"> </span>and<span class="w"> </span><span class="s2">&quot;default&quot;</span><span class="w"> </span>namespace<span class="w"> </span>by<span class="w"> </span>default
9379
- </code></pre></div>
9380
- <p>Next you need <a href="https://kubernetes.io/docs/reference/kubectl/"><code>kubectl</code></a> to interact with the new cluster you just created. See <a href="https://kubernetes.io/docs/tasks/tools/#kubectl">Kubernetes official documentation</a> on how to download <code>kubectl</code> for your respective operating system.</p>
9381
- <p>Once you have <code>kubectl</code> downloaded and installed, run the following command to ensure the version you installed is up-to-date:</p>
9382
- <div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>kubectl<span class="w"> </span>version<span class="w"> </span>--client
9383
- </code></pre></div>
9384
- <p>You should see the following output:</p>
9385
- <div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>Client<span class="w"> </span>Version:<span class="w"> </span>v1.31.2
9386
- <a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a>Kustomize<span class="w"> </span>Version:<span class="w"> </span>v5.4.2
9387
- </code></pre></div>
9388
- <p>You also need to check if your default service account is enabled to create jobs, you can check the permission by executing the following command:</p>
9389
- <div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>kubectl<span class="w"> </span>auth<span class="w"> </span>can-i<span class="w"> </span>--as<span class="o">=</span>system:serviceaccount:default:default<span class="w"> </span>create<span class="w"> </span><span class="nb">jobs</span><span class="w"> </span>-n<span class="w"> </span>default
9390
- </code></pre></div>
9391
- <p>If the output from the above command is <code>yes</code>, then you are all good to go. However, if the output is <code>no</code>, then you will need to create a role binding to grant the default user appropriate permissions. You can achieve this by running the following command:</p>
9392
- <div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a>kubectl<span class="w"> </span>create<span class="w"> </span>rolebinding<span class="w"> </span>admin-namespace-default-new<span class="w"> </span>--clusterrole<span class="o">=</span>admin<span class="w"> </span>--serviceaccount<span class="o">=</span>default:default<span class="w"> </span>--namespace<span class="o">=</span>default
9393
- </code></pre></div>
9394
- <p>This command will assign the admin role to your default service account in the namespace <code>default</code>. Check out Kubernetes <a href="https://kubernetes.io/docs/reference/access-authn-authz/rbac/">RBAC authorization page</a> to learn how to create more granular role and permission assignments.</p>
9395
- <p>You can run the <code>kubectl auth can-i --as=system:serviceaccount:default:default create jobs -n default</code> again and this time the output should be <code>yes</code>.</p>
9396
- <h2 id="starting-required-deployments">Starting Required Deployments<a class="headerlink" href="#starting-required-deployments" title="Permanent link">&para;</a></h2>
9397
- <h3 id="check-required-files">Check Required Files<a class="headerlink" href="#check-required-files" title="Permanent link">&para;</a></h3>
9398
- <p>If this is your first time installing <code>minikube</code> and creating a new cluster, there should be nothing running on the cluster yet. Assuming that your current working directory is in the <code>nautobot</code> folder, what you need to do is to confirm that you have all the deployment files that you need in the <code>/development/kubernetes</code> folder.</p>
9399
- <p>You can confirm that by running the following command:</p>
9400
- <div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>ls<span class="w"> </span>development/kubernetes
9151
+ <h1 id="using-local-kubernetes-cluster">Using Local Kubernetes Cluster<a class="headerlink" href="#using-local-kubernetes-cluster" title="Permanent link">&para;</a></h1>
9152
+ <p>This guide will help you set up a local Kubernetes cluster using <a href="https://kind.sigs.k8s.io/">Kind</a> and connect running Nautobot containers to the Kind network.</p>
9153
+ <h2 id="installing-kind">Installing Kind<a class="headerlink" href="#installing-kind" title="Permanent link">&para;</a></h2>
9154
+ <p>In this chapter we will install Kind on your local machine and create a new Kind Kubernetes cluster.</p>
9155
+ <p>To install Kind on macOS:</p>
9156
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>brew<span class="w"> </span>install<span class="w"> </span>kind
9401
9157
  </code></pre></div>
9402
- <p>You should see the following output:</p>
9403
- <div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>celery-beat-deployment.yaml<span class="w"> </span>media-root-persistentvolumeclaim.yaml<span class="w"> </span>nautobot-service.yaml
9404
- <a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a>db-deployment.yaml<span class="w"> </span>nautobot-cm1-configmap.yaml<span class="w"> </span>pgdata-nautobot-persistentvolumeclaim.yaml
9405
- <a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a>db-service.yaml<span class="w"> </span>nautobot-cm2-configmap.yaml<span class="w"> </span>redis-deployment.yaml
9406
- <a id="__codelineno-7-4" name="__codelineno-7-4" href="#__codelineno-7-4"></a>dev-env-configmap.yaml<span class="w"> </span>nautobot-deployment.yaml<span class="w"> </span>redis-service.yaml
9407
- <a id="__codelineno-7-5" name="__codelineno-7-5" href="#__codelineno-7-5"></a>docker-compose.min.yml
9408
- </code></pre></div>
9409
- <p>You should see several yaml files with post-fixes like <code>*-deployment.yaml</code>, <code>*-service.yaml</code>, <code>*-persistentvolumeclaim.yaml</code>, and <code>*-configmap.yaml</code>.</p>
9410
- <h3 id="build-an-up-to-date-nautobot-docker-image">Build an up-to-date Nautobot Docker Image<a class="headerlink" href="#build-an-up-to-date-nautobot-docker-image" title="Permanent link">&para;</a></h3>
9411
- <p>An up-to-date Nautobot local Docker image named <code>local/nautobot-dev:local-${NAUTOBOT_VER}-py${PYTHON_VER}</code> is required before you start building your kubernetes deployments. The default <code>NAUTOBOT_VER</code> is set to <code>2.4</code> and the default <code>PYTHON_VER</code> is set to <code>3.12</code>. If you have a different version for either variable, you will need to replace every occurrence of <code>local/nautobot-dev:local-2.4-py3.12</code> in all of the <code>development/kubernetes/*.yaml</code> files to make sure that <code>minikube</code> picks up the correct local Nautobot image from your Docker environment.</p>
9412
- <p>Run the following command to point your terminal to use the docker daemon inside minikube. This will ensure that your up-to-date local image named <code>local/nautobot-final-dev:local-${NAUTOBOT_VER}-py${PYTHON_VER}</code> is used when you build your kubernetes deployments.</p>
9413
- <div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="nb">eval</span><span class="w"> </span><span class="k">$(</span>minikube<span class="w"> </span>docker-env<span class="k">)</span>
9414
- </code></pre></div>
9415
- <p>Now you can build your nautobot image locally using the <code>invoke build</code> command. After the build is complete, you are ready to build your kubernetes deployments.</p>
9416
- <h3 id="starting-the-deployments-and-services">Starting the Deployments and Services<a class="headerlink" href="#starting-the-deployments-and-services" title="Permanent link">&para;</a></h3>
9417
- <p>Once you have confirmed that you have all the files listed above. You can start the required deployments and services:</p>
9418
- <p>To start all deployments:</p>
9419
- <div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>kubectl<span class="w"> </span>apply<span class="w"> </span>-f<span class="w"> </span><span class="s2">&quot;development/kubernetes/*-deployment.yaml&quot;</span>
9158
+ <p>To install Kind on Linux:</p>
9159
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>curl<span class="w"> </span>-fsSL<span class="w"> </span><span class="se">\</span>
9160
+ <a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="w"> </span><span class="s2">&quot;https://kind.sigs.k8s.io/dl/latest/kind-linux-amd64&quot;</span><span class="w"> </span><span class="se">\</span>
9161
+ <a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="w"> </span>--output<span class="w"> </span>/usr/local/bin/kind
9162
+ <a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a>chmod<span class="w"> </span>+x<span class="w"> </span>/usr/local/bin/kind
9420
9163
  </code></pre></div>
9421
- <p>You should see the following output:</p>
9422
- <div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a>deployment.apps/celery-beat<span class="w"> </span>created
9423
- <a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a>deployment.apps/db<span class="w"> </span>created
9424
- <a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a>deployment.apps/nautobot<span class="w"> </span>created
9425
- <a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a>deployment.apps/redis<span class="w"> </span>created
9426
- </code></pre></div>
9427
- <p>You can confirm the health of the deployment by running the following command:</p>
9428
- <div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>kubectl<span class="w"> </span>get<span class="w"> </span>deployments
9164
+ <h2 id="creating-a-kind-kubernetes-cluster">Creating a Kind Kubernetes Cluster<a class="headerlink" href="#creating-a-kind-kubernetes-cluster" title="Permanent link">&para;</a></h2>
9165
+ <p>In this chapter, we will create a new Kind Kubernetes cluster for local development, along with a client configuration file.</p>
9166
+ <div class="admonition note">
9167
+ <p class="admonition-title">Note</p>
9168
+ <p>To access the cluster from the Nautobot containers, remember to regenerate the <code>kubeconfig</code> file as described in the second step of this chapter.</p>
9169
+ </div>
9170
+ <p>To create a new Kind cluster:</p>
9171
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a>kind<span class="w"> </span>create<span class="w"> </span>cluster<span class="w"> </span><span class="se">\</span>
9172
+ <a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a><span class="w"> </span>--name<span class="o">=</span>nautobot<span class="w"> </span><span class="se">\</span>
9173
+ <a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a><span class="w"> </span>--config<span class="o">=</span>development/kind-config.yaml<span class="w"> </span><span class="se">\</span>
9174
+ <a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a><span class="w"> </span>--kubeconfig<span class="o">=</span>./development/kind-kube-config
9429
9175
  </code></pre></div>
9430
- <p>You should see the following output:</p>
9431
- <div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>NAME<span class="w"> </span>READY<span class="w"> </span>UP-TO-DATE<span class="w"> </span>AVAILABLE<span class="w"> </span>AGE
9432
- <a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a>celery-beat<span class="w"> </span><span class="m">1</span>/1<span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="m">1</span><span class="w"> </span>12m
9433
- <a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a>db<span class="w"> </span><span class="m">1</span>/1<span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="m">1</span><span class="w"> </span>12m
9434
- <a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a>nautobot<span class="w"> </span><span class="m">1</span>/1<span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="m">1</span><span class="w"> </span>12m
9435
- <a id="__codelineno-12-5" name="__codelineno-12-5" href="#__codelineno-12-5"></a>redis<span class="w"> </span><span class="m">1</span>/1<span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="m">1</span><span class="w"> </span>14m
9176
+ <p>Expected output shows the cluster is created:</p>
9177
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>Creating cluster &quot;nautobot&quot; ...
9178
+ <a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a> Ensuring node image (kindest/node:v1.31.0) 🖼
9179
+ <a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a> Preparing nodes 📦
9180
+ <a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a> Writing configuration 📜
9181
+ <a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a> Starting control-plane 🕹️
9182
+ <a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a> ✓ Installing CNI 🔌
9183
+ <a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a> ✓ Installing StorageClass 💾
9184
+ <a id="__codelineno-3-8" name="__codelineno-3-8" href="#__codelineno-3-8"></a>Set kubectl context to &quot;kind-nautobot&quot;
9185
+ <a id="__codelineno-3-9" name="__codelineno-3-9" href="#__codelineno-3-9"></a>You can now use your cluster with:
9186
+ <a id="__codelineno-3-10" name="__codelineno-3-10" href="#__codelineno-3-10"></a>
9187
+ <a id="__codelineno-3-11" name="__codelineno-3-11" href="#__codelineno-3-11"></a>kubectl cluster-info --context kind-nautobot
9188
+ <a id="__codelineno-3-12" name="__codelineno-3-12" href="#__codelineno-3-12"></a>
9189
+ <a id="__codelineno-3-13" name="__codelineno-3-13" href="#__codelineno-3-13"></a>Have a question, bug, or feature request? Let us know! https://kind.sigs.k8s.io/#community 🙂
9436
9190
  </code></pre></div>
9437
- <p>To start all services:</p>
9438
- <div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>kubectl<span class="w"> </span>apply<span class="w"> </span>-f<span class="w"> </span><span class="s2">&quot;development/kubernetes/*-service.yaml&quot;</span>
9191
+ <p>To regenerate the <code>kubeconfig</code> file with an internal cluster IP address for access from connected Nautobot containers, run the following command:</p>
9192
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>kind<span class="w"> </span>get<span class="w"> </span>kubeconfig<span class="w"> </span><span class="se">\</span>
9193
+ <a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="w"> </span>--internal<span class="w"> </span><span class="se">\</span>
9194
+ <a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a><span class="w"> </span>--name<span class="o">=</span>nautobot<span class="w"> </span><span class="se">\</span>
9195
+ <a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="w"> </span>&gt;<span class="w"> </span>./development/kind-kube-config
9439
9196
  </code></pre></div>
9440
- <p>You should see the following output:</p>
9441
- <div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>service/db<span class="w"> </span>created
9442
- <a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a>service/nautobot<span class="w"> </span>created
9443
- <a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a>service/redis<span class="w"> </span>created
9197
+ <h2 id="connecting-nautobot-containers">Connecting Nautobot Containers<a class="headerlink" href="#connecting-nautobot-containers" title="Permanent link">&para;</a></h2>
9198
+ <p>This chapter will help you connect running Nautobot containers to the Kind network.</p>
9199
+ <div class="admonition note">
9200
+ <p class="admonition-title">Note</p>
9201
+ <p>These steps needs to be done every time you start the Nautobot containers.</p>
9202
+ </div>
9203
+ <p>Verify Nautobot containers are running:</p>
9204
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="c1"># Start Nautobot containers if they are not running</span>
9205
+ <a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a>invoke<span class="w"> </span>start
9206
+ <a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a>
9207
+ <a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a><span class="c1"># Verify the containers are running</span>
9208
+ <a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a>docker<span class="w"> </span>ps
9444
9209
  </code></pre></div>
9445
- <p>You can confirm the health of the each service by running the following command:</p>
9446
- <div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a>kubectl<span class="w"> </span>get<span class="w"> </span>services
9210
+ <div class="admonition info">
9211
+ <p class="admonition-title">Info</p>
9212
+ <p>In this example, we are connecting the <code>nautobot</code> and <code>celery_worker</code> containers to the Kind network to allow access to the Kind cluster from these containers during development. Connecting the <code>celery_worker</code> container is necessary if you want to run Nautobot Jobs that access the Kind Kubernetes cluster.</p>
9213
+ </div>
9214
+ <p>You should see <code>nautobot-nautobot-1</code> and <code>nautobot-celery_worker-1</code> containers running and in a healthy state:</p>
9215
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a>CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9216
+ <a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a>...
9217
+ <a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a>1f191e104357 local/nautobot-dev:local-py3.11 &quot;watchmedo auto-rest…&quot; 2 minutes ago Up 37 seconds (healthy) 0.0.0.0:8081-&gt;8080/tcp, [::]:8081-&gt;8080/tcp nautobot-celery_worker-1
9218
+ <a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a>d396ed398a4c local/nautobot-dev:local-py3.11 &quot;/docker-entrypoint.…&quot; 2 minutes ago Up 2 minutes (healthy) 0.0.0.0:8080-&gt;8080/tcp, :::8080-&gt;8080/tcp nautobot-nautobot-1
9219
+ <a id="__codelineno-6-5" name="__codelineno-6-5" href="#__codelineno-6-5"></a>...
9447
9220
  </code></pre></div>
9448
- <p>You should see the following output:</p>
9449
- <div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a>NAME<span class="w"> </span>TYPE<span class="w"> </span>CLUSTER-IP<span class="w"> </span>EXTERNAL-IP<span class="w"> </span>PORT<span class="o">(</span>S<span class="o">)</span><span class="w"> </span>AGE
9450
- <a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a>db<span class="w"> </span>ClusterIP<span class="w"> </span><span class="m">10</span>.111.0.30<span class="w"> </span>&lt;none&gt;<span class="w"> </span><span class="m">5432</span>/TCP<span class="w"> </span>12m
9451
- <a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a>kubernetes<span class="w"> </span>ClusterIP<span class="w"> </span><span class="m">10</span>.96.0.1<span class="w"> </span>&lt;none&gt;<span class="w"> </span><span class="m">443</span>/TCP<span class="w"> </span>12m
9452
- <a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a>nautobot<span class="w"> </span>ClusterIP<span class="w"> </span><span class="m">10</span>.106.32.53<span class="w"> </span>&lt;none&gt;<span class="w"> </span><span class="m">8080</span>/TCP<span class="w"> </span>12m
9453
- <a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a>redis<span class="w"> </span>ClusterIP<span class="w"> </span><span class="m">10</span>.102.99.143<span class="w"> </span>&lt;none&gt;<span class="w"> </span><span class="m">6379</span>/TCP<span class="w"> </span>12m
9221
+ <p>Verify the Kind Docker network name is <code>kind</code>:</p>
9222
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a>docker<span class="w"> </span>network<span class="w"> </span>ls
9454
9223
  </code></pre></div>
9455
- <h3 id="starting-the-configuration-maps-and-persistent-volume-claims">Starting the Configuration Maps and Persistent Volume Claims<a class="headerlink" href="#starting-the-configuration-maps-and-persistent-volume-claims" title="Permanent link">&para;</a></h3>
9456
- <p>Once you have started all deployments and services. You can start the required configuration maps and persistent volume claims:</p>
9457
- <p>To start all configuration maps:</p>
9458
- <div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>kubectl<span class="w"> </span>apply<span class="w"> </span>-f<span class="w"> </span><span class="s2">&quot;development/kubernetes/*-configmap.yaml&quot;</span>
9224
+ <p>You should see all networks, including the <code>kind</code> network.</p>
9225
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a>NETWORK ID NAME DRIVER SCOPE
9226
+ <a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a>...
9227
+ <a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a>6de64b53be75 kind bridge local
9228
+ <a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a>...
9459
9229
  </code></pre></div>
9460
- <p>You should see the following output:</p>
9461
- <div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a>configmap/dev-env<span class="w"> </span>created
9462
- <a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a>configmap/nautobot-cm1<span class="w"> </span>created
9463
- <a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a>configmap/nautobot-cm2<span class="w"> </span>created
9230
+ <p>Connect running Nautobot containers to the Kind network:</p>
9231
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a>docker<span class="w"> </span>network<span class="w"> </span>connect<span class="w"> </span>kind<span class="w"> </span>nautobot-nautobot-1
9232
+ <a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a>docker<span class="w"> </span>network<span class="w"> </span>connect<span class="w"> </span>kind<span class="w"> </span>nautobot-celery_worker-1
9464
9233
  </code></pre></div>
9465
- <p>You can confirm that those configuration maps are created by running the following command:</p>
9466
- <div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a>kubectl<span class="w"> </span>get<span class="w"> </span>configmaps
9234
+ <p>Now the selected Nautobot containers are connected to the Kind network and can access the Kind Kubernetes cluster.</p>
9235
+ <h2 id="using-kubectl">Using <code>kubectl</code><a class="headerlink" href="#using-kubectl" title="Permanent link">&para;</a></h2>
9236
+ <p>To access the Kind Kubernetes cluster from the Nautobot container, you can use <code>kubectl</code> CLI tool.</p>
9237
+ <div class="admonition note">
9238
+ <p class="admonition-title">Note</p>
9239
+ <p>If you just want to use Python scripts to interact with the cluster, you can skip this chapter. However, it's recommended to install <code>kubectl</code> as it is a powerful tool for interacting with the Kubernetes cluster for debugging and testing.</p>
9240
+ </div>
9241
+ <p>To verify the connection from Nautobot container to the Kind cluster:</p>
9242
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="c1"># Open shell in the running Nautobot container</span>
9243
+ <a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a>invoke<span class="w"> </span>cli
9244
+ <a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a>
9245
+ <a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a><span class="c1"># Install kubectl</span>
9246
+ <a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a>apt<span class="w"> </span>update
9247
+ <a id="__codelineno-10-6" name="__codelineno-10-6" href="#__codelineno-10-6"></a>apt<span class="w"> </span>install<span class="w"> </span>kubernetes-client
9248
+ <a id="__codelineno-10-7" name="__codelineno-10-7" href="#__codelineno-10-7"></a>
9249
+ <a id="__codelineno-10-8" name="__codelineno-10-8" href="#__codelineno-10-8"></a><span class="c1"># Test the connection</span>
9250
+ <a id="__codelineno-10-9" name="__codelineno-10-9" href="#__codelineno-10-9"></a><span class="nb">export</span><span class="w"> </span><span class="nv">KUBECONFIG</span><span class="o">=</span>/source/development/kind-kube-config
9251
+ <a id="__codelineno-10-10" name="__codelineno-10-10" href="#__codelineno-10-10"></a>kubectl<span class="w"> </span>cluster-info
9467
9252
  </code></pre></div>
9468
9253
  <p>You should see the following output:</p>
9469
- <div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a>NAME<span class="w"> </span>DATA<span class="w"> </span>AGE
9470
- <a id="__codelineno-20-2" name="__codelineno-20-2" href="#__codelineno-20-2"></a>dev-env<span class="w"> </span><span class="m">32</span><span class="w"> </span>24s
9471
- <a id="__codelineno-20-3" name="__codelineno-20-3" href="#__codelineno-20-3"></a>nautobot-cm1<span class="w"> </span><span class="m">1</span><span class="w"> </span>24s
9472
- <a id="__codelineno-20-4" name="__codelineno-20-4" href="#__codelineno-20-4"></a>nautobot-cm2<span class="w"> </span><span class="m">1</span><span class="w"> </span>24s
9473
- </code></pre></div>
9474
- <p>To start all persistent volume claims:</p>
9475
- <div class="highlight"><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a>kubectl<span class="w"> </span>apply<span class="w"> </span>-f<span class="w"> </span><span class="s2">&quot;development/kubernetes/*-persistentvolumeclaim.yaml&quot;</span>
9254
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a>Kubernetes control plane is running at https://nautobot-control-plane:6443
9255
+ <a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a>CoreDNS is running at https://nautobot-control-plane:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
9256
+ <a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a>
9257
+ <a id="__codelineno-11-4" name="__codelineno-11-4" href="#__codelineno-11-4"></a>To further debug and diagnose cluster problems, use &#39;kubectl cluster-info dump&#39;.
9476
9258
  </code></pre></div>
9477
- <p>You should see the following output:</p>
9478
- <div class="highlight"><pre><span></span><code><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a>persistentvolumeclaim/media-root<span class="w"> </span>created
9479
- <a id="__codelineno-22-2" name="__codelineno-22-2" href="#__codelineno-22-2"></a>persistentvolumeclaim/pgdata-nautobot<span class="w"> </span>created
9259
+ <h2 id="running-a-test-job">Running a Test Job<a class="headerlink" href="#running-a-test-job" title="Permanent link">&para;</a></h2>
9260
+ <p>You can verify the connection by creating the testing Kubernetes job:</p>
9261
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a>invoke<span class="w"> </span>cli
9262
+ <a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a>
9263
+ <a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a><span class="nb">export</span><span class="w"> </span><span class="nv">KUBECONFIG</span><span class="o">=</span>/source/development/kind-kube-config
9264
+ <a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a>./development/create_k8s_job.py
9480
9265
  </code></pre></div>
9481
- <p>You can confirm that those persistent volume claims are created by running the following command:</p>
9482
- <div class="highlight"><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a>kubectl<span class="w"> </span>get<span class="w"> </span>persistentvolumeclaims
9266
+ <div class="admonition note">
9267
+ <p class="admonition-title">Note</p>
9268
+ <p>For the following steps, the <code>kubectl</code> CLI tool must be installed as described in the previous chapter.</p>
9269
+ </div>
9270
+ <p>To verify the job is running.</p>
9271
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>kubectl<span class="w"> </span>get<span class="w"> </span>job
9483
9272
  </code></pre></div>
9484
9273
  <p>You should see the following output:</p>
9485
- <div class="highlight"><pre><span></span><code><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a>NAME<span class="w"> </span>STATUS<span class="w"> </span>VOLUME<span class="w"> </span>CAPACITY<span class="w"> </span>ACCESS<span class="w"> </span>MODES<span class="w"> </span>STORAGECLASS<span class="w"> </span>VOLUMEATTRIBUTESCLASS<span class="w"> </span>AGE
9486
- <a id="__codelineno-24-2" name="__codelineno-24-2" href="#__codelineno-24-2"></a>media-root<span class="w"> </span>Bound<span class="w"> </span>pvc-011f484b-2ccf-4fe0-953b-289a13ad0480<span class="w"> </span>200Mi<span class="w"> </span>RWO<span class="w"> </span>standard<span class="w"> </span>&lt;unset&gt;<span class="w"> </span>2m35s
9487
- <a id="__codelineno-24-3" name="__codelineno-24-3" href="#__codelineno-24-3"></a>pgdata-nautobot<span class="w"> </span>Bound<span class="w"> </span>pvc-5954eb3f-75e3-4f6b-9b9c-a91e40ea96bf<span class="w"> </span>200Mi<span class="w"> </span>RWO<span class="w"> </span>standard<span class="w"> </span>&lt;unset&gt;<span class="w"> </span>2m35s
9488
- </code></pre></div>
9489
- <p>To confirm all required kubernetes entities are up and running, run the following command:</p>
9490
- <div class="highlight"><pre><span></span><code><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a>kubectl<span class="w"> </span>get<span class="w"> </span>all
9491
- </code></pre></div>
9492
- <p>You should see the following output, note that pods are automatically created when you create deployments:</p>
9493
- <div class="highlight"><pre><span></span><code><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a>NAME<span class="w"> </span>READY<span class="w"> </span>STATUS<span class="w"> </span>RESTARTS<span class="w"> </span>AGE
9494
- <a id="__codelineno-26-2" name="__codelineno-26-2" href="#__codelineno-26-2"></a>pod/celery-beat-6fb67477b7-rsw62<span class="w"> </span><span class="m">1</span>/1<span class="w"> </span>Running<span class="w"> </span><span class="m">0</span><span class="w"> </span>30m
9495
- <a id="__codelineno-26-3" name="__codelineno-26-3" href="#__codelineno-26-3"></a>pod/db-8687b48964-gtvtc<span class="w"> </span><span class="m">1</span>/1<span class="w"> </span>Running<span class="w"> </span><span class="m">0</span><span class="w"> </span>30m
9496
- <a id="__codelineno-26-4" name="__codelineno-26-4" href="#__codelineno-26-4"></a>pod/nautobot-679bdc765-pl2ld<span class="w"> </span><span class="m">1</span>/1<span class="w"> </span>Running<span class="w"> </span><span class="m">0</span><span class="w"> </span>30m
9497
- <a id="__codelineno-26-5" name="__codelineno-26-5" href="#__codelineno-26-5"></a>pod/redis-7cc58577c-tl5sq<span class="w"> </span><span class="m">1</span>/1<span class="w"> </span>Running<span class="w"> </span><span class="m">0</span><span class="w"> </span>30m
9498
- <a id="__codelineno-26-6" name="__codelineno-26-6" href="#__codelineno-26-6"></a>
9499
- <a id="__codelineno-26-7" name="__codelineno-26-7" href="#__codelineno-26-7"></a>NAME<span class="w"> </span>TYPE<span class="w"> </span>CLUSTER-IP<span class="w"> </span>EXTERNAL-IP<span class="w"> </span>PORT<span class="o">(</span>S<span class="o">)</span><span class="w"> </span>AGE
9500
- <a id="__codelineno-26-8" name="__codelineno-26-8" href="#__codelineno-26-8"></a>service/db<span class="w"> </span>ClusterIP<span class="w"> </span><span class="m">10</span>.111.0.30<span class="w"> </span>&lt;none&gt;<span class="w"> </span><span class="m">5432</span>/TCP<span class="w"> </span>30m
9501
- <a id="__codelineno-26-9" name="__codelineno-26-9" href="#__codelineno-26-9"></a>service/kubernetes<span class="w"> </span>ClusterIP<span class="w"> </span><span class="m">10</span>.96.0.1<span class="w"> </span>&lt;none&gt;<span class="w"> </span><span class="m">443</span>/TCP<span class="w"> </span>30m
9502
- <a id="__codelineno-26-10" name="__codelineno-26-10" href="#__codelineno-26-10"></a>service/nautobot<span class="w"> </span>ClusterIP<span class="w"> </span><span class="m">10</span>.106.32.53<span class="w"> </span>&lt;none&gt;<span class="w"> </span><span class="m">8080</span>/TCP<span class="w"> </span>30m
9503
- <a id="__codelineno-26-11" name="__codelineno-26-11" href="#__codelineno-26-11"></a>service/redis<span class="w"> </span>ClusterIP<span class="w"> </span><span class="m">10</span>.102.99.143<span class="w"> </span>&lt;none&gt;<span class="w"> </span><span class="m">6379</span>/TCP<span class="w"> </span>30m
9504
- <a id="__codelineno-26-12" name="__codelineno-26-12" href="#__codelineno-26-12"></a>
9505
- <a id="__codelineno-26-13" name="__codelineno-26-13" href="#__codelineno-26-13"></a>NAME<span class="w"> </span>READY<span class="w"> </span>UP-TO-DATE<span class="w"> </span>AVAILABLE<span class="w"> </span>AGE
9506
- <a id="__codelineno-26-14" name="__codelineno-26-14" href="#__codelineno-26-14"></a>deployment.apps/celery-beat<span class="w"> </span><span class="m">1</span>/1<span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="m">1</span><span class="w"> </span>30m
9507
- <a id="__codelineno-26-15" name="__codelineno-26-15" href="#__codelineno-26-15"></a>deployment.apps/db<span class="w"> </span><span class="m">1</span>/1<span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="m">1</span><span class="w"> </span>30m
9508
- <a id="__codelineno-26-16" name="__codelineno-26-16" href="#__codelineno-26-16"></a>deployment.apps/nautobot<span class="w"> </span><span class="m">1</span>/1<span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="m">1</span><span class="w"> </span>30m
9509
- <a id="__codelineno-26-17" name="__codelineno-26-17" href="#__codelineno-26-17"></a>deployment.apps/redis<span class="w"> </span><span class="m">1</span>/1<span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="m">1</span><span class="w"> </span>30m
9274
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a>NAME STATUS COMPLETIONS DURATION AGE
9275
+ <a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a>demo-job Running 0/1 6s 6s
9510
9276
  </code></pre></div>
9511
- <h3 id="port-forward-to-local-host">Port Forward to Local Host<a class="headerlink" href="#port-forward-to-local-host" title="Permanent link">&para;</a></h3>
9512
- <p>You can use the <code>port-forward</code> command from <code>kubectl</code> to make your Nautobot instance on the kubernetes cluster accessible in <code>localhost:8080</code>:</p>
9513
- <div class="highlight"><pre><span></span><code><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a>kubectl<span class="w"> </span>port-forward<span class="w"> </span>&lt;nautobot-pod-name&gt;<span class="w"> </span><span class="m">8080</span>:8080
9514
- </code></pre></div>
9515
- <p>The output should be:</p>
9516
- <div class="highlight"><pre><span></span><code><a id="__codelineno-28-1" name="__codelineno-28-1" href="#__codelineno-28-1"></a>Forwarding<span class="w"> </span>from<span class="w"> </span><span class="m">127</span>.0.0.1:8080<span class="w"> </span>-&gt;<span class="w"> </span><span class="m">8080</span>
9517
- <a id="__codelineno-28-2" name="__codelineno-28-2" href="#__codelineno-28-2"></a>Forwarding<span class="w"> </span>from<span class="w"> </span><span class="o">[</span>::1<span class="o">]</span>:8080<span class="w"> </span>-&gt;<span class="w"> </span><span class="m">8080</span>
9518
- <a id="__codelineno-28-3" name="__codelineno-28-3" href="#__codelineno-28-3"></a>Handling<span class="w"> </span>connection<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="m">8080</span>
9519
- </code></pre></div>
9520
- <p>Now go to your web browser and navigate to <code>localhost:8080</code>. You should see your Nautobot instance running.</p>
9521
- <p><img alt="K8s Nautobot Login" src="../../media/development/core/kubernetes/k8s_nautobot_login.png" /></p>
9522
- <h2 id="run-a-kubernetes-job">Run a Kubernetes Job<a class="headerlink" href="#run-a-kubernetes-job" title="Permanent link">&para;</a></h2>
9523
- <h3 id="configure-a-new-job-queue-of-type-kubernetes">Configure a New Job Queue of Type Kubernetes<a class="headerlink" href="#configure-a-new-job-queue-of-type-kubernetes" title="Permanent link">&para;</a></h3>
9524
- <p>Go to the Navigation bar on your left hand side and look at the Jobs Section. You should see Job Queues at the very end of the section. Click on the plus button next to the Job Queues entry and this will take you to a form for creating a new job queue.</p>
9525
- <p><img alt="K8s Job Queue Add" src="../../media/development/core/kubernetes/k8s_job_queue_add.png" /></p>
9526
- <p>You can give the name "kubernetes" to the new job queue and select "Kubernetes" from the Queue Type dropdown.</p>
9527
- <p><img alt="K8s Job Queue Config" src="../../media/development/core/kubernetes/k8s_job_queue_config.png" /></p>
9528
- <p>Scroll down and click on the create button. A new Job Queue with name "kubernetes" and with type Kubernetes should be created.</p>
9529
- <p><img alt="K8s Job Queue Detail" src="../../media/development/core/kubernetes/k8s_job_queue.png" /></p>
9530
- <h3 id="assign-that-job-queue-to-a-job">Assign that Job Queue to a Job<a class="headerlink" href="#assign-that-job-queue-to-a-job" title="Permanent link">&para;</a></h3>
9531
- <p>Go to a Job's edit form and assign the newly created kubernetes job queue to the job. You will be using the "Export Object List" system job here.</p>
9532
- <p><img alt="K8s Job Edit Button" src="../../media/development/core/kubernetes/k8s_job_edit_button.png" /></p>
9533
- <p>Check the override default value checkbox on the <code>Job Queues</code> field and select the kubernetes job queue from the dropdown.
9534
- Check the override default value checkbox on the <code>Default Job Queue</code> field and select the kubernetes job queue from the dropdown.</p>
9535
- <p><img alt="K8s Job Edit" src="../../media/development/core/kubernetes/k8s_job_edit.png" /></p>
9536
- <p>Click on the update button when you are finished.</p>
9537
- <h3 id="run-the-job">Run the Job<a class="headerlink" href="#run-the-job" title="Permanent link">&para;</a></h3>
9538
- <p>After clicking on the update button after the previous step, you should be redirected to the table of jobs. Click on the link that says "Export Object List". This should take you to the Job Run Form.</p>
9539
- <p><img alt="K8s Run Job" src="../../media/development/core/kubernetes/k8s_run_job.png" /></p>
9540
- <p>Select an option for the Content Type field dropdown and notice that the Job queue is already filled out with the kubernetes job queue that you assigned to this job from previous steps. So you do not need to make any changes there.</p>
9541
- <p><img alt="K8s Run Job Form" src="../../media/development/core/kubernetes/k8s_job_run_form.png" /></p>
9542
- <p>Click on the "Run Job Now" button and you should be directed to the job result page.</p>
9543
- <p><img alt="K8s Job Result Pending" src="../../media/development/core/kubernetes/k8s_job_result_pending.png" /></p>
9544
- <h3 id="inspect-the-job-result">Inspect the Job Result<a class="headerlink" href="#inspect-the-job-result" title="Permanent link">&para;</a></h3>
9545
- <p>You can inspect the job result and the job logs in this page. Notice the two job log entries that reads something like "Creating job pod (pod-name) in namespace default" and "Reading job pod (pod-name) in namespace default". Those entries indicate that a Kubernetes Job pod was executing the job for you.</p>
9546
- <p><img alt="K8s Job Result Completed" src="../../media/development/core/kubernetes/k8s_job_result_completed.png" /></p>
9547
- <h3 id="running-a-scheduled-job">Running a Scheduled Job<a class="headerlink" href="#running-a-scheduled-job" title="Permanent link">&para;</a></h3>
9548
- <p>You can run scheduled jobs as well. In order to run scheduled jobs, you do need celery beat which should already be running from previous steps. To confirm that the celery beat is running, you need to retrieve the celery beat pod name by running the command <code>kubectl get pods</code>. You should see the following output or something similar, copy the pod name with prefix <code>celery-beat-*</code>.</p>
9549
- <div class="highlight"><pre><span></span><code><a id="__codelineno-29-1" name="__codelineno-29-1" href="#__codelineno-29-1"></a>NAME<span class="w"> </span>READY<span class="w"> </span>STATUS<span class="w"> </span>RESTARTS<span class="w"> </span>AGE
9550
- <a id="__codelineno-29-2" name="__codelineno-29-2" href="#__codelineno-29-2"></a>celery-beat-6fb67477b7-rsw62<span class="w"> </span><span class="m">1</span>/1<span class="w"> </span>Running<span class="w"> </span><span class="m">0</span><span class="w"> </span>10m
9551
- <a id="__codelineno-29-3" name="__codelineno-29-3" href="#__codelineno-29-3"></a>db-8687b48964-gtvtc<span class="w"> </span><span class="m">1</span>/1<span class="w"> </span>Running<span class="w"> </span><span class="m">0</span><span class="w"> </span>10m
9552
- <a id="__codelineno-29-4" name="__codelineno-29-4" href="#__codelineno-29-4"></a>nautobot-679bdc765-pl2ld<span class="w"> </span><span class="m">1</span>/1<span class="w"> </span>Running<span class="w"> </span><span class="m">0</span><span class="w"> </span>10m
9553
- <a id="__codelineno-29-5" name="__codelineno-29-5" href="#__codelineno-29-5"></a>redis-7cc58577c-tl5sq<span class="w"> </span><span class="m">1</span>/1<span class="w"> </span>Running<span class="w"> </span><span class="m">0</span><span class="w"> </span>10m
9554
- </code></pre></div>
9555
- <p>you can run the command <code>kubectl logs &lt;celery-beat-pod-name&gt; -f</code> and you should see the following output or something similar:</p>
9556
- <div class="highlight"><pre><span></span><code><a id="__codelineno-30-1" name="__codelineno-30-1" href="#__codelineno-30-1"></a>LocalTime<span class="w"> </span>-&gt;<span class="w"> </span><span class="m">2024</span>-11-20<span class="w"> </span><span class="m">18</span>:49:41
9557
- <a id="__codelineno-30-2" name="__codelineno-30-2" href="#__codelineno-30-2"></a>Configuration<span class="w"> </span>-&gt;
9558
- <a id="__codelineno-30-3" name="__codelineno-30-3" href="#__codelineno-30-3"></a><span class="w"> </span>.<span class="w"> </span>broker<span class="w"> </span>-&gt;<span class="w"> </span>redis://:**@redis:6379/0
9559
- <a id="__codelineno-30-4" name="__codelineno-30-4" href="#__codelineno-30-4"></a><span class="w"> </span>.<span class="w"> </span>loader<span class="w"> </span>-&gt;<span class="w"> </span>celery.loaders.app.AppLoader
9560
- <a id="__codelineno-30-5" name="__codelineno-30-5" href="#__codelineno-30-5"></a><span class="w"> </span>.<span class="w"> </span>scheduler<span class="w"> </span>-&gt;<span class="w"> </span>nautobot.core.celery.schedulers.NautobotDatabaseScheduler
9561
- <a id="__codelineno-30-6" name="__codelineno-30-6" href="#__codelineno-30-6"></a>
9562
- <a id="__codelineno-30-7" name="__codelineno-30-7" href="#__codelineno-30-7"></a><span class="w"> </span>.<span class="w"> </span>logfile<span class="w"> </span>-&gt;<span class="w"> </span><span class="o">[</span>stderr<span class="o">]</span>@%INFO
9563
- <a id="__codelineno-30-8" name="__codelineno-30-8" href="#__codelineno-30-8"></a><span class="w"> </span>.<span class="w"> </span>maxinterval<span class="w"> </span>-&gt;<span class="w"> </span><span class="m">5</span>.00<span class="w"> </span>seconds<span class="w"> </span><span class="o">(</span>5s<span class="o">)</span>
9564
- <a id="__codelineno-30-9" name="__codelineno-30-9" href="#__codelineno-30-9"></a><span class="o">[</span><span class="m">2024</span>-11-20<span class="w"> </span><span class="m">18</span>:49:41,161:<span class="w"> </span>INFO/MainProcess<span class="o">]</span><span class="w"> </span>beat:<span class="w"> </span>Starting...
9277
+ <div class="admonition info">
9278
+ <p class="admonition-title">Info</p>
9279
+ <p>The job will run for 10 seconds and then complete.</p>
9280
+ </div>
9281
+ <p>You can check the logs of the job:</p>
9282
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a>kubectl<span class="w"> </span>logs<span class="w"> </span>job/demo-job<span class="w"> </span>--follow
9565
9283
  </code></pre></div>
9566
- <p>Now you are going to create a new Scheduled Export Object List Job. Starting from Nautobot homepage, you can go to the Jobs dropdown on the left navigation menu and navigate to the job list view.</p>
9567
- <p><img alt="K8s Job List Nav" src="../../media/development/core/kubernetes/k8s_job_list_nav.png" /></p>
9568
- <p><img alt="K8s Job List View" src="../../media/development/core/kubernetes/k8s_job_list_view.png" /></p>
9569
- <p>Click on the Run/Schedule link for Export Object List Job.</p>
9570
- <p><img alt="K8s Run Job" src="../../media/development/core/kubernetes/k8s_run_job.png" /></p>
9571
- <p>Fill in the data shown below (for the "Starting date and time" field, pick a date and time that is close to the current date and time) and click on the "Schedule Job" button on the bottom right.</p>
9572
- <p><img alt="K8s Run Scheduled Job Form" src="../../media/development/core/kubernetes/k8s_run_scheduled_job_form.png" /></p>
9573
- <p>To confirm that the Scheduled Job is running, you go back to the terminal that was logging celery beat. You should see the following logs or something similar:</p>
9574
- <div class="highlight"><pre><span></span><code><a id="__codelineno-31-1" name="__codelineno-31-1" href="#__codelineno-31-1"></a><span class="o">[</span><span class="m">2024</span>-11-21<span class="w"> </span><span class="m">02</span>:09:57,756:<span class="w"> </span>INFO/MainProcess<span class="o">]</span><span class="w"> </span>DatabaseScheduler:<span class="w"> </span>Schedule<span class="w"> </span>changed.
9575
- <a id="__codelineno-31-2" name="__codelineno-31-2" href="#__codelineno-31-2"></a><span class="o">[</span><span class="m">2024</span>-11-21<span class="w"> </span><span class="m">02</span>:09:57,774:<span class="w"> </span>INFO/MainProcess<span class="o">]</span><span class="w"> </span>Scheduler:<span class="w"> </span>Sending<span class="w"> </span>due<span class="w"> </span>task<span class="w"> </span>Export<span class="w"> </span>Object<span class="w"> </span>List<span class="w"> </span>Hourly_85413d3f-1342-4adf-8d80-11e740ebb907<span class="w"> </span><span class="o">(</span>nautobot.extras.jobs.run_job<span class="o">)</span>
9576
- <a id="__codelineno-31-3" name="__codelineno-31-3" href="#__codelineno-31-3"></a><span class="m">02</span>:09:57.782<span class="w"> </span>INFO<span class="w"> </span>nautobot.extras.utils<span class="w"> </span>utils.py<span class="w"> </span>run_kubernetes_job_and_return_job_result<span class="o">()</span><span class="w"> </span>:
9577
- <a id="__codelineno-31-4" name="__codelineno-31-4" href="#__codelineno-31-4"></a><span class="w"> </span>Creating<span class="w"> </span>job<span class="w"> </span>pod<span class="w"> </span>nautobot-job<span class="w"> </span><span class="k">in</span><span class="w"> </span>namespace<span class="w"> </span>default
9578
- <a id="__codelineno-31-5" name="__codelineno-31-5" href="#__codelineno-31-5"></a><span class="o">[</span><span class="m">2024</span>-11-21<span class="w"> </span><span class="m">02</span>:09:57,782:<span class="w"> </span>INFO/MainProcess<span class="o">]</span><span class="w"> </span>Creating<span class="w"> </span>job<span class="w"> </span>pod<span class="w"> </span>nautobot-job<span class="w"> </span><span class="k">in</span><span class="w"> </span>namespace<span class="w"> </span>default
9579
- <a id="__codelineno-31-6" name="__codelineno-31-6" href="#__codelineno-31-6"></a><span class="m">02</span>:09:57.802<span class="w"> </span>INFO<span class="w"> </span>nautobot.extras.utils<span class="w"> </span>utils.py<span class="w"> </span>run_kubernetes_job_and_return_job_result<span class="o">()</span><span class="w"> </span>:
9580
- <a id="__codelineno-31-7" name="__codelineno-31-7" href="#__codelineno-31-7"></a><span class="w"> </span>Reading<span class="w"> </span>job<span class="w"> </span>pod<span class="w"> </span>nautobot-job<span class="w"> </span><span class="k">in</span><span class="w"> </span>namespace<span class="w"> </span>default
9581
- <a id="__codelineno-31-8" name="__codelineno-31-8" href="#__codelineno-31-8"></a><span class="o">[</span><span class="m">2024</span>-11-21<span class="w"> </span><span class="m">02</span>:09:57,802:<span class="w"> </span>INFO/MainProcess<span class="o">]</span><span class="w"> </span>Reading<span class="w"> </span>job<span class="w"> </span>pod<span class="w"> </span>nautobot-job<span class="w"> </span><span class="k">in</span><span class="w"> </span>namespace<span class="w"> </span>default
9582
- <a id="__codelineno-31-9" name="__codelineno-31-9" href="#__codelineno-31-9"></a><span class="o">[</span><span class="m">2024</span>-11-21<span class="w"> </span><span class="m">02</span>:09:57,837:<span class="w"> </span>INFO/MainProcess<span class="o">]</span><span class="w"> </span>DatabaseScheduler:<span class="w"> </span>Schedule<span class="w"> </span>changed.
9284
+ <p>Expected output:</p>
9285
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a>Hello, Kubernetes!
9583
9286
  </code></pre></div>
9584
- <p>You can also confirm if the job is running or is completed by running <code>kubectl get jobs</code> and <code>kubectl get pods</code> in another terminal.</p>
9585
- <p>Go back to your browser and click on the Job Results entry from the Jobs navigation menu.</p>
9586
- <p><img alt="K8s Job Result Navigation" src="../../media/development/core/kubernetes/k8s_job_result_nav.png" /></p>
9587
- <p>Inspect the Job Result</p>
9588
- <p><img alt="K8s Scheduled Job Job Result" src="../../media/development/core/kubernetes/k8s_scheduled_job_result.png" /></p>
9589
- <h2 id="after-running-a-job">After Running a Job<a class="headerlink" href="#after-running-a-job" title="Permanent link">&para;</a></h2>
9590
- <p>Good news is that there is nothing for you to do after running a kubernetes job. The job pod with prefix <code>nautobot-job-pod-*</code> will clean up itself. Running <code>kubectl get pods</code> to confirm that <code>nautobot-job-pod-&lt;pod_id&gt;</code> no longer exists.</p>
9591
- <div class="highlight"><pre><span></span><code><a id="__codelineno-32-1" name="__codelineno-32-1" href="#__codelineno-32-1"></a>NAME<span class="w"> </span>READY<span class="w"> </span>STATUS<span class="w"> </span>RESTARTS<span class="w"> </span>AGE
9592
- <a id="__codelineno-32-2" name="__codelineno-32-2" href="#__codelineno-32-2"></a>celery-beat-6fb67477b7-rsw62<span class="w"> </span><span class="m">1</span>/1<span class="w"> </span>Running<span class="w"> </span><span class="m">0</span><span class="w"> </span>1h
9593
- <a id="__codelineno-32-3" name="__codelineno-32-3" href="#__codelineno-32-3"></a>db-8687b48964-gtvtc<span class="w"> </span><span class="m">1</span>/1<span class="w"> </span>Running<span class="w"> </span><span class="m">0</span><span class="w"> </span>1h
9594
- <a id="__codelineno-32-4" name="__codelineno-32-4" href="#__codelineno-32-4"></a>nautobot-679bdc765-pl2ld<span class="w"> </span><span class="m">1</span>/1<span class="w"> </span>Running<span class="w"> </span><span class="m">0</span><span class="w"> </span>1h
9595
- <a id="__codelineno-32-5" name="__codelineno-32-5" href="#__codelineno-32-5"></a>redis-7cc58577c-tl5sq<span class="w"> </span><span class="m">1</span>/1<span class="w"> </span>Running<span class="w"> </span><span class="m">0</span><span class="w"> </span>1h
9287
+ <div class="admonition warning">
9288
+ <p class="admonition-title">Warning</p>
9289
+ <p>You should delete the job after you are done with it, to be able to run the script again.</p>
9290
+ </div>
9291
+ <p>To delete the job:</p>
9292
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a>kubectl<span class="w"> </span>delete<span class="w"> </span>job<span class="w"> </span>demo-job
9596
9293
  </code></pre></div>
9597
- <p>You can also run <code>kubectl get jobs</code> to confirm that <code>nautobot-job-&lt;pod_id&gt;</code> no longer exists as well.</p>
9598
- <div class="highlight"><pre><span></span><code><a id="__codelineno-33-1" name="__codelineno-33-1" href="#__codelineno-33-1"></a>No<span class="w"> </span>resources<span class="w"> </span>found<span class="w"> </span><span class="k">in</span><span class="w"> </span>default<span class="w"> </span>namespace.
9294
+ <h2 id="cleaning-up">Cleaning Up<a class="headerlink" href="#cleaning-up" title="Permanent link">&para;</a></h2>
9295
+ <p>To clean up the Kind cluster and the <code>kubeconfig</code> file:</p>
9296
+ <div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a>kind<span class="w"> </span>delete<span class="w"> </span>cluster<span class="w"> </span>--name<span class="o">=</span>nautobot
9297
+ <a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a>rm<span class="w"> </span>development/kind-kube-config
9599
9298
  </code></pre></div>
9600
9299
 
9601
9300
 
@@ -9743,7 +9442,7 @@ Check the override default value checkbox on the <code>Default Job Queue</code>
9743
9442
  <script id="__config" type="application/json">{"base": "../..", "features": ["content.code.annotate", "content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "../../assets/javascripts/workers/search.6ce7567c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
9744
9443
 
9745
9444
 
9746
- <script src="../../assets/javascripts/bundle.88dd0f4e.min.js"></script>
9445
+ <script src="../../assets/javascripts/bundle.83f73b43.min.js"></script>
9747
9446
 
9748
9447
  <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
9749
9448