pulpcore 3.122.2__tar.gz → 3.123.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.122.2 → pulpcore-3.123.0}/CHANGES.md +119 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/PKG-INFO +3 -5
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/app/__init__.py +1 -1
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/app/__init__.py +1 -1
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_download_policies.py +0 -2
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/apps.py +1 -1
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/content.py +10 -2
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/storage.py +0 -25
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/domain.py +0 -45
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/content/handler.py +5 -2
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_crud_domains.py +0 -11
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/content/test_handler.py +76 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/serializers/test_domain.py +0 -12
- pulpcore-3.123.0/pulpcore/tests/unit/test_signing_service.py +39 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore.egg-info/PKG-INFO +3 -5
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore.egg-info/SOURCES.txt +1 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore.egg-info/requires.txt +2 -5
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pyproject.toml +4 -5
- {pulpcore-3.122.2 → pulpcore-3.123.0}/CODE_OF_CONDUCT.md +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/COMMITMENT +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/CONTRIBUTING.md +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/COPYRIGHT +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/LICENSE +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/MANIFEST.in +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/README.md +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/ci_requirements.txt +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/functest_requirements.txt +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/manage.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/app/migrations/0001_initial.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/app/migrations/0002_alter_rhsmcertguard_contentguard_ptr_and_more.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/app/migrations/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/app/models.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/app/serializers.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/app/viewsets.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/pytest_plugin.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/rhsm/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/rhsm/rhsm_check_path.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/api/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/api/test_rhsm_certguard.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/api/test_x509_certguard.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/rhsm/katello-default-ca.crt +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/rhsm/katello-default-ca.key +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/rhsm/trusted_but_expired.pem +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/rhsm/uber.cert +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/rhsm/untrusted_cert-key.pem +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/rhsm/untrusted_cert.pem +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/rhsm/v1/1514454871848760713-key.pem +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/rhsm/v1/1514454871848760713.pem +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/rhsm/v1/159442575569388840-key.pem +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/rhsm/v1/159442575569388840.pem +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/rhsm/v3/4260035510644027985-key.pem +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/rhsm/v3/4260035510644027985.pem +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/rhsm/v3/5527980418107729172-key.pem +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/rhsm/v3/5527980418107729172.pem +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/certificates/ca.pem +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/genca.sh +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/keys/ca.pem +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/x509/certificates/ca.pem +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/x509/certificates/client.pem +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/x509/certificates/server.pem +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/x509/certificates/un_urlencoded_cert.txt +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/x509/certificates/untrusted_client.pem +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/x509/genall.sh +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/x509/genca.sh +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/x509/genclient.sh +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/x509/gensrv.sh +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/x509/keys/ca.pem +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/x509/keys/client.pem +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/artifacts/x509/keys/server.pem +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/conftest.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/functional/constants.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/unit/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/unit/certdata.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_certguard/tests/unit/test_rhsm_check_path.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/app/migrations/0001_initial_squashed_0016_add_domain.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/app/migrations/0017_alter_filealternatecontentsource_alternatecontentsource_ptr_and_more.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/app/migrations/0018_alter_filecontent_options.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/app/migrations/0019_add_filegitremote.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/app/migrations/0020_filerepository_last_sync_details.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/app/migrations/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/app/modelresource.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/app/models.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/app/replica.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/app/serializers.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/app/settings.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/app/tasks/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/app/tasks/publishing.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/app/tasks/synchronizing.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/app/viewsets.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/manifest.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/pytest_plugin.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_acs.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_auto_publish.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_bad_sync.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_content_labels.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_crud_content_unit.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_crud_remotes.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_distributed_publication.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_domains.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_filesystem_export.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_generic_list.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_git_sync.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_labels.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_mime_types.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_overwrite_content.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_publish.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_pulp_export.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_rbac.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_remote_settings.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_sync.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_sync_optimization.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/unit/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/unit/test_git_sync.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/unit/test_safe_paths.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/unit/test_serializers.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/unit/test_sync_optimization.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/access_policy.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/authentication.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/checks.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/contexts.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/entrypoint.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/files.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/find_url.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/global_access_conditions.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/importexport.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/loggers.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/manage.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/commands/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/commands/add-signing-service.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/commands/analyze-publication.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/commands/clean-up-progress-reports.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/commands/clear-cache.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/commands/datarepair-2327.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/commands/datarepair.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/commands/dump-permissions.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/commands/dump-publications-to-fs.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/commands/handle-artifact-checksums.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/commands/list-signing-services.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/commands/migrationstat.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/commands/openapi.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/commands/optimizemigration.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/commands/rebasemigrations.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/commands/remove-plugin.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/commands/remove-signing-service.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/commands/repository-size.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/commands/reset-admin-password.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/commands/rotate-db-key.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/management/commands/shell.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0001_squashed_0090_char_to_text_field.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0091_systemid.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0092_alter_upload_options.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0093_add_info_field_repositoryversion.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0094_protect_repository_content.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0095_artifactdistribution.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0096_alter_task_logging_cid.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0097_remove_telemetry_task_schedule.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0098_pulp_labels.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0099_versions_field.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0100_upstreampulp.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0101_add_domain.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0102_add_domain_relations.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0103_alter_export_task.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0104_delete_label.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0105_abstract_uuid_gen.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0106_alter_artifactdistribution_distribution_ptr_and_more.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0107_distribution_hidden.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0108_task_versions.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0109_contentartifact_relative_path_index.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0110_apiappstatus.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0111_task_enc_args_task_enc_kwargs.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0112_alter_upstreampulp_options.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0113_headercontentguard.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0114_remove_task_args_remove_task_kwargs.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0115_compositecontentguard.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0116_alter_remoteartifact_md5_alter_remoteartifact_sha1_and_more.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0117_task_unblocked_at.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0118_task_core_task_unblock_2276a4_idx_and_more.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0119_grouprole_core_groupr_object__250e22_idx_and_more.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0120_get_url_removal.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0121_add_profile_artifacts_table.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0122_record_last_replication_timestamp.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0123_upstreampulp_q_select.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0124_task_deferred_task_immediate.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0125_openpgpdistribution_openpgpkeyring_openpgppublickey_and_more.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0126_remoteartifact_failed_at.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0127_remove_upstreampulp_pulp_label_select.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0128_domain_pulp_labels.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0129_content_pulp_labels.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0130_upstreampulp_policy.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0131_distribution_checkpoint_publication_checkpoint.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0132_alter_content_options.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0132_task_profile_options.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0133_repositoryversion_content_ids.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0134_task_insert_trigger.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0135_task_pulp_task_resources_index.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0136_delete_basedistribution.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0137_appstatus.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0138_vulnerabilityreport.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0139_task_app_lock.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0140_require_appstatus_zdu.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0141_alter_appstatus_name.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0142_task_result.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0143_require_app_lock_zdu.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0144_delete_old_appstatus.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0145_domainize_import_export.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0146_repository_retain_checkpoints.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0147_content_pulp_labels_gin.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0148_artifact_artifact_domain_size_index.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0149_distributedpublication.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0150_taskschedule_task_kwargs.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0151_upstreampulp_connect_timeout_and_more.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0152_alter_repositoryversion_content_ids.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0153_taskschedule_pulp_domain_alter_taskschedule_name_and_more.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0154_task_api_version.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0155_create_rel_path_domains.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0156_alter_contentartifact_relative_path_and_more.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0157_distribution_base_path_constraint.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0158_domain_default_content_guard.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0159_alter_contentartifact_relative_path_and_more.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0160_envvarheadercontentguard.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/0161_upstreampulp_remote_policy.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/migrations/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/mime_types.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/modelresource.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/access_policy.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/acs.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/analytics.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/base.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/domain.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/exporter.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/fields.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/generic.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/importer.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/openpgp.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/progress.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/publication.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/replica.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/repository.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/role.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/status.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/task.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/upload.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/models/vulnerability_report.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/netutil.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/openpgp.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/protobuf/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/protobuf/analytics_pb2.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/pulp_hashlib.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/pulpcore_gunicorn_application.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/redis_connection.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/replica.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/response.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/role_util.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/access_policy.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/acs.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/base.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/content.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/exporter.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/fields.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/importer.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/openpgp.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/orphans.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/progress.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/publication.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/purge.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/reclaim.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/repair.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/replica.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/repository.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/status.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/task.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/upload.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/user.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/serializers/vulnerability_report.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/settings.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/tasks/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/tasks/analytics.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/tasks/base.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/tasks/datarepair.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/tasks/export.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/tasks/importer.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/tasks/migrate.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/tasks/orphan.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/tasks/purge.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/tasks/reclaim_space.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/tasks/replica.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/tasks/repository.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/tasks/telemetry.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/tasks/test.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/tasks/upload.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/tasks/vulnerability_report.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/templates/rest_framework/api.html +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/templatetags/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/templatetags/pulp_urls.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/urls.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/util.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/views/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/views/datarepair.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/views/importer.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/views/orphans.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/views/repair.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/views/status.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/viewsets/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/viewsets/access_policy.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/viewsets/acs.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/viewsets/base.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/viewsets/content.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/viewsets/custom_filters.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/viewsets/domain.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/viewsets/exporter.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/viewsets/importer.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/viewsets/openpgp.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/viewsets/orphans.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/viewsets/publication.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/viewsets/reclaim.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/viewsets/replica.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/viewsets/repository.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/viewsets/task.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/viewsets/upload.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/viewsets/user.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/viewsets/vulnerability_report.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/workload_identity/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/workload_identity/authentication.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/workload_identity/authz.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/workload_identity/backend.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/workload_identity/config.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/workload_identity/principal.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/workload_identity/rules.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/app/wsgi.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/backends.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/cache/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/cache/cache.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/constants.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/content/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/content/authentication.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/content/entrypoint.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/content/instrumentation.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/download/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/download/base.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/download/factory.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/download/file.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/download/http.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/exceptions/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/exceptions/base.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/exceptions/plugin.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/exceptions/validation.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/filters.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/metrics.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/middleware.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/migrations.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/openapi/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/openapi/hooks.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/pagination.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/access_policy.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/actions.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/apps.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/authentication/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/cache/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/constants.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/content.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/download/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/exceptions.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/files.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/find_url.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/importexport.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/migrations.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/modelresources.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/models/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/models/role.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/publication_utils.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/pulp_hashlib.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/replica.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/repo_version_utils.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/responses.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/serializers/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/serializers/content.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/stages/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/stages/api.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/stages/artifact_stages.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/stages/content_stages.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/stages/declarative_version.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/stages/models.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/storage.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/sync.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/tasking.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/util.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/viewsets/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/plugin/viewsets/content.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/pytest_plugin.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/responses.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/saml2/backends.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tasking/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tasking/_util.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tasking/entrypoint.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tasking/kafka.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tasking/redis_locks.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tasking/redis_tasks.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tasking/redis_worker.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tasking/storage.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tasking/tasks.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tasking/worker.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_access_policy.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_api_docs.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_api_root_rewrite.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_artifact_distribution.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_auth.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_correlation_id.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_crd_artifacts.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_filter.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_login.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_openapi_schema.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_openpgp.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_replication.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_repos.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_role.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_root_endpoint.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_scoping.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_signing_service.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_status.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_task_purge.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_tasking.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_upload.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_users_groups.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_v4_status.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/test_workers.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_cdn_cache_validation.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_checkpoint.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_content_access.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_content_cache.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_content_delivery.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_content_directory.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_content_path.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_content_promotion.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_contentguard.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_crud_repos.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_distributions.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_filesystemexport.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_labels.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_migrate.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_orphans.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_pagination.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_prn.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_proxy.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_pulpimport.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_reclaim_disk_space.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_repair.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_repo_versions.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_tasks.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/api/using_plugin/test_unlinking_repo.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/assets/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/content_with_coverage.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/functional/utils.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/performance/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/performance/test_performance.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/conftest.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/content/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/content/test_heartbeat.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/download/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/download/test_downloader_base.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/download/test_downloader_factory.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/download/test_downloader_file.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/export/test_local_fs_export.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/metrics/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/metrics/conftest.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/metrics/test_aiohttp_instrumentation.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/metrics/test_django_instrumentation.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/migration/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/models/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/models/test_base.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/models/test_content.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/models/test_content_ids_migration.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/models/test_distribution.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/models/test_publication_retention.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/models/test_remote.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/models/test_repository.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/models/test_task.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/roles/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/roles/test_adjust_roles.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/roles/test_roles.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/serializers/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/serializers/test_base.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/serializers/test_fields.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/serializers/test_orphans_cleanup.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/serializers/test_pulpexport.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/serializers/test_repository.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/serializers/test_user.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/stages/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/stages/test_artifactdownloader.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/stages/test_resource_budget.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/stages/test_stages.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/tasking/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/tasking/test_delete_tasks.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/tasking/test_missing_worker_cleanup.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/tasking/test_orphan_redis_locks.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/tasking/test_redis_fetch_task.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/tasking/test_waiting_tasks_metric.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/test_cache.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/test_chunked_file.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/test_clear_cache_command.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/test_content_guard.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/test_fetch_task_hol_blocking.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/test_files.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/test_gpg_verify.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/test_import_checks.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/test_list_signing_services_command.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/test_middleware.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/test_pulp_urls.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/test_replica.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/test_settings.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/test_util.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/test_viewsets.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/test_vulnerability_report.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/viewsets/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/viewsets/test_viewset_base.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/workload_identity/__init__.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore/tests/unit/workload_identity/test_workload_identity.py +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore.egg-info/dependency_links.txt +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore.egg-info/entry_points.txt +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/pulpcore.egg-info/top_level.txt +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/setup.cfg +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/test_requirements.txt +0 -0
- {pulpcore-3.122.2 → pulpcore-3.123.0}/unittest_requirements.txt +0 -0
|
@@ -8,6 +8,36 @@
|
|
|
8
8
|
|
|
9
9
|
[//]: # (towncrier release notes start)
|
|
10
10
|
|
|
11
|
+
## 3.123.0 (2026-10-21) {: #3.123.0 }
|
|
12
|
+
|
|
13
|
+
### REST API {: #3.123.0-rest-api }
|
|
14
|
+
|
|
15
|
+
#### Bugfixes {: #3.123.0-rest-api-bugfix }
|
|
16
|
+
|
|
17
|
+
- Fixed a foreign key error when a first-time pull-through download fails digest validation; the content app now reports the intended checksum error and closes the connection.
|
|
18
|
+
- Fixed repository version serialization failing with `LookupError` when the version contains a content type that has no registered viewset.
|
|
19
|
+
|
|
20
|
+
#### Removals {: #3.123.0-rest-api-removal }
|
|
21
|
+
|
|
22
|
+
- Removed SFTP storage support because it was unreliable and could corrupt files; it also did not support object-storage redirects or on-demand downloads.
|
|
23
|
+
|
|
24
|
+
### Plugin API {: #3.123.0-plugin-api }
|
|
25
|
+
|
|
26
|
+
#### Features {: #3.123.0-plugin-api-feature }
|
|
27
|
+
|
|
28
|
+
- `SigningService.sign()` and `asign()` now accept an optional `pubkey_fingerprint` to sign with a key other than the one the signing service was created with.
|
|
29
|
+
[#7942](https://github.com/pulp/pulpcore/issues/7942)
|
|
30
|
+
|
|
31
|
+
### Pulp File {: #3.123.0-pulp-file }
|
|
32
|
+
|
|
33
|
+
No significant changes.
|
|
34
|
+
|
|
35
|
+
### Pulp Cert Guard {: #3.123.0-pulp-cert-guard }
|
|
36
|
+
|
|
37
|
+
No significant changes.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
11
41
|
## 3.122.2 (2026-10-15) {: #3.122.2 }
|
|
12
42
|
|
|
13
43
|
### REST API {: #3.122.2-rest-api }
|
|
@@ -303,6 +333,26 @@ No significant changes.
|
|
|
303
333
|
|
|
304
334
|
---
|
|
305
335
|
|
|
336
|
+
## 3.118.3 (2026-10-15) {: #3.118.3 }
|
|
337
|
+
|
|
338
|
+
### REST API {: #3.118.3-rest-api }
|
|
339
|
+
|
|
340
|
+
No significant changes.
|
|
341
|
+
|
|
342
|
+
### Plugin API {: #3.118.3-plugin-api }
|
|
343
|
+
|
|
344
|
+
No significant changes.
|
|
345
|
+
|
|
346
|
+
### Pulp File {: #3.118.3-pulp-file }
|
|
347
|
+
|
|
348
|
+
No significant changes.
|
|
349
|
+
|
|
350
|
+
### Pulp Cert Guard {: #3.118.3-pulp-cert-guard }
|
|
351
|
+
|
|
352
|
+
No significant changes.
|
|
353
|
+
|
|
354
|
+
---
|
|
355
|
+
|
|
306
356
|
## 3.118.2 (2026-10-13) {: #3.118.2 }
|
|
307
357
|
|
|
308
358
|
### REST API {: #3.118.2-rest-api }
|
|
@@ -1456,6 +1506,51 @@ No significant changes.
|
|
|
1456
1506
|
|
|
1457
1507
|
---
|
|
1458
1508
|
|
|
1509
|
+
## 3.105.23 (2026-10-15) {: #3.105.23 }
|
|
1510
|
+
|
|
1511
|
+
### REST API {: #3.105.23-rest-api }
|
|
1512
|
+
|
|
1513
|
+
No significant changes.
|
|
1514
|
+
|
|
1515
|
+
### Plugin API {: #3.105.23-plugin-api }
|
|
1516
|
+
|
|
1517
|
+
No significant changes.
|
|
1518
|
+
|
|
1519
|
+
### Pulp File {: #3.105.23-pulp-file }
|
|
1520
|
+
|
|
1521
|
+
No significant changes.
|
|
1522
|
+
|
|
1523
|
+
### Pulp Cert Guard {: #3.105.23-pulp-cert-guard }
|
|
1524
|
+
|
|
1525
|
+
No significant changes.
|
|
1526
|
+
|
|
1527
|
+
---
|
|
1528
|
+
|
|
1529
|
+
## 3.105.22 (2026-10-14) {: #3.105.22 }
|
|
1530
|
+
|
|
1531
|
+
### REST API {: #3.105.22-rest-api }
|
|
1532
|
+
|
|
1533
|
+
#### Bugfixes {: #3.105.22-rest-api-bugfix }
|
|
1534
|
+
|
|
1535
|
+
- Fixed an issue where users were able to list (but not modify) uploads they didn't have permissions to view.
|
|
1536
|
+
- Fixed vulnerability report rescans to update existing reports.
|
|
1537
|
+
- Optimized `scope_queryset` SQL queries when using a domain scoped endpoint.
|
|
1538
|
+
- Repeated object lookups in a single API request now reuse the retrieved object.
|
|
1539
|
+
|
|
1540
|
+
### Plugin API {: #3.105.22-plugin-api }
|
|
1541
|
+
|
|
1542
|
+
No significant changes.
|
|
1543
|
+
|
|
1544
|
+
### Pulp File {: #3.105.22-pulp-file }
|
|
1545
|
+
|
|
1546
|
+
No significant changes.
|
|
1547
|
+
|
|
1548
|
+
### Pulp Cert Guard {: #3.105.22-pulp-cert-guard }
|
|
1549
|
+
|
|
1550
|
+
No significant changes.
|
|
1551
|
+
|
|
1552
|
+
---
|
|
1553
|
+
|
|
1459
1554
|
## 3.105.21 (2026-10-01) {: #3.105.21 }
|
|
1460
1555
|
|
|
1461
1556
|
### REST API {: #3.105.21-rest-api }
|
|
@@ -2944,6 +3039,30 @@ No significant changes.
|
|
|
2944
3039
|
|
|
2945
3040
|
---
|
|
2946
3041
|
|
|
3042
|
+
## 3.85.32 (2026-10-14) {: #3.85.32 }
|
|
3043
|
+
|
|
3044
|
+
### REST API {: #3.85.32-rest-api }
|
|
3045
|
+
|
|
3046
|
+
#### Bugfixes {: #3.85.32-rest-api-bugfix }
|
|
3047
|
+
|
|
3048
|
+
- Fixed directory listings for published content displaying publication time instead of repository added date.
|
|
3049
|
+
- Fixed vulnerability report rescans to update existing reports.
|
|
3050
|
+
- Removed parent directory sizes and fixed wrong last modified timestamp in content app listings.
|
|
3051
|
+
|
|
3052
|
+
### Plugin API {: #3.85.32-plugin-api }
|
|
3053
|
+
|
|
3054
|
+
No significant changes.
|
|
3055
|
+
|
|
3056
|
+
### Pulp File {: #3.85.32-pulp-file }
|
|
3057
|
+
|
|
3058
|
+
No significant changes.
|
|
3059
|
+
|
|
3060
|
+
### Pulp Cert Guard {: #3.85.32-pulp-cert-guard }
|
|
3061
|
+
|
|
3062
|
+
No significant changes.
|
|
3063
|
+
|
|
3064
|
+
---
|
|
3065
|
+
|
|
2947
3066
|
## 3.85.31 (2026-09-23) {: #3.85.31 }
|
|
2948
3067
|
|
|
2949
3068
|
### REST API {: #3.85.31-rest-api }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pulpcore
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.123.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
|
|
@@ -46,7 +46,7 @@ Requires-Dist: opentelemetry-api<1.46,>=1.27.0
|
|
|
46
46
|
Requires-Dist: opentelemetry-sdk<1.46,>=1.27.0
|
|
47
47
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http<1.46,>=1.27.0
|
|
48
48
|
Requires-Dist: protobuf<8.0,>=4.21.1
|
|
49
|
-
Requires-Dist: pulp-glue<0.
|
|
49
|
+
Requires-Dist: pulp-glue<0.42,>=0.35.0
|
|
50
50
|
Requires-Dist: PyOpenSSL<27.0,>=26.3.0
|
|
51
51
|
Requires-Dist: pygtrie<2.7,>=2.5
|
|
52
52
|
Requires-Dist: psycopg[binary]<3.4,>=3.3.4
|
|
@@ -59,8 +59,6 @@ Requires-Dist: url-normalize<3.1,>=1.4.3
|
|
|
59
59
|
Requires-Dist: uuid6<=2025.0.1,>=2023.5.2
|
|
60
60
|
Requires-Dist: whitenoise<6.13.0,>=5.0
|
|
61
61
|
Requires-Dist: yarl<1.26,>=1.12.0
|
|
62
|
-
Provides-Extra: sftp
|
|
63
|
-
Requires-Dist: django-storages[sftp]==1.14.6; extra == "sftp"
|
|
64
62
|
Provides-Extra: s3
|
|
65
63
|
Requires-Dist: django-storages[boto3]==1.14.6; extra == "s3"
|
|
66
64
|
Provides-Extra: google
|
|
@@ -73,7 +71,7 @@ Provides-Extra: saml2
|
|
|
73
71
|
Requires-Dist: djangosaml2<1.13,>=1.12.0; extra == "saml2"
|
|
74
72
|
Provides-Extra: kafka
|
|
75
73
|
Requires-Dist: cloudevents==1.11.0; extra == "kafka"
|
|
76
|
-
Requires-Dist: confluent-kafka<2.
|
|
74
|
+
Requires-Dist: confluent-kafka<2.17.0,>=2.4.0; extra == "kafka"
|
|
77
75
|
Provides-Extra: diagnostics
|
|
78
76
|
Requires-Dist: pyinstrument~=5.0; extra == "diagnostics"
|
|
79
77
|
Requires-Dist: memray~=1.17; extra == "diagnostics"
|
{pulpcore-3.122.2 → pulpcore-3.123.0}/pulp_file/tests/functional/api/test_download_policies.py
RENAMED
|
@@ -54,8 +54,6 @@ def test_download_policy(
|
|
|
54
54
|
):
|
|
55
55
|
"""Test that "on_demand" and "streamed" download policies work as expected."""
|
|
56
56
|
settings = pulp_settings
|
|
57
|
-
if download_policy == "on_demand" and "SFTP" in settings.STORAGES["default"]["BACKEND"]:
|
|
58
|
-
pytest.skip("This storage technology is not properly supported.")
|
|
59
57
|
|
|
60
58
|
remote = file_remote_ssl_factory(
|
|
61
59
|
manifest_path=range_header_manifest_path, policy=download_policy
|
|
@@ -814,7 +814,7 @@ class SigningService(BaseModel):
|
|
|
814
814
|
env.update(env_vars)
|
|
815
815
|
return {**os.environ, **env}
|
|
816
816
|
|
|
817
|
-
def sign(self, filename, env_vars=None):
|
|
817
|
+
def sign(self, filename, env_vars=None, pubkey_fingerprint=None):
|
|
818
818
|
"""
|
|
819
819
|
Signs the file provided via 'filename' by invoking an external script (or executable).
|
|
820
820
|
|
|
@@ -825,6 +825,8 @@ class SigningService(BaseModel):
|
|
|
825
825
|
Args:
|
|
826
826
|
filename (str): A relative path to a file which is intended to be signed.
|
|
827
827
|
env_vars (dict): dictionary of environment variables
|
|
828
|
+
pubkey_fingerprint (str): fingerprint of the key to sign with. Defaults to the
|
|
829
|
+
signing service's own key.
|
|
828
830
|
|
|
829
831
|
Raises:
|
|
830
832
|
RuntimeError: If the return code of the script is not equal to 0.
|
|
@@ -832,6 +834,9 @@ class SigningService(BaseModel):
|
|
|
832
834
|
Returns:
|
|
833
835
|
A dictionary as validated by the validate() method.
|
|
834
836
|
"""
|
|
837
|
+
if pubkey_fingerprint:
|
|
838
|
+
env_vars = {**(env_vars or {}), "PULP_SIGNING_KEY_FINGERPRINT": pubkey_fingerprint}
|
|
839
|
+
|
|
835
840
|
completed_process = subprocess.run(
|
|
836
841
|
[self.script, filename],
|
|
837
842
|
env=self._env_variables(env_vars),
|
|
@@ -849,8 +854,11 @@ class SigningService(BaseModel):
|
|
|
849
854
|
|
|
850
855
|
return return_value
|
|
851
856
|
|
|
852
|
-
async def asign(self, filename, env_vars=None):
|
|
857
|
+
async def asign(self, filename, env_vars=None, pubkey_fingerprint=None):
|
|
853
858
|
"""Async version of sign."""
|
|
859
|
+
if pubkey_fingerprint:
|
|
860
|
+
env_vars = {**(env_vars or {}), "PULP_SIGNING_KEY_FINGERPRINT": pubkey_fingerprint}
|
|
861
|
+
|
|
854
862
|
process = await asyncio.create_subprocess_exec(
|
|
855
863
|
self.script,
|
|
856
864
|
filename,
|
|
@@ -99,31 +99,6 @@ class FileSystem(FileSystemStorage):
|
|
|
99
99
|
return str(name).replace("\\", "/")
|
|
100
100
|
|
|
101
101
|
|
|
102
|
-
try:
|
|
103
|
-
from storages.backends.sftpstorage import SFTPStorage
|
|
104
|
-
|
|
105
|
-
class PulpSFTPStorage(SFTPStorage):
|
|
106
|
-
"""Upstream class is missing the file_overwrite option."""
|
|
107
|
-
|
|
108
|
-
def get_available_name(self, name, max_length=None):
|
|
109
|
-
"""
|
|
110
|
-
Returns a filename for the file even if it already exists.
|
|
111
|
-
|
|
112
|
-
Content adressable storage must be saved with the expected filename.
|
|
113
|
-
|
|
114
|
-
Args:
|
|
115
|
-
name (string): Requested file name
|
|
116
|
-
max_length (int): Maximum length of the filename. Not used in this implementation.
|
|
117
|
-
|
|
118
|
-
Returns:
|
|
119
|
-
Name of the file.
|
|
120
|
-
"""
|
|
121
|
-
return name
|
|
122
|
-
|
|
123
|
-
except ImportError:
|
|
124
|
-
pass
|
|
125
|
-
|
|
126
|
-
|
|
127
102
|
class DomainStorage:
|
|
128
103
|
"""Storage class for FileFields to use that allows for uploading to a domain's storage."""
|
|
129
104
|
|
|
@@ -21,7 +21,6 @@ from pulpcore.app.util import get_prn
|
|
|
21
21
|
|
|
22
22
|
BACKEND_CHOICES = (
|
|
23
23
|
("pulpcore.app.models.storage.FileSystem", "Use local filesystem as storage"),
|
|
24
|
-
# ("pulpcore.app.models.storage.PulpSFTPStorage", "Use SFTP server as storage"),
|
|
25
24
|
("storages.backends.s3boto3.S3Boto3Storage", "Use Amazon S3 as storage [deprecated]"),
|
|
26
25
|
("storages.backends.s3.S3Storage", "Use Amazon S3 as storage"),
|
|
27
26
|
("storages.backends.azure_storage.AzureStorage", "Use Azure Blob as storage"),
|
|
@@ -107,36 +106,6 @@ class FileSystemSettingsSerializer(BaseSettingsClass):
|
|
|
107
106
|
directory_permissions_mode = serializers.IntegerField(allow_null=True, default=None)
|
|
108
107
|
|
|
109
108
|
|
|
110
|
-
class SFTPSettingsSerializer(BaseSettingsClass):
|
|
111
|
-
"""A Serializer for SFTP storage settings."""
|
|
112
|
-
|
|
113
|
-
STORAGE_CLASS = "pulpcore.app.models.storage.PulpSFTPStorage"
|
|
114
|
-
SETTING_MAPPING = {
|
|
115
|
-
"sftp_storage_host": "host",
|
|
116
|
-
"sftp_storage_params": "params",
|
|
117
|
-
"sftp_storage_interactive": "interactive",
|
|
118
|
-
"sftp_storage_file_mode": "file_mode",
|
|
119
|
-
"sftp_storage_dir_mode": "dir_mode",
|
|
120
|
-
"sftp_storage_uid": "uid",
|
|
121
|
-
"sftp_storage_gid": "gid",
|
|
122
|
-
"sftp_known_host_file": "known_host_file",
|
|
123
|
-
"sftp_storage_root": "root_path",
|
|
124
|
-
"media_url": "base_url",
|
|
125
|
-
"sftp_base_url": "base_url",
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
host = serializers.CharField(required=True)
|
|
129
|
-
root_path = serializers.CharField(required=True)
|
|
130
|
-
params = serializers.DictField(default={}, write_only=True)
|
|
131
|
-
file_mode = serializers.IntegerField(allow_null=True, default=None)
|
|
132
|
-
dir_mode = serializers.IntegerField(allow_null=True, default=None)
|
|
133
|
-
uid = serializers.CharField(allow_null=True, default=None)
|
|
134
|
-
gid = serializers.CharField(allow_null=True, default=None)
|
|
135
|
-
base_url = serializers.CharField(allow_null=True, default=None)
|
|
136
|
-
interactive = serializers.HiddenField(default=False)
|
|
137
|
-
known_host_file = serializers.HiddenField(default=None)
|
|
138
|
-
|
|
139
|
-
|
|
140
109
|
class TransferConfigSerializer(serializers.Serializer):
|
|
141
110
|
"""A Serializer for the boto3.S3 Transfer Config object."""
|
|
142
111
|
|
|
@@ -342,7 +311,6 @@ class StorageSettingsSerializer(serializers.Serializer):
|
|
|
342
311
|
|
|
343
312
|
STORAGE_MAPPING = {
|
|
344
313
|
"pulpcore.app.models.storage.FileSystem": FileSystemSettingsSerializer,
|
|
345
|
-
"pulpcore.app.models.storage.PulpSFTPStorage": SFTPSettingsSerializer,
|
|
346
314
|
"storages.backends.s3.S3Storage": AmazonS3SettingsSerializer,
|
|
347
315
|
"storages.backends.s3boto3.S3Boto3Storage": AmazonS3SettingsSerializer,
|
|
348
316
|
"storages.backends.azure_storage.AzureStorage": AzureSettingsSerializer,
|
|
@@ -509,19 +477,6 @@ class DomainSerializer(BackendSettingsValidator, ModelSerializer):
|
|
|
509
477
|
storage_class = data.get("storage_class") or self.instance.storage_class
|
|
510
478
|
storage_settings = data.get("storage_settings") or self.instance.storage_settings
|
|
511
479
|
self._validate_storage_backend(storage_class, storage_settings)
|
|
512
|
-
|
|
513
|
-
redirect = data.get("redirect_to_object_storage", True)
|
|
514
|
-
if self.instance and "redirect_to_object_storage" not in data:
|
|
515
|
-
redirect = self.instance.redirect_to_object_storage
|
|
516
|
-
|
|
517
|
-
if redirect and storage_class == "pulpcore.app.models.storage.PulpSFTPStorage":
|
|
518
|
-
raise serializers.ValidationError(
|
|
519
|
-
detail={
|
|
520
|
-
"redirect_to_object_storage": _(
|
|
521
|
-
"This field does not support being used with the SFTP backend."
|
|
522
|
-
)
|
|
523
|
-
}
|
|
524
|
-
)
|
|
525
480
|
return data
|
|
526
481
|
|
|
527
482
|
class Meta:
|
|
@@ -1442,8 +1442,11 @@ class Handler:
|
|
|
1442
1442
|
extra_data={"disable_retry_list": (DigestValidationError,)}
|
|
1443
1443
|
)
|
|
1444
1444
|
except DigestValidationError:
|
|
1445
|
-
|
|
1446
|
-
|
|
1445
|
+
# First-time pull-through RAs point at an unsaved ContentArtifact, so saving would
|
|
1446
|
+
# violate the foreign key.
|
|
1447
|
+
if not remote_artifact.content_artifact._state.adding:
|
|
1448
|
+
remote_artifact.failed_at = timezone.now()
|
|
1449
|
+
await remote_artifact.asave()
|
|
1447
1450
|
close_tcp_connection(request.transport._sock)
|
|
1448
1451
|
REMOTE_CONTENT_FETCH_FAILURE_COOLDOWN = settings.REMOTE_CONTENT_FETCH_FAILURE_COOLDOWN
|
|
1449
1452
|
raise RuntimeError(
|
|
@@ -195,7 +195,6 @@ def test_special_domain_creation(pulpcore_bindings, gen_object_with_cleanup, pul
|
|
|
195
195
|
# This test needs to account for which environment it is running in
|
|
196
196
|
storage_types = {
|
|
197
197
|
"pulpcore.app.models.storage.FileSystem",
|
|
198
|
-
# "pulpcore.app.models.storage.PulpSFTPStorage",
|
|
199
198
|
"storages.backends.s3boto3.S3Boto3Storage",
|
|
200
199
|
"storages.backends.s3.S3Storage",
|
|
201
200
|
"storages.backends.azure_storage.AzureStorage",
|
|
@@ -204,14 +203,6 @@ def test_special_domain_creation(pulpcore_bindings, gen_object_with_cleanup, pul
|
|
|
204
203
|
|
|
205
204
|
storage_settings = {
|
|
206
205
|
"pulpcore.app.models.storage.FileSystem": {"media_root": ""},
|
|
207
|
-
"pulpcore.app.models.storage.PulpSFTPStorage": {
|
|
208
|
-
"SFTP_STORAGE_HOST": "sftp-storage-host",
|
|
209
|
-
"SFTP_STORAGE_ROOT": "/storage/",
|
|
210
|
-
"SFTP_STORAGE_PARAMS": {
|
|
211
|
-
"username": "foo",
|
|
212
|
-
"key_filename": "/etc/pulp/certs/storage_id_ed25519",
|
|
213
|
-
},
|
|
214
|
-
},
|
|
215
206
|
"storages.backends.s3.S3Storage": {
|
|
216
207
|
"AWS_ACCESS_KEY_ID": "random",
|
|
217
208
|
"AWS_SECRET_ACCESS_KEY": "random",
|
|
@@ -247,8 +238,6 @@ def test_special_domain_creation(pulpcore_bindings, gen_object_with_cleanup, pul
|
|
|
247
238
|
"storage_class": backend,
|
|
248
239
|
"storage_settings": storage_settings[backend],
|
|
249
240
|
}
|
|
250
|
-
if backend == "pulpcore.app.models.storage.PulpSFTPStorage":
|
|
251
|
-
body["redirect_to_object_storage"] = False
|
|
252
241
|
try:
|
|
253
242
|
domain = gen_object_with_cleanup(pulpcore_bindings.DomainsApi, body)
|
|
254
243
|
except ApiException as e:
|
|
@@ -20,6 +20,7 @@ from pulpcore.content.handler import (
|
|
|
20
20
|
PathNotResolved,
|
|
21
21
|
_current_distribution,
|
|
22
22
|
)
|
|
23
|
+
from pulpcore.exceptions import DigestValidationError
|
|
23
24
|
from pulpcore.plugin.models import (
|
|
24
25
|
Artifact,
|
|
25
26
|
Content,
|
|
@@ -788,3 +789,78 @@ async def test_async_pull_through_add(ca1, monkeypatch, app_status):
|
|
|
788
789
|
await repo.adelete()
|
|
789
790
|
if task:
|
|
790
791
|
await task.adelete()
|
|
792
|
+
|
|
793
|
+
|
|
794
|
+
@pytest.fixture
|
|
795
|
+
def digest_failure_downloader(monkeypatch):
|
|
796
|
+
class FailingDownloader:
|
|
797
|
+
path = None
|
|
798
|
+
|
|
799
|
+
async def handle_data(self, data):
|
|
800
|
+
pass
|
|
801
|
+
|
|
802
|
+
async def finalize(self):
|
|
803
|
+
pass
|
|
804
|
+
|
|
805
|
+
async def run(self, extra_data=None):
|
|
806
|
+
raise DigestValidationError("actual", "expected", url="https://123/c123")
|
|
807
|
+
|
|
808
|
+
monkeypatch.setattr(Remote, "get_downloader", lambda self, **kwargs: FailingDownloader())
|
|
809
|
+
close_mock = Mock()
|
|
810
|
+
monkeypatch.setattr("pulpcore.content.handler.close_tcp_connection", close_mock)
|
|
811
|
+
return close_mock
|
|
812
|
+
|
|
813
|
+
|
|
814
|
+
def _failing_stream_args():
|
|
815
|
+
request = Mock(match_info={"path": "c123"}, http_range=Mock(start=None, stop=None))
|
|
816
|
+
response = web.StreamResponse()
|
|
817
|
+
response.write_eof = AsyncMock()
|
|
818
|
+
return request, response
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
def _assert_not_completed_cleanly(close_mock, request, response):
|
|
822
|
+
"""The connection is force-closed and the response is never finished for the client."""
|
|
823
|
+
close_mock.assert_called_once_with(request.transport._sock)
|
|
824
|
+
response.write_eof.assert_not_awaited()
|
|
825
|
+
|
|
826
|
+
|
|
827
|
+
@pytest.mark.asyncio
|
|
828
|
+
@pytest.mark.django_db
|
|
829
|
+
async def test_pull_through_digest_failure_new_content_artifact(digest_failure_downloader):
|
|
830
|
+
"""A failed digest on a first-time pull-through raises the checksum error, not IntegrityError."""
|
|
831
|
+
remote = await create_remote()
|
|
832
|
+
ca = ContentArtifact(relative_path="c123")
|
|
833
|
+
ra = RemoteArtifact(remote=remote, url="https://123/c123", content_artifact=ca, sha256="bad")
|
|
834
|
+
request, response = _failing_stream_args()
|
|
835
|
+
|
|
836
|
+
try:
|
|
837
|
+
with pytest.raises(RuntimeError, match="failed checksum validation"):
|
|
838
|
+
await Handler()._stream_remote_artifact(request, response, ra, save_artifact=True)
|
|
839
|
+
_assert_not_completed_cleanly(digest_failure_downloader, request, response)
|
|
840
|
+
assert ra.failed_at is None
|
|
841
|
+
assert not await RemoteArtifact.objects.filter(url="https://123/c123").aexists()
|
|
842
|
+
finally:
|
|
843
|
+
await remote.adelete()
|
|
844
|
+
|
|
845
|
+
|
|
846
|
+
@pytest.mark.asyncio
|
|
847
|
+
@pytest.mark.django_db
|
|
848
|
+
async def test_pull_through_digest_failure_existing_content_artifact(digest_failure_downloader):
|
|
849
|
+
"""A failed digest on an existing ContentArtifact still records failed_at."""
|
|
850
|
+
content = await create_content()
|
|
851
|
+
ca = await create_content_artifact(content)
|
|
852
|
+
remote = await create_remote()
|
|
853
|
+
ra = await RemoteArtifact.objects.acreate(
|
|
854
|
+
remote=remote, url="https://123/c123", content_artifact=ca, sha256="bad"
|
|
855
|
+
)
|
|
856
|
+
request, response = _failing_stream_args()
|
|
857
|
+
|
|
858
|
+
try:
|
|
859
|
+
with pytest.raises(RuntimeError, match="failed checksum validation"):
|
|
860
|
+
await Handler()._stream_remote_artifact(request, response, ra, save_artifact=True)
|
|
861
|
+
_assert_not_completed_cleanly(digest_failure_downloader, request, response)
|
|
862
|
+
await ra.arefresh_from_db()
|
|
863
|
+
assert ra.failed_at is not None
|
|
864
|
+
finally:
|
|
865
|
+
await content.adelete()
|
|
866
|
+
await remote.adelete()
|
|
@@ -4,7 +4,6 @@ import pytest
|
|
|
4
4
|
from rest_framework import serializers
|
|
5
5
|
|
|
6
6
|
from pulpcore.app.serializers.domain import (
|
|
7
|
-
# SFTPSettingsSerializer,
|
|
8
7
|
AmazonS3SettingsSerializer,
|
|
9
8
|
AzureSettingsSerializer,
|
|
10
9
|
# GoogleSettingsSerializer,
|
|
@@ -244,17 +243,6 @@ def test_hidden_settings(storage_class, serializer_class, all_settings):
|
|
|
244
243
|
assert hidden_fields[field] == is_set, field
|
|
245
244
|
|
|
246
245
|
|
|
247
|
-
# class TestDomainSFTPSettingsSerializer(DomainSettingsBaseMixin, TestCase):
|
|
248
|
-
# storage_class = "pulpcore.app.models.storage.PulpSFTPStorage"
|
|
249
|
-
# serializer_class = SFTPSettingsSerializer
|
|
250
|
-
# required_settings = {"host": "http://testing", "root_path": "/storage_sftp/"}
|
|
251
|
-
#
|
|
252
|
-
# @classmethod
|
|
253
|
-
# def setUpClass(cls):
|
|
254
|
-
# super().setUpClass()
|
|
255
|
-
# cls.min_domain_settings["redirect_to_object_storage"] = False
|
|
256
|
-
|
|
257
|
-
|
|
258
246
|
# class TestDomainGoogleSettingsSerializer(DomainSettingsBaseMixin, TestCase):
|
|
259
247
|
# storage_class = "storages.backends.gcloud.GoogleCloudStorage"
|
|
260
248
|
# serializer_class = GoogleSettingsSerializer
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import os
|
|
2
|
+
|
|
3
|
+
import pytest
|
|
4
|
+
|
|
5
|
+
from pulpcore.app.models.content import AsciiArmoredDetachedSigningService
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@pytest.fixture
|
|
9
|
+
def signing_service(tmp_path):
|
|
10
|
+
"""A signing service whose script reports the fingerprint and env vars it was invoked with."""
|
|
11
|
+
script = tmp_path / "echo_env.sh"
|
|
12
|
+
script.write_text(
|
|
13
|
+
'#!/bin/sh\nprintf \'{"fingerprint": "%s", "extra": "%s"}\''
|
|
14
|
+
' "$PULP_SIGNING_KEY_FINGERPRINT" "$EXTRA"\n'
|
|
15
|
+
)
|
|
16
|
+
script.chmod(0o755)
|
|
17
|
+
return AsciiArmoredDetachedSigningService(
|
|
18
|
+
name="echo-env",
|
|
19
|
+
public_key="public-key",
|
|
20
|
+
pubkey_fingerprint="SERVICE_KEY",
|
|
21
|
+
script=str(script),
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def test_sign_defaults_to_service_key(signing_service):
|
|
26
|
+
assert signing_service.sign(os.devnull)["fingerprint"] == "SERVICE_KEY"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def test_sign_override_replaces_key_and_keeps_env_vars(signing_service):
|
|
30
|
+
return_value = signing_service.sign(
|
|
31
|
+
os.devnull, env_vars={"EXTRA": "kept"}, pubkey_fingerprint="OTHER_KEY"
|
|
32
|
+
)
|
|
33
|
+
assert return_value == {"fingerprint": "OTHER_KEY", "extra": "kept"}
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@pytest.mark.asyncio
|
|
37
|
+
async def test_asign_override_replaces_key(signing_service):
|
|
38
|
+
return_value = await signing_service.asign(os.devnull, pubkey_fingerprint="OTHER_KEY")
|
|
39
|
+
assert return_value["fingerprint"] == "OTHER_KEY"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pulpcore
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.123.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
|
|
@@ -46,7 +46,7 @@ Requires-Dist: opentelemetry-api<1.46,>=1.27.0
|
|
|
46
46
|
Requires-Dist: opentelemetry-sdk<1.46,>=1.27.0
|
|
47
47
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http<1.46,>=1.27.0
|
|
48
48
|
Requires-Dist: protobuf<8.0,>=4.21.1
|
|
49
|
-
Requires-Dist: pulp-glue<0.
|
|
49
|
+
Requires-Dist: pulp-glue<0.42,>=0.35.0
|
|
50
50
|
Requires-Dist: PyOpenSSL<27.0,>=26.3.0
|
|
51
51
|
Requires-Dist: pygtrie<2.7,>=2.5
|
|
52
52
|
Requires-Dist: psycopg[binary]<3.4,>=3.3.4
|
|
@@ -59,8 +59,6 @@ Requires-Dist: url-normalize<3.1,>=1.4.3
|
|
|
59
59
|
Requires-Dist: uuid6<=2025.0.1,>=2023.5.2
|
|
60
60
|
Requires-Dist: whitenoise<6.13.0,>=5.0
|
|
61
61
|
Requires-Dist: yarl<1.26,>=1.12.0
|
|
62
|
-
Provides-Extra: sftp
|
|
63
|
-
Requires-Dist: django-storages[sftp]==1.14.6; extra == "sftp"
|
|
64
62
|
Provides-Extra: s3
|
|
65
63
|
Requires-Dist: django-storages[boto3]==1.14.6; extra == "s3"
|
|
66
64
|
Provides-Extra: google
|
|
@@ -73,7 +71,7 @@ Provides-Extra: saml2
|
|
|
73
71
|
Requires-Dist: djangosaml2<1.13,>=1.12.0; extra == "saml2"
|
|
74
72
|
Provides-Extra: kafka
|
|
75
73
|
Requires-Dist: cloudevents==1.11.0; extra == "kafka"
|
|
76
|
-
Requires-Dist: confluent-kafka<2.
|
|
74
|
+
Requires-Dist: confluent-kafka<2.17.0,>=2.4.0; extra == "kafka"
|
|
77
75
|
Provides-Extra: diagnostics
|
|
78
76
|
Requires-Dist: pyinstrument~=5.0; extra == "diagnostics"
|
|
79
77
|
Requires-Dist: memray~=1.17; extra == "diagnostics"
|
|
@@ -485,6 +485,7 @@ pulpcore/tests/unit/test_middleware.py
|
|
|
485
485
|
pulpcore/tests/unit/test_pulp_urls.py
|
|
486
486
|
pulpcore/tests/unit/test_replica.py
|
|
487
487
|
pulpcore/tests/unit/test_settings.py
|
|
488
|
+
pulpcore/tests/unit/test_signing_service.py
|
|
488
489
|
pulpcore/tests/unit/test_util.py
|
|
489
490
|
pulpcore/tests/unit/test_viewsets.py
|
|
490
491
|
pulpcore/tests/unit/test_vulnerability_report.py
|
|
@@ -25,7 +25,7 @@ opentelemetry-api<1.46,>=1.27.0
|
|
|
25
25
|
opentelemetry-sdk<1.46,>=1.27.0
|
|
26
26
|
opentelemetry-exporter-otlp-proto-http<1.46,>=1.27.0
|
|
27
27
|
protobuf<8.0,>=4.21.1
|
|
28
|
-
pulp-glue<0.
|
|
28
|
+
pulp-glue<0.42,>=0.35.0
|
|
29
29
|
PyOpenSSL<27.0,>=26.3.0
|
|
30
30
|
pygtrie<2.7,>=2.5
|
|
31
31
|
psycopg[binary]<3.4,>=3.3.4
|
|
@@ -51,7 +51,7 @@ django-storages[google]==1.14.6
|
|
|
51
51
|
|
|
52
52
|
[kafka]
|
|
53
53
|
cloudevents==1.11.0
|
|
54
|
-
confluent-kafka<2.
|
|
54
|
+
confluent-kafka<2.17.0,>=2.4.0
|
|
55
55
|
|
|
56
56
|
[prometheus]
|
|
57
57
|
django-prometheus
|
|
@@ -62,8 +62,5 @@ django-storages[boto3]==1.14.6
|
|
|
62
62
|
[saml2]
|
|
63
63
|
djangosaml2<1.13,>=1.12.0
|
|
64
64
|
|
|
65
|
-
[sftp]
|
|
66
|
-
django-storages[sftp]==1.14.6
|
|
67
|
-
|
|
68
65
|
[uvloop]
|
|
69
66
|
uvloop<0.24,>=0.20
|