pulp-ansible 0.25.2__tar.gz → 0.25.3__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 (180) hide show
  1. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/CHANGES.md +8 -0
  2. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/PKG-INFO +1 -1
  3. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/__init__.py +1 -1
  4. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/galaxy/v3/views.py +18 -12
  5. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/collection/v3/test_collection.py +37 -12
  6. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible.egg-info/PKG-INFO +1 -1
  7. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pyproject.toml +2 -2
  8. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/COMMITMENT +0 -0
  9. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/COPYRIGHT +0 -0
  10. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/LICENSE +0 -0
  11. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/MANIFEST.in +0 -0
  12. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/README.rst +0 -0
  13. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/functest_requirements.txt +0 -0
  14. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/__init__.py +0 -0
  15. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/constants.py +0 -0
  16. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/downloaders.py +0 -0
  17. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/fields.py +0 -0
  18. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/galaxy/__init__.py +0 -0
  19. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/galaxy/mixins.py +0 -0
  20. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/galaxy/serializers.py +0 -0
  21. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/galaxy/v3/__init__.py +0 -0
  22. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/galaxy/v3/exceptions.py +0 -0
  23. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/galaxy/v3/filters.py +0 -0
  24. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/galaxy/v3/pagination.py +0 -0
  25. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/galaxy/v3/serializers.py +0 -0
  26. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/galaxy/v3/viewsets.py +0 -0
  27. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/galaxy/views.py +0 -0
  28. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/global_access_conditions.py +0 -0
  29. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/logutils.py +0 -0
  30. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/management/__init__.py +0 -0
  31. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/management/commands/__init__.py +0 -0
  32. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/management/commands/download-log.py +0 -0
  33. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0001_initial.py +0 -0
  34. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0001_initial_squashed_0040_ansiblerepository_keyring.py +0 -0
  35. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0002_advanced_collections.py +0 -0
  36. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0003_add_tags_and_collectionversion_fields.py +0 -0
  37. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0004_add_fulltext_search_indexes.py +0 -0
  38. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0005_collectionversion_is_highest.py +0 -0
  39. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0006_remove_whitelist_and_alter_collection_version_name.py +0 -0
  40. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0007_collectionversion_is_certified.py +0 -0
  41. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0008_collectionremote_requirements_file.py +0 -0
  42. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0009_collectionimport.py +0 -0
  43. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0010_ansible_related_names.py +0 -0
  44. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0011_collectionimport.py +0 -0
  45. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0012_auto_20190906_2253.py +0 -0
  46. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0013_pulp_fields.py +0 -0
  47. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0014_certification_enum.py +0 -0
  48. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0015_ansiblerepository.py +0 -0
  49. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0016_add_extension.py +0 -0
  50. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0017_increase_length_collectionversion_fields.py +0 -0
  51. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0018_fix_collection_relative_path.py +0 -0
  52. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0019_collection_token.py +0 -0
  53. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0020_auto_20200810_1926.py +0 -0
  54. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0021_rename_role_remote.py +0 -0
  55. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0022_URLField_to_CharField.py +0 -0
  56. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0023_alter_requirements_file_field.py +0 -0
  57. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0024_remove_collectionversion_certification.py +0 -0
  58. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0025_increase_collection_version_version_size.py +0 -0
  59. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0026_deprecation_per_repository.py +0 -0
  60. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0027_tag_length.py +0 -0
  61. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0028_collectionversion_namespace_length.py +0 -0
  62. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0029_manifest_and_files_json_fields.py +0 -0
  63. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0030_collectionversion_requires_ansible.py +0 -0
  64. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0031_ansiblerepository_last_synced_metadata_time.py +0 -0
  65. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0032_collectionremote_sync_dependencies.py +0 -0
  66. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0033_swap_distribution_model.py +0 -0
  67. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0034_handle_jsonfield_warnings.py +0 -0
  68. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0035_deprecation_content.py +0 -0
  69. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0036_update_repository_content.py +0 -0
  70. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0037_gitremote.py +0 -0
  71. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0038_collectionversionsignature.py +0 -0
  72. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0039_collectionremote_signed_only.py +0 -0
  73. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0040_ansiblerepository_keyring.py +0 -0
  74. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0041_alter_collectionversion_collection.py +0 -0
  75. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0042_ansiblerepository_gpgkey.py +0 -0
  76. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0043_alter_collectionversionsignature_data.py +0 -0
  77. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0044_alter_collectionremote_token.py +0 -0
  78. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0045_downloadlog.py +0 -0
  79. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0046_add_fulltext_search_fix.py +0 -0
  80. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0047_ansible_namespace.py +0 -0
  81. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0048_collectionversionmark.py +0 -0
  82. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0049_rbac_permissions.py +0 -0
  83. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0050_crossrepositorycollectionversionindex.py +0 -0
  84. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0051_cvindex_build.py +0 -0
  85. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0052_alter_ansiblecollectiondeprecated_content_ptr_and_more.py +0 -0
  86. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0053_collectiondownloadcount.py +0 -0
  87. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0054_split_collection_version_numbers.py +0 -0
  88. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0055_alter_collectionversion_version_alter_role_version.py +0 -0
  89. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0056_collectionversion_sha256.py +0 -0
  90. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0057_collectionversion_sha256_migrate.py +0 -0
  91. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0058_fix_0056_regression.py +0 -0
  92. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/0059_collectionversion_unique_sha256.py +0 -0
  93. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/migrations/__init__.py +0 -0
  94. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/modelresource.py +0 -0
  95. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/models.py +0 -0
  96. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/schema/__init__.py +0 -0
  97. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/schema/copy_config.json +0 -0
  98. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/serializers.py +0 -0
  99. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/settings.py +0 -0
  100. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/tasks/__init__.py +0 -0
  101. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/tasks/collections.py +0 -0
  102. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/tasks/collectionversion_index.py +0 -0
  103. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/tasks/copy.py +0 -0
  104. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/tasks/deletion.py +0 -0
  105. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/tasks/git.py +0 -0
  106. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/tasks/mark.py +0 -0
  107. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/tasks/roles.py +0 -0
  108. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/tasks/signature.py +0 -0
  109. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/tasks/test_tasks.py +0 -0
  110. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/tasks/upload.py +0 -0
  111. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/tasks/utils.py +0 -0
  112. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/urls.py +0 -0
  113. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/utils.py +0 -0
  114. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/viewsets.py +0 -0
  115. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/webserver_snippets/__init__.py +0 -0
  116. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/webserver_snippets/apache.conf +0 -0
  117. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/app/webserver_snippets/nginx.conf +0 -0
  118. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/pytest_plugin.py +0 -0
  119. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/__init__.py +0 -0
  120. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/__init__.py +0 -0
  121. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/__init__.py +0 -0
  122. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/collection/__init__.py +0 -0
  123. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/collection/test_copy_and_move.py +0 -0
  124. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/collection/test_crud_collection_versions.py +0 -0
  125. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/collection/test_marks.py +0 -0
  126. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/collection/test_remote.py +0 -0
  127. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/collection/test_signatures.py +0 -0
  128. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/collection/test_sync.py +0 -0
  129. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/collection/v3/__init__.py +0 -0
  130. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/collection/v3/test_client_configuration.py +0 -0
  131. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/collection/v3/test_collection_naming_edgecases.py +0 -0
  132. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/collection/v3/test_collection_version_search.py +0 -0
  133. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/collection/v3/test_content_guard.py +0 -0
  134. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/collection/v3/test_deletion.py +0 -0
  135. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/collection/v3/test_deprecation.py +0 -0
  136. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/collection/v3/test_namespace.py +0 -0
  137. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/collection/v3/test_proxy.py +0 -0
  138. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/collection/v3/test_redirects.py +0 -0
  139. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/collection/v3/test_serializers.py +0 -0
  140. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/collection/v3/test_sync.py +0 -0
  141. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/git/__init__.py +0 -0
  142. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/git/test_crud_remotes.py +0 -0
  143. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/git/test_sync.py +0 -0
  144. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/role/__init__.py +0 -0
  145. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/role/test_crud_distribution.py +0 -0
  146. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/role/test_crud_remote.py +0 -0
  147. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/role/test_sync.py +0 -0
  148. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/test_export_import.py +0 -0
  149. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/api/test_rbac.py +0 -0
  150. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/cli/__init__.py +0 -0
  151. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/cli/test_collection_download_count.py +0 -0
  152. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/cli/test_collection_install.py +0 -0
  153. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/cli/test_collection_upload.py +0 -0
  154. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/cli/test_role_install.py +0 -0
  155. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/constants.py +0 -0
  156. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/functional/utils.py +0 -0
  157. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/performance/__init__.py +0 -0
  158. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/performance/create_repos_with_collections.py +0 -0
  159. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/performance/fast_load_collections.py +0 -0
  160. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/performance/generate_collections.py +0 -0
  161. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/performance/promote.py +0 -0
  162. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/unit/__init__.py +0 -0
  163. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/unit/migrations/__init__.py +0 -0
  164. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/unit/migrations/conftest.py +0 -0
  165. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/unit/migrations/test_0057_collection_version_sha256_migrate.py +0 -0
  166. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/unit/migrations/test_x_repo_search_migration.py +0 -0
  167. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/unit/test_cv_index.py +0 -0
  168. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/unit/test_models.py +0 -0
  169. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/unit/test_search.py +0 -0
  170. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/unit/test_serializers.py +0 -0
  171. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/unit/test_tasks.py +0 -0
  172. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible/tests/unit/utils.py +0 -0
  173. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible.egg-info/SOURCES.txt +0 -0
  174. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible.egg-info/dependency_links.txt +0 -0
  175. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible.egg-info/entry_points.txt +0 -0
  176. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible.egg-info/requires.txt +0 -0
  177. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/pulp_ansible.egg-info/top_level.txt +0 -0
  178. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/setup.cfg +0 -0
  179. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/test_requirements.txt +0 -0
  180. {pulp_ansible-0.25.2 → pulp_ansible-0.25.3}/unittest_requirements.txt +0 -0
@@ -8,6 +8,14 @@
8
8
 
9
9
  [//]: # (towncrier release notes start)
10
10
 
11
+ ## 0.25.3 (2026-02-06) {: #0.25.3 }
12
+
13
+ #### Bugfixes {: #0.25.3-bugfix }
14
+
15
+ - Fixed a 500 error when attempting to download a collection with and invalid name.
16
+
17
+ ---
18
+
11
19
  ## 0.25.2 (2026-01-27) {: #0.25.2 }
12
20
 
13
21
  #### Bugfixes {: #0.25.2-bugfix }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulp-ansible
3
- Version: 0.25.2
3
+ Version: 0.25.3
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.2"
11
+ version = "0.25.3"
12
12
  python_package_name = "pulp-ansible"
@@ -2,6 +2,7 @@ from datetime import datetime
2
2
  from gettext import gettext as _
3
3
  import semantic_version
4
4
  import base64
5
+ import re
5
6
 
6
7
  from django.db import DatabaseError, IntegrityError
7
8
  from django.db.models import F, OuterRef, Exists, Subquery, Prefetch
@@ -621,7 +622,7 @@ class CollectionArtifactDownloadView(GalaxyAuthMixin, views.APIView, AnsibleDist
621
622
  DEFAULT_ACCESS_POLICY = _PERMISSIVE_ACCESS_POLICY
622
623
 
623
624
  @staticmethod
624
- def log_download(request, filename, distro_base_path):
625
+ def log_download(request, namespace, name, version, distro_base_path):
625
626
  """Log the download of the collection version."""
626
627
 
627
628
  def _get_org_id(request):
@@ -639,7 +640,7 @@ class CollectionArtifactDownloadView(GalaxyAuthMixin, views.APIView, AnsibleDist
639
640
 
640
641
  return identity["internal"]["org_id"]
641
642
 
642
- # Gettung user IP
643
+ # Get user IP
643
644
  x_forwarded_for = request.META.get("HTTP_X_FORWARDED_FOR")
644
645
  ip = x_forwarded_for.split(",")[0] if x_forwarded_for else request.META.get("REMOTE_ADDR")
645
646
 
@@ -650,13 +651,9 @@ class CollectionArtifactDownloadView(GalaxyAuthMixin, views.APIView, AnsibleDist
650
651
  distribution.repository_version or distribution.repository.latest_version()
651
652
  )
652
653
 
653
- # Getting collection version
654
- ns, name, version = filename.split("-", maxsplit=2)
655
- # Get off the ending .tar.gz
656
- version = ".".join(version.split(".")[:3])
657
654
  collection_version = get_object_or_404(
658
655
  CollectionVersion.objects.filter(pk__in=repository_version.content),
659
- namespace=ns,
656
+ namespace=namespace,
660
657
  name=name,
661
658
  version=version,
662
659
  )
@@ -681,11 +678,10 @@ class CollectionArtifactDownloadView(GalaxyAuthMixin, views.APIView, AnsibleDist
681
678
  return
682
679
  raise
683
680
 
684
- def count_download(filename):
685
- ns, name, _ = filename.split("-", maxsplit=2)
681
+ def count_download(namespace, name):
686
682
  try:
687
683
  collection, created = CollectionDownloadCount.objects.get_or_create(
688
- namespace=ns, name=name, defaults={"download_count": 1}
684
+ namespace=namespace, name=name, defaults={"download_count": 1}
689
685
  )
690
686
  if not created:
691
687
  collection.download_count = F("download_count") + 1
@@ -713,13 +709,23 @@ class CollectionArtifactDownloadView(GalaxyAuthMixin, views.APIView, AnsibleDist
713
709
  filename=self.kwargs["filename"],
714
710
  )
715
711
 
712
+ match = re.fullmatch(
713
+ r"(?P<namespace>\w+)-(?P<name>\w+)-(?P<version>[\w.-]+)\.tar\.gz",
714
+ self.kwargs["filename"],
715
+ )
716
+ if not match:
717
+ raise NotFound()
718
+ namespace = match.group("namespace")
719
+ name = match.group("name")
720
+ version = match.group("version")
721
+
716
722
  if settings.ANSIBLE_COLLECT_DOWNLOAD_LOG:
717
723
  CollectionArtifactDownloadView.log_download(
718
- request, self.kwargs["filename"], distro_base_path
724
+ request, namespace, name, version, distro_base_path
719
725
  )
720
726
 
721
727
  if settings.ANSIBLE_COLLECT_DOWNLOAD_COUNT:
722
- CollectionArtifactDownloadView.count_download(self.kwargs["filename"])
728
+ CollectionArtifactDownloadView.count_download(namespace, name)
723
729
 
724
730
  if (
725
731
  distribution.content_guard
@@ -118,6 +118,13 @@ def collection_detail(http_session, collection_upload, pulp_dist, collection_art
118
118
  return response.json()
119
119
 
120
120
 
121
+ @pytest.fixture(scope="class")
122
+ def collection_highest_version(http_session, collection_detail):
123
+ response = http_session.get(collection_detail["highest_version"]["href"])
124
+ response.raise_for_status()
125
+ return response.json()
126
+
127
+
121
128
  @pytest.fixture(scope="class")
122
129
  def pulp_dist(ansible_repository_factory, ansible_distribution_factory):
123
130
  """Create an Ansible Distribution to simulate the automation hub environment for testing."""
@@ -291,34 +298,52 @@ class TestCollection:
291
298
  # # 'repository': 'http://github.example.com/orionuser1/skeleton',
292
299
  # # 'tags': ['collectiontest']},
293
300
 
294
- def test_collection_download(
301
+ def test_collection_download_metadata_unauthorized_fails(
295
302
  self,
296
303
  http_session,
297
304
  collection_detail,
298
- collection_artifact,
299
305
  ):
300
- """Test collection download URL.
301
-
302
- Should require authentication and redirect to a download location.
303
- """
304
306
  response = http_session.get(collection_detail["highest_version"]["href"], auth=NullAuth())
305
307
  assert response.status_code == 401
306
- response = http_session.get(collection_detail["highest_version"]["href"])
307
- response.raise_for_status()
308
- version = response.json()
309
308
 
309
+ def test_collection_download_redirects(
310
+ self,
311
+ http_session,
312
+ collection_highest_version,
313
+ collection_artifact,
314
+ ):
310
315
  # Artifact Download Endoint
311
- url = version["download_url"]
316
+ url = collection_highest_version["download_url"]
312
317
 
313
318
  with open(collection_artifact.filename, "rb") as fp:
314
319
  tarball = fp.read()
315
320
 
316
- response = http_session.get(url, auth=NullAuth())
317
- assert response.status_code == 401
318
321
  response = http_session.get(url)
319
322
  assert response.status_code == 200, (url, response.request.headers)
320
323
  assert response.content == tarball
321
324
 
325
+ def test_collection_download_redirect_fails_unauthorized(
326
+ self,
327
+ http_session,
328
+ collection_highest_version,
329
+ ):
330
+ # Artifact Download Endoint
331
+ url = collection_highest_version["download_url"]
332
+
333
+ response = http_session.get(url, auth=NullAuth())
334
+ assert response.status_code == 401
335
+
336
+ def test_downloading_collection_with_bad_name_returns_not_found(
337
+ self,
338
+ http_session,
339
+ collection_highest_version,
340
+ ):
341
+ # Artifact Download Endoint, but we mess up the address.
342
+ url = collection_highest_version["download_url"].replace("-", "_")
343
+
344
+ response = http_session.get(url)
345
+ assert response.status_code == 404
346
+
322
347
  def test_collection_upload_repeat(
323
348
  self, http_session, ansible_collection_factory, pulp_dist, collection_upload
324
349
  ):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulp-ansible
3
- Version: 0.25.2
3
+ Version: 0.25.3
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.25.2"
10
+ version = "0.25.3"
11
11
  description = "Pulp plugin to manage Ansible content, e.g. roles"
12
12
  readme = "README.rst"
13
13
  authors = [
@@ -100,7 +100,7 @@ ignore = [
100
100
  [tool.bumpversion]
101
101
  # This section is managed by the plugin template. Do not edit manually.
102
102
 
103
- current_version = "0.25.2"
103
+ current_version = "0.25.3"
104
104
  commit = false
105
105
  tag = false
106
106
  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