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