pulpcore 3.22.29__tar.gz → 3.22.30__tar.gz

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 (347) hide show
  1. {pulpcore-3.22.29 → pulpcore-3.22.30}/CHANGES.md +16 -0
  2. {pulpcore-3.22.29 → pulpcore-3.22.30}/PKG-INFO +1 -1
  3. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/apps.py +1 -1
  4. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/models/task.py +6 -0
  5. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/viewsets/task.py +13 -0
  6. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tasking/pulpcore_worker.py +18 -1
  7. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_tasking.py +39 -0
  8. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore.egg-info/PKG-INFO +1 -1
  9. {pulpcore-3.22.29 → pulpcore-3.22.30}/setup.py +1 -1
  10. {pulpcore-3.22.29 → pulpcore-3.22.30}/CODE_OF_CONDUCT.md +0 -0
  11. {pulpcore-3.22.29 → pulpcore-3.22.30}/COMMITMENT +0 -0
  12. {pulpcore-3.22.29 → pulpcore-3.22.30}/CONTRIBUTING.md +0 -0
  13. {pulpcore-3.22.29 → pulpcore-3.22.30}/COPYRIGHT +0 -0
  14. {pulpcore-3.22.29 → pulpcore-3.22.30}/LICENSE +0 -0
  15. {pulpcore-3.22.29 → pulpcore-3.22.30}/MANIFEST.in +0 -0
  16. {pulpcore-3.22.29 → pulpcore-3.22.30}/README.md +0 -0
  17. {pulpcore-3.22.29 → pulpcore-3.22.30}/bin/pulp-content +0 -0
  18. {pulpcore-3.22.29 → pulpcore-3.22.30}/ci_requirements.txt +0 -0
  19. {pulpcore-3.22.29 → pulpcore-3.22.30}/functest_requirements.txt +0 -0
  20. {pulpcore-3.22.29 → pulpcore-3.22.30}/manage.py +0 -0
  21. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/__init__.py +0 -0
  22. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/__init__.py +0 -0
  23. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/access_policy.py +0 -0
  24. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/authentication.py +0 -0
  25. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/checks.py +0 -0
  26. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/files.py +0 -0
  27. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/global_access_conditions.py +0 -0
  28. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/importexport.py +0 -0
  29. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/loggers.py +0 -0
  30. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/manage.py +0 -0
  31. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/management/__init__.py +0 -0
  32. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/management/commands/__init__.py +0 -0
  33. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/management/commands/add-signing-service.py +0 -0
  34. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/management/commands/analyze-publication.py +0 -0
  35. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/management/commands/datarepair-2327.py +0 -0
  36. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/management/commands/datarepair-labels.py +0 -0
  37. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/management/commands/dump-permissions.py +0 -0
  38. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/management/commands/dump-publications-to-fs.py +0 -0
  39. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/management/commands/handle-artifact-checksums.py +0 -0
  40. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/management/commands/openapi.py +0 -0
  41. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/management/commands/remove-plugin.py +0 -0
  42. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/management/commands/remove-signing-service.py +0 -0
  43. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/management/commands/reset-admin-password.py +0 -0
  44. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/management/commands/stage-profile-summary.py +0 -0
  45. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0001_initial.py +0 -0
  46. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0002_increase_artifact_size_field.py +0 -0
  47. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0003_remove_upload_completed.py +0 -0
  48. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0004_add_duplicated_reserved_resources.py +0 -0
  49. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0005_progressreport_code.py +0 -0
  50. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0006_repository_plugin_managed.py +0 -0
  51. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0007_delete_progress_proxies.py +0 -0
  52. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0008_published_metadata_as_content.py +0 -0
  53. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0009_remove_task_non_fatal_errors.py +0 -0
  54. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0010_pulp_fields.py +0 -0
  55. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0011_relative_path.py +0 -0
  56. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0012_auto_20191104_2000.py +0 -0
  57. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0013_repository_pulp_type.py +0 -0
  58. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0014_remove_repository_plugin_managed.py +0 -0
  59. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0015_auto_20191112_1426.py +0 -0
  60. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0016_charfield_to_textfield.py +0 -0
  61. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0017_remove_task_parent.py +0 -0
  62. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0018_auto_20191127_2350.py +0 -0
  63. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0019_add_signing_service_model.py +0 -0
  64. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0020_change_publishedartifact_constraints.py +0 -0
  65. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0021_add_signing_service_foreign_key.py +0 -0
  66. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0022_rename_last_version.py +0 -0
  67. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0023_change_exporter_models.py +0 -0
  68. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0024_use_local_storage_for_uploads.py +0 -0
  69. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0025_task_parent_task.py +0 -0
  70. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0026_task_group.py +0 -0
  71. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0027_export_backend.py +0 -0
  72. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0028_import_importer_pulpimporter_pulpimporterrepository.py +0 -0
  73. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0029_export_delete.py +0 -0
  74. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0030_taskgroup_all_tasks_dispatched.py +0 -0
  75. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0031_import_export_validate_params.py +0 -0
  76. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0032_export_to_chunks.py +0 -0
  77. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0033_increase_remote_artifact_size_field.py +0 -0
  78. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0034_groupprogressreport.py +0 -0
  79. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0035_content_upstream_id.py +0 -0
  80. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0036_unprotect_last_export.py +0 -0
  81. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0037_pulptemporaryfile.py +0 -0
  82. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0038_repository_remote.py +0 -0
  83. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0039_change_download_concurrency.py +0 -0
  84. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0040_set_admin_is_staff.py +0 -0
  85. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0041_accesspolicy.py +0 -0
  86. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0042_rbac_for_tasks.py +0 -0
  87. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0043_toc_attribute.py +0 -0
  88. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0044_temp_file_artifact_field.py +0 -0
  89. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0045_accesspolicy_permissions_allow_null.py +0 -0
  90. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0046_task__resource_job_id.py +0 -0
  91. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0047_improve_orphan_cleanup.py +0 -0
  92. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0048_fips_checksums.py +0 -0
  93. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0049_add_file_field_to_uploadchunk.py +0 -0
  94. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0050_namespace_access_policies.py +0 -0
  95. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0051_timeoutfields.py +0 -0
  96. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0052_tasking_logging_cid.py +0 -0
  97. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0053_remote_headers.py +0 -0
  98. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0054_add_public_key.py +0 -0
  99. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0055_label.py +0 -0
  100. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0056_remote_rate_limit.py +0 -0
  101. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0057_add_label_indexes.py +0 -0
  102. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0058_accesspolicy_customized.py +0 -0
  103. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0059_proxy_creds.py +0 -0
  104. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0060_data_migration_proxy_creds.py +0 -0
  105. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0061_call_handle_artifact_checksums_command.py +0 -0
  106. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0062_add_new_distribution_mastermodel.py +0 -0
  107. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0063_repository_retained_versions.py +0 -0
  108. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0064_add_new_style_task_columns.py +0 -0
  109. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0064_repository_user_hidden.py +0 -0
  110. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0065_merge_20210615_1211.py +0 -0
  111. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0066_download_concurrency_and_retry_changes.py +0 -0
  112. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0067_add_protect_to_task_reservation.py +0 -0
  113. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0068_add_timestamp_of_interest.py +0 -0
  114. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0069_update_json_fields.py +0 -0
  115. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0070_rename_retained_versions.py +0 -0
  116. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0071_filesystemexport_filesystemexporter.py +0 -0
  117. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0072_add_method_to_filesystem_exporter.py +0 -0
  118. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0073_encrypt_remote_fields.py +0 -0
  119. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0074_acs.py +0 -0
  120. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0075_rbaccontentguard.py +0 -0
  121. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0076_remove_reserved_resource.py +0 -0
  122. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0077_move_remote_url_credentials.py +0 -0
  123. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0078_grouprole_role_userrole.py +0 -0
  124. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0079_rename_permissions_assignment_accesspolicy_creation_hooks.py +0 -0
  125. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0080_proxy_group_model.py +0 -0
  126. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0081_reapplabel_group_permissions.py +0 -0
  127. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0082_add_manage_roles_permissions.py +0 -0
  128. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0083_alter_group_options.py +0 -0
  129. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0084_alter_rbaccontentguard_options.py +0 -0
  130. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0085_contentredirectcontentguard.py +0 -0
  131. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0086_task_json_fields.py +0 -0
  132. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0087_taskschedule.py +0 -0
  133. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0088_accesspolicy_queryset_scoping.py +0 -0
  134. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0089_alter_contentredirectcontentguard_options.py +0 -0
  135. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0090_char_to_text_field.py +0 -0
  136. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0091_systemid.py +0 -0
  137. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0092_alter_upload_options.py +0 -0
  138. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0093_add_info_field_repositoryversion.py +0 -0
  139. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0094_protect_repository_content.py +0 -0
  140. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0095_artifactdistribution.py +0 -0
  141. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0096_alter_task_logging_cid.py +0 -0
  142. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0097_remove_telemetry_task_schedule.py +0 -0
  143. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/0098_pulp_labels.py +0 -0
  144. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/migrations/__init__.py +0 -0
  145. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/mime_types.py +0 -0
  146. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/modelresource.py +0 -0
  147. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/models/__init__.py +0 -0
  148. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/models/access_policy.py +0 -0
  149. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/models/acs.py +0 -0
  150. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/models/analytics.py +0 -0
  151. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/models/base.py +0 -0
  152. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/models/content.py +0 -0
  153. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/models/exporter.py +0 -0
  154. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/models/fields.py +0 -0
  155. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/models/generic.py +0 -0
  156. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/models/importer.py +0 -0
  157. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/models/progress.py +0 -0
  158. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/models/publication.py +0 -0
  159. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/models/repository.py +0 -0
  160. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/models/role.py +0 -0
  161. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/models/status.py +0 -0
  162. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/models/storage.py +0 -0
  163. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/models/upload.py +0 -0
  164. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/monkeypatch.py +0 -0
  165. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/protobuf/__init__.py +0 -0
  166. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/protobuf/analytics_pb2.py +0 -0
  167. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/pulp_hashlib.py +0 -0
  168. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/redis_connection.py +0 -0
  169. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/response.py +0 -0
  170. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/role_util.py +0 -0
  171. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/serializers/__init__.py +0 -0
  172. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/serializers/access_policy.py +0 -0
  173. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/serializers/acs.py +0 -0
  174. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/serializers/base.py +0 -0
  175. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/serializers/content.py +0 -0
  176. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/serializers/exporter.py +0 -0
  177. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/serializers/fields.py +0 -0
  178. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/serializers/importer.py +0 -0
  179. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/serializers/orphans.py +0 -0
  180. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/serializers/progress.py +0 -0
  181. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/serializers/publication.py +0 -0
  182. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/serializers/purge.py +0 -0
  183. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/serializers/reclaim.py +0 -0
  184. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/serializers/repair.py +0 -0
  185. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/serializers/repository.py +0 -0
  186. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/serializers/status.py +0 -0
  187. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/serializers/task.py +0 -0
  188. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/serializers/upload.py +0 -0
  189. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/serializers/user.py +0 -0
  190. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/settings.py +0 -0
  191. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/tasks/__init__.py +0 -0
  192. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/tasks/analytics.py +0 -0
  193. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/tasks/base.py +0 -0
  194. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/tasks/export.py +0 -0
  195. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/tasks/importer.py +0 -0
  196. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/tasks/orphan.py +0 -0
  197. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/tasks/purge.py +0 -0
  198. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/tasks/reclaim_space.py +0 -0
  199. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/tasks/repository.py +0 -0
  200. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/tasks/test.py +0 -0
  201. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/tasks/upload.py +0 -0
  202. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/templates/rest_framework/api.html +0 -0
  203. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/templatetags/__init__.py +0 -0
  204. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/templatetags/pulp_urls.py +0 -0
  205. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/urls.py +0 -0
  206. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/util.py +0 -0
  207. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/views/__init__.py +0 -0
  208. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/views/importer.py +0 -0
  209. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/views/orphans.py +0 -0
  210. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/views/repair.py +0 -0
  211. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/views/status.py +0 -0
  212. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/viewsets/__init__.py +0 -0
  213. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/viewsets/access_policy.py +0 -0
  214. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/viewsets/acs.py +0 -0
  215. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/viewsets/base.py +0 -0
  216. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/viewsets/content.py +0 -0
  217. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/viewsets/custom_filters.py +0 -0
  218. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/viewsets/exporter.py +0 -0
  219. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/viewsets/importer.py +0 -0
  220. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/viewsets/orphans.py +0 -0
  221. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/viewsets/publication.py +0 -0
  222. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/viewsets/reclaim.py +0 -0
  223. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/viewsets/repository.py +0 -0
  224. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/viewsets/upload.py +0 -0
  225. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/viewsets/user.py +0 -0
  226. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/app/wsgi.py +0 -0
  227. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/backends.py +0 -0
  228. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/cache/__init__.py +0 -0
  229. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/cache/cache.py +0 -0
  230. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/constants.py +0 -0
  231. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/content/__init__.py +0 -0
  232. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/content/authentication.py +0 -0
  233. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/content/handler.py +0 -0
  234. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/download/__init__.py +0 -0
  235. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/download/base.py +0 -0
  236. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/download/factory.py +0 -0
  237. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/download/file.py +0 -0
  238. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/download/http.py +0 -0
  239. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/exceptions/__init__.py +0 -0
  240. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/exceptions/base.py +0 -0
  241. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/exceptions/plugin.py +0 -0
  242. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/exceptions/validation.py +0 -0
  243. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/filters.py +0 -0
  244. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/openapi/__init__.py +0 -0
  245. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/__init__.py +0 -0
  246. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/access_policy.py +0 -0
  247. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/actions.py +0 -0
  248. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/apps.py +0 -0
  249. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/authentication/__init__.py +0 -0
  250. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/cache/__init__.py +0 -0
  251. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/constants.py +0 -0
  252. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/content.py +0 -0
  253. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/download/__init__.py +0 -0
  254. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/exceptions.py +0 -0
  255. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/files.py +0 -0
  256. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/importexport.py +0 -0
  257. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/modelresources.py +0 -0
  258. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/models/__init__.py +0 -0
  259. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/models/role.py +0 -0
  260. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/publication_utils.py +0 -0
  261. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/pulp_hashlib.py +0 -0
  262. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/repo_version_utils.py +0 -0
  263. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/responses.py +0 -0
  264. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/serializers/__init__.py +0 -0
  265. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/serializers/content.py +0 -0
  266. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/stages/__init__.py +0 -0
  267. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/stages/api.py +0 -0
  268. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/stages/artifact_stages.py +0 -0
  269. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/stages/content_stages.py +0 -0
  270. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/stages/declarative_version.py +0 -0
  271. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/stages/models.py +0 -0
  272. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/stages/profiler.py +0 -0
  273. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/storage.py +0 -0
  274. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/sync.py +0 -0
  275. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/tasking.py +0 -0
  276. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/util.py +0 -0
  277. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/viewsets/__init__.py +0 -0
  278. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/plugin/viewsets/content.py +0 -0
  279. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/responses.py +0 -0
  280. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tasking/__init__.py +0 -0
  281. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tasking/constants.py +0 -0
  282. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tasking/entrypoint.py +0 -0
  283. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tasking/storage.py +0 -0
  284. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tasking/tasks.py +0 -0
  285. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tasking/util.py +0 -0
  286. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/__init__.py +0 -0
  287. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/functional/__init__.py +0 -0
  288. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/functional/api/__init__.py +0 -0
  289. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_access_policy.py +0 -0
  290. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_api_docs.py +0 -0
  291. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_artifact_distribution.py +0 -0
  292. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_auth.py +0 -0
  293. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_correlation_id.py +0 -0
  294. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_crd_artifacts.py +0 -0
  295. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_openapi_schema.py +0 -0
  296. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_role.py +0 -0
  297. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_root_endpoint.py +0 -0
  298. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_scoping.py +0 -0
  299. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_signing_service.py +0 -0
  300. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_status.py +0 -0
  301. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_upload.py +0 -0
  302. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_users_groups.py +0 -0
  303. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/functional/api/test_workers.py +0 -0
  304. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/functional/content_with_coverage.py +0 -0
  305. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/functional/gpg_ascii_armor_signing_service.py +0 -0
  306. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/functional/utils.py +0 -0
  307. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/__init__.py +0 -0
  308. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/content/__init__.py +0 -0
  309. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/content/test_handler.py +0 -0
  310. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/content/test_heartbeat.py +0 -0
  311. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/download/__init__.py +0 -0
  312. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/download/test_download_base.py +0 -0
  313. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/download/test_factory.py +0 -0
  314. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/migrations/__init__.py +0 -0
  315. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/migrations/test_0077_move_remote_url_credentials.py +0 -0
  316. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/models/__init__.py +0 -0
  317. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/models/test_content.py +0 -0
  318. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/models/test_remote.py +0 -0
  319. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/models/test_repository.py +0 -0
  320. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/roles/__init__.py +0 -0
  321. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/roles/test_roles.py +0 -0
  322. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/serializers/__init__.py +0 -0
  323. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/serializers/test_base.py +0 -0
  324. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/serializers/test_pulpexport.py +0 -0
  325. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/serializers/test_repository.py +0 -0
  326. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/stages/__init__.py +0 -0
  327. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/stages/test_artifactdownloader.py +0 -0
  328. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/stages/test_stages.py +0 -0
  329. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/test_cache.py +0 -0
  330. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/test_content_guard.py +0 -0
  331. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/test_files.py +0 -0
  332. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/test_import_checks.py +0 -0
  333. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/test_pulp_urls.py +0 -0
  334. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/test_settings.py +0 -0
  335. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/test_util.py +0 -0
  336. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/viewsets/__init__.py +0 -0
  337. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore/tests/unit/viewsets/test_base.py +0 -0
  338. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore.egg-info/SOURCES.txt +0 -0
  339. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore.egg-info/dependency_links.txt +0 -0
  340. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore.egg-info/entry_points.txt +0 -0
  341. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore.egg-info/requires.txt +0 -0
  342. {pulpcore-3.22.29 → pulpcore-3.22.30}/pulpcore.egg-info/top_level.txt +0 -0
  343. {pulpcore-3.22.29 → pulpcore-3.22.30}/pyproject.toml +0 -0
  344. {pulpcore-3.22.29 → pulpcore-3.22.30}/requirements.txt +0 -0
  345. {pulpcore-3.22.29 → pulpcore-3.22.30}/setup.cfg +0 -0
  346. {pulpcore-3.22.29 → pulpcore-3.22.30}/test_requirements.txt +0 -0
  347. {pulpcore-3.22.29 → pulpcore-3.22.30}/unittest_requirements.txt +0 -0
@@ -8,6 +8,22 @@
8
8
 
9
9
  [//]: # (towncrier release notes start)
10
10
 
11
+ # ## 3.22.30 (2024-08-10) {: #3.22.30 }
12
+
13
+ ### REST API {: #3.22.30-rest-api }
14
+
15
+ #### Bugfixes {: #3.22.30-rest-api-bugfix }
16
+
17
+ - Fixed RBAC permissions being incorrectly assigned in tasks that create objects.
18
+ https://access.redhat.com/security/cve/cve-2024-7143
19
+ [#5683](https://github.com/pulp/pulpcore/issues/5683)
20
+
21
+ ### Plugin API {: #3.22.30-plugin-api }
22
+
23
+ No significant changes.
24
+
25
+ ---
26
+
11
27
  ## 3.22.29 (2024-07-16) {: #3.22.29 }
12
28
 
13
29
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pulpcore
3
- Version: 3.22.29
3
+ Version: 3.22.30
4
4
  Summary: Pulp Django Application and Related Modules
5
5
  Home-page: https://pulpproject.org
6
6
  Author: Pulp Team
@@ -207,7 +207,7 @@ class PulpAppConfig(PulpPluginAppConfig):
207
207
  label = "core"
208
208
 
209
209
  # The version of this app
210
- version = "3.22.29"
210
+ version = "3.22.30"
211
211
 
212
212
  # The python package name providing this app
213
213
  python_package_name = "pulpcore"
@@ -14,6 +14,7 @@ from django.contrib.postgres.fields import ArrayField
14
14
  from django.core.serializers.json import DjangoJSONEncoder
15
15
  from django.db import connection, models
16
16
  from django.utils import timezone
17
+ from django_lifecycle import hook, AFTER_CREATE
17
18
 
18
19
  from pulpcore.app.models import (
19
20
  AutoAddObjPermsMixin,
@@ -231,6 +232,11 @@ class Task(BaseModel, AutoAddObjPermsMixin):
231
232
  task = Task.objects.get(pk=task_id)
232
233
  return task
233
234
 
235
+ @hook(AFTER_CREATE)
236
+ def add_role_dispatcher(self):
237
+ """Set the "core.task_user_dispatcher" role for the current user after creation."""
238
+ self.add_roles_for_object_creator("core.task_user_dispatcher")
239
+
234
240
  def set_running(self):
235
241
  """
236
242
  Set this Task to the running state, save it, and log output in warning cases.
@@ -133,8 +133,21 @@ class TaskViewSet(
133
133
  ],
134
134
  },
135
135
  "core.task_viewer": ["core.view_task"],
136
+ # This is a special role to designate the user who dispatched the task, it is assigned to
137
+ # the user on the object-level at task creation. It is not meant to be edited or manually
138
+ # added/removed from users.
139
+ "core.task_user_dispatcher": ["core.add_task"],
136
140
  }
137
141
 
142
+ def get_queryset(self):
143
+ qs = super().get_queryset()
144
+ if self.action in ("add_role", "remove_role"):
145
+ if "core.task_user_dispatcher" == self.request.data.get("role"):
146
+ raise ValidationError(
147
+ _("core.task_user_dispatcher can not be added/removed from a task.")
148
+ )
149
+ return qs
150
+
138
151
  @extend_schema(
139
152
  description="This operation cancels a task.",
140
153
  summary="Cancel a task",
@@ -442,7 +442,24 @@ def _perform_task(task_pk, task_working_dir_rel_path):
442
442
  task.set_running()
443
443
  # Store the task id in the environment for `Task.current()`.
444
444
  os.environ["PULP_TASK_ID"] = str(task.pk)
445
- user = get_users_with_perms(task, with_group_users=False).first()
445
+ # These queries were specifically constructed and ordered this way to ensure we have the highest
446
+ # chance of getting the user who dispatched the task since we don't have a user relation on the
447
+ # task model. The second query acts as a fallback to provide ZDU support. Future changes will
448
+ # require to keep these around till a breaking change release is planned (3.70 the earliest).
449
+ user = (
450
+ get_users_with_perms(
451
+ task,
452
+ only_with_perms_in=["core.add_task"],
453
+ with_group_users=False,
454
+ include_model_permissions=False,
455
+ ).first()
456
+ or get_users_with_perms(
457
+ task,
458
+ only_with_perms_in=["core.manage_roles_task"],
459
+ with_group_users=False,
460
+ include_model_permissions=False,
461
+ ).first()
462
+ )
446
463
  _set_current_user(user)
447
464
  set_guid(task.logging_cid)
448
465
 
@@ -17,10 +17,16 @@ from pulpcore.tests.functional.utils import download_file
17
17
  def dispatch_task(pulpcore_client):
18
18
  def _dispatch_task(*args, **kwargs):
19
19
  cid = pulpcore_client.default_headers.get("Correlation-ID") or str(uuid4())
20
+ username = pulpcore_client.configuration.username
20
21
  commands = (
21
22
  "from django_guid import set_guid; "
22
23
  "from pulpcore.tasking.tasks import dispatch; "
23
24
  "from pulpcore.app.util import get_url; "
25
+ "from django.contrib.auth import get_user_model; "
26
+ "from django_currentuser.middleware import _set_current_user; "
27
+ "User = get_user_model(); "
28
+ f"user = User.objects.filter(username='{username}').first(); "
29
+ "_set_current_user(user); "
24
30
  f"set_guid({cid!r}); "
25
31
  f"task = dispatch(*{args!r}, **{kwargs!r}); "
26
32
  "print(get_url(task))"
@@ -296,3 +302,36 @@ def test_cancel_gooey_task(tasks_api_client, dispatch_task, monitor_task):
296
302
  task = tasks_api_client.read(task_href)
297
303
 
298
304
  assert task.state == "canceled"
305
+
306
+
307
+ @pytest.mark.parallel
308
+ def test_correct_task_ownership(dispatch_task, users_roles_api_client, gen_user):
309
+ """Test that tasks get the correct ownership when dispatched."""
310
+ alice = gen_user(model_roles=["core.task_viewer"])
311
+ bob = gen_user(model_roles=["file.filerepository_creator"])
312
+
313
+ with alice:
314
+ atask_href = dispatch_task("pulpcore.app.tasks.test.sleep", args=(0,))
315
+ aroles = users_roles_api_client.list(alice.user.pulp_href)
316
+ assert aroles.count == 3
317
+ roles = {r.role: r.content_object for r in aroles.results}
318
+ correct_roles = {
319
+ "core.task_owner": atask_href,
320
+ "core.task_user_dispatcher": atask_href,
321
+ "core.task_viewer": None,
322
+ }
323
+ assert roles == correct_roles
324
+
325
+ with bob:
326
+ btask_href = dispatch_task("pulpcore.app.tasks.test.sleep", args=(0,))
327
+ aroles = users_roles_api_client.list(alice.user.pulp_href)
328
+ assert aroles.count == 3
329
+ broles = users_roles_api_client.list(bob.user.pulp_href)
330
+ assert broles.count == 3
331
+ roles = {r.role: r.content_object for r in broles.results}
332
+ correct_roles = {
333
+ "core.task_owner": btask_href,
334
+ "core.task_user_dispatcher": btask_href,
335
+ "file.filerepository_creator": None,
336
+ }
337
+ assert roles == correct_roles
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pulpcore
3
- Version: 3.22.29
3
+ Version: 3.22.30
4
4
  Summary: Pulp Django Application and Related Modules
5
5
  Home-page: https://pulpproject.org
6
6
  Author: Pulp Team
@@ -8,7 +8,7 @@ with open("requirements.txt") as requirements:
8
8
 
9
9
  setup(
10
10
  name="pulpcore",
11
- version="3.22.29",
11
+ version="3.22.30",
12
12
  description="Pulp Django Application and Related Modules",
13
13
  long_description=long_description,
14
14
  long_description_content_type="text/markdown",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes