pulp-ansible 0.28.3__tar.gz → 0.28.4__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.
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/CHANGES.md +8 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/PKG-INFO +1 -1
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/__init__.py +1 -1
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/galaxy/v3/views.py +18 -12
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/collection/v3/test_collection.py +37 -12
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible.egg-info/PKG-INFO +1 -1
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pyproject.toml +2 -2
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/COMMITMENT +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/COPYRIGHT +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/LICENSE +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/MANIFEST.in +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/README.rst +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/functest_requirements.txt +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/__init__.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/constants.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/downloaders.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/fields.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/galaxy/__init__.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/galaxy/mixins.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/galaxy/serializers.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/galaxy/v3/__init__.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/galaxy/v3/exceptions.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/galaxy/v3/filters.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/galaxy/v3/pagination.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/galaxy/v3/serializers.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/galaxy/v3/viewsets.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/galaxy/views.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/global_access_conditions.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/logutils.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/management/__init__.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/management/commands/__init__.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/management/commands/download-log.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0001_initial.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0001_initial_squashed_0040_ansiblerepository_keyring.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0002_advanced_collections.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0003_add_tags_and_collectionversion_fields.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0004_add_fulltext_search_indexes.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0005_collectionversion_is_highest.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0006_remove_whitelist_and_alter_collection_version_name.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0007_collectionversion_is_certified.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0008_collectionremote_requirements_file.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0009_collectionimport.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0010_ansible_related_names.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0011_collectionimport.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0012_auto_20190906_2253.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0013_pulp_fields.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0014_certification_enum.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0015_ansiblerepository.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0016_add_extension.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0017_increase_length_collectionversion_fields.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0018_fix_collection_relative_path.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0019_collection_token.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0020_auto_20200810_1926.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0021_rename_role_remote.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0022_URLField_to_CharField.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0023_alter_requirements_file_field.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0024_remove_collectionversion_certification.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0025_increase_collection_version_version_size.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0026_deprecation_per_repository.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0027_tag_length.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0028_collectionversion_namespace_length.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0029_manifest_and_files_json_fields.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0030_collectionversion_requires_ansible.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0031_ansiblerepository_last_synced_metadata_time.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0032_collectionremote_sync_dependencies.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0033_swap_distribution_model.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0034_handle_jsonfield_warnings.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0035_deprecation_content.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0036_update_repository_content.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0037_gitremote.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0038_collectionversionsignature.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0039_collectionremote_signed_only.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0040_ansiblerepository_keyring.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0041_alter_collectionversion_collection.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0042_ansiblerepository_gpgkey.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0043_alter_collectionversionsignature_data.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0044_alter_collectionremote_token.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0045_downloadlog.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0046_add_fulltext_search_fix.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0047_ansible_namespace.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0048_collectionversionmark.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0049_rbac_permissions.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0050_crossrepositorycollectionversionindex.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0051_cvindex_build.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0052_alter_ansiblecollectiondeprecated_content_ptr_and_more.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0053_collectiondownloadcount.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0054_split_collection_version_numbers.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0055_alter_collectionversion_version_alter_role_version.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0056_collectionversion_sha256.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0057_collectionversion_sha256_migrate.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0058_fix_0056_regression.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0059_collectionversion_unique_sha256.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0060_remove_collectionversion_unique_is_highest_and_more.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0061_collectionversion_new_tags.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0062_pivot_collectionversion_tags.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0063_domain_support.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0064_alter_collection_unique_together_and_more.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0065_collectionversion_ansible_col_namespa_ea6f75_idx.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/__init__.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/modelresource.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/models.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/schema/__init__.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/schema/copy_config.json +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/serializers.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/settings.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/tasks/__init__.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/tasks/collections.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/tasks/collectionversion_index.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/tasks/copy.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/tasks/deletion.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/tasks/git.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/tasks/mark.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/tasks/roles.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/tasks/signature.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/tasks/test_tasks.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/tasks/upload.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/tasks/utils.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/urls.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/utils.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/viewsets.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/webserver_snippets/__init__.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/webserver_snippets/apache.conf +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/webserver_snippets/nginx.conf +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/pytest_plugin.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/__init__.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/__init__.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/__init__.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/collection/__init__.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/collection/test_copy_and_move.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/collection/test_crud_collection_versions.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/collection/test_marks.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/collection/test_remote.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/collection/test_signatures.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/collection/test_sync.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/collection/v3/__init__.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/collection/v3/test_client_configuration.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/collection/v3/test_collection_naming_edgecases.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/collection/v3/test_collection_version_search.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/collection/v3/test_content_guard.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/collection/v3/test_deletion.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/collection/v3/test_deprecation.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/collection/v3/test_namespace.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/collection/v3/test_proxy.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/collection/v3/test_redirects.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/collection/v3/test_serializers.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/collection/v3/test_sync.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/git/__init__.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/git/test_crud_remotes.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/git/test_sync.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/role/__init__.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/role/test_crud_distribution.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/role/test_crud_remote.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/role/test_sync.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/test_domain.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/test_export_import.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/test_rbac.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/cli/__init__.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/cli/test_collection_download_count.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/cli/test_collection_install.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/cli/test_collection_upload.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/cli/test_role_install.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/constants.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/utils.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/performance/__init__.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/performance/create_repos_with_collections.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/performance/fast_load_collections.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/performance/generate_collections.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/performance/promote.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/unit/__init__.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/unit/migrations/__init__.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/unit/migrations/conftest.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/unit/migrations/test_0057_collection_version_sha256_migrate.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/unit/migrations/test_x_repo_search_migration.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/unit/test_cv_index.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/unit/test_models.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/unit/test_search.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/unit/test_serializers.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/unit/test_tasks.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/unit/utils.py +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible.egg-info/SOURCES.txt +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible.egg-info/dependency_links.txt +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible.egg-info/entry_points.txt +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible.egg-info/requires.txt +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible.egg-info/top_level.txt +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/setup.cfg +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/test_requirements.txt +0 -0
- {pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/unittest_requirements.txt +0 -0
|
@@ -8,6 +8,14 @@
|
|
|
8
8
|
|
|
9
9
|
[//]: # (towncrier release notes start)
|
|
10
10
|
|
|
11
|
+
## 0.28.4 (2026-02-06) {: #0.28.4 }
|
|
12
|
+
|
|
13
|
+
#### Bugfixes {: #0.28.4-bugfix }
|
|
14
|
+
|
|
15
|
+
- Fixed a 500 error when attempting to download a collection with and invalid name.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
11
19
|
## 0.28.3 (2026-01-27) {: #0.28.3 }
|
|
12
20
|
|
|
13
21
|
#### Bugfixes {: #0.28.3-bugfix }
|
|
@@ -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
|
|
@@ -633,7 +634,7 @@ class CollectionArtifactDownloadView(GalaxyAuthMixin, views.APIView, AnsibleDist
|
|
|
633
634
|
DEFAULT_ACCESS_POLICY = _PERMISSIVE_ACCESS_POLICY
|
|
634
635
|
|
|
635
636
|
@staticmethod
|
|
636
|
-
def log_download(request,
|
|
637
|
+
def log_download(request, namespace, name, version, distro_base_path):
|
|
637
638
|
"""Log the download of the collection version."""
|
|
638
639
|
|
|
639
640
|
def _get_org_id(request):
|
|
@@ -651,7 +652,7 @@ class CollectionArtifactDownloadView(GalaxyAuthMixin, views.APIView, AnsibleDist
|
|
|
651
652
|
|
|
652
653
|
return identity["internal"]["org_id"]
|
|
653
654
|
|
|
654
|
-
#
|
|
655
|
+
# Get user IP
|
|
655
656
|
x_forwarded_for = request.META.get("HTTP_X_FORWARDED_FOR")
|
|
656
657
|
ip = x_forwarded_for.split(",")[0] if x_forwarded_for else request.META.get("REMOTE_ADDR")
|
|
657
658
|
|
|
@@ -662,13 +663,9 @@ class CollectionArtifactDownloadView(GalaxyAuthMixin, views.APIView, AnsibleDist
|
|
|
662
663
|
distribution.repository_version or distribution.repository.latest_version()
|
|
663
664
|
)
|
|
664
665
|
|
|
665
|
-
# Getting collection version
|
|
666
|
-
ns, name, version = filename.split("-", maxsplit=2)
|
|
667
|
-
# Get off the ending .tar.gz
|
|
668
|
-
version = ".".join(version.split(".")[:3])
|
|
669
666
|
collection_version = get_object_or_404(
|
|
670
667
|
CollectionVersion.objects.filter(pk__in=repository_version.content),
|
|
671
|
-
namespace=
|
|
668
|
+
namespace=namespace,
|
|
672
669
|
name=name,
|
|
673
670
|
version=version,
|
|
674
671
|
)
|
|
@@ -693,11 +690,10 @@ class CollectionArtifactDownloadView(GalaxyAuthMixin, views.APIView, AnsibleDist
|
|
|
693
690
|
return
|
|
694
691
|
raise
|
|
695
692
|
|
|
696
|
-
def count_download(
|
|
697
|
-
ns, name, _ = filename.split("-", maxsplit=2)
|
|
693
|
+
def count_download(namespace, name):
|
|
698
694
|
try:
|
|
699
695
|
collection, created = CollectionDownloadCount.objects.get_or_create(
|
|
700
|
-
namespace=
|
|
696
|
+
namespace=namespace, name=name, defaults={"download_count": 1}
|
|
701
697
|
)
|
|
702
698
|
if not created:
|
|
703
699
|
collection.download_count = F("download_count") + 1
|
|
@@ -728,13 +724,23 @@ class CollectionArtifactDownloadView(GalaxyAuthMixin, views.APIView, AnsibleDist
|
|
|
728
724
|
filename=self.kwargs["filename"],
|
|
729
725
|
)
|
|
730
726
|
|
|
727
|
+
match = re.fullmatch(
|
|
728
|
+
r"(?P<namespace>\w+)-(?P<name>\w+)-(?P<version>[\w.-]+)\.tar\.gz",
|
|
729
|
+
self.kwargs["filename"],
|
|
730
|
+
)
|
|
731
|
+
if not match:
|
|
732
|
+
raise NotFound()
|
|
733
|
+
namespace = match.group("namespace")
|
|
734
|
+
name = match.group("name")
|
|
735
|
+
version = match.group("version")
|
|
736
|
+
|
|
731
737
|
if settings.ANSIBLE_COLLECT_DOWNLOAD_LOG:
|
|
732
738
|
CollectionArtifactDownloadView.log_download(
|
|
733
|
-
request,
|
|
739
|
+
request, namespace, name, version, distro_base_path
|
|
734
740
|
)
|
|
735
741
|
|
|
736
742
|
if settings.ANSIBLE_COLLECT_DOWNLOAD_COUNT:
|
|
737
|
-
CollectionArtifactDownloadView.count_download(
|
|
743
|
+
CollectionArtifactDownloadView.count_download(namespace, name)
|
|
738
744
|
|
|
739
745
|
if (
|
|
740
746
|
distribution.content_guard
|
|
@@ -125,6 +125,13 @@ def collection_detail(http_session, collection_upload, pulp_dist, collection_art
|
|
|
125
125
|
return response.json()
|
|
126
126
|
|
|
127
127
|
|
|
128
|
+
@pytest.fixture(scope="class")
|
|
129
|
+
def collection_highest_version(http_session, collection_detail):
|
|
130
|
+
response = http_session.get(collection_detail["highest_version"]["href"])
|
|
131
|
+
response.raise_for_status()
|
|
132
|
+
return response.json()
|
|
133
|
+
|
|
134
|
+
|
|
128
135
|
@pytest.fixture(scope="class")
|
|
129
136
|
def pulp_dist(ansible_repository_factory, ansible_distribution_factory):
|
|
130
137
|
"""Create an Ansible Distribution to simulate the automation hub environment for testing."""
|
|
@@ -298,34 +305,52 @@ class TestCollection:
|
|
|
298
305
|
# # 'repository': 'http://github.example.com/orionuser1/skeleton',
|
|
299
306
|
# # 'tags': ['collectiontest']},
|
|
300
307
|
|
|
301
|
-
def
|
|
308
|
+
def test_collection_download_metadata_unauthorized_fails(
|
|
302
309
|
self,
|
|
303
310
|
http_session,
|
|
304
311
|
collection_detail,
|
|
305
|
-
collection_artifact,
|
|
306
312
|
):
|
|
307
|
-
"""Test collection download URL.
|
|
308
|
-
|
|
309
|
-
Should require authentication and redirect to a download location.
|
|
310
|
-
"""
|
|
311
313
|
response = http_session.get(collection_detail["highest_version"]["href"], auth=NullAuth())
|
|
312
314
|
assert response.status_code == 401
|
|
313
|
-
response = http_session.get(collection_detail["highest_version"]["href"])
|
|
314
|
-
response.raise_for_status()
|
|
315
|
-
version = response.json()
|
|
316
315
|
|
|
316
|
+
def test_collection_download_redirects(
|
|
317
|
+
self,
|
|
318
|
+
http_session,
|
|
319
|
+
collection_highest_version,
|
|
320
|
+
collection_artifact,
|
|
321
|
+
):
|
|
317
322
|
# Artifact Download Endoint
|
|
318
|
-
url =
|
|
323
|
+
url = collection_highest_version["download_url"]
|
|
319
324
|
|
|
320
325
|
with open(collection_artifact.filename, "rb") as fp:
|
|
321
326
|
tarball = fp.read()
|
|
322
327
|
|
|
323
|
-
response = http_session.get(url, auth=NullAuth())
|
|
324
|
-
assert response.status_code == 401
|
|
325
328
|
response = http_session.get(url)
|
|
326
329
|
assert response.status_code == 200, (url, response.request.headers)
|
|
327
330
|
assert response.content == tarball
|
|
328
331
|
|
|
332
|
+
def test_collection_download_redirect_fails_unauthorized(
|
|
333
|
+
self,
|
|
334
|
+
http_session,
|
|
335
|
+
collection_highest_version,
|
|
336
|
+
):
|
|
337
|
+
# Artifact Download Endoint
|
|
338
|
+
url = collection_highest_version["download_url"]
|
|
339
|
+
|
|
340
|
+
response = http_session.get(url, auth=NullAuth())
|
|
341
|
+
assert response.status_code == 401
|
|
342
|
+
|
|
343
|
+
def test_downloading_collection_with_bad_name_returns_not_found(
|
|
344
|
+
self,
|
|
345
|
+
http_session,
|
|
346
|
+
collection_highest_version,
|
|
347
|
+
):
|
|
348
|
+
# Artifact Download Endoint, but we mess up the address.
|
|
349
|
+
url = collection_highest_version["download_url"].replace("-", "_")
|
|
350
|
+
|
|
351
|
+
response = http_session.get(url)
|
|
352
|
+
assert response.status_code == 404
|
|
353
|
+
|
|
329
354
|
def test_collection_upload_repeat(
|
|
330
355
|
self, http_session, ansible_collection_factory, pulp_dist, collection_upload
|
|
331
356
|
):
|
|
@@ -7,7 +7,7 @@ build-backend = 'setuptools.build_meta'
|
|
|
7
7
|
|
|
8
8
|
[project]
|
|
9
9
|
name = "pulp-ansible"
|
|
10
|
-
version = "0.28.
|
|
10
|
+
version = "0.28.4"
|
|
11
11
|
description = "Pulp plugin to manage Ansible content, e.g. roles"
|
|
12
12
|
readme = "README.rst"
|
|
13
13
|
authors = [
|
|
@@ -99,7 +99,7 @@ ignore = [
|
|
|
99
99
|
[tool.bumpversion]
|
|
100
100
|
# This section is managed by the plugin template. Do not edit manually.
|
|
101
101
|
|
|
102
|
-
current_version = "0.28.
|
|
102
|
+
current_version = "0.28.4"
|
|
103
103
|
commit = false
|
|
104
104
|
tag = false
|
|
105
105
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/management/commands/__init__.py
RENAMED
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/management/commands/download-log.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0002_advanced_collections.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0009_collectionimport.py
RENAMED
|
File without changes
|
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0011_collectionimport.py
RENAMED
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0012_auto_20190906_2253.py
RENAMED
|
File without changes
|
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0014_certification_enum.py
RENAMED
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0015_ansiblerepository.py
RENAMED
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0016_add_extension.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0019_collection_token.py
RENAMED
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0020_auto_20200810_1926.py
RENAMED
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0021_rename_role_remote.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0035_deprecation_content.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0047_ansible_namespace.py
RENAMED
|
File without changes
|
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0049_rbac_permissions.py
RENAMED
|
File without changes
|
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0051_cvindex_build.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0058_fix_0056_regression.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/migrations/0063_domain_support.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/app/tasks/collectionversion_index.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/collection/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/git/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/git/test_sync.py
RENAMED
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/role/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/role/test_sync.py
RENAMED
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/test_domain.py
RENAMED
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/api/test_export_import.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/functional/cli/test_role_install.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/performance/fast_load_collections.py
RENAMED
|
File without changes
|
{pulp_ansible-0.28.3 → pulp_ansible-0.28.4}/pulp_ansible/tests/performance/generate_collections.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|