pulp-ansible 0.27.0__tar.gz → 0.27.1__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 (186) hide show
  1. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/CHANGES.md +8 -0
  2. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/PKG-INFO +1 -1
  3. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/__init__.py +1 -1
  4. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/tasks/collections.py +53 -37
  5. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/collection/v3/test_deprecation.py +29 -8
  6. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible.egg-info/PKG-INFO +1 -1
  7. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pyproject.toml +2 -2
  8. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/COMMITMENT +0 -0
  9. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/COPYRIGHT +0 -0
  10. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/LICENSE +0 -0
  11. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/MANIFEST.in +0 -0
  12. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/README.rst +0 -0
  13. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/functest_requirements.txt +0 -0
  14. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/__init__.py +0 -0
  15. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/constants.py +0 -0
  16. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/downloaders.py +0 -0
  17. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/fields.py +0 -0
  18. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/galaxy/__init__.py +0 -0
  19. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/galaxy/mixins.py +0 -0
  20. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/galaxy/serializers.py +0 -0
  21. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/galaxy/v3/__init__.py +0 -0
  22. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/galaxy/v3/exceptions.py +0 -0
  23. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/galaxy/v3/filters.py +0 -0
  24. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/galaxy/v3/pagination.py +0 -0
  25. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/galaxy/v3/serializers.py +0 -0
  26. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/galaxy/v3/views.py +0 -0
  27. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/galaxy/v3/viewsets.py +0 -0
  28. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/galaxy/views.py +0 -0
  29. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/global_access_conditions.py +0 -0
  30. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/logutils.py +0 -0
  31. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/management/__init__.py +0 -0
  32. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/management/commands/__init__.py +0 -0
  33. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/management/commands/download-log.py +0 -0
  34. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0001_initial.py +0 -0
  35. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0001_initial_squashed_0040_ansiblerepository_keyring.py +0 -0
  36. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0002_advanced_collections.py +0 -0
  37. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0003_add_tags_and_collectionversion_fields.py +0 -0
  38. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0004_add_fulltext_search_indexes.py +0 -0
  39. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0005_collectionversion_is_highest.py +0 -0
  40. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0006_remove_whitelist_and_alter_collection_version_name.py +0 -0
  41. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0007_collectionversion_is_certified.py +0 -0
  42. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0008_collectionremote_requirements_file.py +0 -0
  43. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0009_collectionimport.py +0 -0
  44. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0010_ansible_related_names.py +0 -0
  45. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0011_collectionimport.py +0 -0
  46. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0012_auto_20190906_2253.py +0 -0
  47. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0013_pulp_fields.py +0 -0
  48. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0014_certification_enum.py +0 -0
  49. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0015_ansiblerepository.py +0 -0
  50. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0016_add_extension.py +0 -0
  51. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0017_increase_length_collectionversion_fields.py +0 -0
  52. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0018_fix_collection_relative_path.py +0 -0
  53. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0019_collection_token.py +0 -0
  54. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0020_auto_20200810_1926.py +0 -0
  55. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0021_rename_role_remote.py +0 -0
  56. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0022_URLField_to_CharField.py +0 -0
  57. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0023_alter_requirements_file_field.py +0 -0
  58. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0024_remove_collectionversion_certification.py +0 -0
  59. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0025_increase_collection_version_version_size.py +0 -0
  60. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0026_deprecation_per_repository.py +0 -0
  61. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0027_tag_length.py +0 -0
  62. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0028_collectionversion_namespace_length.py +0 -0
  63. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0029_manifest_and_files_json_fields.py +0 -0
  64. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0030_collectionversion_requires_ansible.py +0 -0
  65. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0031_ansiblerepository_last_synced_metadata_time.py +0 -0
  66. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0032_collectionremote_sync_dependencies.py +0 -0
  67. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0033_swap_distribution_model.py +0 -0
  68. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0034_handle_jsonfield_warnings.py +0 -0
  69. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0035_deprecation_content.py +0 -0
  70. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0036_update_repository_content.py +0 -0
  71. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0037_gitremote.py +0 -0
  72. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0038_collectionversionsignature.py +0 -0
  73. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0039_collectionremote_signed_only.py +0 -0
  74. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0040_ansiblerepository_keyring.py +0 -0
  75. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0041_alter_collectionversion_collection.py +0 -0
  76. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0042_ansiblerepository_gpgkey.py +0 -0
  77. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0043_alter_collectionversionsignature_data.py +0 -0
  78. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0044_alter_collectionremote_token.py +0 -0
  79. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0045_downloadlog.py +0 -0
  80. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0046_add_fulltext_search_fix.py +0 -0
  81. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0047_ansible_namespace.py +0 -0
  82. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0048_collectionversionmark.py +0 -0
  83. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0049_rbac_permissions.py +0 -0
  84. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0050_crossrepositorycollectionversionindex.py +0 -0
  85. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0051_cvindex_build.py +0 -0
  86. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0052_alter_ansiblecollectiondeprecated_content_ptr_and_more.py +0 -0
  87. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0053_collectiondownloadcount.py +0 -0
  88. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0054_split_collection_version_numbers.py +0 -0
  89. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0055_alter_collectionversion_version_alter_role_version.py +0 -0
  90. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0056_collectionversion_sha256.py +0 -0
  91. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0057_collectionversion_sha256_migrate.py +0 -0
  92. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0058_fix_0056_regression.py +0 -0
  93. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0059_collectionversion_unique_sha256.py +0 -0
  94. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0060_remove_collectionversion_unique_is_highest_and_more.py +0 -0
  95. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0061_collectionversion_new_tags.py +0 -0
  96. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0062_pivot_collectionversion_tags.py +0 -0
  97. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0063_domain_support.py +0 -0
  98. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/0064_alter_collection_unique_together_and_more.py +0 -0
  99. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/migrations/__init__.py +0 -0
  100. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/modelresource.py +0 -0
  101. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/models.py +0 -0
  102. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/schema/__init__.py +0 -0
  103. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/schema/copy_config.json +0 -0
  104. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/serializers.py +0 -0
  105. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/settings.py +0 -0
  106. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/tasks/__init__.py +0 -0
  107. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/tasks/collectionversion_index.py +0 -0
  108. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/tasks/copy.py +0 -0
  109. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/tasks/deletion.py +0 -0
  110. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/tasks/git.py +0 -0
  111. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/tasks/mark.py +0 -0
  112. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/tasks/roles.py +0 -0
  113. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/tasks/signature.py +0 -0
  114. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/tasks/test_tasks.py +0 -0
  115. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/tasks/upload.py +0 -0
  116. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/tasks/utils.py +0 -0
  117. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/urls.py +0 -0
  118. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/utils.py +0 -0
  119. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/viewsets.py +0 -0
  120. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/webserver_snippets/__init__.py +0 -0
  121. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/webserver_snippets/apache.conf +0 -0
  122. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/app/webserver_snippets/nginx.conf +0 -0
  123. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/pytest_plugin.py +0 -0
  124. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/__init__.py +0 -0
  125. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/__init__.py +0 -0
  126. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/__init__.py +0 -0
  127. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/collection/__init__.py +0 -0
  128. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/collection/test_copy_and_move.py +0 -0
  129. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/collection/test_crud_collection_versions.py +0 -0
  130. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/collection/test_marks.py +0 -0
  131. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/collection/test_remote.py +0 -0
  132. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/collection/test_signatures.py +0 -0
  133. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/collection/test_sync.py +0 -0
  134. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/collection/v3/__init__.py +0 -0
  135. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/collection/v3/test_client_configuration.py +0 -0
  136. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/collection/v3/test_collection.py +0 -0
  137. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/collection/v3/test_collection_naming_edgecases.py +0 -0
  138. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/collection/v3/test_collection_version_search.py +0 -0
  139. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/collection/v3/test_content_guard.py +0 -0
  140. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/collection/v3/test_deletion.py +0 -0
  141. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/collection/v3/test_namespace.py +0 -0
  142. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/collection/v3/test_proxy.py +0 -0
  143. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/collection/v3/test_redirects.py +0 -0
  144. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/collection/v3/test_serializers.py +0 -0
  145. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/collection/v3/test_sync.py +0 -0
  146. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/git/__init__.py +0 -0
  147. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/git/test_crud_remotes.py +0 -0
  148. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/git/test_sync.py +0 -0
  149. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/role/__init__.py +0 -0
  150. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/role/test_crud_distribution.py +0 -0
  151. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/role/test_crud_remote.py +0 -0
  152. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/role/test_sync.py +0 -0
  153. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/test_domain.py +0 -0
  154. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/test_export_import.py +0 -0
  155. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/api/test_rbac.py +0 -0
  156. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/cli/__init__.py +0 -0
  157. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/cli/test_collection_download_count.py +0 -0
  158. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/cli/test_collection_install.py +0 -0
  159. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/cli/test_collection_upload.py +0 -0
  160. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/cli/test_role_install.py +0 -0
  161. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/constants.py +0 -0
  162. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/functional/utils.py +0 -0
  163. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/performance/__init__.py +0 -0
  164. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/performance/create_repos_with_collections.py +0 -0
  165. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/performance/fast_load_collections.py +0 -0
  166. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/performance/generate_collections.py +0 -0
  167. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/performance/promote.py +0 -0
  168. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/unit/__init__.py +0 -0
  169. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/unit/migrations/__init__.py +0 -0
  170. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/unit/migrations/conftest.py +0 -0
  171. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/unit/migrations/test_0057_collection_version_sha256_migrate.py +0 -0
  172. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/unit/migrations/test_x_repo_search_migration.py +0 -0
  173. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/unit/test_cv_index.py +0 -0
  174. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/unit/test_models.py +0 -0
  175. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/unit/test_search.py +0 -0
  176. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/unit/test_serializers.py +0 -0
  177. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/unit/test_tasks.py +0 -0
  178. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible/tests/unit/utils.py +0 -0
  179. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible.egg-info/SOURCES.txt +0 -0
  180. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible.egg-info/dependency_links.txt +0 -0
  181. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible.egg-info/entry_points.txt +0 -0
  182. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible.egg-info/requires.txt +0 -0
  183. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/pulp_ansible.egg-info/top_level.txt +0 -0
  184. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/setup.cfg +0 -0
  185. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/test_requirements.txt +0 -0
  186. {pulp_ansible-0.27.0 → pulp_ansible-0.27.1}/unittest_requirements.txt +0 -0
@@ -8,6 +8,14 @@
8
8
 
9
9
  [//]: # (towncrier release notes start)
10
10
 
11
+ ## 0.27.1 (2025-07-15) {: #0.27.1 }
12
+
13
+ #### Bugfixes {: #0.27.1-bugfix }
14
+
15
+ - Fixed the sync pipeline to not manipulate the RepositoryContent table directly when undeprecating collections.
16
+
17
+ ---
18
+
11
19
  ## 0.27.0 (2025-07-09) {: #0.27.0 }
12
20
 
13
21
  #### Features {: #0.27.0-feature }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulp-ansible
3
- Version: 0.27.0
3
+ Version: 0.27.1
4
4
  Summary: Pulp plugin to manage Ansible content, e.g. roles
5
5
  Author-email: Pulp Ansible Plugin Project Developers <pulp-dev@redhat.com>
6
6
  Project-URL: Homepage, https://pulpproject.org
@@ -8,6 +8,6 @@ class PulpAnsiblePluginAppConfig(PulpPluginAppConfig):
8
8
 
9
9
  name = "pulp_ansible.app"
10
10
  label = "ansible"
11
- version = "0.27.0"
11
+ version = "0.27.1"
12
12
  python_package_name = "pulp-ansible"
13
13
  domain_compatible = True
@@ -8,6 +8,7 @@ from gettext import gettext as _
8
8
  from operator import attrgetter
9
9
  from urllib.parse import urljoin
10
10
  from uuid import uuid4
11
+ import tempfile
11
12
 
12
13
  import yaml
13
14
  from aiohttp.client_exceptions import ClientError, ClientResponseError
@@ -30,7 +31,6 @@ from pulpcore.plugin.models import (
30
31
  ProgressReport,
31
32
  PulpTemporaryFile,
32
33
  Remote,
33
- RepositoryContent,
34
34
  RepositoryVersion,
35
35
  Task,
36
36
  )
@@ -38,6 +38,8 @@ from pulpcore.plugin.stages import (
38
38
  ArtifactDownloader,
39
39
  ArtifactSaver,
40
40
  ContentSaver,
41
+ ContentAssociation,
42
+ EndStage,
41
43
  DeclarativeArtifact,
42
44
  DeclarativeContent,
43
45
  DeclarativeVersion,
@@ -47,6 +49,7 @@ from pulpcore.plugin.stages import (
47
49
  RemoteArtifactSaver,
48
50
  ResolveContentFutures,
49
51
  Stage,
52
+ create_pipeline,
50
53
  )
51
54
  from pulpcore.plugin.util import get_url, get_domain
52
55
  from rest_framework.serializers import ValidationError
@@ -197,14 +200,7 @@ def sync(remote_pk, repository_pk, mirror, optimize):
197
200
  if not remote.url:
198
201
  raise ValueError(_("A CollectionRemote must have a 'url' specified to synchronize."))
199
202
 
200
- deprecation_before_sync = set()
201
- for namespace, name in AnsibleCollectionDeprecated.objects.filter(
202
- pk__in=repository.latest_version().content
203
- ).values_list("namespace", "name"):
204
- deprecation_before_sync.add(f"{namespace}.{name}")
205
- first_stage = CollectionSyncFirstStage(
206
- remote, repository, is_repo_remote, deprecation_before_sync, optimize
207
- )
203
+ first_stage = CollectionSyncFirstStage(remote, repository, is_repo_remote, optimize)
208
204
  if first_stage.should_sync is False:
209
205
  log.debug(_("no-op: remote wasn't updated since last sync."))
210
206
  return
@@ -218,25 +214,6 @@ def sync(remote_pk, repository_pk, mirror, optimize):
218
214
  repository.last_synced_metadata_time = first_stage.last_synced_metadata_time
219
215
  repository.save(update_fields=["last_synced_metadata_time"])
220
216
 
221
- # This goes against all rules!
222
- # Content must be added and removed via the dedicated functions, which is impossible after the
223
- # repository version was finalized.
224
- # TODO Fix this!
225
- to_undeprecate = Q()
226
- undeprecated = deprecation_before_sync.difference(first_stage.deprecation_after_sync)
227
- if undeprecated:
228
- for collection in undeprecated:
229
- namespace, name = collection.split(".")
230
- to_undeprecate |= Q(namespace=namespace, name=name)
231
- deprecated = AnsibleCollectionDeprecated.objects.filter(
232
- to_undeprecate, pulp_domain=get_domain()
233
- )
234
- RepositoryContent.objects.filter(
235
- repository=repository,
236
- content__in=deprecated,
237
- version_removed__isnull=True,
238
- ).update(version_removed=repo_version)
239
-
240
217
 
241
218
  def import_collection(
242
219
  temp_file_pk,
@@ -475,13 +452,60 @@ class AnsibleDeclarativeVersion(DeclarativeVersion):
475
452
 
476
453
  return pipeline
477
454
 
455
+ def create(self):
456
+ """
457
+ Perform the work. This is the long-blocking call where all syncing occurs.
458
+
459
+ Returns: The created RepositoryVersion or None if it represents no change from the latest.
460
+ """
461
+ with tempfile.TemporaryDirectory(dir="."):
462
+ with self.repository.new_version() as new_version:
463
+ deprecation_before_sync = {
464
+ (namespace, name)
465
+ for namespace, name in AnsibleCollectionDeprecated.objects.filter(
466
+ pk__in=self.repository.latest_version().content
467
+ ).values_list("namespace", "name")
468
+ }
469
+ loop = asyncio.get_event_loop()
470
+ stages = self.pipeline_stages(new_version)
471
+ stages.append(UndeprecateStage(deprecation_before_sync))
472
+ stages.append(ContentAssociation(new_version, self.mirror))
473
+ stages.append(EndStage())
474
+ pipeline = create_pipeline(stages)
475
+ loop.run_until_complete(pipeline)
476
+
477
+ if deprecation_before_sync:
478
+ to_undeprecate = Q()
479
+ for namespace, name in deprecation_before_sync:
480
+ to_undeprecate |= Q(namespace=namespace, name=name)
481
+ new_version.remove_content(
482
+ AnsibleCollectionDeprecated.objects.filter(
483
+ to_undeprecate, pulp_domain=get_domain()
484
+ )
485
+ )
486
+
487
+ return new_version if new_version.complete else None
488
+
489
+
490
+ class UndeprecateStage(Stage):
491
+ def __init__(self, deprecation_before_sync):
492
+ self.deprecation_before_sync = deprecation_before_sync
493
+
494
+ async def run(self):
495
+ async for batch in self.batches():
496
+ for d_content in batch:
497
+ if isinstance(d_content.content, AnsibleCollectionDeprecated):
498
+ key = (d_content.content.namespace, d_content.content.name)
499
+ self.deprecation_before_sync.discard(key)
500
+ await self.put(d_content)
501
+
478
502
 
479
503
  class CollectionSyncFirstStage(Stage):
480
504
  """
481
505
  The first stage of a pulp_ansible sync pipeline.
482
506
  """
483
507
 
484
- def __init__(self, remote, repository, is_repo_remote, deprecation_before_sync, optimize):
508
+ def __init__(self, remote, repository, is_repo_remote, optimize):
485
509
  """
486
510
  The first stage of a pulp_ansible sync pipeline.
487
511
 
@@ -489,15 +513,12 @@ class CollectionSyncFirstStage(Stage):
489
513
  remote (CollectionRemote): The remote data to be used when syncing
490
514
  repository (AnsibleRepository): The repository being syncedself.
491
515
  is_repo_remote (bool): True if the remote is the repository's remote.
492
- deprecation_before_sync (set): Set of deprecations before the sync.
493
516
  optimize (boolean): Whether to optimize sync or not.
494
517
 
495
518
  """
496
519
  super().__init__()
497
520
  self.remote = remote
498
521
  self.repository = repository
499
- self.deprecation_before_sync = deprecation_before_sync
500
- self.deprecation_after_sync = set()
501
522
  self.collection_info = parse_collections_requirements_file(remote.requirements_file)
502
523
  self.exclude_info = {}
503
524
  self.add_dependents = self.collection_info and self.remote.sync_dependencies
@@ -766,7 +787,6 @@ class CollectionSyncFirstStage(Stage):
766
787
  d_content = DeclarativeContent(
767
788
  content=AnsibleCollectionDeprecated(namespace=namespace, name=name),
768
789
  )
769
- self.deprecation_after_sync.add(f"{namespace}.{name}")
770
790
  await self.put(d_content)
771
791
  tasks.append(
772
792
  loop.create_task(
@@ -801,7 +821,6 @@ class CollectionSyncFirstStage(Stage):
801
821
  d_content = DeclarativeContent(
802
822
  content=AnsibleCollectionDeprecated(namespace=namespace, name=name),
803
823
  )
804
- self.deprecation_after_sync.add(f"{namespace}.{name}")
805
824
  await self.put(d_content)
806
825
 
807
826
  all_versions_of_collection = self._unpaginated_collection_version_metadata[namespace][name]
@@ -924,9 +943,6 @@ class CollectionSyncFirstStage(Stage):
924
943
  namespace=collection["namespace"], name=collection["name"]
925
944
  ),
926
945
  )
927
- self.deprecation_after_sync.add(
928
- f"{collection['namespace']}.{collection['name']}"
929
- )
930
946
  await self.put(d_content)
931
947
 
932
948
  for collections_in_namespace in self._unpaginated_collection_version_metadata.values():
@@ -35,7 +35,6 @@ def test_deprecation(
35
35
  collections = ansible_bindings.PulpAnsibleApiV3CollectionsApi.list(
36
36
  first_distribution.base_path, namespace="testing"
37
37
  )
38
-
39
38
  assert collections.data[0].deprecated
40
39
  collections = ansible_bindings.PulpAnsibleApiV3CollectionsApi.list(
41
40
  first_distribution.base_path, namespace="pulp"
@@ -62,15 +61,12 @@ def test_deprecation(
62
61
  )
63
62
  assert collections.data[0].deprecated
64
63
 
65
- # Change the deprecated status for the testing collection on the original repo to False
66
- result = ansible_bindings.PulpAnsibleApiV3CollectionsApi.update(
67
- "k8s_demo_collection", "testing", first_distribution.base_path, {"deprecated": False}
68
- )
69
- monitor_task(result.task)
64
+ # Sync again to see if the deprecated state is kept.
65
+ ansible_sync_factory(second_repo, optimize=False)
70
66
  collections = ansible_bindings.PulpAnsibleApiV3CollectionsApi.list(
71
- first_distribution.base_path, namespace="testing"
67
+ second_distribution.base_path, namespace="testing"
72
68
  )
73
- assert not collections.data[0].deprecated
69
+ assert collections.data[0].deprecated
74
70
 
75
71
  # Update the requirements to sync down both collections this time
76
72
  requirements = (
@@ -83,9 +79,34 @@ def test_deprecation(
83
79
  # Sync the second repo again
84
80
  second_repo = ansible_sync_factory(second_repo)
85
81
 
82
+ # Assert the state of deprecated True for testing, False for pulp
83
+ collections = ansible_bindings.PulpAnsibleApiV3CollectionsApi.list(
84
+ second_distribution.base_path, namespace="testing"
85
+ )
86
+ assert collections.data[0].deprecated
87
+ collections = ansible_bindings.PulpAnsibleApiV3CollectionsApi.list(
88
+ second_distribution.base_path, namespace="pulp"
89
+ )
90
+ assert not collections.data[0].deprecated
91
+
92
+ # Change the deprecated status for the testing collection on the original repo to False
93
+ monitor_task(
94
+ ansible_bindings.PulpAnsibleApiV3CollectionsApi.update(
95
+ "k8s_demo_collection", "testing", first_distribution.base_path, {"deprecated": False}
96
+ ).task
97
+ )
98
+ collections = ansible_bindings.PulpAnsibleApiV3CollectionsApi.list(
99
+ first_distribution.base_path, namespace="testing"
100
+ )
101
+ assert not collections.data[0].deprecated
102
+
103
+ # Sync the second repo again
104
+ second_repo = ansible_sync_factory(second_repo)
105
+
86
106
  # Assert both collections show deprecated=False
87
107
  collections = ansible_bindings.PulpAnsibleApiV3CollectionsApi.list(
88
108
  second_distribution.base_path
89
109
  )
110
+ assert len(collections.data) == 2, collections
90
111
  for collection in collections.data:
91
112
  assert not collection.deprecated
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulp-ansible
3
- Version: 0.27.0
3
+ Version: 0.27.1
4
4
  Summary: Pulp plugin to manage Ansible content, e.g. roles
5
5
  Author-email: Pulp Ansible Plugin Project Developers <pulp-dev@redhat.com>
6
6
  Project-URL: Homepage, https://pulpproject.org
@@ -7,7 +7,7 @@ build-backend = 'setuptools.build_meta'
7
7
 
8
8
  [project]
9
9
  name = "pulp-ansible"
10
- version = "0.27.0"
10
+ version = "0.27.1"
11
11
  description = "Pulp plugin to manage Ansible content, e.g. roles"
12
12
  readme = "README.rst"
13
13
  authors = [
@@ -101,7 +101,7 @@ ignore = [
101
101
  [tool.bumpversion]
102
102
  # This section is managed by the plugin template. Do not edit manually.
103
103
 
104
- current_version = "0.27.0"
104
+ current_version = "0.27.1"
105
105
  commit = false
106
106
  tag = false
107
107
  parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<alpha>0a)?(?P<patch>\\d+)(\\.(?P<release>[a-z]+))?"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes