pulp-ansible 0.25.0__tar.gz → 0.26.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 (182) hide show
  1. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/CHANGES.md +106 -1
  2. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/PKG-INFO +1 -1
  3. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/__init__.py +1 -1
  4. pulp_ansible-0.26.0/pulp_ansible/app/migrations/0060_remove_collectionversion_unique_is_highest_and_more.py +23 -0
  5. pulp_ansible-0.26.0/pulp_ansible/app/migrations/0061_collectionversion_new_tags.py +24 -0
  6. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/models.py +9 -18
  7. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/serializers.py +11 -1
  8. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/settings.py +1 -1
  9. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/tasks/collections.py +8 -2
  10. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/viewsets.py +10 -2
  11. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible.egg-info/PKG-INFO +1 -1
  12. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible.egg-info/SOURCES.txt +2 -0
  13. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pyproject.toml +2 -2
  14. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/COMMITMENT +0 -0
  15. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/COPYRIGHT +0 -0
  16. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/LICENSE +0 -0
  17. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/MANIFEST.in +0 -0
  18. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/README.rst +0 -0
  19. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/functest_requirements.txt +0 -0
  20. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/__init__.py +0 -0
  21. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/constants.py +0 -0
  22. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/downloaders.py +0 -0
  23. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/fields.py +0 -0
  24. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/galaxy/__init__.py +0 -0
  25. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/galaxy/mixins.py +0 -0
  26. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/galaxy/serializers.py +0 -0
  27. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/galaxy/v3/__init__.py +0 -0
  28. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/galaxy/v3/exceptions.py +0 -0
  29. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/galaxy/v3/filters.py +0 -0
  30. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/galaxy/v3/pagination.py +0 -0
  31. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/galaxy/v3/serializers.py +0 -0
  32. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/galaxy/v3/views.py +0 -0
  33. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/galaxy/v3/viewsets.py +0 -0
  34. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/galaxy/views.py +0 -0
  35. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/global_access_conditions.py +0 -0
  36. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/logutils.py +0 -0
  37. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/management/__init__.py +0 -0
  38. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/management/commands/__init__.py +0 -0
  39. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/management/commands/download-log.py +0 -0
  40. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0001_initial.py +0 -0
  41. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0001_initial_squashed_0040_ansiblerepository_keyring.py +0 -0
  42. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0002_advanced_collections.py +0 -0
  43. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0003_add_tags_and_collectionversion_fields.py +0 -0
  44. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0004_add_fulltext_search_indexes.py +0 -0
  45. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0005_collectionversion_is_highest.py +0 -0
  46. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0006_remove_whitelist_and_alter_collection_version_name.py +0 -0
  47. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0007_collectionversion_is_certified.py +0 -0
  48. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0008_collectionremote_requirements_file.py +0 -0
  49. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0009_collectionimport.py +0 -0
  50. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0010_ansible_related_names.py +0 -0
  51. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0011_collectionimport.py +0 -0
  52. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0012_auto_20190906_2253.py +0 -0
  53. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0013_pulp_fields.py +0 -0
  54. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0014_certification_enum.py +0 -0
  55. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0015_ansiblerepository.py +0 -0
  56. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0016_add_extension.py +0 -0
  57. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0017_increase_length_collectionversion_fields.py +0 -0
  58. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0018_fix_collection_relative_path.py +0 -0
  59. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0019_collection_token.py +0 -0
  60. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0020_auto_20200810_1926.py +0 -0
  61. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0021_rename_role_remote.py +0 -0
  62. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0022_URLField_to_CharField.py +0 -0
  63. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0023_alter_requirements_file_field.py +0 -0
  64. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0024_remove_collectionversion_certification.py +0 -0
  65. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0025_increase_collection_version_version_size.py +0 -0
  66. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0026_deprecation_per_repository.py +0 -0
  67. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0027_tag_length.py +0 -0
  68. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0028_collectionversion_namespace_length.py +0 -0
  69. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0029_manifest_and_files_json_fields.py +0 -0
  70. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0030_collectionversion_requires_ansible.py +0 -0
  71. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0031_ansiblerepository_last_synced_metadata_time.py +0 -0
  72. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0032_collectionremote_sync_dependencies.py +0 -0
  73. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0033_swap_distribution_model.py +0 -0
  74. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0034_handle_jsonfield_warnings.py +0 -0
  75. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0035_deprecation_content.py +0 -0
  76. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0036_update_repository_content.py +0 -0
  77. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0037_gitremote.py +0 -0
  78. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0038_collectionversionsignature.py +0 -0
  79. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0039_collectionremote_signed_only.py +0 -0
  80. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0040_ansiblerepository_keyring.py +0 -0
  81. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0041_alter_collectionversion_collection.py +0 -0
  82. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0042_ansiblerepository_gpgkey.py +0 -0
  83. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0043_alter_collectionversionsignature_data.py +0 -0
  84. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0044_alter_collectionremote_token.py +0 -0
  85. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0045_downloadlog.py +0 -0
  86. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0046_add_fulltext_search_fix.py +0 -0
  87. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0047_ansible_namespace.py +0 -0
  88. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0048_collectionversionmark.py +0 -0
  89. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0049_rbac_permissions.py +0 -0
  90. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0050_crossrepositorycollectionversionindex.py +0 -0
  91. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0051_cvindex_build.py +0 -0
  92. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0052_alter_ansiblecollectiondeprecated_content_ptr_and_more.py +0 -0
  93. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0053_collectiondownloadcount.py +0 -0
  94. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0054_split_collection_version_numbers.py +0 -0
  95. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0055_alter_collectionversion_version_alter_role_version.py +0 -0
  96. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0056_collectionversion_sha256.py +0 -0
  97. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0057_collectionversion_sha256_migrate.py +0 -0
  98. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0058_fix_0056_regression.py +0 -0
  99. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/0059_collectionversion_unique_sha256.py +0 -0
  100. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/migrations/__init__.py +0 -0
  101. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/modelresource.py +0 -0
  102. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/schema/__init__.py +0 -0
  103. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/schema/copy_config.json +0 -0
  104. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/tasks/__init__.py +0 -0
  105. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/tasks/collectionversion_index.py +0 -0
  106. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/tasks/copy.py +0 -0
  107. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/tasks/deletion.py +0 -0
  108. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/tasks/git.py +0 -0
  109. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/tasks/mark.py +0 -0
  110. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/tasks/roles.py +0 -0
  111. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/tasks/signature.py +0 -0
  112. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/tasks/test_tasks.py +0 -0
  113. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/tasks/upload.py +0 -0
  114. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/tasks/utils.py +0 -0
  115. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/urls.py +0 -0
  116. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/utils.py +0 -0
  117. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/webserver_snippets/__init__.py +0 -0
  118. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/webserver_snippets/apache.conf +0 -0
  119. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/app/webserver_snippets/nginx.conf +0 -0
  120. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/pytest_plugin.py +0 -0
  121. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/__init__.py +0 -0
  122. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/__init__.py +0 -0
  123. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/__init__.py +0 -0
  124. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/collection/__init__.py +0 -0
  125. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/collection/test_copy_and_move.py +0 -0
  126. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/collection/test_crud_collection_versions.py +0 -0
  127. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/collection/test_marks.py +0 -0
  128. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/collection/test_remote.py +0 -0
  129. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/collection/test_signatures.py +0 -0
  130. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/collection/test_sync.py +0 -0
  131. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/collection/v3/__init__.py +0 -0
  132. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/collection/v3/test_client_configuration.py +0 -0
  133. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/collection/v3/test_collection.py +0 -0
  134. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/collection/v3/test_collection_naming_edgecases.py +0 -0
  135. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/collection/v3/test_collection_version_search.py +0 -0
  136. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/collection/v3/test_content_guard.py +0 -0
  137. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/collection/v3/test_deletion.py +0 -0
  138. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/collection/v3/test_deprecation.py +0 -0
  139. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/collection/v3/test_namespace.py +0 -0
  140. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/collection/v3/test_proxy.py +0 -0
  141. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/collection/v3/test_redirects.py +0 -0
  142. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/collection/v3/test_serializers.py +0 -0
  143. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/collection/v3/test_sync.py +0 -0
  144. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/git/__init__.py +0 -0
  145. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/git/test_crud_remotes.py +0 -0
  146. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/git/test_sync.py +0 -0
  147. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/role/__init__.py +0 -0
  148. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/role/test_crud_distribution.py +0 -0
  149. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/role/test_crud_remote.py +0 -0
  150. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/role/test_sync.py +0 -0
  151. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/test_export_import.py +0 -0
  152. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/api/test_rbac.py +0 -0
  153. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/cli/__init__.py +0 -0
  154. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/cli/test_collection_download_count.py +0 -0
  155. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/cli/test_collection_install.py +0 -0
  156. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/cli/test_collection_upload.py +0 -0
  157. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/cli/test_role_install.py +0 -0
  158. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/constants.py +0 -0
  159. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/functional/utils.py +0 -0
  160. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/performance/__init__.py +0 -0
  161. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/performance/create_repos_with_collections.py +0 -0
  162. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/performance/fast_load_collections.py +0 -0
  163. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/performance/generate_collections.py +0 -0
  164. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/performance/promote.py +0 -0
  165. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/unit/__init__.py +0 -0
  166. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/unit/migrations/__init__.py +0 -0
  167. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/unit/migrations/conftest.py +0 -0
  168. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/unit/migrations/test_0057_collection_version_sha256_migrate.py +0 -0
  169. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/unit/migrations/test_x_repo_search_migration.py +0 -0
  170. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/unit/test_cv_index.py +0 -0
  171. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/unit/test_models.py +0 -0
  172. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/unit/test_search.py +0 -0
  173. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/unit/test_serializers.py +0 -0
  174. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/unit/test_tasks.py +0 -0
  175. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible/tests/unit/utils.py +0 -0
  176. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible.egg-info/dependency_links.txt +0 -0
  177. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible.egg-info/entry_points.txt +0 -0
  178. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible.egg-info/requires.txt +0 -0
  179. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/pulp_ansible.egg-info/top_level.txt +0 -0
  180. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/setup.cfg +0 -0
  181. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/test_requirements.txt +0 -0
  182. {pulp_ansible-0.25.0 → pulp_ansible-0.26.0}/unittest_requirements.txt +0 -0
@@ -8,6 +8,35 @@
8
8
 
9
9
  [//]: # (towncrier release notes start)
10
10
 
11
+ ## 0.26.0 (2025-05-27) {: #0.26.0 }
12
+
13
+ #### Features {: #0.26.0-feature }
14
+
15
+ - Added a migration to prepare moving tags into an array field on collection versions.
16
+
17
+ The second part of the migration will be shipped in the next release to keep the process zero downtime safe.
18
+
19
+ #### Bugfixes {: #0.26.0-bugfix }
20
+
21
+ - Fixed broken collection import logs.
22
+ - Made collection sync slightly more resiliant in face of missing "next" links.
23
+
24
+ #### Deprecations and Removals {: #0.26.0-removal }
25
+
26
+ - Remove the `is_highest` field from CollectionVersion table.
27
+ [#1550](https://github.com/pulp/pulp_ansible/issues/1550)
28
+
29
+ ---
30
+
31
+ ## 0.25.1 (2025-05-06) {: #0.25.1 }
32
+
33
+ #### Bugfixes {: #0.25.1-bugfix }
34
+
35
+ - Fixed broken collection import logs.
36
+ - Made collection sync slightly more resiliant in face of missing "next" links.
37
+
38
+ ---
39
+
11
40
  ## 0.25.0 (2025-04-23) {: #0.25.0 }
12
41
 
13
42
  #### Features {: #0.25.0-feature }
@@ -31,6 +60,19 @@
31
60
 
32
61
  ---
33
62
 
63
+ ## 0.24.6 (2025-04-23) {: #0.24.6 }
64
+
65
+ #### Features {: #0.24.6-feature }
66
+
67
+ - Added namespace progress report.
68
+
69
+ #### Bugfixes {: #0.24.6-bugfix }
70
+
71
+ - Fixed optimization of fetching namespace logos during sync.
72
+ [#2138](https://github.com/pulp/pulp_ansible/issues/2138)
73
+
74
+ ---
75
+
34
76
  ## 0.24.5 (2025-04-15) {: #0.24.5 }
35
77
 
36
78
  #### Bugfixes {: #0.24.5-bugfix }
@@ -93,7 +135,7 @@
93
135
  constraint. This allows users to serve their own interpretation of the content in their private
94
136
  repositories.
95
137
  The migration will only succeed if all the content has been adjusted. To account for content that
96
- was not migrated by the migration shipped with 0.22.0, you can run the content repair command
138
+ was not migrated by the migration shipped with 0.23.0, you can run the content repair command
97
139
  ``datarepair-ansible-collection-sha256`` prior to upgrading.
98
140
  This version removed the content repair command.
99
141
  [#1052](https://github.com/pulp/pulp_ansible/issues/1052)
@@ -145,6 +187,27 @@
145
187
 
146
188
  ---
147
189
 
190
+ ## 0.22.6 (2025-05-06) {: #0.22.6 }
191
+
192
+ #### Bugfixes {: #0.22.6-bugfix }
193
+
194
+ - Made collection sync slightly more resiliant in face of missing "next" links.
195
+
196
+ ---
197
+
198
+ ## 0.22.5 (2025-04-23) {: #0.22.5 }
199
+
200
+ #### Features {: #0.22.5-feature }
201
+
202
+ - Added namespace progress report.
203
+
204
+ #### Bugfixes {: #0.22.5-bugfix }
205
+
206
+ - Fixed optimization of fetching namespace logos during sync.
207
+ [#2138](https://github.com/pulp/pulp_ansible/issues/2138)
208
+
209
+ ---
210
+
148
211
  ## 0.22.4 (2025-03-12) {: #0.22.4 }
149
212
 
150
213
  #### Bugfixes {: #0.22.4-bugfix }
@@ -222,6 +285,27 @@
222
285
 
223
286
  ---
224
287
 
288
+ ## 0.21.13 (2025-05-06) {: #0.21.13 }
289
+
290
+ #### Bugfixes {: #0.21.13-bugfix }
291
+
292
+ - Made collection sync slightly more resiliant in face of missing "next" links.
293
+
294
+ ---
295
+
296
+ ## 0.21.12 (2025-04-23) {: #0.21.12 }
297
+
298
+ #### Features {: #0.21.12-feature }
299
+
300
+ - Added namespace progress report.
301
+
302
+ #### Bugfixes {: #0.21.12-bugfix }
303
+
304
+ - Fixed optimization of fetching namespace logos during sync.
305
+ [#2138](https://github.com/pulp/pulp_ansible/issues/2138)
306
+
307
+ ---
308
+
225
309
  ## 0.21.11 (2025-04-15) {: #0.21.11 }
226
310
 
227
311
  #### Bugfixes {: #0.21.11-bugfix }
@@ -338,6 +422,27 @@ No significant changes.
338
422
 
339
423
  ---
340
424
 
425
+ ## 0.20.12 (2025-05-06) {: #0.20.12 }
426
+
427
+ #### Bugfixes {: #0.20.12-bugfix }
428
+
429
+ - Made collection sync slightly more resiliant in face of missing "next" links.
430
+
431
+ ---
432
+
433
+ ## 0.20.11 (2025-04-23) {: #0.20.11 }
434
+
435
+ #### Features {: #0.20.11-feature }
436
+
437
+ - Added namespace progress report.
438
+
439
+ #### Bugfixes {: #0.20.11-bugfix }
440
+
441
+ - Fixed optimization of fetching namespace logos during sync.
442
+ [#2138](https://github.com/pulp/pulp_ansible/issues/2138)
443
+
444
+ ---
445
+
341
446
  ## 0.20.10 (2025-01-16) {: #0.20.10 }
342
447
 
343
448
  No significant changes.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulp-ansible
3
- Version: 0.25.0
3
+ Version: 0.26.0
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,5 +8,5 @@ class PulpAnsiblePluginAppConfig(PulpPluginAppConfig):
8
8
 
9
9
  name = "pulp_ansible.app"
10
10
  label = "ansible"
11
- version = "0.25.0"
11
+ version = "0.26.0"
12
12
  python_package_name = "pulp-ansible"
@@ -0,0 +1,23 @@
1
+ # Generated by Django 4.2.16 on 2024-11-21 08:53
2
+
3
+ from django.db import migrations
4
+ from pulpcore.plugin.migrations import RequireVersion
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+
9
+ dependencies = [
10
+ ("ansible", "0059_collectionversion_unique_sha256"),
11
+ ]
12
+
13
+ operations = [
14
+ RequireVersion("ansible", "0.23.0"),
15
+ migrations.RemoveConstraint(
16
+ model_name="collectionversion",
17
+ name="unique_is_highest",
18
+ ),
19
+ migrations.RemoveField(
20
+ model_name="collectionversion",
21
+ name="is_highest",
22
+ ),
23
+ ]
@@ -0,0 +1,24 @@
1
+ # Generated by Django 4.2.19 on 2025-05-21 12:04
2
+
3
+ import django.contrib.postgres.fields
4
+ from django.db import migrations, models
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+
9
+ dependencies = [
10
+ ("ansible", "0060_remove_collectionversion_unique_is_highest_and_more"),
11
+ ]
12
+
13
+ operations = [
14
+ migrations.AddField(
15
+ model_name="collectionversion",
16
+ name="new_tags",
17
+ field=django.contrib.postgres.fields.ArrayField(
18
+ base_field=models.CharField(max_length=64, unique=True),
19
+ db_column="tags",
20
+ null=True,
21
+ size=None,
22
+ ),
23
+ ),
24
+ ]
@@ -6,7 +6,6 @@ from semantic_version import Version
6
6
 
7
7
  from django.conf import settings
8
8
  from django.db import models
9
- from django.db.models import UniqueConstraint, Q
10
9
  from django.db.utils import IntegrityError
11
10
  from django.contrib.postgres import fields as psql_fields
12
11
  from django.contrib.postgres import search as psql_search
@@ -150,10 +149,6 @@ class CollectionVersion(Content):
150
149
  repository (models.CharField): The URL of the originating SCM repository.
151
150
  version (models.CharField): The version of the collection.
152
151
  requires_ansible (models.CharField): The version of Ansible required to use the collection.
153
- is_highest (models.BooleanField): Indicates that the version is the highest one
154
- in the collection. Import and sync workflows update this field, which then
155
- triggers the database to [re]build the search_vector.
156
- This field is Deprecated and scheduled for removal as soon as 0.24.0.
157
152
 
158
153
  Relations:
159
154
 
@@ -188,23 +183,26 @@ class CollectionVersion(Content):
188
183
  version_patch = models.IntegerField()
189
184
  version_prerelease = models.CharField(max_length=128)
190
185
 
191
- # This field is deprecated. We keep it for some releases for 0-Downtime upgrades.
192
- is_highest = models.BooleanField(editable=False, default=False)
193
-
194
186
  # Foreign Key Fields
195
187
  collection = models.ForeignKey(
196
188
  Collection, on_delete=models.PROTECT, related_name="versions", editable=False
197
189
  )
198
190
  tags = models.ManyToManyField(Tag, editable=False)
191
+ # -----
192
+ # Upgrade steps (spaced out by releases):
193
+ # 1. Add new field and start populating in current code also.
194
+ # 2. Migrate remaining entries and delete m2m table.
195
+ # Rename python field name without changing db_column.
196
+ new_tags = psql_fields.ArrayField(
197
+ models.CharField(max_length=64, unique=True), null=True, db_column="tags"
198
+ )
199
199
 
200
200
  # Search Fields
201
201
  # This field is populated by a trigger setup in the database by
202
202
  # a migration file. The trigger only runs when the table is
203
203
  # updated. CollectionVersions are INSERT'ed into the table, so
204
204
  # the search_vector does not get populated at initial creation
205
- # time. In the import or sync workflows, is_highest gets toggled
206
- # back and forth, which causes an UPDATE operation and then the
207
- # search_vector is built.
205
+ # time.
208
206
  search_vector = psql_search.SearchVectorField(default="")
209
207
 
210
208
  @hook(BEFORE_SAVE)
@@ -232,13 +230,6 @@ class CollectionVersion(Content):
232
230
  class Meta:
233
231
  default_related_name = "%(app_label)s_%(model_name)s"
234
232
  unique_together = ("sha256",)
235
- constraints = [
236
- UniqueConstraint(
237
- fields=("collection", "is_highest"),
238
- name="unique_is_highest",
239
- condition=Q(is_highest=True),
240
- ),
241
- ]
242
233
 
243
234
 
244
235
  class CollectionVersionMark(Content):
@@ -379,6 +379,7 @@ class TagSerializer(serializers.ModelSerializer):
379
379
  A serializer for the Tag model.
380
380
  """
381
381
 
382
+ name = serializers.CharField(help_text=_("The name of the Tag."), read_only=True)
382
383
  count = serializers.IntegerField(read_only=True)
383
384
 
384
385
  class Meta:
@@ -518,6 +519,8 @@ class CollectionVersionUploadSerializer(SingleArtifactContentUploadSerializer):
518
519
  )
519
520
  # repository field clashes
520
521
  collection_info["origin_repository"] = collection_info.pop("repository", None)
522
+ # Remove this once new_tags is properly named tags
523
+ collection_info["new_tags"] = collection_info["tags"]
521
524
  data.update(collection_info)
522
525
 
523
526
  return data
@@ -640,7 +643,7 @@ class CollectionVersionSerializer(ContentChecksumSerializer, CollectionVersionUp
640
643
  read_only=True,
641
644
  )
642
645
 
643
- tags = TagNestedSerializer(many=True, read_only=True)
646
+ tags = serializers.SerializerMethodField()
644
647
 
645
648
  version = serializers.CharField(
646
649
  help_text=_("The version of the collection."), max_length=128, read_only=True
@@ -658,6 +661,13 @@ class CollectionVersionSerializer(ContentChecksumSerializer, CollectionVersionUp
658
661
 
659
662
  creating = True
660
663
 
664
+ @extend_schema_field(serializers.ListField(child=TagNestedSerializer()))
665
+ def get_tags(self, obj):
666
+ if obj.new_tags is None:
667
+ return [{"name": tag.name} for tag in obj.tags.all()]
668
+ else:
669
+ return [{"name": tag} for tag in obj.new_tags]
670
+
661
671
  def validate(self, data):
662
672
  """Run super() validate if creating, else return data."""
663
673
  # This validation is for creating CollectionVersions
@@ -2,7 +2,7 @@ import socket
2
2
 
3
3
  LOGGING = {
4
4
  "loggers": {
5
- "pulp_ansible.app.tasks.collection.import_collection": {
5
+ "pulp_ansible.app.tasks.upload.process_collection_artifact": {
6
6
  "level": "INFO",
7
7
  "handlers": ["collection_import"],
8
8
  "propagate": False,
@@ -338,6 +338,9 @@ def create_collection_from_importer(importer_result):
338
338
  Do not perform any database operations, just return an unsaved CollectionVersion.
339
339
  """
340
340
  collection_info = importer_result["metadata"]
341
+
342
+ # Remove, once the new_tags is properly named tags
343
+ collection_info["new_tags"] = collection_info["tags"]
341
344
  tags = collection_info.pop("tags")
342
345
 
343
346
  # Remove fields not used by this model
@@ -848,9 +851,11 @@ class CollectionSyncFirstStage(Stage):
848
851
  @staticmethod
849
852
  def _get_response_next_value(api_version, response):
850
853
  if api_version == 2:
851
- return response["next"]
854
+ return response.get("next")
855
+ elif links := response.get("links"):
856
+ return links.get("next")
852
857
  else:
853
- return response["links"]["next"]
858
+ return None
854
859
 
855
860
  def _collection_list_downloader(self, api_version, collection_endpoint, page_num, page_size):
856
861
  if api_version == 2:
@@ -1213,6 +1218,7 @@ class AnsibleContentSaver(ContentSaver):
1213
1218
 
1214
1219
  # Get tags for saving in _post_save
1215
1220
  tags = info.pop("tags")
1221
+ info["new_tags"] = tags
1216
1222
  d_content.extra_data["tags"] = tags
1217
1223
 
1218
1224
  # Update with the additional data from the Collection
@@ -1199,8 +1199,16 @@ class TagViewSet(NamedModelViewSet, mixins.ListModelMixin):
1199
1199
  serializer_class = TagSerializer
1200
1200
 
1201
1201
  def get_queryset(self):
1202
- qs = super().get_queryset()
1203
- return qs.annotate(count=Count("ansible_collectionversion"))
1202
+ if CollectionVersion.objects.filter(new_tags__isnull=True).exists():
1203
+ qs = super().get_queryset().annotate(count=Count("ansible_collectionversion"))
1204
+ else:
1205
+ qs = (
1206
+ CollectionVersion.objects.all()
1207
+ .annotate(tag=Func(F("new_tags"), function="unnest"))
1208
+ .values("tag")
1209
+ .values(count=Count("pk"), name=F("tag"))
1210
+ )
1211
+ return qs
1204
1212
 
1205
1213
 
1206
1214
  class CopyViewSet(viewsets.ViewSet):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulp-ansible
3
- Version: 0.25.0
3
+ Version: 0.26.0
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
@@ -103,6 +103,8 @@ pulp_ansible/app/migrations/0056_collectionversion_sha256.py
103
103
  pulp_ansible/app/migrations/0057_collectionversion_sha256_migrate.py
104
104
  pulp_ansible/app/migrations/0058_fix_0056_regression.py
105
105
  pulp_ansible/app/migrations/0059_collectionversion_unique_sha256.py
106
+ pulp_ansible/app/migrations/0060_remove_collectionversion_unique_is_highest_and_more.py
107
+ pulp_ansible/app/migrations/0061_collectionversion_new_tags.py
106
108
  pulp_ansible/app/migrations/__init__.py
107
109
  pulp_ansible/app/schema/__init__.py
108
110
  pulp_ansible/app/schema/copy_config.json
@@ -7,7 +7,7 @@ build-backend = 'setuptools.build_meta'
7
7
 
8
8
  [project]
9
9
  name = "pulp-ansible"
10
- version = "0.25.0"
10
+ version = "0.26.0"
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.25.0"
104
+ current_version = "0.26.0"
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