pulpcore 3.41.1__tar.gz → 3.43.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.
Files changed (457) hide show
  1. {pulpcore-3.41.1 → pulpcore-3.43.0}/CHANGES.rst +277 -0
  2. {pulpcore-3.41.1 → pulpcore-3.43.0}/PKG-INFO +1 -1
  3. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/__init__.py +1 -1
  4. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/apps.py +1 -1
  5. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/entrypoint.py +1 -1
  6. pulpcore-3.43.0/pulpcore/app/migrations/0115_compositecontentguard.py +27 -0
  7. pulpcore-3.43.0/pulpcore/app/migrations/0116_alter_remoteartifact_md5_alter_remoteartifact_sha1_and_more.py +43 -0
  8. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/__init__.py +1 -0
  9. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/base.py +6 -2
  10. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/content.py +6 -6
  11. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/publication.py +50 -1
  12. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/__init__.py +1 -0
  13. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/publication.py +15 -0
  14. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/__init__.py +1 -0
  15. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/custom_filters.py +3 -3
  16. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/publication.py +72 -0
  17. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/content/__init__.py +3 -1
  18. pulpcore-3.43.0/pulpcore/content/instrumentation.py +267 -0
  19. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/__init__.py +11 -0
  20. pulpcore-3.43.0/pulpcore/tests/functional/api/pulp_file/test_telemetry_collection.py +92 -0
  21. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_status.py +0 -6
  22. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_contentguard.py +160 -0
  23. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/stages/test_stages.py +5 -4
  24. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore.egg-info/PKG-INFO +1 -1
  25. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore.egg-info/SOURCES.txt +4 -0
  26. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore.egg-info/requires.txt +9 -9
  27. {pulpcore-3.41.1 → pulpcore-3.43.0}/requirements.txt +9 -9
  28. {pulpcore-3.41.1 → pulpcore-3.43.0}/setup.py +1 -1
  29. {pulpcore-3.41.1 → pulpcore-3.43.0}/CODE_OF_CONDUCT.md +0 -0
  30. {pulpcore-3.41.1 → pulpcore-3.43.0}/COMMITMENT +0 -0
  31. {pulpcore-3.41.1 → pulpcore-3.43.0}/CONTRIBUTING.md +0 -0
  32. {pulpcore-3.41.1 → pulpcore-3.43.0}/COPYRIGHT +0 -0
  33. {pulpcore-3.41.1 → pulpcore-3.43.0}/LICENSE +0 -0
  34. {pulpcore-3.41.1 → pulpcore-3.43.0}/MANIFEST.in +0 -0
  35. {pulpcore-3.41.1 → pulpcore-3.43.0}/README.md +0 -0
  36. {pulpcore-3.41.1 → pulpcore-3.43.0}/functest_requirements.txt +0 -0
  37. {pulpcore-3.41.1 → pulpcore-3.43.0}/manage.py +0 -0
  38. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/__init__.py +0 -0
  39. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0001_initial.py +0 -0
  40. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0002_file_related_names.py +0 -0
  41. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0003_auto_20191014_1721.py +0 -0
  42. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0004_filefilesystemexporter.py +0 -0
  43. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0005_filerepository.py +0 -0
  44. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0006_delete_filefilesystemexporter.py +0 -0
  45. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0007_filefilesystemexporter.py +0 -0
  46. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0008_add_manifest_field.py +0 -0
  47. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0009_move_data_to_new_master_distribution_model.py +0 -0
  48. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0010_auto_publish.py +0 -0
  49. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0011_fix_auto_publish.py +0 -0
  50. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0012_delete_filefilesystemexporter.py +0 -0
  51. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0013_file_acs.py +0 -0
  52. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0014_new_rbac_permissions.py +0 -0
  53. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0015_allow_null_manifest.py +0 -0
  54. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0016_add_domain.py +0 -0
  55. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0017_alter_filealternatecontentsource_alternatecontentsource_ptr_and_more.py +0 -0
  56. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/__init__.py +0 -0
  57. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/modelresource.py +0 -0
  58. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/models.py +0 -0
  59. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/replica.py +0 -0
  60. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/serializers.py +0 -0
  61. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/tasks/__init__.py +0 -0
  62. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/tasks/publishing.py +0 -0
  63. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/tasks/synchronizing.py +0 -0
  64. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/viewsets.py +0 -0
  65. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/manifest.py +0 -0
  66. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/pytest_plugin.py +0 -0
  67. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/__init__.py +0 -0
  68. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/__init__.py +0 -0
  69. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/access_policy.py +0 -0
  70. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/authentication.py +0 -0
  71. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/checks.py +0 -0
  72. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/files.py +0 -0
  73. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/global_access_conditions.py +0 -0
  74. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/importexport.py +0 -0
  75. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/loggers.py +0 -0
  76. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/manage.py +0 -0
  77. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/__init__.py +0 -0
  78. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/__init__.py +0 -0
  79. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/add-signing-service.py +0 -0
  80. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/analyze-publication.py +0 -0
  81. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/datarepair-2327.py +0 -0
  82. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/dump-permissions.py +0 -0
  83. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/dump-publications-to-fs.py +0 -0
  84. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/handle-artifact-checksums.py +0 -0
  85. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/remove-plugin.py +0 -0
  86. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/remove-signing-service.py +0 -0
  87. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/repository-size.py +0 -0
  88. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/reset-admin-password.py +0 -0
  89. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/rotate-db-key.py +0 -0
  90. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0001_initial.py +0 -0
  91. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0002_increase_artifact_size_field.py +0 -0
  92. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0003_remove_upload_completed.py +0 -0
  93. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0004_add_duplicated_reserved_resources.py +0 -0
  94. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0005_progressreport_code.py +0 -0
  95. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0006_repository_plugin_managed.py +0 -0
  96. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0007_delete_progress_proxies.py +0 -0
  97. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0008_published_metadata_as_content.py +0 -0
  98. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0009_remove_task_non_fatal_errors.py +0 -0
  99. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0010_pulp_fields.py +0 -0
  100. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0011_relative_path.py +0 -0
  101. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0012_auto_20191104_2000.py +0 -0
  102. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0013_repository_pulp_type.py +0 -0
  103. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0014_remove_repository_plugin_managed.py +0 -0
  104. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0015_auto_20191112_1426.py +0 -0
  105. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0016_charfield_to_textfield.py +0 -0
  106. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0017_remove_task_parent.py +0 -0
  107. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0018_auto_20191127_2350.py +0 -0
  108. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0019_add_signing_service_model.py +0 -0
  109. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0020_change_publishedartifact_constraints.py +0 -0
  110. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0021_add_signing_service_foreign_key.py +0 -0
  111. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0022_rename_last_version.py +0 -0
  112. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0023_change_exporter_models.py +0 -0
  113. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0024_use_local_storage_for_uploads.py +0 -0
  114. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0025_task_parent_task.py +0 -0
  115. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0026_task_group.py +0 -0
  116. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0027_export_backend.py +0 -0
  117. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0028_import_importer_pulpimporter_pulpimporterrepository.py +0 -0
  118. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0029_export_delete.py +0 -0
  119. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0030_taskgroup_all_tasks_dispatched.py +0 -0
  120. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0031_import_export_validate_params.py +0 -0
  121. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0032_export_to_chunks.py +0 -0
  122. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0033_increase_remote_artifact_size_field.py +0 -0
  123. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0034_groupprogressreport.py +0 -0
  124. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0035_content_upstream_id.py +0 -0
  125. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0036_unprotect_last_export.py +0 -0
  126. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0037_pulptemporaryfile.py +0 -0
  127. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0038_repository_remote.py +0 -0
  128. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0039_change_download_concurrency.py +0 -0
  129. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0040_set_admin_is_staff.py +0 -0
  130. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0041_accesspolicy.py +0 -0
  131. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0042_rbac_for_tasks.py +0 -0
  132. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0043_toc_attribute.py +0 -0
  133. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0044_temp_file_artifact_field.py +0 -0
  134. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0045_accesspolicy_permissions_allow_null.py +0 -0
  135. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0046_task__resource_job_id.py +0 -0
  136. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0047_improve_orphan_cleanup.py +0 -0
  137. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0048_fips_checksums.py +0 -0
  138. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0049_add_file_field_to_uploadchunk.py +0 -0
  139. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0050_namespace_access_policies.py +0 -0
  140. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0051_timeoutfields.py +0 -0
  141. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0052_tasking_logging_cid.py +0 -0
  142. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0053_remote_headers.py +0 -0
  143. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0054_add_public_key.py +0 -0
  144. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0055_label.py +0 -0
  145. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0056_remote_rate_limit.py +0 -0
  146. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0057_add_label_indexes.py +0 -0
  147. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0058_accesspolicy_customized.py +0 -0
  148. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0059_proxy_creds.py +0 -0
  149. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0060_data_migration_proxy_creds.py +0 -0
  150. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0061_call_handle_artifact_checksums_command.py +0 -0
  151. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0062_add_new_distribution_mastermodel.py +0 -0
  152. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0063_repository_retained_versions.py +0 -0
  153. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0064_add_new_style_task_columns.py +0 -0
  154. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0064_repository_user_hidden.py +0 -0
  155. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0065_merge_20210615_1211.py +0 -0
  156. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0066_download_concurrency_and_retry_changes.py +0 -0
  157. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0067_add_protect_to_task_reservation.py +0 -0
  158. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0068_add_timestamp_of_interest.py +0 -0
  159. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0069_update_json_fields.py +0 -0
  160. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0070_rename_retained_versions.py +0 -0
  161. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0071_filesystemexport_filesystemexporter.py +0 -0
  162. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0072_add_method_to_filesystem_exporter.py +0 -0
  163. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0073_encrypt_remote_fields.py +0 -0
  164. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0074_acs.py +0 -0
  165. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0075_rbaccontentguard.py +0 -0
  166. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0076_remove_reserved_resource.py +0 -0
  167. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0077_move_remote_url_credentials.py +0 -0
  168. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0078_grouprole_role_userrole.py +0 -0
  169. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0079_rename_permissions_assignment_accesspolicy_creation_hooks.py +0 -0
  170. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0080_proxy_group_model.py +0 -0
  171. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0081_reapplabel_group_permissions.py +0 -0
  172. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0082_add_manage_roles_permissions.py +0 -0
  173. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0083_alter_group_options.py +0 -0
  174. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0084_alter_rbaccontentguard_options.py +0 -0
  175. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0085_contentredirectcontentguard.py +0 -0
  176. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0086_task_json_fields.py +0 -0
  177. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0087_taskschedule.py +0 -0
  178. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0088_accesspolicy_queryset_scoping.py +0 -0
  179. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0089_alter_contentredirectcontentguard_options.py +0 -0
  180. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0090_char_to_text_field.py +0 -0
  181. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0091_systemid.py +0 -0
  182. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0092_alter_upload_options.py +0 -0
  183. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0093_add_info_field_repositoryversion.py +0 -0
  184. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0094_protect_repository_content.py +0 -0
  185. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0095_artifactdistribution.py +0 -0
  186. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0096_alter_task_logging_cid.py +0 -0
  187. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0097_remove_telemetry_task_schedule.py +0 -0
  188. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0098_pulp_labels.py +0 -0
  189. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0099_versions_field.py +0 -0
  190. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0100_upstreampulp.py +0 -0
  191. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0101_add_domain.py +0 -0
  192. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0102_add_domain_relations.py +0 -0
  193. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0103_alter_export_task.py +0 -0
  194. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0104_delete_label.py +0 -0
  195. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0105_abstract_uuid_gen.py +0 -0
  196. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0106_alter_artifactdistribution_distribution_ptr_and_more.py +0 -0
  197. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0107_distribution_hidden.py +0 -0
  198. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0108_task_versions.py +0 -0
  199. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0109_contentartifact_relative_path_index.py +0 -0
  200. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0110_apiappstatus.py +0 -0
  201. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0111_task_enc_args_task_enc_kwargs.py +0 -0
  202. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0112_alter_upstreampulp_options.py +0 -0
  203. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0113_headercontentguard.py +0 -0
  204. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0114_remove_task_args_remove_task_kwargs.py +0 -0
  205. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/__init__.py +0 -0
  206. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/mime_types.py +0 -0
  207. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/modelresource.py +0 -0
  208. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/access_policy.py +0 -0
  209. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/acs.py +0 -0
  210. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/analytics.py +0 -0
  211. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/domain.py +0 -0
  212. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/exporter.py +0 -0
  213. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/fields.py +0 -0
  214. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/generic.py +0 -0
  215. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/importer.py +0 -0
  216. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/progress.py +0 -0
  217. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/replica.py +0 -0
  218. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/repository.py +0 -0
  219. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/role.py +0 -0
  220. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/status.py +0 -0
  221. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/storage.py +0 -0
  222. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/task.py +0 -0
  223. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/upload.py +0 -0
  224. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/protobuf/__init__.py +0 -0
  225. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/protobuf/analytics_pb2.py +0 -0
  226. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/pulp_hashlib.py +0 -0
  227. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/redis_connection.py +0 -0
  228. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/replica.py +0 -0
  229. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/response.py +0 -0
  230. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/role_util.py +0 -0
  231. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/access_policy.py +0 -0
  232. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/acs.py +0 -0
  233. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/base.py +0 -0
  234. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/content.py +0 -0
  235. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/domain.py +0 -0
  236. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/exporter.py +0 -0
  237. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/fields.py +0 -0
  238. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/importer.py +0 -0
  239. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/orphans.py +0 -0
  240. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/progress.py +0 -0
  241. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/purge.py +0 -0
  242. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/reclaim.py +0 -0
  243. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/repair.py +0 -0
  244. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/replica.py +0 -0
  245. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/repository.py +0 -0
  246. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/status.py +0 -0
  247. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/task.py +0 -0
  248. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/upload.py +0 -0
  249. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/user.py +0 -0
  250. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/settings.py +0 -0
  251. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/__init__.py +0 -0
  252. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/analytics.py +0 -0
  253. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/base.py +0 -0
  254. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/export.py +0 -0
  255. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/importer.py +0 -0
  256. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/orphan.py +0 -0
  257. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/purge.py +0 -0
  258. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/reclaim_space.py +0 -0
  259. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/replica.py +0 -0
  260. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/repository.py +0 -0
  261. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/test.py +0 -0
  262. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/upload.py +0 -0
  263. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/templates/rest_framework/api.html +0 -0
  264. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/templatetags/__init__.py +0 -0
  265. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/templatetags/pulp_urls.py +0 -0
  266. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/urls.py +0 -0
  267. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/util.py +0 -0
  268. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/views/__init__.py +0 -0
  269. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/views/importer.py +0 -0
  270. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/views/orphans.py +0 -0
  271. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/views/repair.py +0 -0
  272. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/views/status.py +0 -0
  273. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/access_policy.py +0 -0
  274. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/acs.py +0 -0
  275. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/base.py +0 -0
  276. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/content.py +0 -0
  277. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/domain.py +0 -0
  278. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/exporter.py +0 -0
  279. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/importer.py +0 -0
  280. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/orphans.py +0 -0
  281. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/reclaim.py +0 -0
  282. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/replica.py +0 -0
  283. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/repository.py +0 -0
  284. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/task.py +0 -0
  285. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/upload.py +0 -0
  286. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/user.py +0 -0
  287. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/wsgi.py +0 -0
  288. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/backends.py +0 -0
  289. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/cache/__init__.py +0 -0
  290. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/cache/cache.py +0 -0
  291. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/constants.py +0 -0
  292. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/content/authentication.py +0 -0
  293. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/content/entrypoint.py +0 -0
  294. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/content/handler.py +0 -0
  295. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/download/__init__.py +0 -0
  296. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/download/base.py +0 -0
  297. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/download/factory.py +0 -0
  298. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/download/file.py +0 -0
  299. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/download/http.py +0 -0
  300. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/exceptions/__init__.py +0 -0
  301. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/exceptions/base.py +0 -0
  302. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/exceptions/plugin.py +0 -0
  303. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/exceptions/validation.py +0 -0
  304. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/filters.py +0 -0
  305. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/middleware.py +0 -0
  306. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/migrations.py +0 -0
  307. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/openapi/__init__.py +0 -0
  308. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/__init__.py +0 -0
  309. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/access_policy.py +0 -0
  310. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/actions.py +0 -0
  311. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/apps.py +0 -0
  312. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/authentication/__init__.py +0 -0
  313. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/cache/__init__.py +0 -0
  314. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/constants.py +0 -0
  315. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/content.py +0 -0
  316. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/download/__init__.py +0 -0
  317. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/exceptions.py +0 -0
  318. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/files.py +0 -0
  319. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/importexport.py +0 -0
  320. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/migrations.py +0 -0
  321. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/modelresources.py +0 -0
  322. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/models/__init__.py +0 -0
  323. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/models/role.py +0 -0
  324. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/publication_utils.py +0 -0
  325. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/pulp_hashlib.py +0 -0
  326. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/replica.py +0 -0
  327. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/repo_version_utils.py +0 -0
  328. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/responses.py +0 -0
  329. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/serializers/__init__.py +0 -0
  330. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/serializers/content.py +0 -0
  331. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/stages/__init__.py +0 -0
  332. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/stages/api.py +0 -0
  333. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/stages/artifact_stages.py +0 -0
  334. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/stages/content_stages.py +0 -0
  335. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/stages/declarative_version.py +0 -0
  336. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/stages/models.py +0 -0
  337. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/storage.py +0 -0
  338. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/sync.py +0 -0
  339. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/tasking.py +0 -0
  340. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/util.py +0 -0
  341. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/viewsets/__init__.py +0 -0
  342. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/viewsets/content.py +0 -0
  343. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/responses.py +0 -0
  344. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tasking/__init__.py +0 -0
  345. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tasking/_util.py +0 -0
  346. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tasking/constants.py +0 -0
  347. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tasking/entrypoint.py +0 -0
  348. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tasking/storage.py +0 -0
  349. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tasking/tasks.py +0 -0
  350. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tasking/worker.py +0 -0
  351. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/__init__.py +0 -0
  352. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/__init__.py +0 -0
  353. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/__init__.py +0 -0
  354. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_acs.py +0 -0
  355. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_auto_publish.py +0 -0
  356. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_bad_sync.py +0 -0
  357. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_crud_content_unit.py +0 -0
  358. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_crud_remotes.py +0 -0
  359. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_domains.py +0 -0
  360. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_download_policies.py +0 -0
  361. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_generic_list.py +0 -0
  362. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_labels.py +0 -0
  363. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_mime_types.py +0 -0
  364. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_publish.py +0 -0
  365. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_pulp_export.py +0 -0
  366. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_rbac.py +0 -0
  367. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_remote_settings.py +0 -0
  368. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_sync.py +0 -0
  369. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_access_policy.py +0 -0
  370. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_api_docs.py +0 -0
  371. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_artifact_distribution.py +0 -0
  372. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_auth.py +0 -0
  373. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_correlation_id.py +0 -0
  374. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_crd_artifacts.py +0 -0
  375. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_crud_domains.py +0 -0
  376. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_filter.py +0 -0
  377. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_openapi_schema.py +0 -0
  378. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_replication.py +0 -0
  379. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_repos.py +0 -0
  380. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_role.py +0 -0
  381. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_root_endpoint.py +0 -0
  382. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_scoping.py +0 -0
  383. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_signing_service.py +0 -0
  384. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_tasking.py +0 -0
  385. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_upload.py +0 -0
  386. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_users_groups.py +0 -0
  387. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_workers.py +0 -0
  388. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/__init__.py +0 -0
  389. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_content_access.py +0 -0
  390. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_content_cache.py +0 -0
  391. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_content_delivery.py +0 -0
  392. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_content_directory.py +0 -0
  393. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_content_path.py +0 -0
  394. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_content_promotion.py +0 -0
  395. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_crud_repos.py +0 -0
  396. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_distributions.py +0 -0
  397. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_filesystemexport.py +0 -0
  398. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_labels.py +0 -0
  399. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_orphans.py +0 -0
  400. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_pagination.py +0 -0
  401. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_proxy.py +0 -0
  402. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_pulpimport.py +0 -0
  403. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_purge.py +0 -0
  404. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_reclaim_disk_space.py +0 -0
  405. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_repair.py +0 -0
  406. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_repo_versions.py +0 -0
  407. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_tasks.py +0 -0
  408. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_unlinking_repo.py +0 -0
  409. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/assets/__init__.py +0 -0
  410. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/assets/otel_server.py +0 -0
  411. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/content_with_coverage.py +0 -0
  412. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/gpg_ascii_armor_signing_service.py +0 -0
  413. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/utils.py +0 -0
  414. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/performance/__init__.py +0 -0
  415. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/performance/test_performance.py +0 -0
  416. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/__init__.py +0 -0
  417. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/conftest.py +0 -0
  418. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/content/__init__.py +0 -0
  419. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/content/test_handler.py +0 -0
  420. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/content/test_heartbeat.py +0 -0
  421. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/download/__init__.py +0 -0
  422. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/download/test_downloader_base.py +0 -0
  423. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/download/test_downloader_factory.py +0 -0
  424. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/migration/__init__.py +0 -0
  425. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/migration/test_0077_move_remote_url_credentials.py +0 -0
  426. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/models/__init__.py +0 -0
  427. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/models/test_base.py +0 -0
  428. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/models/test_content.py +0 -0
  429. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/models/test_remote.py +0 -0
  430. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/models/test_repository.py +0 -0
  431. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/pulp_file/__init__.py +0 -0
  432. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/pulp_file/test_serializers.py +0 -0
  433. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/roles/__init__.py +0 -0
  434. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/roles/test_roles.py +0 -0
  435. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/serializers/__init__.py +0 -0
  436. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/serializers/test_base.py +0 -0
  437. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/serializers/test_domain.py +0 -0
  438. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/serializers/test_pulpexport.py +0 -0
  439. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/serializers/test_repository.py +0 -0
  440. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/stages/__init__.py +0 -0
  441. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/stages/test_artifactdownloader.py +0 -0
  442. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/test_cache.py +0 -0
  443. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/test_content_guard.py +0 -0
  444. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/test_files.py +0 -0
  445. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/test_import_checks.py +0 -0
  446. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/test_settings.py +0 -0
  447. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/test_util.py +0 -0
  448. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/test_viewsets.py +0 -0
  449. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/viewsets/__init__.py +0 -0
  450. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/viewsets/test_viewset_base.py +0 -0
  451. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore.egg-info/dependency_links.txt +0 -0
  452. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore.egg-info/entry_points.txt +0 -0
  453. {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore.egg-info/top_level.txt +0 -0
  454. {pulpcore-3.41.1 → pulpcore-3.43.0}/pyproject.toml +0 -0
  455. {pulpcore-3.41.1 → pulpcore-3.43.0}/setup.cfg +0 -0
  456. {pulpcore-3.41.1 → pulpcore-3.43.0}/test_requirements.txt +0 -0
  457. {pulpcore-3.41.1 → pulpcore-3.43.0}/unittest_requirements.txt +0 -0
@@ -13,6 +13,78 @@ Changelog
13
13
 
14
14
  .. towncrier release notes start
15
15
 
16
+ 3.43.0 (2023-12-05)
17
+ ===================
18
+ REST API
19
+ --------
20
+
21
+ Features
22
+ ~~~~~~~~
23
+
24
+ - Added a CompositeContentGuard, that manages a list-of ContentGuards and permits
25
+ access to content if *ANY* guard permits.
26
+ :github:`4583`
27
+
28
+
29
+ Bugfixes
30
+ ~~~~~~~~
31
+
32
+ - Removed a race condition leading to 500 error in distribution filtering.
33
+ :github:`4766`
34
+ - Added missing database indices to the ``RemoteArtifact`` model.
35
+ :github:`4835`
36
+
37
+
38
+ Plugin API
39
+ ----------
40
+
41
+ Features
42
+ ~~~~~~~~
43
+
44
+ - Added the async safe `detail_model` property to master detail models.
45
+ :github:`4766`
46
+
47
+
48
+ Pulp File
49
+ ---------
50
+
51
+ No significant changes.
52
+
53
+
54
+ ----
55
+
56
+
57
+ 3.42.0 (2023-11-28)
58
+ ===================
59
+ REST API
60
+ --------
61
+
62
+ Features
63
+ ~~~~~~~~
64
+
65
+ - Added instrumentation to content-app to track telemetry data.
66
+ :github:`3829`
67
+
68
+
69
+ Bugfixes
70
+ ~~~~~~~~
71
+
72
+ - Fixed that `pulp_file` presented its `python_package` as `pulp_file` instead of `pulp-file`.
73
+ :github:`4724`
74
+
75
+
76
+ Plugin API
77
+ ----------
78
+
79
+ No significant changes.
80
+
81
+
82
+ Pulp File
83
+ ---------
84
+
85
+ No significant changes.
86
+
87
+
16
88
  3.41.1 (2023-11-21)
17
89
  ===================
18
90
  REST API
@@ -269,6 +341,24 @@ Features
269
341
  :github:`4550`
270
342
 
271
343
 
344
+ 3.39.3 (2023-11-15)
345
+ ===================
346
+ REST API
347
+ --------
348
+
349
+ Bugfixes
350
+ ~~~~~~~~
351
+
352
+ - Fix file:// syncs deleting the original files.
353
+ :github:`4681`
354
+
355
+
356
+ Plugin API
357
+ ----------
358
+
359
+ No significant changes.
360
+
361
+
272
362
  3.39.2 (2023-11-08)
273
363
  ===================
274
364
  REST API
@@ -1747,6 +1837,61 @@ Features
1747
1837
  :github:`3661`
1748
1838
 
1749
1839
 
1840
+ 3.23.23 (2023-11-29)
1841
+ ====================
1842
+ REST API
1843
+ --------
1844
+
1845
+ Bugfixes
1846
+ ~~~~~~~~
1847
+
1848
+ - Removed a workaround to force close all tcp connections in sync leading to an exhaustion of port
1849
+ numbers and their reuse while in time_wait state.
1850
+ :github:`4452`
1851
+
1852
+
1853
+ Plugin API
1854
+ ----------
1855
+
1856
+ No significant changes.
1857
+
1858
+
1859
+ 3.23.22 (2023-11-23)
1860
+ ====================
1861
+ REST API
1862
+ --------
1863
+
1864
+ Bugfixes
1865
+ ~~~~~~~~
1866
+
1867
+ - Fix file:// syncs deleting the original files.
1868
+ :github:`4681`
1869
+
1870
+
1871
+ Plugin API
1872
+ ----------
1873
+
1874
+ No significant changes.
1875
+
1876
+
1877
+ 3.23.21 (2023-11-14)
1878
+ ====================
1879
+ REST API
1880
+ --------
1881
+
1882
+ Bugfixes
1883
+ ~~~~~~~~
1884
+
1885
+ - Resolved a sync-time performance regression.
1886
+ :github:`4591`
1887
+
1888
+
1889
+ Plugin API
1890
+ ----------
1891
+
1892
+ No significant changes.
1893
+
1894
+
1750
1895
  3.23.20 (2023-10-16)
1751
1896
  ====================
1752
1897
  REST API
@@ -2304,6 +2449,43 @@ Deprecations
2304
2449
  :github:`3604`
2305
2450
 
2306
2451
 
2452
+ 3.22.20 (2023-11-30)
2453
+ ====================
2454
+ REST API
2455
+ --------
2456
+
2457
+ Bugfixes
2458
+ ~~~~~~~~
2459
+
2460
+ - Removed a workaround to force close all tcp connections in sync leading to an exhaustion of port
2461
+ numbers and their reuse while in time_wait state.
2462
+ :github:`4452`
2463
+
2464
+
2465
+ Plugin API
2466
+ ----------
2467
+
2468
+ No significant changes.
2469
+
2470
+
2471
+ 3.22.19 (2023-11-15)
2472
+ ====================
2473
+ REST API
2474
+ --------
2475
+
2476
+ Bugfixes
2477
+ ~~~~~~~~
2478
+
2479
+ - Fix file:// syncs deleting the original files.
2480
+ :github:`4681`
2481
+
2482
+
2483
+ Plugin API
2484
+ ----------
2485
+
2486
+ No significant changes.
2487
+
2488
+
2307
2489
  3.22.18 (2023-11-03)
2308
2490
  ====================
2309
2491
  REST API
@@ -2817,6 +2999,61 @@ Removals
2817
2999
  :github:`3400`
2818
3000
 
2819
3001
 
3002
+ 3.21.24 (2023-11-30)
3003
+ ====================
3004
+ REST API
3005
+ --------
3006
+
3007
+ Bugfixes
3008
+ ~~~~~~~~
3009
+
3010
+ - Removed a workaround to force close all tcp connections in sync leading to an exhaustion of port
3011
+ numbers and their reuse while in time_wait state.
3012
+ :github:`4452`
3013
+
3014
+
3015
+ Plugin API
3016
+ ----------
3017
+
3018
+ No significant changes.
3019
+
3020
+
3021
+ 3.21.23 (2023-11-23)
3022
+ ====================
3023
+ REST API
3024
+ --------
3025
+
3026
+ Bugfixes
3027
+ ~~~~~~~~
3028
+
3029
+ - Fix file:// syncs deleting the original files.
3030
+ :github:`4681`
3031
+
3032
+
3033
+ Plugin API
3034
+ ----------
3035
+
3036
+ No significant changes.
3037
+
3038
+
3039
+ 3.21.22 (2023-11-14)
3040
+ ====================
3041
+ REST API
3042
+ --------
3043
+
3044
+ Bugfixes
3045
+ ~~~~~~~~
3046
+
3047
+ - Resolved a sync-time performance regression.
3048
+ :github:`4591`
3049
+
3050
+
3051
+ Plugin API
3052
+ ----------
3053
+
3054
+ No significant changes.
3055
+
3056
+
2820
3057
  3.21.21 (2023-10-16)
2821
3058
  ====================
2822
3059
  REST API
@@ -3789,6 +4026,46 @@ Bugfixes
3789
4026
  :github:`2069`
3790
4027
 
3791
4028
 
4029
+ 3.18.33 (2023-12-01)
4030
+ ====================
4031
+ REST API
4032
+ --------
4033
+
4034
+ Bugfixes
4035
+ ~~~~~~~~
4036
+
4037
+ - Removed a workaround to force close all tcp connections in sync leading to an exhaustion of port
4038
+ numbers and their reuse while in time_wait state.
4039
+ :github:`4452`
4040
+
4041
+
4042
+ Plugin API
4043
+ ----------
4044
+
4045
+ No significant changes.
4046
+
4047
+
4048
+ ----
4049
+
4050
+
4051
+ 3.18.32 (2023-11-14)
4052
+ ====================
4053
+ REST API
4054
+ --------
4055
+
4056
+ Bugfixes
4057
+ ~~~~~~~~
4058
+
4059
+ - Resolved a sync-time performance regression.
4060
+ :github:`4591`
4061
+
4062
+
4063
+ Plugin API
4064
+ ----------
4065
+
4066
+ No significant changes.
4067
+
4068
+
3792
4069
  3.18.31 (2023-10-16)
3793
4070
  ====================
3794
4071
  REST API
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pulpcore
3
- Version: 3.41.1
3
+ Version: 3.43.0
4
4
  Summary: Pulp Django Application and Related Modules
5
5
  Home-page: https://pulpproject.org
6
6
  Author: Pulp Team
@@ -8,6 +8,6 @@ class PulpFilePluginAppConfig(PulpPluginAppConfig):
8
8
 
9
9
  name = "pulp_file.app"
10
10
  label = "file"
11
- version = "3.41.1"
11
+ version = "3.43.0"
12
12
  python_package_name = "pulp-file" # TODO Add python_module_name
13
13
  domain_compatible = True
@@ -239,7 +239,7 @@ class PulpAppConfig(PulpPluginAppConfig):
239
239
  label = "core"
240
240
 
241
241
  # The version of this app
242
- version = "3.41.1"
242
+ version = "3.43.0"
243
243
 
244
244
  # The python package name providing this app
245
245
  python_package_name = "pulpcore"
@@ -49,7 +49,7 @@ class PulpApiWorker(SyncWorker):
49
49
 
50
50
  if settings.API_APP_TTL < 2 * self.timeout:
51
51
  logger.warn(
52
- "API_APP_TTL (%s) is smaller than half the gunicorn timeout (%s). "
52
+ "API_APP_TTL (%s) is smaller than double the gunicorn timeout (%s). "
53
53
  "You may experience workers wrongly reporting as missing",
54
54
  settings.API_APP_TTL,
55
55
  self.timeout,
@@ -0,0 +1,27 @@
1
+ # Generated by Django 4.2.6 on 2023-10-19 14:20
2
+
3
+ from django.db import migrations, models
4
+ import django.db.models.deletion
5
+ import pulpcore.app.models.access_policy
6
+
7
+
8
+ class Migration(migrations.Migration):
9
+
10
+ dependencies = [
11
+ ('core', '0114_remove_task_args_remove_task_kwargs'),
12
+ ]
13
+
14
+ operations = [
15
+ migrations.CreateModel(
16
+ name='CompositeContentGuard',
17
+ fields=[
18
+ ('contentguard_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.contentguard')),
19
+ ('guards', models.ManyToManyField(related_name='+', to='core.contentguard')),
20
+ ],
21
+ options={
22
+ 'permissions': (('manage_roles_compositecontentguard', 'Can manage role assignments on Composite content guard'),),
23
+ 'default_related_name': '%(app_label)s_%(model_name)s',
24
+ },
25
+ bases=('core.contentguard', pulpcore.app.models.access_policy.AutoAddObjPermsMixin),
26
+ ),
27
+ ]
@@ -0,0 +1,43 @@
1
+ # Generated by Django 4.2.7 on 2023-12-04 15:58
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ('core', '0115_compositecontentguard'),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AlterField(
14
+ model_name='remoteartifact',
15
+ name='md5',
16
+ field=models.CharField(db_index=True, max_length=32, null=True),
17
+ ),
18
+ migrations.AlterField(
19
+ model_name='remoteartifact',
20
+ name='sha1',
21
+ field=models.CharField(db_index=True, max_length=40, null=True),
22
+ ),
23
+ migrations.AlterField(
24
+ model_name='remoteartifact',
25
+ name='sha224',
26
+ field=models.CharField(db_index=True, max_length=56, null=True),
27
+ ),
28
+ migrations.AlterField(
29
+ model_name='remoteartifact',
30
+ name='sha256',
31
+ field=models.CharField(db_index=True, max_length=64, null=True),
32
+ ),
33
+ migrations.AlterField(
34
+ model_name='remoteartifact',
35
+ name='sha384',
36
+ field=models.CharField(db_index=True, max_length=96, null=True),
37
+ ),
38
+ migrations.AlterField(
39
+ model_name='remoteartifact',
40
+ name='sha512',
41
+ field=models.CharField(db_index=True, max_length=128, null=True),
42
+ ),
43
+ ]
@@ -55,6 +55,7 @@ from .publication import (
55
55
  PublishedArtifact,
56
56
  PublishedMetadata,
57
57
  RBACContentGuard,
58
+ CompositeContentGuard,
58
59
  ContentRedirectContentGuard,
59
60
  HeaderContentGuard,
60
61
  ArtifactDistribution,
@@ -148,16 +148,20 @@ class MasterModel(BaseModel, metaclass=MasterModelMeta):
148
148
  def get_model_for_pulp_type(cls, pulp_type):
149
149
  return cls._pulp_model_map[pulp_type]
150
150
 
151
- def save(self, *args, **kwargs):
151
+ @property
152
+ def detail_model(self):
153
+ return self._pulp_model_map[self.pulp_type]
154
+
155
+ def __init__(self, *args, **kwargs):
152
156
  # instances of "detail" models that subclass MasterModel are exposed
153
157
  # on instances of MasterModel by the string stored in that model's TYPE attr.
154
158
  # Storing this pulp_type in a column on the MasterModel next to makes it trivial
155
159
  # to filter for specific detail model types across master's relations.
156
160
  # Prepend the TYPE defined on a detail model with a django app label.
157
161
  # If a plugin sets the type field themselves, it's used as-is.
162
+ super().__init__(*args, **kwargs)
158
163
  if not self.pulp_type:
159
164
  self.pulp_type = self.get_pulp_type()
160
- return super().save(*args, **kwargs)
161
165
 
162
166
  def cast(self):
163
167
  """Return the "Detail" model instance of this master-detail object.
@@ -713,12 +713,12 @@ class RemoteArtifact(BaseModel, QueryMixin):
713
713
 
714
714
  url = models.TextField(validators=[validators.URLValidator])
715
715
  size = models.BigIntegerField(null=True)
716
- md5 = models.CharField(max_length=32, null=True)
717
- sha1 = models.CharField(max_length=40, null=True)
718
- sha224 = models.CharField(max_length=56, null=True)
719
- sha256 = models.CharField(max_length=64, null=True)
720
- sha384 = models.CharField(max_length=96, null=True)
721
- sha512 = models.CharField(max_length=128, null=True)
716
+ md5 = models.CharField(max_length=32, null=True, db_index=True)
717
+ sha1 = models.CharField(max_length=40, null=True, db_index=True)
718
+ sha224 = models.CharField(max_length=56, null=True, db_index=True)
719
+ sha256 = models.CharField(max_length=64, null=True, db_index=True)
720
+ sha384 = models.CharField(max_length=96, null=True, db_index=True)
721
+ sha512 = models.CharField(max_length=128, null=True, db_index=True)
722
722
 
723
723
  content_artifact = models.ForeignKey(ContentArtifact, on_delete=models.CASCADE)
724
724
  remote = models.ForeignKey("Remote", on_delete=models.CASCADE)
@@ -29,7 +29,7 @@ from pulpcore.cache import Cache
29
29
  from rest_framework.exceptions import APIException
30
30
  from pulpcore.app.models import AutoAddObjPermsMixin
31
31
  from pulpcore.responses import ArtifactResponse
32
- from pulpcore.app.util import get_domain_pk, cache_key
32
+ from pulpcore.app.util import get_domain_pk, cache_key, get_url
33
33
 
34
34
 
35
35
  _logger = logging.getLogger(__name__)
@@ -522,6 +522,55 @@ class HeaderContentGuard(ContentGuard, AutoAddObjPermsMixin):
522
522
  )
523
523
 
524
524
 
525
+ class CompositeContentGuard(ContentGuard, AutoAddObjPermsMixin):
526
+ """
527
+ Content guard to allow a list of contentguards to be evaluated on access.
528
+
529
+ Content-guards in the `guards` list have their permit() calls issued in order. At the
530
+ first "pass" result, access is permitted. Only if ALL guards in the list forbid access,
531
+ is access forbidden.
532
+
533
+ guards (django.db.models.ManyToManyField): ContentGuards to invoke.
534
+ """
535
+
536
+ TYPE = "composite"
537
+
538
+ guards = models.ManyToManyField(ContentGuard, related_name="+", symmetrical=False)
539
+
540
+ def permit(self, request):
541
+ """
542
+ Permit if ANY content-guard allows (OR permissions).
543
+ """
544
+ errors = []
545
+ if not self.guards.all():
546
+ # No guards specified? PASS
547
+ return
548
+
549
+ for guard in self.guards.all():
550
+ detail_guard = guard.cast()
551
+ try:
552
+ detail_guard.permit(request)
553
+ return # success on first-pass
554
+ except PermissionError as pe:
555
+ guard_error = _("Guard: '{}', HREF: '{}', class: '{}', denial: [{}].").format(
556
+ detail_guard.name, get_url(detail_guard), type(detail_guard), str(pe)
557
+ )
558
+ errors.append(guard_error)
559
+
560
+ # If we get here - FAIL
561
+ msg = _("Access forbidden. Refusals: {}").format(errors)
562
+ raise PermissionError(msg)
563
+
564
+ class Meta:
565
+ default_related_name = "%(app_label)s_%(model_name)s"
566
+ permissions = (
567
+ (
568
+ "manage_roles_compositecontentguard",
569
+ "Can manage role assignments on Composite content guard",
570
+ ),
571
+ )
572
+
573
+
525
574
  class BaseDistribution(MasterModel):
526
575
  """
527
576
  A distribution defines how a publication is distributed by the Content App.
@@ -77,6 +77,7 @@ from .publication import (
77
77
  PublicationSerializer,
78
78
  RBACContentGuardSerializer,
79
79
  RBACContentGuardPermissionSerializer,
80
+ CompositeContentGuardSerializer,
80
81
  ContentRedirectContentGuardSerializer,
81
82
  HeaderContentGuardSerializer,
82
83
  ArtifactDistributionSerializer,
@@ -108,6 +108,21 @@ class RBACContentGuardSerializer(ContentGuardSerializer):
108
108
  fields = ContentGuardSerializer.Meta.fields + ("users", "groups")
109
109
 
110
110
 
111
+ class CompositeContentGuardSerializer(ContentGuardSerializer, GetOrCreateSerializerMixin):
112
+ guards = DetailRelatedField(
113
+ many=True,
114
+ required=False,
115
+ help_text=_("List of ContentGuards to ask for access-permission."),
116
+ view_name_pattern=r"contentguards(-.*/.*)?-detail",
117
+ queryset=models.ContentGuard.objects.all(),
118
+ allow_null=True,
119
+ )
120
+
121
+ class Meta:
122
+ model = models.CompositeContentGuard
123
+ fields = ContentGuardSerializer.Meta.fields + ("guards",)
124
+
125
+
111
126
  class RBACContentGuardPermissionSerializer(serializers.Serializer):
112
127
  usernames = serializers.ListField(default=[])
113
128
  groupnames = serializers.ListField(default=[])
@@ -53,6 +53,7 @@ from .publication import (
53
53
  PublicationFilter,
54
54
  PublicationViewSet,
55
55
  RBACContentGuardViewSet,
56
+ CompositeContentGuardViewSet,
56
57
  ContentRedirectContentGuardViewSet,
57
58
  HeaderContentGuardViewSet,
58
59
  ArtifactDistributionViewSet,
@@ -355,12 +355,12 @@ class DistributionWithContentFilter(Filter):
355
355
  for dist in qs.exclude(publication=None).values("publication__repository_version", "pk"):
356
356
  versions_distributions[dist["publication__repository_version"]].append(dist["pk"])
357
357
 
358
- for dist in qs.exclude(repository_version=None).values("repository_version", "pk"):
359
- if not dist.cast().SERVE_FROM_PUBLICATION:
358
+ for dist in qs.exclude(repository_version=None).values("repository_version", "pulp_type"):
359
+ if not dist.detail_model.SERVE_FROM_PUBLICATION:
360
360
  versions_distributions[dist["repository_version"]].append(dist["pk"])
361
361
 
362
362
  for dist in qs.exclude(repository=None).prefetch_related("repository__versions"):
363
- if dist.cast().SERVE_FROM_PUBLICATION:
363
+ if dist.detail_model.SERVE_FROM_PUBLICATION:
364
364
  versions = dist.repository.versions.values_list("pk", flat=True)
365
365
  publications = Publication.objects.filter(
366
366
  repository_version__in=versions, complete=True
@@ -4,6 +4,8 @@ from django.db.models import Prefetch
4
4
  from django_filters import Filter
5
5
  from rest_framework import mixins, serializers
6
6
 
7
+ from pulpcore.app.models.publication import CompositeContentGuard
8
+ from pulpcore.app.serializers.publication import CompositeContentGuardSerializer
7
9
  from pulpcore.filters import BaseFilterSet
8
10
  from pulpcore.app.models import (
9
11
  ContentGuard,
@@ -427,6 +429,76 @@ class HeaderContentGuardViewSet(ContentGuardViewSet, RolesMixin):
427
429
  }
428
430
 
429
431
 
432
+ class CompositeContentGuardViewSet(ContentGuardViewSet, RolesMixin):
433
+ """
434
+ Content guard that queries a list-of content-guards for access permissions.
435
+ """
436
+
437
+ endpoint_name = "composite"
438
+ queryset = CompositeContentGuard.objects.all()
439
+ serializer_class = CompositeContentGuardSerializer
440
+ queryset_filtering_required_permission = "core.view_compositecontentguard"
441
+
442
+ DEFAULT_ACCESS_POLICY = {
443
+ "statements": [
444
+ {
445
+ "action": ["list"],
446
+ "principal": "authenticated",
447
+ "effect": "allow",
448
+ },
449
+ {
450
+ "action": ["create"],
451
+ "principal": "authenticated",
452
+ "effect": "allow",
453
+ "condition": "has_model_or_domain_perms:core.add_compositecontentguard",
454
+ },
455
+ {
456
+ "action": ["retrieve", "my_permissions"],
457
+ "principal": "authenticated",
458
+ "effect": "allow",
459
+ "condition": "has_model_or_domain_or_obj_perms:core." "view_compositecontentguard",
460
+ },
461
+ {
462
+ "action": ["update", "partial_update"],
463
+ "principal": "authenticated",
464
+ "effect": "allow",
465
+ "condition": ("has_model_or_domain_or_obj_perms:core.change_compositecontentguard"),
466
+ },
467
+ {
468
+ "action": ["destroy"],
469
+ "principal": "authenticated",
470
+ "effect": "allow",
471
+ "condition": ("has_model_or_domain_or_obj_perms:core.delete_compositecontentguard"),
472
+ },
473
+ {
474
+ "action": ["list_roles", "add_role", "remove_role"],
475
+ "principal": "authenticated",
476
+ "effect": "allow",
477
+ "condition": (
478
+ "has_model_or_domain_or_obj_perms:core.manage_roles_compositecontentguard"
479
+ ),
480
+ },
481
+ ],
482
+ "creation_hooks": [
483
+ {
484
+ "function": "add_roles_for_object_creator",
485
+ "parameters": {"roles": ["core.compositecontentguard_owner"]},
486
+ },
487
+ ],
488
+ "queryset_scoping": {"function": "scope_queryset"},
489
+ }
490
+ LOCKED_ROLES = {
491
+ "core.compositecontentguard_creator": ["core.add_compositecontentguard"],
492
+ "core.compositecontentguard_owner": [
493
+ "core.view_compositecontentguard",
494
+ "core.change_compositecontentguard",
495
+ "core.delete_compositecontentguard",
496
+ "core.manage_roles_compositecontentguard",
497
+ ],
498
+ "core.compositecontentguard_viewer": ["core.view_compositecontentguard"],
499
+ }
500
+
501
+
430
502
  class DistributionFilter(BaseFilterSet):
431
503
  # e.g.
432
504
  # /?name=foo