nautobot 2.2.1__py3-none-any.whl → 2.2.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. nautobot/apps/jobs.py +2 -0
  2. nautobot/core/api/utils.py +12 -9
  3. nautobot/core/apps/__init__.py +2 -2
  4. nautobot/core/celery/__init__.py +79 -68
  5. nautobot/core/celery/backends.py +9 -1
  6. nautobot/core/celery/control.py +4 -7
  7. nautobot/core/celery/schedulers.py +4 -2
  8. nautobot/core/celery/task.py +78 -5
  9. nautobot/core/graphql/schema.py +2 -1
  10. nautobot/core/jobs/__init__.py +2 -1
  11. nautobot/core/templates/generic/object_list.html +3 -3
  12. nautobot/core/templatetags/helpers.py +66 -9
  13. nautobot/core/testing/__init__.py +6 -1
  14. nautobot/core/testing/api.py +12 -13
  15. nautobot/core/testing/mixins.py +2 -2
  16. nautobot/core/testing/views.py +50 -51
  17. nautobot/core/tests/test_api.py +23 -2
  18. nautobot/core/tests/test_templatetags_helpers.py +32 -0
  19. nautobot/core/tests/test_views.py +21 -1
  20. nautobot/core/tests/test_views_utils.py +22 -1
  21. nautobot/core/utils/module_loading.py +89 -0
  22. nautobot/core/views/generic.py +4 -4
  23. nautobot/core/views/mixins.py +4 -3
  24. nautobot/core/views/utils.py +3 -2
  25. nautobot/core/wsgi.py +9 -2
  26. nautobot/dcim/choices.py +14 -0
  27. nautobot/dcim/forms.py +59 -4
  28. nautobot/dcim/models/device_components.py +9 -5
  29. nautobot/dcim/templates/dcim/device/lldp_neighbors.html +2 -2
  30. nautobot/dcim/templates/dcim/devicefamily_retrieve.html +1 -1
  31. nautobot/dcim/templates/dcim/location.html +32 -13
  32. nautobot/dcim/templates/dcim/location_migrate_data_to_contact.html +102 -0
  33. nautobot/dcim/tests/test_forms.py +49 -2
  34. nautobot/dcim/tests/test_views.py +137 -0
  35. nautobot/dcim/urls.py +5 -0
  36. nautobot/dcim/views.py +149 -1
  37. nautobot/extras/api/views.py +21 -10
  38. nautobot/extras/constants.py +3 -3
  39. nautobot/extras/context_managers.py +56 -0
  40. nautobot/extras/datasources/git.py +47 -58
  41. nautobot/extras/forms/forms.py +3 -1
  42. nautobot/extras/jobs.py +79 -146
  43. nautobot/extras/models/datasources.py +0 -2
  44. nautobot/extras/models/jobs.py +36 -18
  45. nautobot/extras/plugins/__init__.py +1 -20
  46. nautobot/extras/signals.py +88 -57
  47. nautobot/extras/test_jobs/__init__.py +8 -0
  48. nautobot/extras/test_jobs/dry_run.py +3 -2
  49. nautobot/extras/test_jobs/fail.py +43 -0
  50. nautobot/extras/test_jobs/ipaddress_vars.py +40 -1
  51. nautobot/extras/test_jobs/jobs_module/__init__.py +5 -0
  52. nautobot/extras/test_jobs/jobs_module/jobs_submodule/__init__.py +1 -0
  53. nautobot/extras/test_jobs/jobs_module/jobs_submodule/jobs.py +6 -0
  54. nautobot/extras/test_jobs/pass.py +40 -0
  55. nautobot/extras/test_jobs/relative_import.py +11 -0
  56. nautobot/extras/tests/test_api.py +3 -0
  57. nautobot/extras/tests/test_context_managers.py +98 -1
  58. nautobot/extras/tests/test_datasources.py +125 -118
  59. nautobot/extras/tests/test_job_variables.py +57 -15
  60. nautobot/extras/tests/test_jobs.py +135 -1
  61. nautobot/extras/tests/test_models.py +26 -19
  62. nautobot/extras/tests/test_plugins.py +1 -3
  63. nautobot/extras/tests/test_views.py +2 -4
  64. nautobot/extras/utils.py +37 -0
  65. nautobot/extras/views.py +47 -95
  66. nautobot/ipam/api/views.py +8 -1
  67. nautobot/ipam/graphql/types.py +11 -0
  68. nautobot/ipam/mixins.py +32 -0
  69. nautobot/ipam/models.py +2 -1
  70. nautobot/ipam/querysets.py +6 -1
  71. nautobot/ipam/tables.py +1 -1
  72. nautobot/ipam/tests/test_models.py +82 -0
  73. nautobot/project-static/docs/assets/extra.css +4 -0
  74. nautobot/project-static/docs/code-reference/nautobot/apps/api.html +1 -1
  75. nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +180 -211
  76. nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +1 -1
  77. nautobot/project-static/docs/development/core/application-registry.html +126 -84
  78. nautobot/project-static/docs/development/core/model-checklist.html +49 -1
  79. nautobot/project-static/docs/development/core/model-features.html +1 -1
  80. nautobot/project-static/docs/development/jobs/index.html +334 -58
  81. nautobot/project-static/docs/development/jobs/migration/from-v1.html +1 -1
  82. nautobot/project-static/docs/objects.inv +0 -0
  83. nautobot/project-static/docs/release-notes/version-1.6.html +504 -201
  84. nautobot/project-static/docs/release-notes/version-2.2.html +392 -43
  85. nautobot/project-static/docs/search/search_index.json +1 -1
  86. nautobot/project-static/docs/sitemap.xml +254 -254
  87. nautobot/project-static/docs/sitemap.xml.gz +0 -0
  88. nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +7 -4
  89. nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +111 -0
  90. nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +15 -28
  91. nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +4 -4
  92. nautobot/project-static/js/forms.js +18 -11
  93. {nautobot-2.2.1.dist-info → nautobot-2.2.3.dist-info}/METADATA +3 -3
  94. {nautobot-2.2.1.dist-info → nautobot-2.2.3.dist-info}/RECORD +98 -92
  95. nautobot/extras/test_jobs/job_variables.py +0 -93
  96. {nautobot-2.2.1.dist-info → nautobot-2.2.3.dist-info}/LICENSE.txt +0 -0
  97. {nautobot-2.2.1.dist-info → nautobot-2.2.3.dist-info}/NOTICE +0 -0
  98. {nautobot-2.2.1.dist-info → nautobot-2.2.3.dist-info}/WHEEL +0 -0
  99. {nautobot-2.2.1.dist-info → nautobot-2.2.3.dist-info}/entry_points.txt +0 -0
@@ -6154,15 +6154,6 @@
6154
6154
  </span>
6155
6155
  </a>
6156
6156
 
6157
- </li>
6158
-
6159
- <li class="md-nav__item">
6160
- <a href="#nautobot.apps.jobs.BaseJob.apply" class="md-nav__link">
6161
- <span class="md-ellipsis">
6162
- apply
6163
- </span>
6164
- </a>
6165
-
6166
6157
  </li>
6167
6158
 
6168
6159
  <li class="md-nav__item">
@@ -6217,15 +6208,6 @@
6217
6208
  </span>
6218
6209
  </a>
6219
6210
 
6220
- </li>
6221
-
6222
- <li class="md-nav__item">
6223
- <a href="#nautobot.apps.jobs.BaseJob.clear_cache" class="md-nav__link">
6224
- <span class="md-ellipsis">
6225
- clear_cache
6226
- </span>
6227
- </a>
6228
-
6229
6211
  </li>
6230
6212
 
6231
6213
  <li class="md-nav__item">
@@ -6247,27 +6229,27 @@
6247
6229
  </li>
6248
6230
 
6249
6231
  <li class="md-nav__item">
6250
- <a href="#nautobot.apps.jobs.BaseJob.load_json" class="md-nav__link">
6232
+ <a href="#nautobot.apps.jobs.BaseJob.file_path" class="md-nav__link">
6251
6233
  <span class="md-ellipsis">
6252
- load_json
6234
+ file_path
6253
6235
  </span>
6254
6236
  </a>
6255
6237
 
6256
6238
  </li>
6257
6239
 
6258
6240
  <li class="md-nav__item">
6259
- <a href="#nautobot.apps.jobs.BaseJob.load_yaml" class="md-nav__link">
6241
+ <a href="#nautobot.apps.jobs.BaseJob.load_json" class="md-nav__link">
6260
6242
  <span class="md-ellipsis">
6261
- load_yaml
6243
+ load_json
6262
6244
  </span>
6263
6245
  </a>
6264
6246
 
6265
6247
  </li>
6266
6248
 
6267
6249
  <li class="md-nav__item">
6268
- <a href="#nautobot.apps.jobs.BaseJob.on_bound" class="md-nav__link">
6250
+ <a href="#nautobot.apps.jobs.BaseJob.load_yaml" class="md-nav__link">
6269
6251
  <span class="md-ellipsis">
6270
- on_bound
6252
+ load_yaml
6271
6253
  </span>
6272
6254
  </a>
6273
6255
 
@@ -6319,27 +6301,27 @@
6319
6301
  </li>
6320
6302
 
6321
6303
  <li class="md-nav__item">
6322
- <a href="#nautobot.apps.jobs.BaseJob.run" class="md-nav__link">
6304
+ <a href="#nautobot.apps.jobs.BaseJob.registered_name" class="md-nav__link">
6323
6305
  <span class="md-ellipsis">
6324
- run
6306
+ registered_name
6325
6307
  </span>
6326
6308
  </a>
6327
6309
 
6328
6310
  </li>
6329
6311
 
6330
6312
  <li class="md-nav__item">
6331
- <a href="#nautobot.apps.jobs.BaseJob.serialize_data" class="md-nav__link">
6313
+ <a href="#nautobot.apps.jobs.BaseJob.run" class="md-nav__link">
6332
6314
  <span class="md-ellipsis">
6333
- serialize_data
6315
+ run
6334
6316
  </span>
6335
6317
  </a>
6336
6318
 
6337
6319
  </li>
6338
6320
 
6339
6321
  <li class="md-nav__item">
6340
- <a href="#nautobot.apps.jobs.BaseJob.shadow_name" class="md-nav__link">
6322
+ <a href="#nautobot.apps.jobs.BaseJob.serialize_data" class="md-nav__link">
6341
6323
  <span class="md-ellipsis">
6342
- shadow_name
6324
+ serialize_data
6343
6325
  </span>
6344
6326
  </a>
6345
6327
 
@@ -6636,6 +6618,15 @@
6636
6618
  </span>
6637
6619
  </a>
6638
6620
 
6621
+ </li>
6622
+
6623
+ <li class="md-nav__item">
6624
+ <a href="#nautobot.apps.jobs.get_jobs" class="md-nav__link">
6625
+ <span class="md-ellipsis">
6626
+ get_jobs
6627
+ </span>
6628
+ </a>
6629
+
6639
6630
  </li>
6640
6631
 
6641
6632
  <li class="md-nav__item">
@@ -8310,15 +8301,6 @@
8310
8301
  </span>
8311
8302
  </a>
8312
8303
 
8313
- </li>
8314
-
8315
- <li class="md-nav__item">
8316
- <a href="#nautobot.apps.jobs.BaseJob.apply" class="md-nav__link">
8317
- <span class="md-ellipsis">
8318
- apply
8319
- </span>
8320
- </a>
8321
-
8322
8304
  </li>
8323
8305
 
8324
8306
  <li class="md-nav__item">
@@ -8373,15 +8355,6 @@
8373
8355
  </span>
8374
8356
  </a>
8375
8357
 
8376
- </li>
8377
-
8378
- <li class="md-nav__item">
8379
- <a href="#nautobot.apps.jobs.BaseJob.clear_cache" class="md-nav__link">
8380
- <span class="md-ellipsis">
8381
- clear_cache
8382
- </span>
8383
- </a>
8384
-
8385
8358
  </li>
8386
8359
 
8387
8360
  <li class="md-nav__item">
@@ -8403,27 +8376,27 @@
8403
8376
  </li>
8404
8377
 
8405
8378
  <li class="md-nav__item">
8406
- <a href="#nautobot.apps.jobs.BaseJob.load_json" class="md-nav__link">
8379
+ <a href="#nautobot.apps.jobs.BaseJob.file_path" class="md-nav__link">
8407
8380
  <span class="md-ellipsis">
8408
- load_json
8381
+ file_path
8409
8382
  </span>
8410
8383
  </a>
8411
8384
 
8412
8385
  </li>
8413
8386
 
8414
8387
  <li class="md-nav__item">
8415
- <a href="#nautobot.apps.jobs.BaseJob.load_yaml" class="md-nav__link">
8388
+ <a href="#nautobot.apps.jobs.BaseJob.load_json" class="md-nav__link">
8416
8389
  <span class="md-ellipsis">
8417
- load_yaml
8390
+ load_json
8418
8391
  </span>
8419
8392
  </a>
8420
8393
 
8421
8394
  </li>
8422
8395
 
8423
8396
  <li class="md-nav__item">
8424
- <a href="#nautobot.apps.jobs.BaseJob.on_bound" class="md-nav__link">
8397
+ <a href="#nautobot.apps.jobs.BaseJob.load_yaml" class="md-nav__link">
8425
8398
  <span class="md-ellipsis">
8426
- on_bound
8399
+ load_yaml
8427
8400
  </span>
8428
8401
  </a>
8429
8402
 
@@ -8475,27 +8448,27 @@
8475
8448
  </li>
8476
8449
 
8477
8450
  <li class="md-nav__item">
8478
- <a href="#nautobot.apps.jobs.BaseJob.run" class="md-nav__link">
8451
+ <a href="#nautobot.apps.jobs.BaseJob.registered_name" class="md-nav__link">
8479
8452
  <span class="md-ellipsis">
8480
- run
8453
+ registered_name
8481
8454
  </span>
8482
8455
  </a>
8483
8456
 
8484
8457
  </li>
8485
8458
 
8486
8459
  <li class="md-nav__item">
8487
- <a href="#nautobot.apps.jobs.BaseJob.serialize_data" class="md-nav__link">
8460
+ <a href="#nautobot.apps.jobs.BaseJob.run" class="md-nav__link">
8488
8461
  <span class="md-ellipsis">
8489
- serialize_data
8462
+ run
8490
8463
  </span>
8491
8464
  </a>
8492
8465
 
8493
8466
  </li>
8494
8467
 
8495
8468
  <li class="md-nav__item">
8496
- <a href="#nautobot.apps.jobs.BaseJob.shadow_name" class="md-nav__link">
8469
+ <a href="#nautobot.apps.jobs.BaseJob.serialize_data" class="md-nav__link">
8497
8470
  <span class="md-ellipsis">
8498
- shadow_name
8471
+ serialize_data
8499
8472
  </span>
8500
8473
  </a>
8501
8474
 
@@ -8792,6 +8765,15 @@
8792
8765
  </span>
8793
8766
  </a>
8794
8767
 
8768
+ </li>
8769
+
8770
+ <li class="md-nav__item">
8771
+ <a href="#nautobot.apps.jobs.get_jobs" class="md-nav__link">
8772
+ <span class="md-ellipsis">
8773
+ get_jobs
8774
+ </span>
8775
+ </a>
8776
+
8795
8777
  </li>
8796
8778
 
8797
8779
  <li class="md-nav__item">
@@ -8876,8 +8858,6 @@
8876
8858
 
8877
8859
 
8878
8860
  <div class="doc doc-contents ">
8879
- <p class="doc doc-class-bases">
8880
- Bases: <code><span title="nautobot.core.celery.task.Task">Task</span></code></p>
8881
8861
 
8882
8862
 
8883
8863
  <p>Base model for jobs.</p>
@@ -9079,25 +9059,6 @@ with shared functionality; if no such sharing is required, use Job class instead
9079
9059
 
9080
9060
 
9081
9061
 
9082
- <h3 id="nautobot.apps.jobs.BaseJob.apply" class="doc doc-heading">
9083
- <code class="highlight language-python"><span class="n">apply</span><span class="p">(</span><span class="n">args</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">link</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">link_error</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">task_id</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">retries</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">throw</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">logfile</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">loglevel</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">headers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">options</span><span class="p">)</span></code>
9084
-
9085
- <a href="#nautobot.apps.jobs.BaseJob.apply" class="headerlink" title="Permanent link">&para;</a></h3>
9086
-
9087
-
9088
- <div class="doc doc-contents ">
9089
-
9090
- <p>Fix celery's apply method to propagate options to the task result</p>
9091
-
9092
- </div>
9093
-
9094
- </div>
9095
-
9096
-
9097
- <div class="doc doc-object doc-function">
9098
-
9099
-
9100
-
9101
9062
  <h3 id="nautobot.apps.jobs.BaseJob.as_form" class="doc doc-heading">
9102
9063
  <code class="highlight language-python"><span class="n">as_form</span><span class="p">(</span><span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">files</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">initial</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">approval_view</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
9103
9064
 
@@ -9311,26 +9272,6 @@ during a approval review workflow.</p>
9311
9272
 
9312
9273
 
9313
9274
 
9314
- <h3 id="nautobot.apps.jobs.BaseJob.clear_cache" class="doc doc-heading">
9315
- <code class="highlight language-python"><span class="n">clear_cache</span><span class="p">()</span></code>
9316
-
9317
- <a href="#nautobot.apps.jobs.BaseJob.clear_cache" class="headerlink" title="Permanent link">&para;</a></h3>
9318
-
9319
-
9320
- <div class="doc doc-contents ">
9321
-
9322
- <p>Clear all cached properties on this instance without accessing them. This is required because
9323
- celery reuses task instances for multiple runs.</p>
9324
-
9325
- </div>
9326
-
9327
- </div>
9328
-
9329
-
9330
- <div class="doc doc-object doc-function">
9331
-
9332
-
9333
-
9334
9275
  <h3 id="nautobot.apps.jobs.BaseJob.create_file" class="doc doc-heading">
9335
9276
  <code class="highlight language-python"><span class="n">create_file</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">content</span><span class="p">)</span></code>
9336
9277
 
@@ -9470,15 +9411,15 @@ path would consider this a failure of the job execution, as described in <code>n
9470
9411
 
9471
9412
 
9472
9413
 
9473
- <h3 id="nautobot.apps.jobs.BaseJob.load_json" class="doc doc-heading">
9474
- <code class="highlight language-python"><span class="n">load_json</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span></code>
9414
+ <h3 id="nautobot.apps.jobs.BaseJob.file_path" class="doc doc-heading">
9415
+ <code class="highlight language-python"><span class="n">file_path</span><span class="p">()</span></code>
9475
9416
 
9476
- <a href="#nautobot.apps.jobs.BaseJob.load_json" class="headerlink" title="Permanent link">&para;</a></h3>
9417
+ <a href="#nautobot.apps.jobs.BaseJob.file_path" class="headerlink" title="Permanent link">&para;</a></h3>
9477
9418
 
9478
9419
 
9479
9420
  <div class="doc doc-contents ">
9480
9421
 
9481
- <p>Return data from a JSON file</p>
9422
+ <p>Deprecated as of Nautobot 2.2.3.</p>
9482
9423
 
9483
9424
  </div>
9484
9425
 
@@ -9489,15 +9430,15 @@ path would consider this a failure of the job execution, as described in <code>n
9489
9430
 
9490
9431
 
9491
9432
 
9492
- <h3 id="nautobot.apps.jobs.BaseJob.load_yaml" class="doc doc-heading">
9493
- <code class="highlight language-python"><span class="n">load_yaml</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span></code>
9433
+ <h3 id="nautobot.apps.jobs.BaseJob.load_json" class="doc doc-heading">
9434
+ <code class="highlight language-python"><span class="n">load_json</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span></code>
9494
9435
 
9495
- <a href="#nautobot.apps.jobs.BaseJob.load_yaml" class="headerlink" title="Permanent link">&para;</a></h3>
9436
+ <a href="#nautobot.apps.jobs.BaseJob.load_json" class="headerlink" title="Permanent link">&para;</a></h3>
9496
9437
 
9497
9438
 
9498
9439
  <div class="doc doc-contents ">
9499
9440
 
9500
- <p>Return data from a YAML file</p>
9441
+ <p>Return data from a JSON file</p>
9501
9442
 
9502
9443
  </div>
9503
9444
 
@@ -9508,25 +9449,16 @@ path would consider this a failure of the job execution, as described in <code>n
9508
9449
 
9509
9450
 
9510
9451
 
9511
- <h3 id="nautobot.apps.jobs.BaseJob.on_bound" class="doc doc-heading">
9512
- <code class="highlight language-python"><span class="n">on_bound</span><span class="p">(</span><span class="n">app</span><span class="p">)</span></code>
9513
-
9514
- <span class="doc doc-labels">
9515
- <small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small>
9516
- </span>
9452
+ <h3 id="nautobot.apps.jobs.BaseJob.load_yaml" class="doc doc-heading">
9453
+ <code class="highlight language-python"><span class="n">load_yaml</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span></code>
9517
9454
 
9518
- <a href="#nautobot.apps.jobs.BaseJob.on_bound" class="headerlink" title="Permanent link">&para;</a></h3>
9455
+ <a href="#nautobot.apps.jobs.BaseJob.load_yaml" class="headerlink" title="Permanent link">&para;</a></h3>
9519
9456
 
9520
9457
 
9521
9458
  <div class="doc doc-contents ">
9522
9459
 
9523
- <p>Called when the task is bound to an app.</p>
9460
+ <p>Return data from a YAML file</p>
9524
9461
 
9525
- <details class="note" open>
9526
- <summary>Note</summary>
9527
- <p>This class method can be defined to do additional actions when
9528
- the task class is bound to an app.</p>
9529
- </details>
9530
9462
  </div>
9531
9463
 
9532
9464
  </div>
@@ -9955,15 +9887,15 @@ the task class is bound to an app.</p>
9955
9887
 
9956
9888
 
9957
9889
 
9958
- <h3 id="nautobot.apps.jobs.BaseJob.run" class="doc doc-heading">
9959
- <code class="highlight language-python"><span class="n">run</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
9890
+ <h3 id="nautobot.apps.jobs.BaseJob.registered_name" class="doc doc-heading">
9891
+ <code class="highlight language-python"><span class="n">registered_name</span><span class="p">()</span></code>
9960
9892
 
9961
- <a href="#nautobot.apps.jobs.BaseJob.run" class="headerlink" title="Permanent link">&para;</a></h3>
9893
+ <a href="#nautobot.apps.jobs.BaseJob.registered_name" class="headerlink" title="Permanent link">&para;</a></h3>
9962
9894
 
9963
9895
 
9964
9896
  <div class="doc doc-contents ">
9965
9897
 
9966
- <p>Method invoked when this Job is run.</p>
9898
+ <p>Deprecated - use class_path classproperty instead.</p>
9967
9899
 
9968
9900
  </div>
9969
9901
 
@@ -9974,22 +9906,15 @@ the task class is bound to an app.</p>
9974
9906
 
9975
9907
 
9976
9908
 
9977
- <h3 id="nautobot.apps.jobs.BaseJob.serialize_data" class="doc doc-heading">
9978
- <code class="highlight language-python"><span class="n">serialize_data</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></code>
9979
-
9980
- <span class="doc doc-labels">
9981
- <small class="doc doc-label doc-label-staticmethod"><code>staticmethod</code></small>
9982
- </span>
9909
+ <h3 id="nautobot.apps.jobs.BaseJob.run" class="doc doc-heading">
9910
+ <code class="highlight language-python"><span class="n">run</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
9983
9911
 
9984
- <a href="#nautobot.apps.jobs.BaseJob.serialize_data" class="headerlink" title="Permanent link">&para;</a></h3>
9912
+ <a href="#nautobot.apps.jobs.BaseJob.run" class="headerlink" title="Permanent link">&para;</a></h3>
9985
9913
 
9986
9914
 
9987
9915
  <div class="doc doc-contents ">
9988
9916
 
9989
- <p>This method parses input data (from JobForm usually) and returns a dict which is safe to serialize</p>
9990
- <p>Here we convert the QuerySet of a MultiObjectVar to a list of the pk's and the model instance
9991
- of an ObjectVar into the pk value.</p>
9992
- <p>These are converted back during job execution.</p>
9917
+ <p>Method invoked when this Job is run.</p>
9993
9918
 
9994
9919
  </div>
9995
9920
 
@@ -10000,82 +9925,22 @@ of an ObjectVar into the pk value.</p>
10000
9925
 
10001
9926
 
10002
9927
 
10003
- <h3 id="nautobot.apps.jobs.BaseJob.shadow_name" class="doc doc-heading">
10004
- <code class="highlight language-python"><span class="n">shadow_name</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">options</span><span class="p">)</span></code>
9928
+ <h3 id="nautobot.apps.jobs.BaseJob.serialize_data" class="doc doc-heading">
9929
+ <code class="highlight language-python"><span class="n">serialize_data</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></code>
9930
+
9931
+ <span class="doc doc-labels">
9932
+ <small class="doc doc-label doc-label-staticmethod"><code>staticmethod</code></small>
9933
+ </span>
10005
9934
 
10006
- <a href="#nautobot.apps.jobs.BaseJob.shadow_name" class="headerlink" title="Permanent link">&para;</a></h3>
9935
+ <a href="#nautobot.apps.jobs.BaseJob.serialize_data" class="headerlink" title="Permanent link">&para;</a></h3>
10007
9936
 
10008
9937
 
10009
9938
  <div class="doc doc-contents ">
10010
9939
 
10011
- <p>Override for custom task name in worker logs/monitoring.</p>
10012
-
10013
- <details class="example" open>
10014
- <summary>Example</summary>
10015
- <p>from celery.utils.imports import qualname</p>
10016
- <p>def shadow_name(task, args, kwargs, options):
10017
- return qualname(args[0])</p>
10018
- <p>@app.task(shadow_name=shadow_name, serializer='pickle')
10019
- def apply_function_async(fun, <em>args, </em><em>kwargs):
10020
- return fun(</em>args, **kwargs)</p>
10021
- </details>
10022
-
10023
-
10024
- <p><strong>Parameters:</strong></p>
10025
- <table>
10026
- <thead>
10027
- <tr>
10028
- <th>Name</th>
10029
- <th>Type</th>
10030
- <th>Description</th>
10031
- <th>Default</th>
10032
- </tr>
10033
- </thead>
10034
- <tbody>
10035
- <tr>
10036
- <td><code>args</code></td>
10037
- <td>
10038
- <code>Tuple</code>
10039
- </td>
10040
- <td>
10041
- <div class="doc-md-description">
10042
- <p>Task positional arguments.</p>
10043
- </div>
10044
- </td>
10045
- <td>
10046
- <em>required</em>
10047
- </td>
10048
- </tr>
10049
- <tr>
10050
- <td><code>kwargs</code></td>
10051
- <td>
10052
- <code>Dict</code>
10053
- </td>
10054
- <td>
10055
- <div class="doc-md-description">
10056
- <p>Task keyword arguments.</p>
10057
- </div>
10058
- </td>
10059
- <td>
10060
- <em>required</em>
10061
- </td>
10062
- </tr>
10063
- <tr>
10064
- <td><code>options</code></td>
10065
- <td>
10066
- <code>Dict</code>
10067
- </td>
10068
- <td>
10069
- <div class="doc-md-description">
10070
- <p>Task execution options.</p>
10071
- </div>
10072
- </td>
10073
- <td>
10074
- <em>required</em>
10075
- </td>
10076
- </tr>
10077
- </tbody>
10078
- </table>
9940
+ <p>This method parses input data (from JobForm usually) and returns a dict which is safe to serialize</p>
9941
+ <p>Here we convert the QuerySet of a MultiObjectVar to a list of the pk's and the model instance
9942
+ of an ObjectVar into the pk value.</p>
9943
+ <p>These are converted back during job execution.</p>
10079
9944
 
10080
9945
  </div>
10081
9946
 
@@ -11279,7 +11144,7 @@ to be processed</p>
11279
11144
 
11280
11145
 
11281
11146
  <h2 id="nautobot.apps.jobs.get_job" class="doc doc-heading">
11282
- <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">get_job</span><span class="p">(</span><span class="n">class_path</span><span class="p">)</span></code>
11147
+ <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">get_job</span><span class="p">(</span><span class="n">class_path</span><span class="p">,</span> <span class="n">reload</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
11283
11148
 
11284
11149
  <a href="#nautobot.apps.jobs.get_job" class="headerlink" title="Permanent link">&para;</a></h2>
11285
11150
 
@@ -11287,7 +11152,111 @@ to be processed</p>
11287
11152
  <div class="doc doc-contents ">
11288
11153
 
11289
11154
  <p>Retrieve a specific job class by its class_path (<code>&lt;module_name&gt;.&lt;JobClassName&gt;</code>).</p>
11290
- <p>May return None if the job isn't properly registered with Celery at this time.</p>
11155
+ <p>May return None if the job can't be imported.</p>
11156
+
11157
+
11158
+
11159
+ <p><strong>Parameters:</strong></p>
11160
+ <table>
11161
+ <thead>
11162
+ <tr>
11163
+ <th>Name</th>
11164
+ <th>Type</th>
11165
+ <th>Description</th>
11166
+ <th>Default</th>
11167
+ </tr>
11168
+ </thead>
11169
+ <tbody>
11170
+ <tr>
11171
+ <td><code>reload</code></td>
11172
+ <td>
11173
+ <code>bool</code>
11174
+ </td>
11175
+ <td>
11176
+ <div class="doc-md-description">
11177
+ <p>If True, <strong>and</strong> the given class_path describes a JOBS_ROOT or GitRepository Job,
11178
+ then refresh <strong>all</strong> such Jobs before retrieving the job class.</p>
11179
+ </div>
11180
+ </td>
11181
+ <td>
11182
+ <code>False</code>
11183
+ </td>
11184
+ </tr>
11185
+ </tbody>
11186
+ </table>
11187
+
11188
+ </div>
11189
+
11190
+ </div>
11191
+
11192
+
11193
+ <div class="doc doc-object doc-function">
11194
+
11195
+
11196
+
11197
+ <h2 id="nautobot.apps.jobs.get_jobs" class="doc doc-heading">
11198
+ <code class="highlight language-python"><span class="n">nautobot</span><span class="o">.</span><span class="n">apps</span><span class="o">.</span><span class="n">jobs</span><span class="o">.</span><span class="n">get_jobs</span><span class="p">(</span><span class="o">*</span><span class="p">,</span> <span class="n">reload</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
11199
+
11200
+ <a href="#nautobot.apps.jobs.get_jobs" class="headerlink" title="Permanent link">&para;</a></h2>
11201
+
11202
+
11203
+ <div class="doc doc-contents ">
11204
+
11205
+ <p>Compile a dictionary of all Job classes available at this time.</p>
11206
+
11207
+
11208
+
11209
+ <p><strong>Parameters:</strong></p>
11210
+ <table>
11211
+ <thead>
11212
+ <tr>
11213
+ <th>Name</th>
11214
+ <th>Type</th>
11215
+ <th>Description</th>
11216
+ <th>Default</th>
11217
+ </tr>
11218
+ </thead>
11219
+ <tbody>
11220
+ <tr>
11221
+ <td><code>reload</code></td>
11222
+ <td>
11223
+ <code>bool</code>
11224
+ </td>
11225
+ <td>
11226
+ <div class="doc-md-description">
11227
+ <p>If True, reimport Jobs from <code>JOBS_ROOT</code> and all applicable GitRepositories.</p>
11228
+ </div>
11229
+ </td>
11230
+ <td>
11231
+ <code>False</code>
11232
+ </td>
11233
+ </tr>
11234
+ </tbody>
11235
+ </table>
11236
+
11237
+
11238
+
11239
+ <p><strong>Returns:</strong></p>
11240
+ <table>
11241
+ <thead>
11242
+ <tr>
11243
+ <th>Type</th>
11244
+ <th>Description</th>
11245
+ </tr>
11246
+ </thead>
11247
+ <tbody>
11248
+ <tr>
11249
+ <td>
11250
+ <code>dict</code>
11251
+ </td>
11252
+ <td>
11253
+ <div class="doc-md-description">
11254
+ <p><code>{"class_path.Job1": &lt;job_class&gt;, "class_path.Job2": &lt;job_class&gt;, ...}</code></p>
11255
+ </div>
11256
+ </td>
11257
+ </tr>
11258
+ </tbody>
11259
+ </table>
11291
11260
 
11292
11261
  </div>
11293
11262
 
@@ -11344,7 +11313,7 @@ to be processed</p>
11344
11313
 
11345
11314
  <div class="doc doc-contents ">
11346
11315
 
11347
- <p>Helper method to register jobs with Celery</p>
11316
+ <p>Method to register jobs - with Celery in Nautobot 2.0 through 2.2.2, with Nautobot itself in 2.2.3 and later.</p>
11348
11317
 
11349
11318
  </div>
11350
11319
 
@@ -7751,7 +7751,7 @@
7751
7751
  </code></pre></div>
7752
7752
  <div class="admonition version-changed">
7753
7753
  <p class="admonition-title">Changed in version 2.0.0</p>
7754
- <p>Because Jobs are now proper Celery tasks, you now must call <code>register_jobs()</code> from within your <code>jobs.py</code> file when it is imported; any jobs not included in this call will not be available for Celery to schedule and execute.</p>
7754
+ <p>You now must call <code>register_jobs()</code> from within your <code>jobs.py</code> file when it is imported; any jobs not included in this call will not be available for Nautobot to schedule and execute.</p>
7755
7755
  </div>
7756
7756
 
7757
7757