pulpcore 3.121.3__tar.gz → 3.122.1__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.121.3 → pulpcore-3.122.1}/CHANGES.md +93 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/PKG-INFO +3 -3
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/app/__init__.py +1 -1
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/app/__init__.py +1 -1
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/apps.py +1 -1
- pulpcore-3.122.1/pulpcore/app/management/commands/clear-cache.py +108 -0
- pulpcore-3.122.1/pulpcore/app/migrations/0161_upstreampulp_remote_policy.py +34 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/publication.py +3 -3
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/replica.py +3 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/repository.py +37 -2
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/replica.py +12 -1
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/settings.py +1 -1
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/tasks/export.py +7 -2
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/tasks/orphan.py +14 -1
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/tasks/replica.py +20 -12
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/tasks/repository.py +18 -2
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/util.py +42 -8
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/viewsets/content.py +3 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/viewsets/repository.py +4 -8
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/cache/cache.py +18 -9
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/content/handler.py +96 -6
- pulpcore-3.122.1/pulpcore/pagination.py +78 -0
- pulpcore-3.122.1/pulpcore/saml2/backends.py +75 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_replication.py +75 -0
- pulpcore-3.122.1/pulpcore/tests/functional/api/using_plugin/test_cdn_cache_validation.py +267 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_orphans.py +7 -1
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_pulpimport.py +13 -4
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_repo_versions.py +71 -0
- pulpcore-3.122.1/pulpcore/tests/unit/export/test_local_fs_export.py +48 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/models/test_publication_retention.py +9 -10
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/models/test_repository.py +45 -1
- pulpcore-3.122.1/pulpcore/tests/unit/test_clear_cache_command.py +124 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/test_gpg_verify.py +61 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/test_replica.py +34 -1
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore.egg-info/PKG-INFO +3 -3
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore.egg-info/SOURCES.txt +7 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore.egg-info/requires.txt +2 -2
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pyproject.toml +4 -4
- {pulpcore-3.121.3 → pulpcore-3.122.1}/CODE_OF_CONDUCT.md +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/COMMITMENT +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/CONTRIBUTING.md +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/COPYRIGHT +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/LICENSE +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/MANIFEST.in +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/README.md +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/ci_requirements.txt +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/functest_requirements.txt +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/manage.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/app/migrations/0001_initial.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/app/migrations/0002_alter_rhsmcertguard_contentguard_ptr_and_more.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/app/migrations/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/app/models.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/app/serializers.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/app/viewsets.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/pytest_plugin.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/rhsm/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/rhsm/rhsm_check_path.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/api/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/api/test_rhsm_certguard.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/api/test_x509_certguard.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/rhsm/katello-default-ca.crt +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/rhsm/katello-default-ca.key +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/rhsm/trusted_but_expired.pem +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/rhsm/uber.cert +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/rhsm/untrusted_cert-key.pem +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/rhsm/untrusted_cert.pem +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/rhsm/v1/1514454871848760713-key.pem +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/rhsm/v1/1514454871848760713.pem +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/rhsm/v1/159442575569388840-key.pem +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/rhsm/v1/159442575569388840.pem +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/rhsm/v3/4260035510644027985-key.pem +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/rhsm/v3/4260035510644027985.pem +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/rhsm/v3/5527980418107729172-key.pem +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/rhsm/v3/5527980418107729172.pem +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/certificates/ca.pem +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/genca.sh +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/keys/ca.pem +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/x509/certificates/ca.pem +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/x509/certificates/client.pem +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/x509/certificates/server.pem +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/x509/certificates/un_urlencoded_cert.txt +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/x509/certificates/untrusted_client.pem +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/x509/genall.sh +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/x509/genca.sh +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/x509/genclient.sh +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/x509/gensrv.sh +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/x509/keys/ca.pem +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/x509/keys/client.pem +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/artifacts/x509/keys/server.pem +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/conftest.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/functional/constants.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/unit/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/unit/certdata.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_certguard/tests/unit/test_rhsm_check_path.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/app/migrations/0001_initial_squashed_0016_add_domain.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/app/migrations/0017_alter_filealternatecontentsource_alternatecontentsource_ptr_and_more.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/app/migrations/0018_alter_filecontent_options.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/app/migrations/0019_add_filegitremote.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/app/migrations/0020_filerepository_last_sync_details.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/app/migrations/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/app/modelresource.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/app/models.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/app/replica.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/app/serializers.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/app/settings.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/app/tasks/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/app/tasks/publishing.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/app/tasks/synchronizing.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/app/viewsets.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/manifest.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/pytest_plugin.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/test_acs.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/test_auto_publish.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/test_bad_sync.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/test_content_labels.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/test_crud_content_unit.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/test_crud_remotes.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/test_distributed_publication.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/test_domains.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/test_download_policies.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/test_filesystem_export.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/test_generic_list.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/test_git_sync.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/test_labels.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/test_mime_types.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/test_overwrite_content.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/test_publish.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/test_pulp_export.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/test_rbac.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/test_remote_settings.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/test_sync.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/functional/api/test_sync_optimization.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/unit/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/unit/test_git_sync.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/unit/test_safe_paths.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/unit/test_serializers.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulp_file/tests/unit/test_sync_optimization.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/access_policy.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/authentication.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/checks.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/contexts.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/entrypoint.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/files.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/find_url.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/global_access_conditions.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/importexport.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/loggers.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/manage.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/management/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/management/commands/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/management/commands/add-signing-service.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/management/commands/analyze-publication.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/management/commands/clean-up-progress-reports.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/management/commands/datarepair-2327.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/management/commands/datarepair.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/management/commands/dump-permissions.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/management/commands/dump-publications-to-fs.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/management/commands/handle-artifact-checksums.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/management/commands/list-signing-services.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/management/commands/migrationstat.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/management/commands/openapi.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/management/commands/optimizemigration.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/management/commands/rebasemigrations.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/management/commands/remove-plugin.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/management/commands/remove-signing-service.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/management/commands/repository-size.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/management/commands/reset-admin-password.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/management/commands/rotate-db-key.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/management/commands/shell.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0001_squashed_0090_char_to_text_field.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0091_systemid.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0092_alter_upload_options.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0093_add_info_field_repositoryversion.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0094_protect_repository_content.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0095_artifactdistribution.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0096_alter_task_logging_cid.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0097_remove_telemetry_task_schedule.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0098_pulp_labels.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0099_versions_field.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0100_upstreampulp.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0101_add_domain.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0102_add_domain_relations.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0103_alter_export_task.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0104_delete_label.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0105_abstract_uuid_gen.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0106_alter_artifactdistribution_distribution_ptr_and_more.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0107_distribution_hidden.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0108_task_versions.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0109_contentartifact_relative_path_index.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0110_apiappstatus.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0111_task_enc_args_task_enc_kwargs.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0112_alter_upstreampulp_options.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0113_headercontentguard.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0114_remove_task_args_remove_task_kwargs.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0115_compositecontentguard.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0116_alter_remoteartifact_md5_alter_remoteartifact_sha1_and_more.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0117_task_unblocked_at.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0118_task_core_task_unblock_2276a4_idx_and_more.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0119_grouprole_core_groupr_object__250e22_idx_and_more.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0120_get_url_removal.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0121_add_profile_artifacts_table.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0122_record_last_replication_timestamp.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0123_upstreampulp_q_select.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0124_task_deferred_task_immediate.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0125_openpgpdistribution_openpgpkeyring_openpgppublickey_and_more.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0126_remoteartifact_failed_at.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0127_remove_upstreampulp_pulp_label_select.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0128_domain_pulp_labels.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0129_content_pulp_labels.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0130_upstreampulp_policy.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0131_distribution_checkpoint_publication_checkpoint.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0132_alter_content_options.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0132_task_profile_options.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0133_repositoryversion_content_ids.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0134_task_insert_trigger.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0135_task_pulp_task_resources_index.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0136_delete_basedistribution.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0137_appstatus.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0138_vulnerabilityreport.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0139_task_app_lock.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0140_require_appstatus_zdu.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0141_alter_appstatus_name.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0142_task_result.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0143_require_app_lock_zdu.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0144_delete_old_appstatus.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0145_domainize_import_export.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0146_repository_retain_checkpoints.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0147_content_pulp_labels_gin.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0148_artifact_artifact_domain_size_index.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0149_distributedpublication.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0150_taskschedule_task_kwargs.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0151_upstreampulp_connect_timeout_and_more.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0152_alter_repositoryversion_content_ids.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0153_taskschedule_pulp_domain_alter_taskschedule_name_and_more.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0154_task_api_version.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0155_create_rel_path_domains.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0156_alter_contentartifact_relative_path_and_more.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0157_distribution_base_path_constraint.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0158_domain_default_content_guard.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0159_alter_contentartifact_relative_path_and_more.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/0160_envvarheadercontentguard.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/migrations/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/mime_types.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/modelresource.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/access_policy.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/acs.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/analytics.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/base.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/content.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/domain.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/exporter.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/fields.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/generic.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/importer.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/openpgp.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/progress.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/role.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/status.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/storage.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/task.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/upload.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/models/vulnerability_report.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/netutil.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/openpgp.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/protobuf/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/protobuf/analytics_pb2.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/pulp_hashlib.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/pulpcore_gunicorn_application.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/redis_connection.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/replica.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/response.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/role_util.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/access_policy.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/acs.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/base.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/content.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/domain.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/exporter.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/fields.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/importer.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/openpgp.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/orphans.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/progress.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/publication.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/purge.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/reclaim.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/repair.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/repository.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/status.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/task.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/upload.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/user.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/serializers/vulnerability_report.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/tasks/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/tasks/analytics.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/tasks/base.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/tasks/datarepair.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/tasks/importer.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/tasks/migrate.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/tasks/purge.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/tasks/reclaim_space.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/tasks/telemetry.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/tasks/test.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/tasks/upload.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/tasks/vulnerability_report.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/templates/rest_framework/api.html +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/templatetags/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/templatetags/pulp_urls.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/urls.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/views/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/views/datarepair.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/views/importer.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/views/orphans.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/views/repair.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/views/status.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/viewsets/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/viewsets/access_policy.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/viewsets/acs.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/viewsets/base.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/viewsets/custom_filters.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/viewsets/domain.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/viewsets/exporter.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/viewsets/importer.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/viewsets/openpgp.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/viewsets/orphans.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/viewsets/publication.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/viewsets/reclaim.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/viewsets/replica.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/viewsets/task.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/viewsets/upload.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/viewsets/user.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/viewsets/vulnerability_report.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/workload_identity/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/workload_identity/authentication.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/workload_identity/authz.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/workload_identity/backend.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/workload_identity/config.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/workload_identity/principal.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/workload_identity/rules.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/app/wsgi.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/backends.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/cache/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/constants.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/content/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/content/authentication.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/content/entrypoint.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/content/instrumentation.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/download/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/download/base.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/download/factory.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/download/file.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/download/http.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/exceptions/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/exceptions/base.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/exceptions/plugin.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/exceptions/validation.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/filters.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/metrics.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/middleware.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/migrations.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/openapi/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/openapi/hooks.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/access_policy.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/actions.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/apps.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/authentication/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/cache/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/constants.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/content.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/download/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/exceptions.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/files.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/find_url.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/importexport.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/migrations.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/modelresources.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/models/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/models/role.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/publication_utils.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/pulp_hashlib.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/replica.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/repo_version_utils.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/responses.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/serializers/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/serializers/content.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/stages/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/stages/api.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/stages/artifact_stages.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/stages/content_stages.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/stages/declarative_version.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/stages/models.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/storage.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/sync.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/tasking.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/util.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/viewsets/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/plugin/viewsets/content.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/pytest_plugin.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/responses.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tasking/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tasking/_util.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tasking/entrypoint.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tasking/kafka.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tasking/redis_locks.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tasking/redis_tasks.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tasking/redis_worker.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tasking/storage.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tasking/tasks.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tasking/worker.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_access_policy.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_api_docs.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_api_root_rewrite.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_artifact_distribution.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_auth.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_correlation_id.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_crd_artifacts.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_crud_domains.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_filter.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_login.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_openapi_schema.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_openpgp.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_repos.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_role.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_root_endpoint.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_scoping.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_signing_service.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_status.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_task_purge.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_tasking.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_upload.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_users_groups.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_v4_status.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/test_workers.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_checkpoint.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_content_access.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_content_cache.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_content_delivery.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_content_directory.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_content_path.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_content_promotion.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_contentguard.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_crud_repos.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_distributions.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_filesystemexport.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_labels.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_migrate.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_pagination.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_prn.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_proxy.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_reclaim_disk_space.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_repair.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_tasks.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/api/using_plugin/test_unlinking_repo.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/assets/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/content_with_coverage.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/functional/utils.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/performance/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/performance/test_performance.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/conftest.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/content/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/content/test_handler.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/content/test_heartbeat.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/download/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/download/test_downloader_base.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/download/test_downloader_factory.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/download/test_downloader_file.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/metrics/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/metrics/conftest.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/metrics/test_aiohttp_instrumentation.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/metrics/test_django_instrumentation.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/migration/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/models/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/models/test_base.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/models/test_content.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/models/test_content_ids_migration.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/models/test_distribution.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/models/test_remote.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/models/test_task.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/roles/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/roles/test_adjust_roles.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/roles/test_roles.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/serializers/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/serializers/test_base.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/serializers/test_domain.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/serializers/test_fields.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/serializers/test_orphans_cleanup.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/serializers/test_pulpexport.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/serializers/test_repository.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/serializers/test_user.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/stages/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/stages/test_artifactdownloader.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/stages/test_resource_budget.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/stages/test_stages.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/tasking/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/tasking/test_delete_tasks.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/tasking/test_missing_worker_cleanup.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/tasking/test_orphan_redis_locks.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/tasking/test_redis_fetch_task.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/tasking/test_waiting_tasks_metric.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/test_cache.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/test_chunked_file.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/test_content_guard.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/test_fetch_task_hol_blocking.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/test_files.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/test_import_checks.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/test_list_signing_services_command.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/test_middleware.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/test_pulp_urls.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/test_settings.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/test_util.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/test_viewsets.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/test_vulnerability_report.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/viewsets/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/viewsets/test_viewset_base.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/workload_identity/__init__.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore/tests/unit/workload_identity/test_workload_identity.py +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore.egg-info/dependency_links.txt +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore.egg-info/entry_points.txt +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/pulpcore.egg-info/top_level.txt +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/setup.cfg +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/test_requirements.txt +0 -0
- {pulpcore-3.121.3 → pulpcore-3.122.1}/unittest_requirements.txt +0 -0
|
@@ -8,6 +8,71 @@
|
|
|
8
8
|
|
|
9
9
|
[//]: # (towncrier release notes start)
|
|
10
10
|
|
|
11
|
+
## 3.122.1 (2026-10-15) {: #3.122.1 }
|
|
12
|
+
|
|
13
|
+
### REST API {: #3.122.1-rest-api }
|
|
14
|
+
|
|
15
|
+
#### Bugfixes {: #3.122.1-rest-api-bugfix }
|
|
16
|
+
|
|
17
|
+
- Fixed repository version serialization failing with `LookupError` when the version contains a content type that has no registered viewset.
|
|
18
|
+
|
|
19
|
+
### Plugin API {: #3.122.1-plugin-api }
|
|
20
|
+
|
|
21
|
+
No significant changes.
|
|
22
|
+
|
|
23
|
+
### Pulp File {: #3.122.1-pulp-file }
|
|
24
|
+
|
|
25
|
+
No significant changes.
|
|
26
|
+
|
|
27
|
+
### Pulp Cert Guard {: #3.122.1-pulp-cert-guard }
|
|
28
|
+
|
|
29
|
+
No significant changes.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 3.122.0 (2026-10-14) {: #3.122.0 }
|
|
34
|
+
|
|
35
|
+
### REST API {: #3.122.0-rest-api }
|
|
36
|
+
|
|
37
|
+
#### Features {: #3.122.0-rest-api-feature }
|
|
38
|
+
|
|
39
|
+
- 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.
|
|
40
|
+
[#7929](https://github.com/pulp/pulpcore/issues/7929)
|
|
41
|
+
- Added a `pulpcore-manager clear-cache` command to clear cached content responses globally or by repository, distribution, or base path.
|
|
42
|
+
[#8165](https://github.com/pulp/pulpcore/issues/8165)
|
|
43
|
+
- Added `UpstreamPulp.remote_policy` so remotes created during replication can use `on_demand` or `streamed` instead of defaulting to `immediate`.
|
|
44
|
+
- Added an authentication backend for SAML2 attribute based authorization.
|
|
45
|
+
|
|
46
|
+
#### Bugfixes {: #3.122.0-rest-api-bugfix }
|
|
47
|
+
|
|
48
|
+
- Use repository-version summaries to speed unfiltered content-list pagination counts.
|
|
49
|
+
[#PULP-1996](https://github.com/pulp/pulpcore/issues/PULP-1996)
|
|
50
|
+
- Fixed a bug where filesystem export trying to use local on demand files can be tricked breaking out of `ALLOWED_IMPORT_PATHS`.
|
|
51
|
+
- Fixed an issue where users were able to list (but not modify) uploads they didn't have permissions to view.
|
|
52
|
+
- Fixed directory listings for published content displaying publication time instead of repository added date.
|
|
53
|
+
- Optimized `scope_queryset` SQL queries when using a domain scoped endpoint.
|
|
54
|
+
- Orphan cleanup with `content_hrefs` now deletes only artifacts associated with the selected content.
|
|
55
|
+
- Removed parent directory sizes and fixed wrong last modified timestamp in content app listings.
|
|
56
|
+
- Repeated object lookups in a single API request now reuse the retrieved object.
|
|
57
|
+
- Reverted support for returning 304 responses to content requests with conditional headers
|
|
58
|
+
because of a breaking change in the internal plugin's API.
|
|
59
|
+
|
|
60
|
+
### Plugin API {: #3.122.0-plugin-api }
|
|
61
|
+
|
|
62
|
+
#### Features {: #3.122.0-plugin-api-feature }
|
|
63
|
+
|
|
64
|
+
- Made `add_and_remove` and `aadd_and_remove` return the serialized newly created repository version as the task result.
|
|
65
|
+
|
|
66
|
+
### Pulp File {: #3.122.0-pulp-file }
|
|
67
|
+
|
|
68
|
+
No significant changes.
|
|
69
|
+
|
|
70
|
+
### Pulp Cert Guard {: #3.122.0-pulp-cert-guard }
|
|
71
|
+
|
|
72
|
+
No significant changes.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
11
76
|
## 3.121.3 (2026-10-09) {: #3.121.3 }
|
|
12
77
|
|
|
13
78
|
### REST API {: #3.121.3-rest-api }
|
|
@@ -218,6 +283,34 @@ No significant changes.
|
|
|
218
283
|
|
|
219
284
|
---
|
|
220
285
|
|
|
286
|
+
## 3.118.2 (2026-10-13) {: #3.118.2 }
|
|
287
|
+
|
|
288
|
+
### REST API {: #3.118.2-rest-api }
|
|
289
|
+
|
|
290
|
+
#### Bugfixes {: #3.118.2-rest-api-bugfix }
|
|
291
|
+
|
|
292
|
+
- Avoid loading repository version content IDs when serving fallback content during the grace period.
|
|
293
|
+
- Fixed an issue where users were able to list (but not modify) uploads they didn't have permissions to view.
|
|
294
|
+
- Fixed directory listings for published content displaying publication time instead of repository added date.
|
|
295
|
+
- Fixed vulnerability report rescans to update existing reports.
|
|
296
|
+
- Optimized `scope_queryset` SQL queries when using a domain scoped endpoint.
|
|
297
|
+
- Removed parent directory sizes and fixed wrong last modified timestamp in content app listings.
|
|
298
|
+
- Repeated object lookups in a single API request now reuse the retrieved object.
|
|
299
|
+
|
|
300
|
+
### Plugin API {: #3.118.2-plugin-api }
|
|
301
|
+
|
|
302
|
+
No significant changes.
|
|
303
|
+
|
|
304
|
+
### Pulp File {: #3.118.2-pulp-file }
|
|
305
|
+
|
|
306
|
+
No significant changes.
|
|
307
|
+
|
|
308
|
+
### Pulp Cert Guard {: #3.118.2-pulp-cert-guard }
|
|
309
|
+
|
|
310
|
+
No significant changes.
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
221
314
|
## 3.118.1 (2026-09-17) {: #3.118.1 }
|
|
222
315
|
|
|
223
316
|
### REST API {: #3.118.1-rest-api }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pulpcore
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.122.1
|
|
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
|
|
@@ -27,7 +27,7 @@ Requires-Dist: click<8.6,>=8.1.0
|
|
|
27
27
|
Requires-Dist: cryptography<51.0,>=49.0.0
|
|
28
28
|
Requires-Dist: pyjwt<3,>=2.4
|
|
29
29
|
Requires-Dist: Django<5.3,>=5.2.0
|
|
30
|
-
Requires-Dist: django-filter<=26.
|
|
30
|
+
Requires-Dist: django-filter<=26.2,>=24.3
|
|
31
31
|
Requires-Dist: django-guid<3.7,>=3.4.0
|
|
32
32
|
Requires-Dist: django-import-export<5.0,>=2.9
|
|
33
33
|
Requires-Dist: django-lifecycle<=1.3.0,>=1.0
|
|
@@ -78,7 +78,7 @@ Provides-Extra: diagnostics
|
|
|
78
78
|
Requires-Dist: pyinstrument~=5.0; extra == "diagnostics"
|
|
79
79
|
Requires-Dist: memray~=1.17; extra == "diagnostics"
|
|
80
80
|
Provides-Extra: uvloop
|
|
81
|
-
Requires-Dist: uvloop<0.
|
|
81
|
+
Requires-Dist: uvloop<0.24,>=0.20; extra == "uvloop"
|
|
82
82
|
Dynamic: license-file
|
|
83
83
|
|
|
84
84
|
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
from gettext import gettext as _
|
|
2
|
+
|
|
3
|
+
from django.conf import settings
|
|
4
|
+
from django.core.management import BaseCommand, CommandError
|
|
5
|
+
from django.db.models import Q
|
|
6
|
+
from rest_framework.exceptions import ValidationError
|
|
7
|
+
|
|
8
|
+
from pulpcore.app.models import Distribution, Repository
|
|
9
|
+
from pulpcore.app.util import cache_key, resolve_prn
|
|
10
|
+
from pulpcore.cache import Cache
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def resolve_resources(resources, model):
|
|
14
|
+
"""Resolve resource names and PRNs to a queryset filter."""
|
|
15
|
+
pks = []
|
|
16
|
+
names = []
|
|
17
|
+
for resource in resources:
|
|
18
|
+
if resource.startswith("prn:"):
|
|
19
|
+
try:
|
|
20
|
+
resource_model, pk = resolve_prn(resource)
|
|
21
|
+
except ValidationError as exc:
|
|
22
|
+
raise CommandError(str(exc))
|
|
23
|
+
if not issubclass(resource_model, model):
|
|
24
|
+
raise CommandError(f"{resource} is not a {model.__name__} PRN.")
|
|
25
|
+
pks.append(pk)
|
|
26
|
+
else:
|
|
27
|
+
names.append(resource)
|
|
28
|
+
return Q(pk__in=pks) | Q(name__in=names)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class Command(BaseCommand):
|
|
32
|
+
"""Clear cached content responses."""
|
|
33
|
+
|
|
34
|
+
help = "Clear cached content responses, optionally for repositories or distributions."
|
|
35
|
+
|
|
36
|
+
def add_arguments(self, parser):
|
|
37
|
+
"""Set up arguments."""
|
|
38
|
+
parser.add_argument(
|
|
39
|
+
"--repository",
|
|
40
|
+
action="append",
|
|
41
|
+
help=_("Repository name or PRN to clear. May be specified more than once."),
|
|
42
|
+
)
|
|
43
|
+
parser.add_argument(
|
|
44
|
+
"--distribution",
|
|
45
|
+
action="append",
|
|
46
|
+
help=_("Distribution name or PRN to clear. May be specified more than once."),
|
|
47
|
+
)
|
|
48
|
+
parser.add_argument(
|
|
49
|
+
"--base-path",
|
|
50
|
+
action="append",
|
|
51
|
+
help=_("Base path to clear directly. May be specified more than once."),
|
|
52
|
+
)
|
|
53
|
+
parser.add_argument(
|
|
54
|
+
"--domain",
|
|
55
|
+
help=_("Domain name to clear or use with resource names."),
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
def handle(self, *args, **options):
|
|
59
|
+
"""Clear the selected content cache entries."""
|
|
60
|
+
if not settings.CACHE_ENABLED:
|
|
61
|
+
raise CommandError("Content caching is not enabled.")
|
|
62
|
+
|
|
63
|
+
repositories = options["repository"]
|
|
64
|
+
distributions = options["distribution"]
|
|
65
|
+
base_paths = options["base_path"]
|
|
66
|
+
if isinstance(repositories, str):
|
|
67
|
+
repositories = [repositories]
|
|
68
|
+
if isinstance(distributions, str):
|
|
69
|
+
distributions = [distributions]
|
|
70
|
+
if isinstance(base_paths, str):
|
|
71
|
+
base_paths = [base_paths]
|
|
72
|
+
domain = options["domain"]
|
|
73
|
+
distribution_queryset = Distribution.objects.all()
|
|
74
|
+
if base_paths:
|
|
75
|
+
if settings.DOMAIN_ENABLED and not domain:
|
|
76
|
+
raise CommandError(
|
|
77
|
+
"--domain is required with --base-path when domains are enabled."
|
|
78
|
+
)
|
|
79
|
+
base_keys = cache_key(base_paths, domain=domain)
|
|
80
|
+
elif repositories:
|
|
81
|
+
selected_repositories = Repository.objects.filter(
|
|
82
|
+
resolve_resources(repositories, Repository)
|
|
83
|
+
)
|
|
84
|
+
distribution_queryset = distribution_queryset.filter(
|
|
85
|
+
Q(repository__in=selected_repositories)
|
|
86
|
+
| Q(repository_version__repository__in=selected_repositories)
|
|
87
|
+
| Q(publication__repository_version__repository__in=selected_repositories)
|
|
88
|
+
)
|
|
89
|
+
elif distributions:
|
|
90
|
+
distribution_queryset = distribution_queryset.filter(
|
|
91
|
+
resolve_resources(distributions, Distribution)
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
if not base_paths:
|
|
95
|
+
if domain:
|
|
96
|
+
distribution_queryset = distribution_queryset.filter(pulp_domain__name=domain)
|
|
97
|
+
if settings.DOMAIN_ENABLED:
|
|
98
|
+
base_keys = [
|
|
99
|
+
cache_key(distribution.base_path, domain=distribution.pulp_domain)
|
|
100
|
+
for distribution in distribution_queryset.select_related("pulp_domain")
|
|
101
|
+
]
|
|
102
|
+
else:
|
|
103
|
+
base_keys = list(distribution_queryset.values_list("base_path", flat=True))
|
|
104
|
+
|
|
105
|
+
cleared_entries = Cache().delete(base_key=base_keys) if base_keys else 0
|
|
106
|
+
self.stdout.write(
|
|
107
|
+
f"Cleared {cleared_entries} cache entr{'y' if cleared_entries == 1 else 'ies'}."
|
|
108
|
+
)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
from django.db import migrations, models
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class Migration(migrations.Migration):
|
|
5
|
+
|
|
6
|
+
dependencies = [
|
|
7
|
+
("core", "0160_envvarheadercontentguard"),
|
|
8
|
+
]
|
|
9
|
+
|
|
10
|
+
operations = [
|
|
11
|
+
migrations.AddField(
|
|
12
|
+
model_name="upstreampulp",
|
|
13
|
+
name="remote_policy",
|
|
14
|
+
field=models.TextField(
|
|
15
|
+
choices=[
|
|
16
|
+
("immediate", "When syncing, download all metadata and content now."),
|
|
17
|
+
(
|
|
18
|
+
"on_demand",
|
|
19
|
+
"When syncing, download metadata, but do not download content now. "
|
|
20
|
+
"Instead, download content as clients request it, and save it in Pulp "
|
|
21
|
+
"to be served for future client requests.",
|
|
22
|
+
),
|
|
23
|
+
(
|
|
24
|
+
"streamed",
|
|
25
|
+
"When syncing, download metadata, but do not download content now. "
|
|
26
|
+
"Instead,download content as clients request it, but never save it in "
|
|
27
|
+
"Pulp. This causes future requests for that same content to have to be "
|
|
28
|
+
"downloaded again.",
|
|
29
|
+
),
|
|
30
|
+
],
|
|
31
|
+
null=True,
|
|
32
|
+
),
|
|
33
|
+
),
|
|
34
|
+
]
|
|
@@ -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
|
|
@@ -894,7 +894,7 @@ class Distribution(MasterModel):
|
|
|
894
894
|
.first()
|
|
895
895
|
)
|
|
896
896
|
if ca is not None:
|
|
897
|
-
return ca
|
|
897
|
+
return ca, pub.repository_version
|
|
898
898
|
else:
|
|
899
899
|
pa = (
|
|
900
900
|
pub.published_artifact.select_related(
|
|
@@ -905,7 +905,7 @@ class Distribution(MasterModel):
|
|
|
905
905
|
.first()
|
|
906
906
|
)
|
|
907
907
|
if pa is not None:
|
|
908
|
-
return pa.content_artifact
|
|
908
|
+
return pa.content_artifact, pub.repository_version
|
|
909
909
|
return None
|
|
910
910
|
|
|
911
911
|
@hook(BEFORE_CREATE)
|
|
@@ -11,6 +11,8 @@ from django.db import models
|
|
|
11
11
|
from pulpcore.app.util import get_domain_pk
|
|
12
12
|
from pulpcore.plugin.models import AutoAddObjPermsMixin, BaseModel, EncryptedTextField
|
|
13
13
|
|
|
14
|
+
from .repository import Remote
|
|
15
|
+
|
|
14
16
|
|
|
15
17
|
class UpstreamPulp(BaseModel, AutoAddObjPermsMixin):
|
|
16
18
|
ALL = "all"
|
|
@@ -59,6 +61,7 @@ class UpstreamPulp(BaseModel, AutoAddObjPermsMixin):
|
|
|
59
61
|
sock_read_timeout = models.FloatField(
|
|
60
62
|
null=True, validators=[MinValueValidator(0.0, "Timeout must be >= 0")]
|
|
61
63
|
)
|
|
64
|
+
remote_policy = models.TextField(choices=Remote.POLICY_CHOICES, null=True)
|
|
62
65
|
|
|
63
66
|
q_select = models.TextField(null=True)
|
|
64
67
|
policy = models.TextField(choices=POLICY_CHOICES, default=ALL)
|
|
@@ -983,6 +983,41 @@ class RepositoryVersion(BaseModel):
|
|
|
983
983
|
get_latest_by = "number"
|
|
984
984
|
ordering = ("number",)
|
|
985
985
|
|
|
986
|
+
def _summary_counts(self):
|
|
987
|
+
"""Return cached summary counts, loading all rows at most once."""
|
|
988
|
+
if not hasattr(self, "_repository_version_summary_counts"):
|
|
989
|
+
self._repository_version_summary_counts = {
|
|
990
|
+
(item.content_type, item.count_type): item.count for item in self.counts.all()
|
|
991
|
+
}
|
|
992
|
+
return self._repository_version_summary_counts
|
|
993
|
+
|
|
994
|
+
def _get_count(self, content_type, count_type):
|
|
995
|
+
"""Return a count for one content type or sum counts across all types."""
|
|
996
|
+
counts = self._summary_counts()
|
|
997
|
+
if content_type is not None:
|
|
998
|
+
return counts.get((content_type, count_type), 0)
|
|
999
|
+
return sum(
|
|
1000
|
+
value
|
|
1001
|
+
for (item_type, item_count_type), value in counts.items()
|
|
1002
|
+
if item_count_type == count_type
|
|
1003
|
+
)
|
|
1004
|
+
|
|
1005
|
+
def has_count(self, content_type, count_type):
|
|
1006
|
+
"""Return whether a persisted summary exists for a content type and count type."""
|
|
1007
|
+
return (content_type, count_type) in self._summary_counts()
|
|
1008
|
+
|
|
1009
|
+
def count(self, content_type=None):
|
|
1010
|
+
"""Return the number of present content units, optionally by type."""
|
|
1011
|
+
return self._get_count(content_type, RepositoryVersionContentDetails.PRESENT)
|
|
1012
|
+
|
|
1013
|
+
def added_count(self, content_type=None):
|
|
1014
|
+
"""Return the number of content units added, optionally by type."""
|
|
1015
|
+
return self._get_count(content_type, RepositoryVersionContentDetails.ADDED)
|
|
1016
|
+
|
|
1017
|
+
def removed_count(self, content_type=None):
|
|
1018
|
+
"""Return the number of content units removed, optionally by type."""
|
|
1019
|
+
return self._get_count(content_type, RepositoryVersionContentDetails.REMOVED)
|
|
1020
|
+
|
|
986
1021
|
def _content_relationships(self):
|
|
987
1022
|
"""
|
|
988
1023
|
Returns a set of repository_content for a repository version
|
|
@@ -1544,10 +1579,10 @@ class RepositoryVersionContentDetails(models.Model):
|
|
|
1544
1579
|
)
|
|
1545
1580
|
ctypes = {c.get_pulp_type(): c for c in repository_model.CONTENT_TYPES}
|
|
1546
1581
|
ctype_model = ctypes[self.content_type]
|
|
1547
|
-
ctype_view = get_view_name_for_model(ctype_model, "list")
|
|
1548
1582
|
try:
|
|
1583
|
+
ctype_view = get_view_name_for_model(ctype_model, "list")
|
|
1549
1584
|
ctype_url = reverse(ctype_view, request=request)
|
|
1550
|
-
except django.urls.exceptions.NoReverseMatch:
|
|
1585
|
+
except (LookupError, django.urls.exceptions.NoReverseMatch):
|
|
1551
1586
|
# We've hit a content type for which there is no viewset.
|
|
1552
1587
|
# There's nothing we can do here, except to skip it.
|
|
1553
1588
|
return
|
|
@@ -3,7 +3,7 @@ from gettext import gettext as _
|
|
|
3
3
|
from rest_framework import serializers
|
|
4
4
|
from rest_framework.validators import UniqueValidator
|
|
5
5
|
|
|
6
|
-
from pulpcore.app.models import UpstreamPulp
|
|
6
|
+
from pulpcore.app.models import Remote, UpstreamPulp
|
|
7
7
|
from pulpcore.app.serializers import (
|
|
8
8
|
HiddenFieldsMixin,
|
|
9
9
|
IdentityField,
|
|
@@ -122,6 +122,16 @@ class UpstreamPulpSerializer(ModelSerializer, HiddenFieldsMixin):
|
|
|
122
122
|
),
|
|
123
123
|
min_value=0.0,
|
|
124
124
|
)
|
|
125
|
+
remote_policy = serializers.ChoiceField(
|
|
126
|
+
choices=Remote.POLICY_CHOICES,
|
|
127
|
+
help_text=_(
|
|
128
|
+
"Download policy for remotes created during replication. One of 'immediate', "
|
|
129
|
+
"'on_demand', or 'streamed'. Distinct from 'policy', which controls how replicate "
|
|
130
|
+
"manages local objects. Defaults to the Remote default ('immediate') when unset."
|
|
131
|
+
),
|
|
132
|
+
required=False,
|
|
133
|
+
allow_null=True,
|
|
134
|
+
)
|
|
125
135
|
|
|
126
136
|
pulp_last_updated = serializers.DateTimeField(
|
|
127
137
|
help_text="Timestamp of the most recent update of the remote.", read_only=True
|
|
@@ -178,6 +188,7 @@ class UpstreamPulpSerializer(ModelSerializer, HiddenFieldsMixin):
|
|
|
178
188
|
"connect_timeout",
|
|
179
189
|
"sock_connect_timeout",
|
|
180
190
|
"sock_read_timeout",
|
|
191
|
+
"remote_policy",
|
|
181
192
|
"pulp_last_updated",
|
|
182
193
|
"hidden_fields",
|
|
183
194
|
"q_select",
|
|
@@ -616,7 +616,7 @@ def saml2_settings_hook(settings):
|
|
|
616
616
|
if "SAML_CONFIG" in settings:
|
|
617
617
|
data["INSTALLED_APPS"] = ["djangosaml2"]
|
|
618
618
|
data["MIDDLEWARE"] = ["djangosaml2.middleware.SamlSessionMiddleware"]
|
|
619
|
-
data["AUTHENTICATION_BACKENDS"] = ["
|
|
619
|
+
data["AUTHENTICATION_BACKENDS"] = ["pulpcore.saml2.backends.PulpSaml2Backend"]
|
|
620
620
|
if "LOGIN_URL" not in settings:
|
|
621
621
|
data["LOGIN_URL"] = "/saml2/login/"
|
|
622
622
|
if "SESSION_COOKIE_SECURE" not in settings:
|
|
@@ -7,7 +7,7 @@ import tarfile
|
|
|
7
7
|
from gettext import gettext as _
|
|
8
8
|
from glob import glob
|
|
9
9
|
from pathlib import Path
|
|
10
|
-
from urllib.parse import
|
|
10
|
+
from urllib.parse import urlparse
|
|
11
11
|
|
|
12
12
|
from django.conf import settings
|
|
13
13
|
|
|
@@ -97,7 +97,12 @@ def _validate_fs_export(content_artifacts):
|
|
|
97
97
|
def _local_path_from_file_url(url):
|
|
98
98
|
"""Convert a file:// URL to an absolute local filesystem path."""
|
|
99
99
|
parsed = urlparse(url)
|
|
100
|
-
|
|
100
|
+
if parsed.netloc not in ["", "localhost"]:
|
|
101
|
+
raise UnexportableArtifactException()
|
|
102
|
+
path = Path(parsed.path).resolve()
|
|
103
|
+
if not any(path.is_relative_to(allowed) for allowed in settings.ALLOWED_IMPORT_PATHS):
|
|
104
|
+
raise UnexportableArtifactException()
|
|
105
|
+
return str(path)
|
|
101
106
|
|
|
102
107
|
|
|
103
108
|
def _file_url_local_paths(content_artifacts):
|
|
@@ -8,6 +8,7 @@ from django.utils import timezone
|
|
|
8
8
|
from pulpcore.app.models import (
|
|
9
9
|
Artifact,
|
|
10
10
|
Content,
|
|
11
|
+
ContentArtifact,
|
|
11
12
|
ProgressReport,
|
|
12
13
|
PublishedMetadata,
|
|
13
14
|
PulpTemporaryFile,
|
|
@@ -47,9 +48,19 @@ def orphan_cleanup(
|
|
|
47
48
|
This task removes Artifact files from the filesystem as well.
|
|
48
49
|
|
|
49
50
|
Kwargs:
|
|
50
|
-
content_pks (list):
|
|
51
|
+
content_pks (list): If specified, only remove these orphan content units and their orphaned
|
|
52
|
+
artifacts.
|
|
51
53
|
|
|
52
54
|
"""
|
|
55
|
+
artifact_pks = None
|
|
56
|
+
if content_pks:
|
|
57
|
+
# Content deletion removes these memberships, so capture the artifacts first.
|
|
58
|
+
artifact_pks = list(
|
|
59
|
+
ContentArtifact.objects.filter(content_id__in=content_pks, artifact__isnull=False)
|
|
60
|
+
.values_list("artifact_id", flat=True)
|
|
61
|
+
.distinct()
|
|
62
|
+
)
|
|
63
|
+
|
|
53
64
|
content = Content.objects.orphaned(orphan_protection_time, content_pks).exclude(
|
|
54
65
|
pulp_type=PublishedMetadata.get_pulp_type()
|
|
55
66
|
)
|
|
@@ -86,6 +97,8 @@ def orphan_cleanup(
|
|
|
86
97
|
|
|
87
98
|
# delete the artifacts that don't belong to any content
|
|
88
99
|
artifacts = Artifact.objects.orphaned(orphan_protection_time)
|
|
100
|
+
if artifact_pks is not None:
|
|
101
|
+
artifacts = artifacts.filter(pk__in=artifact_pks)
|
|
89
102
|
|
|
90
103
|
skipped_artifact = 0
|
|
91
104
|
with ProgressReport(
|
|
@@ -53,6 +53,25 @@ def _ssl_temp_files(server):
|
|
|
53
53
|
pass
|
|
54
54
|
|
|
55
55
|
|
|
56
|
+
def _build_remote_settings(server):
|
|
57
|
+
"""Build fields copied onto remotes created during replication."""
|
|
58
|
+
remote_settings = {
|
|
59
|
+
"ca_cert": server.ca_cert,
|
|
60
|
+
"tls_validation": server.tls_validation,
|
|
61
|
+
"client_cert": server.client_cert,
|
|
62
|
+
"client_key": server.client_key,
|
|
63
|
+
"download_concurrency": server.download_concurrency,
|
|
64
|
+
"max_retries": server.max_retries,
|
|
65
|
+
"total_timeout": server.total_timeout,
|
|
66
|
+
"connect_timeout": server.connect_timeout,
|
|
67
|
+
"sock_connect_timeout": server.sock_connect_timeout,
|
|
68
|
+
"sock_read_timeout": server.sock_read_timeout,
|
|
69
|
+
}
|
|
70
|
+
if server.remote_policy is not None:
|
|
71
|
+
remote_settings["policy"] = server.remote_policy
|
|
72
|
+
return remote_settings
|
|
73
|
+
|
|
74
|
+
|
|
56
75
|
def replicate_distributions(server_pk, q_select=None, **kwargs):
|
|
57
76
|
server = UpstreamPulp.objects.get(pk=server_pk)
|
|
58
77
|
with _ssl_temp_files(server) as ssl_files:
|
|
@@ -76,18 +95,7 @@ def replicate_distributions(server_pk, q_select=None, **kwargs):
|
|
|
76
95
|
}
|
|
77
96
|
)
|
|
78
97
|
|
|
79
|
-
remote_settings =
|
|
80
|
-
"ca_cert": server.ca_cert,
|
|
81
|
-
"tls_validation": server.tls_validation,
|
|
82
|
-
"client_cert": server.client_cert,
|
|
83
|
-
"client_key": server.client_key,
|
|
84
|
-
"download_concurrency": server.download_concurrency,
|
|
85
|
-
"max_retries": server.max_retries,
|
|
86
|
-
"total_timeout": server.total_timeout,
|
|
87
|
-
"connect_timeout": server.connect_timeout,
|
|
88
|
-
"sock_connect_timeout": server.sock_connect_timeout,
|
|
89
|
-
"sock_read_timeout": server.sock_read_timeout,
|
|
90
|
-
}
|
|
98
|
+
remote_settings = _build_remote_settings(server)
|
|
91
99
|
try:
|
|
92
100
|
task_group = TaskGroup.current()
|
|
93
101
|
supported_replicators = []
|
|
@@ -10,6 +10,7 @@ from django.db import transaction
|
|
|
10
10
|
|
|
11
11
|
from pulpcore.app import models
|
|
12
12
|
from pulpcore.app.models import ProgressReport
|
|
13
|
+
from pulpcore.app.serializers import RepositoryVersionSerializer
|
|
13
14
|
from pulpcore.app.util import get_domain
|
|
14
15
|
from pulpcore.exceptions.base import RepositoryVersionDeleteError
|
|
15
16
|
|
|
@@ -198,6 +199,14 @@ def repair_all_artifacts(verify_checksums, **kwargs):
|
|
|
198
199
|
loop.run_until_complete(_repair_artifacts_for_content(verify_checksums=verify_checksums))
|
|
199
200
|
|
|
200
201
|
|
|
202
|
+
def _serialize_version(version):
|
|
203
|
+
"""Serialize `version` if it was created (i.e. not discarded as a no-op) else return None."""
|
|
204
|
+
if not version.complete:
|
|
205
|
+
return None
|
|
206
|
+
# The hyperlinked fields require the "request" key in the context, but hrefs are relative.
|
|
207
|
+
return RepositoryVersionSerializer(version, context={"request": None}).data
|
|
208
|
+
|
|
209
|
+
|
|
201
210
|
def add_and_remove(
|
|
202
211
|
repository_pk,
|
|
203
212
|
add_content_units,
|
|
@@ -220,6 +229,10 @@ def add_and_remove(
|
|
|
220
229
|
as the initial set of content for our new RepositoryVersion
|
|
221
230
|
overwrite (bool): When False, raise ContentOverwriteError if any content being added
|
|
222
231
|
conflicts with existing content based on repo_key_fields. Defaults to True.
|
|
232
|
+
|
|
233
|
+
Returns:
|
|
234
|
+
dict: The serialized newly created RepositoryVersion, or None if nothing changed and no
|
|
235
|
+
version was created.
|
|
223
236
|
"""
|
|
224
237
|
repository = models.Repository.objects.get(pk=repository_pk).cast()
|
|
225
238
|
|
|
@@ -247,11 +260,13 @@ def add_and_remove(
|
|
|
247
260
|
new_version.remove_content(models.Content.objects.filter(pk__in=remove_content_units))
|
|
248
261
|
new_version.add_content(models.Content.objects.filter(pk__in=add_content_units))
|
|
249
262
|
|
|
263
|
+
return _serialize_version(new_version)
|
|
264
|
+
|
|
250
265
|
|
|
251
266
|
async def aadd_and_remove(
|
|
252
267
|
repository_pk, add_content_units, remove_content_units, base_version_pk=None, **kwargs
|
|
253
268
|
):
|
|
254
|
-
"""
|
|
269
|
+
"""Async version of add_and_remove."""
|
|
255
270
|
repository = await models.Repository.objects.aget(pk=repository_pk)
|
|
256
271
|
repository = await repository.acast()
|
|
257
272
|
|
|
@@ -271,5 +286,6 @@ async def aadd_and_remove(
|
|
|
271
286
|
with repository.new_version(base_version=base_version) as new_version:
|
|
272
287
|
new_version.remove_content(models.Content.objects.filter(pk__in=remove_content_units))
|
|
273
288
|
new_version.add_content(models.Content.objects.filter(pk__in=add_content_units))
|
|
289
|
+
return _serialize_version(new_version)
|
|
274
290
|
|
|
275
|
-
await sync_to_async(add_to_repository)()
|
|
291
|
+
return await sync_to_async(add_to_repository)()
|