pulpcore 3.120.0__tar.gz → 3.121.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.
- {pulpcore-3.120.0 → pulpcore-3.121.0}/CHANGES.md +77 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/PKG-INFO +4 -4
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/app/__init__.py +1 -1
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/app/__init__.py +1 -1
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/app/tasks/synchronizing.py +0 -3
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/apps.py +1 -1
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/publication.py +4 -3
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/tasks/vulnerability_report.py +3 -1
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/util.py +20 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/cache/cache.py +18 -9
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/content/handler.py +96 -6
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_workers.py +2 -1
- pulpcore-3.121.0/pulpcore/tests/functional/api/using_plugin/test_cdn_cache_validation.py +267 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/models/test_publication_retention.py +9 -10
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/test_vulnerability_report.py +32 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore.egg-info/PKG-INFO +4 -4
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore.egg-info/SOURCES.txt +1 -0
- pulpcore-3.121.0/pulpcore.egg-info/dependency_links.txt +1 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore.egg-info/requires.txt +3 -3
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pyproject.toml +5 -5
- pulpcore-3.120.0/pulp_file/app/settings.py +0 -1
- {pulpcore-3.120.0 → pulpcore-3.121.0}/CODE_OF_CONDUCT.md +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/COMMITMENT +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/CONTRIBUTING.md +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/COPYRIGHT +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/LICENSE +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/MANIFEST.in +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/README.md +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/ci_requirements.txt +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/functest_requirements.txt +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/manage.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/app/migrations/0001_initial.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/app/migrations/0002_alter_rhsmcertguard_contentguard_ptr_and_more.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/app/migrations/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/app/models.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/app/serializers.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/app/viewsets.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/pytest_plugin.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/rhsm/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/rhsm/rhsm_check_path.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/api/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/api/test_rhsm_certguard.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/api/test_x509_certguard.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/rhsm/katello-default-ca.crt +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/rhsm/katello-default-ca.key +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/rhsm/trusted_but_expired.pem +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/rhsm/uber.cert +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/rhsm/untrusted_cert-key.pem +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/rhsm/untrusted_cert.pem +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/rhsm/v1/1514454871848760713-key.pem +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/rhsm/v1/1514454871848760713.pem +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/rhsm/v1/159442575569388840-key.pem +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/rhsm/v1/159442575569388840.pem +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/rhsm/v3/4260035510644027985-key.pem +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/rhsm/v3/4260035510644027985.pem +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/rhsm/v3/5527980418107729172-key.pem +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/rhsm/v3/5527980418107729172.pem +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/certificates/ca.pem +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/genca.sh +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/keys/ca.pem +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/x509/certificates/ca.pem +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/x509/certificates/client.pem +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/x509/certificates/server.pem +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/x509/certificates/un_urlencoded_cert.txt +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/x509/certificates/untrusted_client.pem +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/x509/genall.sh +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/x509/genca.sh +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/x509/genclient.sh +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/x509/gensrv.sh +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/x509/keys/ca.pem +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/x509/keys/client.pem +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/artifacts/x509/keys/server.pem +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/conftest.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/functional/constants.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/unit/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/unit/certdata.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_certguard/tests/unit/test_rhsm_check_path.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/app/migrations/0001_initial_squashed_0016_add_domain.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/app/migrations/0017_alter_filealternatecontentsource_alternatecontentsource_ptr_and_more.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/app/migrations/0018_alter_filecontent_options.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/app/migrations/0019_add_filegitremote.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/app/migrations/0020_filerepository_last_sync_details.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/app/migrations/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/app/modelresource.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/app/models.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/app/replica.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/app/serializers.py +0 -0
- /pulpcore-3.120.0/pulpcore.egg-info/dependency_links.txt → /pulpcore-3.121.0/pulp_file/app/settings.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/app/tasks/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/app/tasks/publishing.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/app/viewsets.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/manifest.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/pytest_plugin.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/test_acs.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/test_auto_publish.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/test_bad_sync.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/test_content_labels.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/test_crud_content_unit.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/test_crud_remotes.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/test_distributed_publication.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/test_domains.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/test_download_policies.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/test_filesystem_export.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/test_generic_list.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/test_git_sync.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/test_labels.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/test_mime_types.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/test_overwrite_content.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/test_publish.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/test_pulp_export.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/test_rbac.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/test_remote_settings.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/test_sync.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/functional/api/test_sync_optimization.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/unit/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/unit/test_git_sync.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/unit/test_safe_paths.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/unit/test_serializers.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulp_file/tests/unit/test_sync_optimization.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/access_policy.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/authentication.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/checks.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/contexts.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/entrypoint.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/files.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/find_url.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/global_access_conditions.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/importexport.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/loggers.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/manage.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/management/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/management/commands/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/management/commands/add-signing-service.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/management/commands/analyze-publication.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/management/commands/clean-up-progress-reports.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/management/commands/datarepair-2327.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/management/commands/datarepair.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/management/commands/dump-permissions.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/management/commands/dump-publications-to-fs.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/management/commands/handle-artifact-checksums.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/management/commands/list-signing-services.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/management/commands/migrationstat.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/management/commands/openapi.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/management/commands/optimizemigration.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/management/commands/rebasemigrations.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/management/commands/remove-plugin.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/management/commands/remove-signing-service.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/management/commands/repository-size.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/management/commands/reset-admin-password.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/management/commands/rotate-db-key.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/management/commands/shell.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0001_squashed_0090_char_to_text_field.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0091_systemid.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0092_alter_upload_options.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0093_add_info_field_repositoryversion.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0094_protect_repository_content.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0095_artifactdistribution.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0096_alter_task_logging_cid.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0097_remove_telemetry_task_schedule.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0098_pulp_labels.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0099_versions_field.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0100_upstreampulp.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0101_add_domain.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0102_add_domain_relations.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0103_alter_export_task.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0104_delete_label.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0105_abstract_uuid_gen.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0106_alter_artifactdistribution_distribution_ptr_and_more.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0107_distribution_hidden.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0108_task_versions.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0109_contentartifact_relative_path_index.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0110_apiappstatus.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0111_task_enc_args_task_enc_kwargs.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0112_alter_upstreampulp_options.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0113_headercontentguard.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0114_remove_task_args_remove_task_kwargs.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0115_compositecontentguard.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0116_alter_remoteartifact_md5_alter_remoteartifact_sha1_and_more.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0117_task_unblocked_at.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0118_task_core_task_unblock_2276a4_idx_and_more.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0119_grouprole_core_groupr_object__250e22_idx_and_more.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0120_get_url_removal.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0121_add_profile_artifacts_table.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0122_record_last_replication_timestamp.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0123_upstreampulp_q_select.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0124_task_deferred_task_immediate.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0125_openpgpdistribution_openpgpkeyring_openpgppublickey_and_more.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0126_remoteartifact_failed_at.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0127_remove_upstreampulp_pulp_label_select.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0128_domain_pulp_labels.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0129_content_pulp_labels.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0130_upstreampulp_policy.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0131_distribution_checkpoint_publication_checkpoint.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0132_alter_content_options.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0132_task_profile_options.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0133_repositoryversion_content_ids.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0134_task_insert_trigger.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0135_task_pulp_task_resources_index.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0136_delete_basedistribution.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0137_appstatus.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0138_vulnerabilityreport.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0139_task_app_lock.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0140_require_appstatus_zdu.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0141_alter_appstatus_name.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0142_task_result.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0143_require_app_lock_zdu.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0144_delete_old_appstatus.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0145_domainize_import_export.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0146_repository_retain_checkpoints.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0147_content_pulp_labels_gin.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0148_artifact_artifact_domain_size_index.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0149_distributedpublication.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0150_taskschedule_task_kwargs.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0151_upstreampulp_connect_timeout_and_more.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0152_alter_repositoryversion_content_ids.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0153_taskschedule_pulp_domain_alter_taskschedule_name_and_more.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0154_task_api_version.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0155_create_rel_path_domains.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0156_alter_contentartifact_relative_path_and_more.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0157_distribution_base_path_constraint.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0158_domain_default_content_guard.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0159_alter_contentartifact_relative_path_and_more.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/0160_envvarheadercontentguard.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/migrations/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/mime_types.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/modelresource.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/access_policy.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/acs.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/analytics.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/base.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/content.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/domain.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/exporter.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/fields.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/generic.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/importer.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/openpgp.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/progress.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/replica.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/repository.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/role.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/status.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/storage.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/task.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/upload.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/models/vulnerability_report.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/netutil.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/openpgp.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/protobuf/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/protobuf/analytics_pb2.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/pulp_hashlib.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/pulpcore_gunicorn_application.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/redis_connection.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/replica.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/response.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/role_util.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/access_policy.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/acs.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/base.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/content.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/domain.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/exporter.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/fields.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/importer.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/openpgp.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/orphans.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/progress.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/publication.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/purge.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/reclaim.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/repair.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/replica.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/repository.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/status.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/task.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/upload.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/user.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/serializers/vulnerability_report.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/settings.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/tasks/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/tasks/analytics.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/tasks/base.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/tasks/datarepair.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/tasks/export.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/tasks/importer.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/tasks/migrate.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/tasks/orphan.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/tasks/purge.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/tasks/reclaim_space.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/tasks/replica.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/tasks/repository.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/tasks/telemetry.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/tasks/test.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/tasks/upload.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/templates/rest_framework/api.html +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/templatetags/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/templatetags/pulp_urls.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/urls.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/views/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/views/datarepair.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/views/importer.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/views/orphans.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/views/repair.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/views/status.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/viewsets/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/viewsets/access_policy.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/viewsets/acs.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/viewsets/base.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/viewsets/content.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/viewsets/custom_filters.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/viewsets/domain.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/viewsets/exporter.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/viewsets/importer.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/viewsets/openpgp.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/viewsets/orphans.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/viewsets/publication.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/viewsets/reclaim.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/viewsets/replica.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/viewsets/repository.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/viewsets/task.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/viewsets/upload.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/viewsets/user.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/viewsets/vulnerability_report.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/workload_identity/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/workload_identity/authentication.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/workload_identity/authz.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/workload_identity/backend.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/workload_identity/config.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/workload_identity/principal.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/workload_identity/rules.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/app/wsgi.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/backends.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/cache/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/constants.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/content/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/content/authentication.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/content/entrypoint.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/content/instrumentation.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/download/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/download/base.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/download/factory.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/download/file.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/download/http.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/exceptions/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/exceptions/base.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/exceptions/plugin.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/exceptions/validation.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/filters.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/metrics.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/middleware.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/migrations.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/openapi/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/openapi/hooks.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/access_policy.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/actions.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/apps.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/authentication/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/cache/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/constants.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/content.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/download/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/exceptions.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/files.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/find_url.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/importexport.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/migrations.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/modelresources.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/models/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/models/role.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/publication_utils.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/pulp_hashlib.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/replica.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/repo_version_utils.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/responses.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/serializers/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/serializers/content.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/stages/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/stages/api.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/stages/artifact_stages.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/stages/content_stages.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/stages/declarative_version.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/stages/models.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/storage.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/sync.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/tasking.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/util.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/viewsets/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/plugin/viewsets/content.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/pytest_plugin.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/responses.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tasking/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tasking/_util.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tasking/entrypoint.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tasking/kafka.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tasking/redis_locks.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tasking/redis_tasks.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tasking/redis_worker.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tasking/storage.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tasking/tasks.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tasking/worker.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_access_policy.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_api_docs.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_api_root_rewrite.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_artifact_distribution.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_auth.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_correlation_id.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_crd_artifacts.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_crud_domains.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_filter.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_login.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_openapi_schema.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_openpgp.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_replication.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_repos.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_role.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_root_endpoint.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_scoping.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_signing_service.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_status.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_task_purge.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_tasking.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_upload.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_users_groups.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/test_v4_status.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_checkpoint.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_content_access.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_content_cache.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_content_delivery.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_content_directory.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_content_path.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_content_promotion.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_contentguard.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_crud_repos.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_distributions.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_filesystemexport.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_labels.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_migrate.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_orphans.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_pagination.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_prn.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_proxy.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_pulpimport.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_reclaim_disk_space.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_repair.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_repo_versions.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_tasks.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/api/using_plugin/test_unlinking_repo.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/assets/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/content_with_coverage.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/functional/utils.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/performance/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/performance/test_performance.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/conftest.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/content/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/content/test_handler.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/content/test_heartbeat.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/download/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/download/test_downloader_base.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/download/test_downloader_factory.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/download/test_downloader_file.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/metrics/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/metrics/conftest.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/metrics/test_aiohttp_instrumentation.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/metrics/test_django_instrumentation.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/migration/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/models/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/models/test_base.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/models/test_content.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/models/test_content_ids_migration.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/models/test_distribution.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/models/test_remote.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/models/test_repository.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/models/test_task.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/roles/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/roles/test_adjust_roles.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/roles/test_roles.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/serializers/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/serializers/test_base.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/serializers/test_domain.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/serializers/test_fields.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/serializers/test_orphans_cleanup.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/serializers/test_pulpexport.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/serializers/test_repository.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/serializers/test_user.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/stages/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/stages/test_artifactdownloader.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/stages/test_resource_budget.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/stages/test_stages.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/tasking/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/tasking/test_delete_tasks.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/tasking/test_missing_worker_cleanup.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/tasking/test_orphan_redis_locks.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/tasking/test_redis_fetch_task.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/tasking/test_waiting_tasks_metric.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/test_cache.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/test_chunked_file.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/test_content_guard.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/test_fetch_task_hol_blocking.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/test_files.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/test_gpg_verify.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/test_import_checks.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/test_list_signing_services_command.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/test_middleware.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/test_pulp_urls.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/test_replica.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/test_settings.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/test_util.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/test_viewsets.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/viewsets/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/viewsets/test_viewset_base.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/workload_identity/__init__.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore/tests/unit/workload_identity/test_workload_identity.py +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore.egg-info/entry_points.txt +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/pulpcore.egg-info/top_level.txt +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/setup.cfg +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/test_requirements.txt +0 -0
- {pulpcore-3.120.0 → pulpcore-3.121.0}/unittest_requirements.txt +0 -0
|
@@ -8,6 +8,37 @@
|
|
|
8
8
|
|
|
9
9
|
[//]: # (towncrier release notes start)
|
|
10
10
|
|
|
11
|
+
## 3.121.0 (2026-10-06) {: #3.121.0 }
|
|
12
|
+
|
|
13
|
+
### REST API {: #3.121.0-rest-api }
|
|
14
|
+
|
|
15
|
+
#### Features {: #3.121.0-rest-api-feature }
|
|
16
|
+
|
|
17
|
+
- Added `ETag`/`If-None-Match` and `Last-Modified`/`If-Modified-Since` (`304 Not Modified`) support on content-app responses so edge caches can revalidate without re-downloading.
|
|
18
|
+
[#7929](https://github.com/pulp/pulpcore/issues/7929)
|
|
19
|
+
|
|
20
|
+
#### Bugfixes {: #3.121.0-rest-api-bugfix }
|
|
21
|
+
|
|
22
|
+
- Avoid loading repository version content IDs when serving fallback content during the grace period.
|
|
23
|
+
- Fixed vulnerability report rescans to update existing reports.
|
|
24
|
+
|
|
25
|
+
### Plugin API {: #3.121.0-plugin-api }
|
|
26
|
+
|
|
27
|
+
No significant changes.
|
|
28
|
+
|
|
29
|
+
### Pulp File {: #3.121.0-pulp-file }
|
|
30
|
+
|
|
31
|
+
#### Bugfixes {: #3.121.0-pulp-file-bugfix }
|
|
32
|
+
|
|
33
|
+
- Fixed `optimize` in file sync to honor the value `False`.
|
|
34
|
+
[#8141](https://github.com/pulp/pulpcore/issues/8141)
|
|
35
|
+
|
|
36
|
+
### Pulp Cert Guard {: #3.121.0-pulp-cert-guard }
|
|
37
|
+
|
|
38
|
+
No significant changes.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
11
42
|
## 3.120.0 (2026-09-29) {: #3.120.0 }
|
|
12
43
|
|
|
13
44
|
### REST API {: #3.120.0-rest-api }
|
|
@@ -40,6 +71,30 @@ No significant changes.
|
|
|
40
71
|
|
|
41
72
|
---
|
|
42
73
|
|
|
74
|
+
## 3.119.2 (2026-09-29) {: #3.119.2 }
|
|
75
|
+
|
|
76
|
+
### REST API {: #3.119.2-rest-api }
|
|
77
|
+
|
|
78
|
+
#### Bugfixes {: #3.119.2-rest-api-bugfix }
|
|
79
|
+
|
|
80
|
+
- Improved the performance of the latest publication lookup when serving content
|
|
81
|
+
from a repository-backed distribution.
|
|
82
|
+
[#1995](https://github.com/pulp/pulpcore/issues/1995)
|
|
83
|
+
|
|
84
|
+
### Plugin API {: #3.119.2-plugin-api }
|
|
85
|
+
|
|
86
|
+
No significant changes.
|
|
87
|
+
|
|
88
|
+
### Pulp File {: #3.119.2-pulp-file }
|
|
89
|
+
|
|
90
|
+
No significant changes.
|
|
91
|
+
|
|
92
|
+
### Pulp Cert Guard {: #3.119.2-pulp-cert-guard }
|
|
93
|
+
|
|
94
|
+
No significant changes.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
43
98
|
## 3.119.1 (2026-09-23) {: #3.119.1 }
|
|
44
99
|
|
|
45
100
|
### REST API {: #3.119.1-rest-api }
|
|
@@ -1218,6 +1273,28 @@ No significant changes.
|
|
|
1218
1273
|
|
|
1219
1274
|
---
|
|
1220
1275
|
|
|
1276
|
+
## 3.105.21 (2026-10-01) {: #3.105.21 }
|
|
1277
|
+
|
|
1278
|
+
### REST API {: #3.105.21-rest-api }
|
|
1279
|
+
|
|
1280
|
+
#### Bugfixes {: #3.105.21-rest-api-bugfix }
|
|
1281
|
+
|
|
1282
|
+
- Preserve OpenPGP verification compatibility for failed signatures and fix key ID calculation for OpenPGP v6.
|
|
1283
|
+
|
|
1284
|
+
### Plugin API {: #3.105.21-plugin-api }
|
|
1285
|
+
|
|
1286
|
+
No significant changes.
|
|
1287
|
+
|
|
1288
|
+
### Pulp File {: #3.105.21-pulp-file }
|
|
1289
|
+
|
|
1290
|
+
No significant changes.
|
|
1291
|
+
|
|
1292
|
+
### Pulp Cert Guard {: #3.105.21-pulp-cert-guard }
|
|
1293
|
+
|
|
1294
|
+
No significant changes.
|
|
1295
|
+
|
|
1296
|
+
---
|
|
1297
|
+
|
|
1221
1298
|
## 3.105.20 (2026-09-23) {: #3.105.20 }
|
|
1222
1299
|
|
|
1223
1300
|
### REST API {: #3.105.20-rest-api }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pulpcore
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.121.0
|
|
4
4
|
Summary: Pulp Django Application and Related Modules
|
|
5
5
|
Author-email: Pulp Team <pulp-list@redhat.com>
|
|
6
6
|
License-Expression: GPL-2.0-or-later
|
|
@@ -42,9 +42,9 @@ Requires-Dist: gunicorn<26.3.0,>=22.0
|
|
|
42
42
|
Requires-Dist: jinja2<=3.1.6,>=3.1
|
|
43
43
|
Requires-Dist: json_stream<2.6,>=2.3.2
|
|
44
44
|
Requires-Dist: jq<1.13.0,>=1.6.0
|
|
45
|
-
Requires-Dist: opentelemetry-api<1.
|
|
46
|
-
Requires-Dist: opentelemetry-sdk<1.
|
|
47
|
-
Requires-Dist: opentelemetry-exporter-otlp-proto-http<1.
|
|
45
|
+
Requires-Dist: opentelemetry-api<1.46,>=1.27.0
|
|
46
|
+
Requires-Dist: opentelemetry-sdk<1.46,>=1.27.0
|
|
47
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-http<1.46,>=1.27.0
|
|
48
48
|
Requires-Dist: protobuf<8.0,>=4.21.1
|
|
49
49
|
Requires-Dist: pulp-glue<0.41,>=0.35.0
|
|
50
50
|
Requires-Dist: PyOpenSSL<27.0,>=26.3.0
|
|
@@ -7,7 +7,6 @@ from gettext import gettext as _
|
|
|
7
7
|
from hashlib import sha256
|
|
8
8
|
from urllib.parse import quote, urlparse, urlunparse
|
|
9
9
|
|
|
10
|
-
from django.conf import settings
|
|
11
10
|
from django.core.files import File
|
|
12
11
|
|
|
13
12
|
from pulpcore.plugin.exceptions import SyncError
|
|
@@ -113,8 +112,6 @@ def synchronize(remote_pk, repository_pk, mirror, optimize=False, url=None, **kw
|
|
|
113
112
|
remote = Remote.objects.get(pk=remote_pk).cast()
|
|
114
113
|
repository = FileRepository.objects.get(pk=repository_pk)
|
|
115
114
|
|
|
116
|
-
optimize = optimize or settings.FILE_SYNC_OPTIMIZATION
|
|
117
|
-
|
|
118
115
|
if not remote.url:
|
|
119
116
|
raise SyncError(_("A remote must have a url specified to synchronize."))
|
|
120
117
|
|
|
@@ -868,7 +868,7 @@ class Distribution(MasterModel):
|
|
|
868
868
|
|
|
869
869
|
def get_fallback_ca(self, path):
|
|
870
870
|
"""
|
|
871
|
-
Return
|
|
871
|
+
Return the ContentArtifact and RepositoryVersion for path from publication history, or None.
|
|
872
872
|
|
|
873
873
|
Iterates DistributedPublication records for this distribution from newest to oldest,
|
|
874
874
|
trying each publication until the path is found. Handles both pass-through and
|
|
@@ -883,6 +883,7 @@ class Distribution(MasterModel):
|
|
|
883
883
|
.filter(distribution=self)
|
|
884
884
|
.order_by("-pulp_created")
|
|
885
885
|
.select_related("publication__repository_version")
|
|
886
|
+
.defer("publication__repository_version__content_ids")
|
|
886
887
|
)
|
|
887
888
|
for dp in recent_dp.iterator():
|
|
888
889
|
pub = dp.publication
|
|
@@ -893,7 +894,7 @@ class Distribution(MasterModel):
|
|
|
893
894
|
.first()
|
|
894
895
|
)
|
|
895
896
|
if ca is not None:
|
|
896
|
-
return ca
|
|
897
|
+
return ca, pub.repository_version
|
|
897
898
|
else:
|
|
898
899
|
pa = (
|
|
899
900
|
pub.published_artifact.select_related(
|
|
@@ -904,7 +905,7 @@ class Distribution(MasterModel):
|
|
|
904
905
|
.first()
|
|
905
906
|
)
|
|
906
907
|
if pa is not None:
|
|
907
|
-
return pa.content_artifact
|
|
908
|
+
return pa.content_artifact, pub.repository_version
|
|
908
909
|
return None
|
|
909
910
|
|
|
910
911
|
@hook(BEFORE_CREATE)
|
|
@@ -131,7 +131,9 @@ class VulnerabilityReportScanner:
|
|
|
131
131
|
"""
|
|
132
132
|
|
|
133
133
|
vuln_report, created = await sync_to_async(VulnerabilityReport.objects.update_or_create)(
|
|
134
|
-
|
|
134
|
+
pulp_domain=get_domain(),
|
|
135
|
+
content=content,
|
|
136
|
+
defaults={"vulns": vulns},
|
|
135
137
|
)
|
|
136
138
|
await vuln_report.repo_versions.aadd(repo_version)
|
|
137
139
|
|
|
@@ -17,6 +17,7 @@ from django.apps import apps
|
|
|
17
17
|
from django.conf import settings
|
|
18
18
|
from django.db import connection
|
|
19
19
|
from django.db.models import Model, UUIDField
|
|
20
|
+
from django.utils.http import parse_http_date
|
|
20
21
|
from rest_framework.reverse import reverse as drf_reverse
|
|
21
22
|
from rest_framework.serializers import ValidationError
|
|
22
23
|
|
|
@@ -714,6 +715,25 @@ def normalize_http_status(status):
|
|
|
714
715
|
return ""
|
|
715
716
|
|
|
716
717
|
|
|
718
|
+
def check_request_was_modified(request, last_modified, etag=None):
|
|
719
|
+
if_none_match = request.headers.get("If-None-Match")
|
|
720
|
+
if_modified_since = request.headers.get("If-Modified-Since")
|
|
721
|
+
|
|
722
|
+
if not if_none_match and not (last_modified and if_modified_since):
|
|
723
|
+
return True
|
|
724
|
+
|
|
725
|
+
if if_none_match:
|
|
726
|
+
client_etags = [etag == client_etag.strip() for client_etag in if_none_match.split(",")]
|
|
727
|
+
return not any(client_etags)
|
|
728
|
+
|
|
729
|
+
try:
|
|
730
|
+
last_modified_ts = parse_http_date(last_modified)
|
|
731
|
+
if_modified_ts = parse_http_date(if_modified_since)
|
|
732
|
+
return last_modified_ts > if_modified_ts
|
|
733
|
+
except (TypeError, ValueError):
|
|
734
|
+
return True
|
|
735
|
+
|
|
736
|
+
|
|
717
737
|
class HashingFileWriter(RawIOBase):
|
|
718
738
|
"""
|
|
719
739
|
A file-like object that handles writing data to disk with simultaneous
|
|
@@ -3,8 +3,8 @@ import json
|
|
|
3
3
|
import time
|
|
4
4
|
from functools import wraps
|
|
5
5
|
|
|
6
|
-
from aiohttp.web import FileResponse, HTTPSuccessful, Request, Response
|
|
7
|
-
from aiohttp.web_exceptions import HTTPException, HTTPFound, HTTPNotFound
|
|
6
|
+
from aiohttp.web import FileResponse, HTTPSuccessful, Request, Response
|
|
7
|
+
from aiohttp.web_exceptions import HTTPException, HTTPFound, HTTPNotFound, HTTPNotModified
|
|
8
8
|
from django.conf import settings
|
|
9
9
|
from django.http import FileResponse as ApiFileResponse
|
|
10
10
|
from django.http import HttpResponse, HttpResponseRedirect
|
|
@@ -18,6 +18,7 @@ from pulpcore.app.redis_connection import (
|
|
|
18
18
|
get_async_redis_connection,
|
|
19
19
|
get_redis_connection,
|
|
20
20
|
)
|
|
21
|
+
from pulpcore.app.util import check_request_was_modified
|
|
21
22
|
from pulpcore.metrics import artifacts_size_counter
|
|
22
23
|
from pulpcore.responses import ArtifactResponse
|
|
23
24
|
|
|
@@ -352,7 +353,7 @@ class AsyncContentCache(AsyncCache):
|
|
|
352
353
|
await self.auth(request, self, bk)
|
|
353
354
|
key = self.make_key(request)
|
|
354
355
|
# Check cache
|
|
355
|
-
response = await self.make_response(key, bk)
|
|
356
|
+
response = await self.make_response(key, bk, request)
|
|
356
357
|
if response is None:
|
|
357
358
|
# Cache miss, create new entry
|
|
358
359
|
response = await self.make_entry(
|
|
@@ -373,7 +374,7 @@ class AsyncContentCache(AsyncCache):
|
|
|
373
374
|
if isinstance(arg, Request):
|
|
374
375
|
return arg
|
|
375
376
|
|
|
376
|
-
async def make_response(self, key, base_key):
|
|
377
|
+
async def make_response(self, key, base_key, request=None):
|
|
377
378
|
"""Tries to find the cached entry and turn it into a proper response"""
|
|
378
379
|
entry = await self.get(key, base_key)
|
|
379
380
|
if not entry:
|
|
@@ -396,7 +397,16 @@ class AsyncContentCache(AsyncCache):
|
|
|
396
397
|
# Bad entry, delete from cache
|
|
397
398
|
await self.delete(key, base_key)
|
|
398
399
|
return None
|
|
399
|
-
|
|
400
|
+
|
|
401
|
+
headers = entry.get("headers", {})
|
|
402
|
+
if request and not check_request_was_modified(
|
|
403
|
+
request, last_modified=headers.get("Last-Modified"), etag=headers.get("ETag")
|
|
404
|
+
):
|
|
405
|
+
response = HTTPNotModified(
|
|
406
|
+
headers={key: headers[key] for key in ("Cache-Control", "ETag") if key in headers}
|
|
407
|
+
)
|
|
408
|
+
else:
|
|
409
|
+
response = self.RESPONSE_TYPES[response_type](**entry)
|
|
400
410
|
response.headers.update({"X-PULP-CACHE": "HIT"})
|
|
401
411
|
return response
|
|
402
412
|
|
|
@@ -404,13 +414,12 @@ class AsyncContentCache(AsyncCache):
|
|
|
404
414
|
"""Gets the response for the request and try to turn it into a cacheable entry"""
|
|
405
415
|
try:
|
|
406
416
|
response = await handler(*args, **kwargs)
|
|
407
|
-
except (HTTPSuccessful, HTTPFound, HTTPNotFound) as e:
|
|
417
|
+
except (HTTPSuccessful, HTTPFound, HTTPNotFound, HTTPNotModified) as e:
|
|
408
418
|
response = e
|
|
409
419
|
|
|
410
420
|
original_response = response
|
|
411
|
-
if
|
|
412
|
-
|
|
413
|
-
response = response.future_response
|
|
421
|
+
if hasattr(response, "future_response"):
|
|
422
|
+
response = response.future_response
|
|
414
423
|
|
|
415
424
|
entry = {"headers": dict(response.headers), "status": response.status}
|
|
416
425
|
|
|
@@ -18,10 +18,12 @@ from aiohttp.web_exceptions import (
|
|
|
18
18
|
HTTPFound,
|
|
19
19
|
HTTPMovedPermanently,
|
|
20
20
|
HTTPNotFound,
|
|
21
|
+
HTTPNotModified,
|
|
21
22
|
HTTPRequestRangeNotSatisfiable,
|
|
22
23
|
)
|
|
23
24
|
from asgiref.sync import sync_to_async
|
|
24
25
|
from django.utils import timezone
|
|
26
|
+
from django.utils.http import http_date
|
|
25
27
|
from multidict import CIMultiDict
|
|
26
28
|
from yarl import URL
|
|
27
29
|
|
|
@@ -57,6 +59,7 @@ from pulpcore.app.models import ( # noqa: E402
|
|
|
57
59
|
)
|
|
58
60
|
from pulpcore.app.util import ( # noqa: E402
|
|
59
61
|
cache_key,
|
|
62
|
+
check_request_was_modified,
|
|
60
63
|
get_domain,
|
|
61
64
|
)
|
|
62
65
|
from pulpcore.cache import AsyncContentCache # noqa: E402
|
|
@@ -69,6 +72,12 @@ from pulpcore.metrics import artifacts_size_counter # noqa: E402
|
|
|
69
72
|
log = logging.getLogger(__name__)
|
|
70
73
|
_current_distribution = ContextVar("current_distribution", default=None)
|
|
71
74
|
|
|
75
|
+
# The "shared cache" (cdn/edge) should always ask pulp if their cache is still valid
|
|
76
|
+
EDGE_CACHE_CONTROL = "public, max-age=0, must-revalidate"
|
|
77
|
+
|
|
78
|
+
# Tell HTTP caches not to store redirects containing signed URLs.
|
|
79
|
+
NO_STORE_EDGE_CACHE_CONTROL = "no-store"
|
|
80
|
+
|
|
72
81
|
|
|
73
82
|
class PathNotResolved(HTTPNotFound):
|
|
74
83
|
"""
|
|
@@ -536,6 +545,8 @@ class Handler:
|
|
|
536
545
|
if content_type:
|
|
537
546
|
headers["Content-Type"] = content_type
|
|
538
547
|
|
|
548
|
+
headers["Cache-Control"] = EDGE_CACHE_CONTROL
|
|
549
|
+
|
|
539
550
|
# Let plugin-Distribution set headers for this path if it wants.
|
|
540
551
|
if distribution:
|
|
541
552
|
headers.update(distribution.content_headers_for(path))
|
|
@@ -594,6 +605,48 @@ class Handler:
|
|
|
594
605
|
sizes=sizes,
|
|
595
606
|
)
|
|
596
607
|
|
|
608
|
+
@staticmethod
|
|
609
|
+
async def _set_last_modified_header(
|
|
610
|
+
headers,
|
|
611
|
+
last_modified: datetime | None = None,
|
|
612
|
+
ca=None,
|
|
613
|
+
rv=None,
|
|
614
|
+
):
|
|
615
|
+
"""Add the last-modified header to the response headers if not already present.
|
|
616
|
+
|
|
617
|
+
Pulp doesnt track "content served by a distribution" over time, so we need to use some
|
|
618
|
+
heuristics here. Lets call hypothesis 1 (H1) the common case where the distribution D is
|
|
619
|
+
serving content from RVs monotonically (either auto-publish, or something else) and that
|
|
620
|
+
the handler found a ContentArtifact (CA) matching the path for a request.
|
|
621
|
+
|
|
622
|
+
If H1 is true, we can use the repository version history as the distributed content history.
|
|
623
|
+
In other words, we can use the following strategy for establishing last-modified for the
|
|
624
|
+
path/resource in the request with a matching CA/RV:
|
|
625
|
+
|
|
626
|
+
Given a CA is provided with its RepositoryVersion (RV_n), find the earliest version RV_k
|
|
627
|
+
such that CA is in RV_k and use that timestamp as last-modified.
|
|
628
|
+
|
|
629
|
+
If H1 is not true, (e.g the distribution rolled back the RV it serves, changed repository, etc)
|
|
630
|
+
then this can produce incorrect last_modified results (e.g, say resource dist/path/to/resource
|
|
631
|
+
was not modified, when in fact it was).
|
|
632
|
+
"""
|
|
633
|
+
|
|
634
|
+
def _find_repo_add_time():
|
|
635
|
+
cpk = ca.content_id
|
|
636
|
+
rc = rv._content_relationships().filter(content_id=cpk).first()
|
|
637
|
+
return rc.pulp_created if rc else rv.pulp_created
|
|
638
|
+
|
|
639
|
+
if "Last-Modified" not in headers:
|
|
640
|
+
if last_modified is None and ca and rv:
|
|
641
|
+
last_modified = await sync_to_async(_find_repo_add_time)()
|
|
642
|
+
|
|
643
|
+
if last_modified is not None:
|
|
644
|
+
headers["Last-Modified"] = http_date(last_modified.timestamp())
|
|
645
|
+
|
|
646
|
+
@staticmethod
|
|
647
|
+
def _set_etag_headers(headers, sha):
|
|
648
|
+
headers["ETag"] = f'"{sha}"'
|
|
649
|
+
|
|
597
650
|
async def list_directory(self, repo_version, publication, path):
|
|
598
651
|
"""
|
|
599
652
|
Generate a set with directory listing of the path.
|
|
@@ -734,6 +787,13 @@ class Handler:
|
|
|
734
787
|
content_handler_result = await sync_to_async(distro.content_handler)(original_rel_path)
|
|
735
788
|
if content_handler_result is not None:
|
|
736
789
|
if isinstance(content_handler_result, ContentArtifact):
|
|
790
|
+
# infer the RV which CA returned by content handler probably belongs to
|
|
791
|
+
__, rv_candidate, __ = await sync_to_async(
|
|
792
|
+
distro.get_repository_publication_and_version
|
|
793
|
+
)()
|
|
794
|
+
await self._set_last_modified_header(
|
|
795
|
+
headers, ca=content_handler_result, rv=rv_candidate
|
|
796
|
+
)
|
|
737
797
|
if content_handler_result.artifact:
|
|
738
798
|
return await self._serve_content_artifact(
|
|
739
799
|
content_handler_result, headers, request
|
|
@@ -769,6 +829,10 @@ class Handler:
|
|
|
769
829
|
raise HTTPMovedPermanently(f"{request.path}/")
|
|
770
830
|
original_rel_path = index_path
|
|
771
831
|
headers = self.response_headers(original_rel_path, distro)
|
|
832
|
+
# last-modified heuristic assumes distribution doesn't rollback to older publications
|
|
833
|
+
await self._set_last_modified_header(
|
|
834
|
+
headers, last_modified=publication.pulp_created
|
|
835
|
+
)
|
|
772
836
|
except ObjectDoesNotExist:
|
|
773
837
|
dir_list, dates, sizes = await self.list_directory(None, publication, rel_path)
|
|
774
838
|
dir_list.update(
|
|
@@ -798,6 +862,8 @@ class Handler:
|
|
|
798
862
|
except ObjectDoesNotExist:
|
|
799
863
|
pass
|
|
800
864
|
else:
|
|
865
|
+
publication_rv = publication.repository_version
|
|
866
|
+
await self._set_last_modified_header(headers, ca=ca, rv=publication_rv)
|
|
801
867
|
if ca.artifact:
|
|
802
868
|
return await self._serve_content_artifact(ca, headers, request)
|
|
803
869
|
else:
|
|
@@ -827,6 +893,8 @@ class Handler:
|
|
|
827
893
|
except ObjectDoesNotExist:
|
|
828
894
|
pass
|
|
829
895
|
else:
|
|
896
|
+
publication_rv = publication.repository_version
|
|
897
|
+
await self._set_last_modified_header(headers, ca=ca, rv=publication_rv)
|
|
830
898
|
if ca.artifact:
|
|
831
899
|
return await self._serve_content_artifact(ca, headers, request)
|
|
832
900
|
else:
|
|
@@ -836,8 +904,10 @@ class Handler:
|
|
|
836
904
|
|
|
837
905
|
# Grace-period fallback: serve from a recently-superseded publication
|
|
838
906
|
if distro.SERVE_FROM_PUBLICATION:
|
|
839
|
-
|
|
840
|
-
if
|
|
907
|
+
fallback = await sync_to_async(distro.get_fallback_ca)(original_rel_path)
|
|
908
|
+
if fallback is not None:
|
|
909
|
+
ca, fallback_rv = fallback
|
|
910
|
+
await self._set_last_modified_header(headers, ca=ca, rv=fallback_rv)
|
|
841
911
|
if ca.artifact:
|
|
842
912
|
return await self._serve_content_artifact(ca, headers, request)
|
|
843
913
|
else:
|
|
@@ -885,6 +955,7 @@ class Handler:
|
|
|
885
955
|
except ObjectDoesNotExist:
|
|
886
956
|
pass
|
|
887
957
|
else:
|
|
958
|
+
await self._set_last_modified_header(headers, ca=ca, rv=repo_version)
|
|
888
959
|
if ca.artifact:
|
|
889
960
|
return await self._serve_content_artifact(ca, headers, request)
|
|
890
961
|
else:
|
|
@@ -1130,6 +1201,12 @@ class Handler:
|
|
|
1130
1201
|
|
|
1131
1202
|
return URL(storage_url, encoded=True)
|
|
1132
1203
|
|
|
1204
|
+
def _build_redirect_response(**kwargs):
|
|
1205
|
+
url = _build_url(**kwargs)
|
|
1206
|
+
# Contains signed URL. Tell external caches to not store this
|
|
1207
|
+
headers["Cache-Control"] = NO_STORE_EDGE_CACHE_CONTROL
|
|
1208
|
+
return HTTPFound(url, headers=headers)
|
|
1209
|
+
|
|
1133
1210
|
artifact_file = content_artifact.artifact.file
|
|
1134
1211
|
artifact_name = artifact_file.name
|
|
1135
1212
|
domain = get_domain()
|
|
@@ -1147,12 +1224,12 @@ class Handler:
|
|
|
1147
1224
|
"storages.backends.s3boto3.S3Boto3Storage",
|
|
1148
1225
|
"storages.backends.s3.S3Storage",
|
|
1149
1226
|
):
|
|
1150
|
-
return
|
|
1227
|
+
return _build_redirect_response(http_method=request.method)
|
|
1151
1228
|
elif domain.storage_class in (
|
|
1152
1229
|
"storages.backends.azure_storage.AzureStorage",
|
|
1153
1230
|
"storages.backends.gcloud.GoogleCloudStorage",
|
|
1154
1231
|
):
|
|
1155
|
-
return
|
|
1232
|
+
return _build_redirect_response()
|
|
1156
1233
|
else:
|
|
1157
1234
|
raise NotImplementedError()
|
|
1158
1235
|
|
|
@@ -1177,8 +1254,10 @@ class Handler:
|
|
|
1177
1254
|
Returns:
|
|
1178
1255
|
The [aiohttp.web.FileResponse][] for the file.
|
|
1179
1256
|
"""
|
|
1180
|
-
|
|
1257
|
+
artifact = content_artifact.artifact
|
|
1258
|
+
artifact_file = artifact.file
|
|
1181
1259
|
content_length = artifact_file.size
|
|
1260
|
+
self._set_etag_headers(headers, artifact.sha256)
|
|
1182
1261
|
|
|
1183
1262
|
try:
|
|
1184
1263
|
range_start, range_stop = request.http_range.start, request.http_range.stop
|
|
@@ -1192,9 +1271,20 @@ class Handler:
|
|
|
1192
1271
|
size = artifact_file.size or "*"
|
|
1193
1272
|
raise HTTPRequestRangeNotSatisfiable(headers={"Content-Range": f"bytes */{size}"})
|
|
1194
1273
|
|
|
1274
|
+
response = self._build_response_from_content_artifact(content_artifact, headers, request)
|
|
1275
|
+
|
|
1276
|
+
if not check_request_was_modified(
|
|
1277
|
+
request, last_modified=headers.get("Last-Modified"), etag=headers.get("ETag")
|
|
1278
|
+
):
|
|
1279
|
+
nmod_response = HTTPNotModified(
|
|
1280
|
+
headers={key: headers[key] for key in ("Cache-Control", "ETag") if key in headers}
|
|
1281
|
+
)
|
|
1282
|
+
if settings.CACHE_ENABLED:
|
|
1283
|
+
nmod_response.future_response = response
|
|
1284
|
+
raise nmod_response
|
|
1285
|
+
|
|
1195
1286
|
artifacts_size_counter.add(content_length)
|
|
1196
1287
|
|
|
1197
|
-
response = self._build_response_from_content_artifact(content_artifact, headers, request)
|
|
1198
1288
|
if isinstance(response, HTTPFound):
|
|
1199
1289
|
raise response
|
|
1200
1290
|
else:
|
|
@@ -127,7 +127,7 @@ def test_task_schedule(task_schedule, pulpcore_bindings):
|
|
|
127
127
|
|
|
128
128
|
|
|
129
129
|
@pytest.mark.parallel
|
|
130
|
-
def test_task_schedule_domain(domain_factory, pulpcore_bindings):
|
|
130
|
+
def test_task_schedule_domain(domain_factory, pulpcore_bindings, monitor_task):
|
|
131
131
|
"""Test that a scheduled task dispatches in the TaskSchedule's domain, not the default."""
|
|
132
132
|
domain = domain_factory()
|
|
133
133
|
domain_name = domain.name
|
|
@@ -163,6 +163,7 @@ def test_task_schedule_domain(domain_factory, pulpcore_bindings):
|
|
|
163
163
|
ts = task_schedules.results[0]
|
|
164
164
|
assert f"/{domain_name}/" in ts.pulp_href
|
|
165
165
|
assert f"/{domain_name}/" in ts.last_task
|
|
166
|
+
monitor_task(ts.last_task)
|
|
166
167
|
task = pulpcore_bindings.TasksApi.read(ts.last_task)
|
|
167
168
|
assert task.state == "completed"
|
|
168
169
|
assert f"/{domain_name}/" in task.pulp_href
|