pulpcore 3.87.0__tar.gz → 3.88.0__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.

Potentially problematic release.


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

Files changed (465) hide show
  1. {pulpcore-3.87.0 → pulpcore-3.88.0}/CHANGES.md +35 -0
  2. {pulpcore-3.87.0 → pulpcore-3.88.0}/PKG-INFO +1 -1
  3. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/app/__init__.py +1 -1
  4. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/app/__init__.py +1 -1
  5. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/app/tasks/publishing.py +5 -0
  6. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/app/tasks/synchronizing.py +4 -0
  7. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/apps.py +1 -1
  8. pulpcore-3.88.0/pulpcore/app/migrations/0142_task_result.py +21 -0
  9. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/task.py +19 -1
  10. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/task.py +5 -0
  11. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/tasks/base.py +9 -2
  12. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/serializers/__init__.py +2 -0
  13. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/serializers/content.py +1 -1
  14. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tasking/tasks.py +3 -3
  15. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tasking/worker.py +6 -3
  16. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_tasks.py +20 -0
  17. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore.egg-info/PKG-INFO +1 -1
  18. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore.egg-info/SOURCES.txt +1 -0
  19. {pulpcore-3.87.0 → pulpcore-3.88.0}/pyproject.toml +2 -2
  20. {pulpcore-3.87.0 → pulpcore-3.88.0}/CODE_OF_CONDUCT.md +0 -0
  21. {pulpcore-3.87.0 → pulpcore-3.88.0}/COMMITMENT +0 -0
  22. {pulpcore-3.87.0 → pulpcore-3.88.0}/CONTRIBUTING.md +0 -0
  23. {pulpcore-3.87.0 → pulpcore-3.88.0}/COPYRIGHT +0 -0
  24. {pulpcore-3.87.0 → pulpcore-3.88.0}/LICENSE +0 -0
  25. {pulpcore-3.87.0 → pulpcore-3.88.0}/MANIFEST.in +0 -0
  26. {pulpcore-3.87.0 → pulpcore-3.88.0}/README.md +0 -0
  27. {pulpcore-3.87.0 → pulpcore-3.88.0}/ci_requirements.txt +0 -0
  28. {pulpcore-3.87.0 → pulpcore-3.88.0}/functest_requirements.txt +0 -0
  29. {pulpcore-3.87.0 → pulpcore-3.88.0}/manage.py +0 -0
  30. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/__init__.py +0 -0
  31. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/app/migrations/0001_initial.py +0 -0
  32. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/app/migrations/0002_alter_rhsmcertguard_contentguard_ptr_and_more.py +0 -0
  33. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/app/migrations/__init__.py +0 -0
  34. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/app/models.py +0 -0
  35. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/app/serializers.py +0 -0
  36. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/app/viewsets.py +0 -0
  37. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/pytest_plugin.py +0 -0
  38. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/rhsm/__init__.py +0 -0
  39. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/rhsm/rhsm_check_path.py +0 -0
  40. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/__init__.py +0 -0
  41. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/__init__.py +0 -0
  42. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/api/__init__.py +0 -0
  43. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/api/test_rhsm_certguard.py +0 -0
  44. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/api/test_x509_certguard.py +0 -0
  45. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/rhsm/katello-default-ca.crt +0 -0
  46. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/rhsm/katello-default-ca.key +0 -0
  47. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/rhsm/trusted_but_expired.pem +0 -0
  48. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/rhsm/uber.cert +0 -0
  49. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/rhsm/untrusted_cert-key.pem +0 -0
  50. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/rhsm/untrusted_cert.pem +0 -0
  51. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/rhsm/v1/1514454871848760713-key.pem +0 -0
  52. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/rhsm/v1/1514454871848760713.pem +0 -0
  53. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/rhsm/v1/159442575569388840-key.pem +0 -0
  54. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/rhsm/v1/159442575569388840.pem +0 -0
  55. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/rhsm/v3/4260035510644027985-key.pem +0 -0
  56. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/rhsm/v3/4260035510644027985.pem +0 -0
  57. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/rhsm/v3/5527980418107729172-key.pem +0 -0
  58. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/rhsm/v3/5527980418107729172.pem +0 -0
  59. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/certificates/ca.pem +0 -0
  60. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/genca.sh +0 -0
  61. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/keys/ca.pem +0 -0
  62. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/x509/certificates/ca.pem +0 -0
  63. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/x509/certificates/client.pem +0 -0
  64. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/x509/certificates/server.pem +0 -0
  65. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/x509/certificates/un_urlencoded_cert.txt +0 -0
  66. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/x509/certificates/untrusted_client.pem +0 -0
  67. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/x509/genall.sh +0 -0
  68. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/x509/genca.sh +0 -0
  69. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/x509/genclient.sh +0 -0
  70. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/x509/gensrv.sh +0 -0
  71. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/x509/keys/ca.pem +0 -0
  72. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/x509/keys/client.pem +0 -0
  73. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/artifacts/x509/keys/server.pem +0 -0
  74. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/conftest.py +0 -0
  75. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/functional/constants.py +0 -0
  76. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/unit/__init__.py +0 -0
  77. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/unit/certdata.py +0 -0
  78. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_certguard/tests/unit/test_rhsm_check_path.py +0 -0
  79. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/__init__.py +0 -0
  80. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/app/migrations/0001_initial_squashed_0016_add_domain.py +0 -0
  81. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/app/migrations/0017_alter_filealternatecontentsource_alternatecontentsource_ptr_and_more.py +0 -0
  82. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/app/migrations/__init__.py +0 -0
  83. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/app/modelresource.py +0 -0
  84. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/app/models.py +0 -0
  85. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/app/replica.py +0 -0
  86. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/app/serializers.py +0 -0
  87. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/app/tasks/__init__.py +0 -0
  88. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/app/viewsets.py +0 -0
  89. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/manifest.py +0 -0
  90. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/pytest_plugin.py +0 -0
  91. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/__init__.py +0 -0
  92. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/functional/__init__.py +0 -0
  93. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/functional/api/__init__.py +0 -0
  94. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/functional/api/test_acs.py +0 -0
  95. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/functional/api/test_auto_publish.py +0 -0
  96. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/functional/api/test_bad_sync.py +0 -0
  97. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/functional/api/test_content_labels.py +0 -0
  98. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/functional/api/test_crud_content_unit.py +0 -0
  99. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/functional/api/test_crud_remotes.py +0 -0
  100. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/functional/api/test_domains.py +0 -0
  101. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/functional/api/test_download_policies.py +0 -0
  102. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/functional/api/test_generic_list.py +0 -0
  103. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/functional/api/test_labels.py +0 -0
  104. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/functional/api/test_mime_types.py +0 -0
  105. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/functional/api/test_publish.py +0 -0
  106. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/functional/api/test_pulp_export.py +0 -0
  107. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/functional/api/test_rbac.py +0 -0
  108. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/functional/api/test_remote_settings.py +0 -0
  109. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/functional/api/test_sync.py +0 -0
  110. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/unit/__init__.py +0 -0
  111. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/unit/test_safe_paths.py +0 -0
  112. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulp_file/tests/unit/test_serializers.py +0 -0
  113. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/__init__.py +0 -0
  114. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/__init__.py +0 -0
  115. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/access_policy.py +0 -0
  116. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/authentication.py +0 -0
  117. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/checks.py +0 -0
  118. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/entrypoint.py +0 -0
  119. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/files.py +0 -0
  120. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/global_access_conditions.py +0 -0
  121. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/importexport.py +0 -0
  122. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/loggers.py +0 -0
  123. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/manage.py +0 -0
  124. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/management/__init__.py +0 -0
  125. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/management/commands/__init__.py +0 -0
  126. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/management/commands/add-signing-service.py +0 -0
  127. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/management/commands/analyze-publication.py +0 -0
  128. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/management/commands/clean-up-progress-reports.py +0 -0
  129. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/management/commands/datarepair-2327.py +0 -0
  130. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/management/commands/dump-permissions.py +0 -0
  131. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/management/commands/dump-publications-to-fs.py +0 -0
  132. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/management/commands/handle-artifact-checksums.py +0 -0
  133. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/management/commands/migrationstat.py +0 -0
  134. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/management/commands/openapi.py +0 -0
  135. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/management/commands/optimizemigration.py +0 -0
  136. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/management/commands/rebasemigrations.py +0 -0
  137. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/management/commands/remove-plugin.py +0 -0
  138. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/management/commands/remove-signing-service.py +0 -0
  139. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/management/commands/repository-size.py +0 -0
  140. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/management/commands/reset-admin-password.py +0 -0
  141. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/management/commands/rotate-db-key.py +0 -0
  142. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0001_squashed_0090_char_to_text_field.py +0 -0
  143. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0091_systemid.py +0 -0
  144. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0092_alter_upload_options.py +0 -0
  145. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0093_add_info_field_repositoryversion.py +0 -0
  146. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0094_protect_repository_content.py +0 -0
  147. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0095_artifactdistribution.py +0 -0
  148. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0096_alter_task_logging_cid.py +0 -0
  149. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0097_remove_telemetry_task_schedule.py +0 -0
  150. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0098_pulp_labels.py +0 -0
  151. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0099_versions_field.py +0 -0
  152. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0100_upstreampulp.py +0 -0
  153. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0101_add_domain.py +0 -0
  154. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0102_add_domain_relations.py +0 -0
  155. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0103_alter_export_task.py +0 -0
  156. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0104_delete_label.py +0 -0
  157. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0105_abstract_uuid_gen.py +0 -0
  158. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0106_alter_artifactdistribution_distribution_ptr_and_more.py +0 -0
  159. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0107_distribution_hidden.py +0 -0
  160. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0108_task_versions.py +0 -0
  161. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0109_contentartifact_relative_path_index.py +0 -0
  162. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0110_apiappstatus.py +0 -0
  163. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0111_task_enc_args_task_enc_kwargs.py +0 -0
  164. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0112_alter_upstreampulp_options.py +0 -0
  165. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0113_headercontentguard.py +0 -0
  166. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0114_remove_task_args_remove_task_kwargs.py +0 -0
  167. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0115_compositecontentguard.py +0 -0
  168. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0116_alter_remoteartifact_md5_alter_remoteartifact_sha1_and_more.py +0 -0
  169. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0117_task_unblocked_at.py +0 -0
  170. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0118_task_core_task_unblock_2276a4_idx_and_more.py +0 -0
  171. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0119_grouprole_core_groupr_object__250e22_idx_and_more.py +0 -0
  172. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0120_get_url_removal.py +0 -0
  173. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0121_add_profile_artifacts_table.py +0 -0
  174. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0122_record_last_replication_timestamp.py +0 -0
  175. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0123_upstreampulp_q_select.py +0 -0
  176. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0124_task_deferred_task_immediate.py +0 -0
  177. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0125_openpgpdistribution_openpgpkeyring_openpgppublickey_and_more.py +0 -0
  178. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0126_remoteartifact_failed_at.py +0 -0
  179. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0127_remove_upstreampulp_pulp_label_select.py +0 -0
  180. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0128_domain_pulp_labels.py +0 -0
  181. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0129_content_pulp_labels.py +0 -0
  182. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0130_upstreampulp_policy.py +0 -0
  183. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0131_distribution_checkpoint_publication_checkpoint.py +0 -0
  184. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0132_alter_content_options.py +0 -0
  185. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0132_task_profile_options.py +0 -0
  186. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0133_repositoryversion_content_ids.py +0 -0
  187. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0134_task_insert_trigger.py +0 -0
  188. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0135_task_pulp_task_resources_index.py +0 -0
  189. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0136_delete_basedistribution.py +0 -0
  190. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0137_appstatus.py +0 -0
  191. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0138_vulnerabilityreport.py +0 -0
  192. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0139_task_app_lock.py +0 -0
  193. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0140_require_appstatus_zdu.py +0 -0
  194. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/0141_alter_appstatus_name.py +0 -0
  195. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/migrations/__init__.py +0 -0
  196. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/mime_types.py +0 -0
  197. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/modelresource.py +0 -0
  198. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/__init__.py +0 -0
  199. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/access_policy.py +0 -0
  200. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/acs.py +0 -0
  201. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/analytics.py +0 -0
  202. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/base.py +0 -0
  203. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/content.py +0 -0
  204. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/domain.py +0 -0
  205. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/exporter.py +0 -0
  206. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/fields.py +0 -0
  207. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/generic.py +0 -0
  208. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/importer.py +0 -0
  209. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/openpgp.py +0 -0
  210. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/progress.py +0 -0
  211. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/publication.py +0 -0
  212. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/replica.py +0 -0
  213. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/repository.py +0 -0
  214. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/role.py +0 -0
  215. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/status.py +0 -0
  216. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/storage.py +0 -0
  217. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/upload.py +0 -0
  218. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/models/vulnerability_report.py +0 -0
  219. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/netutil.py +0 -0
  220. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/openpgp.py +0 -0
  221. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/protobuf/__init__.py +0 -0
  222. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/protobuf/analytics_pb2.py +0 -0
  223. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/pulp_hashlib.py +0 -0
  224. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/pulpcore_gunicorn_application.py +0 -0
  225. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/redis_connection.py +0 -0
  226. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/replica.py +0 -0
  227. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/response.py +0 -0
  228. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/role_util.py +0 -0
  229. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/__init__.py +0 -0
  230. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/access_policy.py +0 -0
  231. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/acs.py +0 -0
  232. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/base.py +0 -0
  233. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/content.py +0 -0
  234. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/domain.py +0 -0
  235. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/exporter.py +0 -0
  236. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/fields.py +0 -0
  237. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/importer.py +0 -0
  238. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/openpgp.py +0 -0
  239. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/orphans.py +0 -0
  240. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/progress.py +0 -0
  241. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/publication.py +0 -0
  242. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/purge.py +0 -0
  243. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/reclaim.py +0 -0
  244. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/repair.py +0 -0
  245. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/replica.py +0 -0
  246. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/repository.py +0 -0
  247. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/status.py +0 -0
  248. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/upload.py +0 -0
  249. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/user.py +0 -0
  250. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/serializers/vulnerability_report.py +0 -0
  251. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/settings.py +0 -0
  252. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/tasks/__init__.py +0 -0
  253. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/tasks/analytics.py +0 -0
  254. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/tasks/export.py +0 -0
  255. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/tasks/importer.py +0 -0
  256. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/tasks/migrate.py +0 -0
  257. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/tasks/orphan.py +0 -0
  258. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/tasks/purge.py +0 -0
  259. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/tasks/reclaim_space.py +0 -0
  260. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/tasks/replica.py +0 -0
  261. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/tasks/repository.py +0 -0
  262. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/tasks/telemetry.py +0 -0
  263. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/tasks/test.py +0 -0
  264. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/tasks/upload.py +0 -0
  265. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/tasks/vulnerability_report.py +0 -0
  266. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/templates/rest_framework/api.html +0 -0
  267. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/templatetags/__init__.py +0 -0
  268. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/templatetags/pulp_urls.py +0 -0
  269. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/urls.py +0 -0
  270. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/util.py +0 -0
  271. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/views/__init__.py +0 -0
  272. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/views/importer.py +0 -0
  273. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/views/orphans.py +0 -0
  274. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/views/repair.py +0 -0
  275. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/views/status.py +0 -0
  276. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/viewsets/__init__.py +0 -0
  277. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/viewsets/access_policy.py +0 -0
  278. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/viewsets/acs.py +0 -0
  279. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/viewsets/base.py +0 -0
  280. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/viewsets/content.py +0 -0
  281. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/viewsets/custom_filters.py +0 -0
  282. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/viewsets/domain.py +0 -0
  283. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/viewsets/exporter.py +0 -0
  284. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/viewsets/importer.py +0 -0
  285. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/viewsets/openpgp.py +0 -0
  286. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/viewsets/orphans.py +0 -0
  287. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/viewsets/publication.py +0 -0
  288. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/viewsets/reclaim.py +0 -0
  289. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/viewsets/replica.py +0 -0
  290. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/viewsets/repository.py +0 -0
  291. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/viewsets/task.py +0 -0
  292. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/viewsets/upload.py +0 -0
  293. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/viewsets/user.py +0 -0
  294. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/viewsets/vulnerability_report.py +0 -0
  295. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/app/wsgi.py +0 -0
  296. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/backends.py +0 -0
  297. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/cache/__init__.py +0 -0
  298. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/cache/cache.py +0 -0
  299. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/constants.py +0 -0
  300. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/content/__init__.py +0 -0
  301. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/content/authentication.py +0 -0
  302. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/content/entrypoint.py +0 -0
  303. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/content/handler.py +0 -0
  304. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/content/instrumentation.py +0 -0
  305. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/download/__init__.py +0 -0
  306. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/download/base.py +0 -0
  307. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/download/factory.py +0 -0
  308. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/download/file.py +0 -0
  309. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/download/http.py +0 -0
  310. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/exceptions/__init__.py +0 -0
  311. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/exceptions/base.py +0 -0
  312. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/exceptions/plugin.py +0 -0
  313. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/exceptions/validation.py +0 -0
  314. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/filters.py +0 -0
  315. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/metrics.py +0 -0
  316. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/middleware.py +0 -0
  317. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/migrations.py +0 -0
  318. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/openapi/__init__.py +0 -0
  319. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/openapi/hooks.py +0 -0
  320. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/__init__.py +0 -0
  321. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/access_policy.py +0 -0
  322. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/actions.py +0 -0
  323. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/apps.py +0 -0
  324. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/authentication/__init__.py +0 -0
  325. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/cache/__init__.py +0 -0
  326. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/constants.py +0 -0
  327. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/content.py +0 -0
  328. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/download/__init__.py +0 -0
  329. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/exceptions.py +0 -0
  330. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/files.py +0 -0
  331. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/importexport.py +0 -0
  332. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/migrations.py +0 -0
  333. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/modelresources.py +0 -0
  334. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/models/__init__.py +0 -0
  335. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/models/role.py +0 -0
  336. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/publication_utils.py +0 -0
  337. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/pulp_hashlib.py +0 -0
  338. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/replica.py +0 -0
  339. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/repo_version_utils.py +0 -0
  340. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/responses.py +0 -0
  341. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/stages/__init__.py +0 -0
  342. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/stages/api.py +0 -0
  343. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/stages/artifact_stages.py +0 -0
  344. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/stages/content_stages.py +0 -0
  345. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/stages/declarative_version.py +0 -0
  346. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/stages/models.py +0 -0
  347. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/storage.py +0 -0
  348. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/sync.py +0 -0
  349. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/tasking.py +0 -0
  350. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/util.py +0 -0
  351. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/viewsets/__init__.py +0 -0
  352. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/plugin/viewsets/content.py +0 -0
  353. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/pytest_plugin.py +0 -0
  354. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/responses.py +0 -0
  355. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tasking/__init__.py +0 -0
  356. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tasking/_util.py +0 -0
  357. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tasking/entrypoint.py +0 -0
  358. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tasking/kafka.py +0 -0
  359. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tasking/storage.py +0 -0
  360. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/__init__.py +0 -0
  361. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/__init__.py +0 -0
  362. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/__init__.py +0 -0
  363. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_access_policy.py +0 -0
  364. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_api_docs.py +0 -0
  365. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_api_root_rewrite.py +0 -0
  366. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_artifact_distribution.py +0 -0
  367. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_auth.py +0 -0
  368. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_correlation_id.py +0 -0
  369. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_crd_artifacts.py +0 -0
  370. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_crud_domains.py +0 -0
  371. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_filter.py +0 -0
  372. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_login.py +0 -0
  373. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_openapi_schema.py +0 -0
  374. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_openpgp.py +0 -0
  375. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_replication.py +0 -0
  376. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_repos.py +0 -0
  377. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_role.py +0 -0
  378. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_root_endpoint.py +0 -0
  379. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_scoping.py +0 -0
  380. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_signing_service.py +0 -0
  381. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_status.py +0 -0
  382. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_task_purge.py +0 -0
  383. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_tasking.py +0 -0
  384. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_upload.py +0 -0
  385. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_users_groups.py +0 -0
  386. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/test_workers.py +0 -0
  387. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/__init__.py +0 -0
  388. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_checkpoint.py +0 -0
  389. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_content_access.py +0 -0
  390. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_content_cache.py +0 -0
  391. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_content_delivery.py +0 -0
  392. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_content_directory.py +0 -0
  393. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_content_path.py +0 -0
  394. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_content_promotion.py +0 -0
  395. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_contentguard.py +0 -0
  396. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_crud_repos.py +0 -0
  397. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_distributions.py +0 -0
  398. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_filesystemexport.py +0 -0
  399. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_labels.py +0 -0
  400. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_migrate.py +0 -0
  401. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_orphans.py +0 -0
  402. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_pagination.py +0 -0
  403. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_prn.py +0 -0
  404. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_proxy.py +0 -0
  405. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_pulpimport.py +0 -0
  406. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_reclaim_disk_space.py +0 -0
  407. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_repair.py +0 -0
  408. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_repo_versions.py +0 -0
  409. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/api/using_plugin/test_unlinking_repo.py +0 -0
  410. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/assets/__init__.py +0 -0
  411. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/content_with_coverage.py +0 -0
  412. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/functional/utils.py +0 -0
  413. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/performance/__init__.py +0 -0
  414. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/performance/test_performance.py +0 -0
  415. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/__init__.py +0 -0
  416. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/conftest.py +0 -0
  417. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/content/__init__.py +0 -0
  418. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/content/test_handler.py +0 -0
  419. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/content/test_heartbeat.py +0 -0
  420. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/download/__init__.py +0 -0
  421. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/download/test_downloader_base.py +0 -0
  422. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/download/test_downloader_factory.py +0 -0
  423. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/metrics/__init__.py +0 -0
  424. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/metrics/conftest.py +0 -0
  425. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/metrics/test_aiohttp_instrumentation.py +0 -0
  426. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/metrics/test_django_instrumentation.py +0 -0
  427. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/migration/__init__.py +0 -0
  428. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/models/__init__.py +0 -0
  429. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/models/test_base.py +0 -0
  430. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/models/test_content.py +0 -0
  431. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/models/test_remote.py +0 -0
  432. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/models/test_repository.py +0 -0
  433. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/models/test_task.py +0 -0
  434. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/roles/__init__.py +0 -0
  435. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/roles/test_roles.py +0 -0
  436. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/serializers/__init__.py +0 -0
  437. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/serializers/test_base.py +0 -0
  438. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/serializers/test_domain.py +0 -0
  439. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/serializers/test_fields.py +0 -0
  440. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/serializers/test_orphans_cleanup.py +0 -0
  441. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/serializers/test_pulpexport.py +0 -0
  442. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/serializers/test_repository.py +0 -0
  443. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/serializers/test_user.py +0 -0
  444. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/stages/__init__.py +0 -0
  445. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/stages/test_artifactdownloader.py +0 -0
  446. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/stages/test_stages.py +0 -0
  447. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/test_cache.py +0 -0
  448. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/test_chunked_file.py +0 -0
  449. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/test_content_guard.py +0 -0
  450. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/test_files.py +0 -0
  451. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/test_import_checks.py +0 -0
  452. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/test_pulp_urls.py +0 -0
  453. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/test_settings.py +0 -0
  454. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/test_util.py +0 -0
  455. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/test_viewsets.py +0 -0
  456. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/test_vulnerability_report.py +0 -0
  457. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/viewsets/__init__.py +0 -0
  458. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore/tests/unit/viewsets/test_viewset_base.py +0 -0
  459. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore.egg-info/dependency_links.txt +0 -0
  460. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore.egg-info/entry_points.txt +0 -0
  461. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore.egg-info/requires.txt +0 -0
  462. {pulpcore-3.87.0 → pulpcore-3.88.0}/pulpcore.egg-info/top_level.txt +0 -0
  463. {pulpcore-3.87.0 → pulpcore-3.88.0}/setup.cfg +0 -0
  464. {pulpcore-3.87.0 → pulpcore-3.88.0}/test_requirements.txt +0 -0
  465. {pulpcore-3.87.0 → pulpcore-3.88.0}/unittest_requirements.txt +0 -0
@@ -8,6 +8,41 @@
8
8
 
9
9
  [//]: # (towncrier release notes start)
10
10
 
11
+ ## 3.88.0 (2025-09-03) {: #3.88.0 }
12
+
13
+ ### REST API {: #3.88.0-rest-api }
14
+
15
+ #### Features {: #3.88.0-rest-api-feature }
16
+
17
+ - Added a `result` JSONField to the `Task` model to store the task's return value.
18
+ [#6901](https://github.com/pulp/pulpcore/issues/6901)
19
+
20
+ #### Bugfixes {: #3.88.0-rest-api-bugfix }
21
+
22
+ - Fixed error case where worker tried to aquire the app_lock for a Task that was already finished.
23
+ [#6899](https://github.com/pulp/pulpcore/issues/6899)
24
+
25
+ ### Plugin API {: #3.88.0-plugin-api }
26
+
27
+ #### Deprecations {: #3.88.0-plugin-api-deprecation }
28
+
29
+ - Deprecated returning non-JSON-serializable values from tasks.
30
+ Such values will be replaced with `None`, and this workaround will be removed in version 3.100.
31
+ [#6901](https://github.com/pulp/pulpcore/issues/6901)
32
+
33
+ ### Pulp File {: #3.88.0-pulp-file }
34
+
35
+ #### Features {: #3.88.0-pulp-file-feature }
36
+
37
+ - Updated tasks to always return JSON-serializable value.
38
+ [#6901](https://github.com/pulp/pulpcore/issues/6901)
39
+
40
+ ### Pulp Cert Guard {: #3.88.0-pulp-cert-guard }
41
+
42
+ No significant changes.
43
+
44
+ ---
45
+
11
46
  ## 3.87.0 (2025-08-29) {: #3.87.0 }
12
47
 
13
48
  ### REST API {: #3.87.0-rest-api }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulpcore
3
- Version: 3.87.0
3
+ Version: 3.88.0
4
4
  Summary: Pulp Django Application and Related Modules
5
5
  Author-email: Pulp Team <pulp-list@redhat.com>
6
6
  Project-URL: Homepage, https://pulpproject.org
@@ -6,6 +6,6 @@ class PulpCertGuardPluginAppConfig(PulpPluginAppConfig):
6
6
 
7
7
  name = "pulp_certguard.app"
8
8
  label = "certguard"
9
- version = "3.87.0"
9
+ version = "3.88.0"
10
10
  python_package_name = "pulpcore"
11
11
  domain_compatible = True
@@ -8,6 +8,6 @@ class PulpFilePluginAppConfig(PulpPluginAppConfig):
8
8
 
9
9
  name = "pulp_file.app"
10
10
  label = "file"
11
- version = "3.87.0"
11
+ version = "3.88.0"
12
12
  python_package_name = "pulpcore"
13
13
  domain_compatible = True
@@ -13,6 +13,7 @@ from pulpcore.plugin.models import (
13
13
  )
14
14
 
15
15
  from pulp_file.app.models import FilePublication
16
+ from pulp_file.app.serializers import FilePublicationSerializer
16
17
  from pulp_file.manifest import Entry, Manifest
17
18
 
18
19
 
@@ -51,6 +52,10 @@ def publish(manifest, repository_version_pk, checkpoint=False):
51
52
 
52
53
  log.info(_("Publication: {publication} created").format(publication=publication.pk))
53
54
 
55
+ publication = FilePublicationSerializer(
56
+ instance=publication, context={"request": None}
57
+ ).data
58
+
54
59
  return publication
55
60
 
56
61
 
@@ -7,6 +7,7 @@ from urllib.parse import quote, urlparse, urlunparse
7
7
  from django.core.files import File
8
8
 
9
9
  from pulpcore.plugin.models import Artifact, ProgressReport, Remote, PublishedMetadata
10
+ from pulpcore.plugin.serializers import RepositoryVersionSerializer
10
11
  from pulpcore.plugin.stages import (
11
12
  DeclarativeArtifact,
12
13
  DeclarativeContent,
@@ -65,6 +66,9 @@ def synchronize(remote_pk, repository_pk, mirror, url=None):
65
66
 
66
67
  log.info(_("Publication: {publication} created").format(publication=publication.pk))
67
68
 
69
+ if rv:
70
+ rv = RepositoryVersionSerializer(instance=rv, context={"request": None}).data
71
+
68
72
  return rv
69
73
 
70
74
 
@@ -239,7 +239,7 @@ class PulpAppConfig(PulpPluginAppConfig):
239
239
  label = "core"
240
240
 
241
241
  # The version of this app
242
- version = "3.87.0"
242
+ version = "3.88.0"
243
243
 
244
244
  # The python package name providing this app
245
245
  python_package_name = "pulpcore"
@@ -0,0 +1,21 @@
1
+ # Generated by Django 4.2.23 on 2025-08-29 13:34
2
+
3
+ import django.core.serializers.json
4
+ from django.db import migrations, models
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+
9
+ dependencies = [
10
+ ("core", "0141_alter_appstatus_name"),
11
+ ]
12
+
13
+ operations = [
14
+ migrations.AddField(
15
+ model_name="task",
16
+ name="result",
17
+ field=models.JSONField(
18
+ default=None, encoder=django.core.serializers.json.DjangoJSONEncoder, null=True
19
+ ),
20
+ ),
21
+ ]
@@ -2,6 +2,7 @@
2
2
  Django models related to the Tasking system
3
3
  """
4
4
 
5
+ import json
5
6
  import logging
6
7
  import traceback
7
8
  from datetime import timedelta
@@ -114,6 +115,7 @@ class Task(BaseModel, AutoAddObjPermsMixin):
114
115
  deferred (models.BooleanField): Whether to allow defer running the task to a
115
116
  pulpcore_worker. Both `immediate` and `deferred` cannot both be `False`.
116
117
  Defaults to `True`.
118
+ result (models.JSONField): The result of the task
117
119
 
118
120
  Relations:
119
121
  app_lock (AppStatus): The app holding the lock on this task.
@@ -160,6 +162,8 @@ class Task(BaseModel, AutoAddObjPermsMixin):
160
162
  immediate = models.BooleanField(default=False, null=True)
161
163
  deferred = models.BooleanField(default=True, null=True)
162
164
 
165
+ result = models.JSONField(default=None, null=True, encoder=DjangoJSONEncoder)
166
+
163
167
  def __str__(self):
164
168
  return "Task: {name} [{state}]".format(name=self.name, state=self.state)
165
169
 
@@ -229,22 +233,36 @@ class Task(BaseModel, AutoAddObjPermsMixin):
229
233
  )
230
234
  )
231
235
 
232
- def set_completed(self):
236
+ def set_completed(self, result=None):
233
237
  """
234
238
  Set this Task to the completed state, save it, and log output in warning cases.
235
239
 
236
240
  This updates the :attr:`finished_at` and sets the :attr:`state` to :attr:`COMPLETED`.
241
+ If `result` is provided, the :attr:`result` contains the result of the task.
237
242
  """
243
+ try:
244
+ json.dumps(result, cls=DjangoJSONEncoder)
245
+ except (TypeError, ValueError):
246
+ deprecation_logger.warning(
247
+ _(
248
+ "The result of the {} function is not JSON-serializable and will be "
249
+ "replaced with None: {}. This will raise an error in version 3.100."
250
+ ).format(self.name, result)
251
+ )
252
+ result = None
253
+
238
254
  # Only set the state to finished if it's running. This is important for when the task has
239
255
  # been canceled, so we don't move the task from canceled to finished.
240
256
  finished_at = timezone.now()
241
257
  rows = Task.objects.filter(pk=self.pk, state=TASK_STATES.RUNNING).update(
242
258
  state=TASK_STATES.COMPLETED,
243
259
  finished_at=finished_at,
260
+ result=result,
244
261
  )
245
262
  if rows == 1:
246
263
  self.state = TASK_STATES.COMPLETED
247
264
  self.finished_at = finished_at
265
+ self.result = result
248
266
  else:
249
267
  self.refresh_from_db()
250
268
  # If the user requested to cancel this task while the worker finished it, we leave it
@@ -88,6 +88,10 @@ class TaskSerializer(ModelSerializer):
88
88
  help_text=_("A list of resources required by that task."),
89
89
  read_only=True,
90
90
  )
91
+ result = serializers.JSONField(
92
+ read_only=True,
93
+ help_text=_("The result of this task."),
94
+ )
91
95
 
92
96
  def get_created_by(self, obj):
93
97
  if task_user_map := self.context.get("task_user_mapping"):
@@ -115,6 +119,7 @@ class TaskSerializer(ModelSerializer):
115
119
  "progress_reports",
116
120
  "created_resources",
117
121
  "reserved_resources_record",
122
+ "result",
118
123
  )
119
124
 
120
125
 
@@ -19,7 +19,8 @@ def general_create_from_temp_file(app_label, serializer_name, temp_file_pk, *arg
19
19
  context = kwargs.pop("context", {})
20
20
  context["pulp_temp_file_pk"] = temp_file_pk
21
21
 
22
- general_create(app_label, serializer_name, data=data, context=context, *args, **kwargs)
22
+ data = general_create(app_label, serializer_name, data=data, context=context, *args, **kwargs)
23
+ return data
23
24
 
24
25
 
25
26
  def general_create(app_label, serializer_name, *args, **kwargs):
@@ -33,6 +34,7 @@ def general_create(app_label, serializer_name, *args, **kwargs):
33
34
  data = kwargs.pop("data", None)
34
35
 
35
36
  context = kwargs.pop("context", {})
37
+ context.setdefault("request", None)
36
38
  serializer_class = get_plugin_config(app_label).named_serializers[serializer_name]
37
39
  serializer = serializer_class(data=data, context=context)
38
40
 
@@ -42,6 +44,7 @@ def general_create(app_label, serializer_name, *args, **kwargs):
42
44
  instance = instance.cast()
43
45
  resource = CreatedResource(content_object=instance)
44
46
  resource.save()
47
+ return serializer.data
45
48
 
46
49
 
47
50
  def general_update(instance_id, app_label, serializer_name, *args, **kwargs):
@@ -130,13 +133,17 @@ async def ageneral_update(instance_id, app_label, serializer_name, *args, **kwar
130
133
  """
131
134
  data = kwargs.pop("data", None)
132
135
  partial = kwargs.pop("partial", False)
136
+ context = kwargs.pop("context", {})
137
+ context.setdefault("request", None)
138
+
133
139
  serializer_class = get_plugin_config(app_label).named_serializers[serializer_name]
134
140
  instance = await serializer_class.Meta.model.objects.aget(pk=instance_id)
135
141
  if isinstance(instance, MasterModel):
136
142
  instance = await instance.acast()
137
- serializer = serializer_class(instance, data=data, partial=partial)
143
+ serializer = serializer_class(instance, data=data, partial=partial, context=context)
138
144
  await sync_to_async(serializer.is_valid)(raise_exception=True)
139
145
  await sync_to_async(serializer.save)()
146
+ return await sync_to_async(lambda: serializer.data)()
140
147
 
141
148
 
142
149
  async def ageneral_delete(instance_id, app_label, serializer_name):
@@ -31,6 +31,7 @@ from pulpcore.app.serializers import (
31
31
  RepositorySerializer,
32
32
  RepositorySyncURLSerializer,
33
33
  RepositoryVersionRelatedField,
34
+ RepositoryVersionSerializer,
34
35
  SingleArtifactContentSerializer,
35
36
  SingleContentArtifactField,
36
37
  TaskGroupOperationResponseSerializer,
@@ -79,6 +80,7 @@ __all__ = [
79
80
  "RepositorySerializer",
80
81
  "RepositorySyncURLSerializer",
81
82
  "RepositoryVersionRelatedField",
83
+ "RepositoryVersionSerializer",
82
84
  "SingleArtifactContentSerializer",
83
85
  "SingleContentArtifactField",
84
86
  "TaskGroupOperationResponseSerializer",
@@ -85,7 +85,7 @@ class UploadSerializerFieldsMixin(Serializer):
85
85
 
86
86
  data = super().validate(data)
87
87
 
88
- if "request" in self.context:
88
+ if self.context.get("request") is not None:
89
89
  upload_fields = {
90
90
  field
91
91
  for field in self.Meta.fields
@@ -95,7 +95,7 @@ def _execute_task(task):
95
95
  coro = asyncio.wait_for(coro, timeout=IMMEDIATE_TIMEOUT)
96
96
  loop = asyncio.get_event_loop()
97
97
  try:
98
- loop.run_until_complete(coro)
98
+ result = loop.run_until_complete(coro)
99
99
  except asyncio.TimeoutError:
100
100
  _logger.info(
101
101
  "Immediate task %s timed out after %s seconds.", task.pk, IMMEDIATE_TIMEOUT
@@ -106,7 +106,7 @@ def _execute_task(task):
106
106
  )
107
107
  )
108
108
  else:
109
- func(*args, **kwargs)
109
+ result = func(*args, **kwargs)
110
110
 
111
111
  except Exception:
112
112
  exc_type, exc, tb = sys.exc_info()
@@ -123,7 +123,7 @@ def _execute_task(task):
123
123
  _logger.info("\n".join(traceback.format_list(traceback.extract_tb(tb))))
124
124
  send_task_notification(task)
125
125
  else:
126
- task.set_completed()
126
+ task.set_completed(result)
127
127
  execution_time = task.finished_at - task.started_at
128
128
  execution_time_us = int(execution_time.total_seconds() * 1_000_000) # μs
129
129
  _logger.info(
@@ -368,10 +368,15 @@ class PulpcoreWorker:
368
368
  for task in Task.objects.filter(
369
369
  state__in=TASK_INCOMPLETE_STATES,
370
370
  unblocked_at__isnull=False,
371
+ app_lock__isnull=True,
371
372
  ).order_by("-immediate", F("pulp_created") + Value(timedelta(seconds=8)) * Random()):
372
373
  # This code will only be called if we acquired the lock successfully.
373
374
  # The lock will be automatically be released at the end of the block.
374
375
  with contextlib.suppress(AdvisoryLockError), task:
376
+ # Check if someone else changed the task before we got the lock.
377
+ task.refresh_from_db()
378
+ if task.state not in TASK_INCOMPLETE_STATES:
379
+ continue
375
380
  # We got the advisory lock (OLD) now try to get the app_lock (NEW).
376
381
  rows = Task.objects.filter(pk=task.pk, app_lock=None).update(
377
382
  app_lock=AppStatus.objects.current()
@@ -380,12 +385,10 @@ class PulpcoreWorker:
380
385
  _logger.error(
381
386
  "Acquired advisory lock but missed the app_lock for the task. "
382
387
  "This should only happen during the upgrade phase to the new app_lock."
388
+ f"Task: {task.pk=}, {task.state=}, {task.app_lock=}."
383
389
  )
384
390
  continue
385
391
  try:
386
- # Check if someone else changed the task before we got the lock.
387
- task.refresh_from_db()
388
-
389
392
  if task.state == TASK_STATES.CANCELING:
390
393
  # No worker picked this task up before being canceled.
391
394
  if self.cancel_abandoned_task(task, TASK_STATES.CANCELED):
@@ -169,3 +169,23 @@ def test_reserved_resources_filter(setup_filter_fixture, pulpcore_bindings):
169
169
  assert set(h.pulp_href for h in prn_results.results) == task_hrefs
170
170
  mixed_results = pulpcore_bindings.TasksApi.list(exclusive_resources__in=[repo_prn, remote_prn])
171
171
  assert mixed_results.count == 0
172
+
173
+
174
+ @pytest.mark.parallel
175
+ def test_task_result(add_to_cleanup, file_bindings, monitor_task):
176
+ """
177
+ Test that when performing `general_create` or `ageneral_update`,
178
+ the result of the task is stored in the `Task.result` field.
179
+ """
180
+ # test create
181
+ body = {"name": str(uuid4()), "base_path": str(uuid4())}
182
+ task = monitor_task(file_bindings.DistributionsFileApi.create(body).task)
183
+ assert task.result["base_path"] == body["base_path"]
184
+
185
+ # test update
186
+ dist_href = task.result["pulp_href"]
187
+ updated_body = {"name": str(uuid4()), "base_path": str(uuid4())}
188
+ task_2 = monitor_task(file_bindings.DistributionsFileApi.update(dist_href, updated_body).task)
189
+ assert task_2.result["base_path"] == updated_body["base_path"]
190
+
191
+ add_to_cleanup(file_bindings.DistributionsFileApi, dist_href)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulpcore
3
- Version: 3.87.0
3
+ Version: 3.88.0
4
4
  Summary: Pulp Django Application and Related Modules
5
5
  Author-email: Pulp Team <pulp-list@redhat.com>
6
6
  Project-URL: Homepage, https://pulpproject.org
@@ -210,6 +210,7 @@ pulpcore/app/migrations/0138_vulnerabilityreport.py
210
210
  pulpcore/app/migrations/0139_task_app_lock.py
211
211
  pulpcore/app/migrations/0140_require_appstatus_zdu.py
212
212
  pulpcore/app/migrations/0141_alter_appstatus_name.py
213
+ pulpcore/app/migrations/0142_task_result.py
213
214
  pulpcore/app/migrations/__init__.py
214
215
  pulpcore/app/models/__init__.py
215
216
  pulpcore/app/models/access_policy.py
@@ -7,7 +7,7 @@ build-backend = 'setuptools.build_meta'
7
7
 
8
8
  [project]
9
9
  name = "pulpcore"
10
- version = "3.87.0"
10
+ version = "3.88.0"
11
11
  description = "Pulp Django Application and Related Modules"
12
12
  readme = "README.md"
13
13
  authors = [
@@ -204,7 +204,7 @@ ignore = [
204
204
  [tool.bumpversion]
205
205
  # This section is managed by the plugin template. Do not edit manually.
206
206
 
207
- current_version = "3.87.0"
207
+ current_version = "3.88.0"
208
208
  commit = false
209
209
  tag = false
210
210
  parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<alpha>0a)?(?P<patch>\\d+)(\\.(?P<release>[a-z]+))?"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes