pulpcore 3.28.18__tar.gz → 3.28.20__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.28.18 → pulpcore-3.28.20}/CHANGES.rst +46 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/PKG-INFO +1 -1
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/apps.py +1 -1
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/handle-artifact-checksums.py +4 -5
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/repository.py +3 -1
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/repository.py +3 -4
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/download/factory.py +9 -13
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/download/file.py +1 -1
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/download/http.py +1 -5
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/gpg_ascii_armor_signing_service.py +2 -4
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/stages/test_stages.py +5 -4
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore.egg-info/PKG-INFO +1 -1
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore.egg-info/requires.txt +7 -7
- {pulpcore-3.28.18 → pulpcore-3.28.20}/requirements.txt +6 -6
- {pulpcore-3.28.18 → pulpcore-3.28.20}/setup.py +5 -5
- {pulpcore-3.28.18 → pulpcore-3.28.20}/CODE_OF_CONDUCT.md +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/COMMITMENT +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/CONTRIBUTING.md +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/COPYRIGHT +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/LICENSE +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/MANIFEST.in +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/README.md +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/bin/pulp-content +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/ci_requirements.txt +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/functest_requirements.txt +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/manage.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/access_policy.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/authentication.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/checks.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/files.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/global_access_conditions.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/importexport.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/loggers.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/manage.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/add-signing-service.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/analyze-publication.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/datarepair-2327.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/dump-permissions.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/dump-publications-to-fs.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/remove-plugin.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/remove-signing-service.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/reset-admin-password.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/rotate-db-key.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0001_initial.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0002_increase_artifact_size_field.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0003_remove_upload_completed.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0004_add_duplicated_reserved_resources.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0005_progressreport_code.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0006_repository_plugin_managed.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0007_delete_progress_proxies.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0008_published_metadata_as_content.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0009_remove_task_non_fatal_errors.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0010_pulp_fields.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0011_relative_path.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0012_auto_20191104_2000.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0013_repository_pulp_type.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0014_remove_repository_plugin_managed.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0015_auto_20191112_1426.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0016_charfield_to_textfield.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0017_remove_task_parent.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0018_auto_20191127_2350.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0019_add_signing_service_model.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0020_change_publishedartifact_constraints.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0021_add_signing_service_foreign_key.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0022_rename_last_version.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0023_change_exporter_models.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0024_use_local_storage_for_uploads.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0025_task_parent_task.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0026_task_group.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0027_export_backend.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0028_import_importer_pulpimporter_pulpimporterrepository.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0029_export_delete.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0030_taskgroup_all_tasks_dispatched.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0031_import_export_validate_params.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0032_export_to_chunks.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0033_increase_remote_artifact_size_field.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0034_groupprogressreport.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0035_content_upstream_id.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0036_unprotect_last_export.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0037_pulptemporaryfile.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0038_repository_remote.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0039_change_download_concurrency.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0040_set_admin_is_staff.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0041_accesspolicy.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0042_rbac_for_tasks.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0043_toc_attribute.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0044_temp_file_artifact_field.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0045_accesspolicy_permissions_allow_null.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0046_task__resource_job_id.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0047_improve_orphan_cleanup.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0048_fips_checksums.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0049_add_file_field_to_uploadchunk.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0050_namespace_access_policies.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0051_timeoutfields.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0052_tasking_logging_cid.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0053_remote_headers.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0054_add_public_key.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0055_label.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0056_remote_rate_limit.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0057_add_label_indexes.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0058_accesspolicy_customized.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0059_proxy_creds.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0060_data_migration_proxy_creds.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0061_call_handle_artifact_checksums_command.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0062_add_new_distribution_mastermodel.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0063_repository_retained_versions.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0064_add_new_style_task_columns.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0064_repository_user_hidden.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0065_merge_20210615_1211.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0066_download_concurrency_and_retry_changes.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0067_add_protect_to_task_reservation.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0068_add_timestamp_of_interest.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0069_update_json_fields.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0070_rename_retained_versions.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0071_filesystemexport_filesystemexporter.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0072_add_method_to_filesystem_exporter.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0073_encrypt_remote_fields.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0074_acs.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0075_rbaccontentguard.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0076_remove_reserved_resource.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0077_move_remote_url_credentials.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0078_grouprole_role_userrole.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0079_rename_permissions_assignment_accesspolicy_creation_hooks.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0080_proxy_group_model.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0081_reapplabel_group_permissions.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0082_add_manage_roles_permissions.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0083_alter_group_options.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0084_alter_rbaccontentguard_options.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0085_contentredirectcontentguard.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0086_task_json_fields.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0087_taskschedule.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0088_accesspolicy_queryset_scoping.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0089_alter_contentredirectcontentguard_options.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0090_char_to_text_field.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0091_systemid.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0092_alter_upload_options.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0093_add_info_field_repositoryversion.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0094_protect_repository_content.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0095_artifactdistribution.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0096_alter_task_logging_cid.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0097_remove_telemetry_task_schedule.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0098_pulp_labels.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0099_versions_field.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0100_upstreampulp.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0101_add_domain.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0102_add_domain_relations.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0103_alter_export_task.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0104_delete_label.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0105_abstract_uuid_gen.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0106_alter_artifactdistribution_distribution_ptr_and_more.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0107_distribution_hidden.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/mime_types.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/modelresource.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/access_policy.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/acs.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/analytics.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/base.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/content.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/domain.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/exporter.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/fields.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/generic.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/importer.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/progress.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/publication.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/replica.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/role.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/status.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/storage.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/task.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/models/upload.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/monkeypatch.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/protobuf/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/protobuf/analytics_pb2.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/pulp_hashlib.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/redis_connection.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/replica.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/response.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/role_util.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/access_policy.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/acs.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/base.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/content.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/domain.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/exporter.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/fields.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/importer.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/orphans.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/progress.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/publication.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/purge.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/reclaim.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/repair.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/replica.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/repository.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/status.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/task.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/upload.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/serializers/user.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/settings.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/analytics.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/base.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/export.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/importer.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/orphan.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/purge.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/reclaim_space.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/replica.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/test.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/tasks/upload.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/templates/rest_framework/api.html +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/templatetags/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/templatetags/pulp_urls.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/urls.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/util.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/views/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/views/importer.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/views/orphans.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/views/repair.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/views/status.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/access_policy.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/acs.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/base.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/content.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/custom_filters.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/domain.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/exporter.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/importer.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/orphans.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/publication.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/reclaim.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/replica.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/repository.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/task.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/upload.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/viewsets/user.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/wsgi.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/backends.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/cache/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/cache/cache.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/constants.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/content/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/content/authentication.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/content/handler.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/download/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/download/base.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/exceptions/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/exceptions/base.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/exceptions/plugin.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/exceptions/validation.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/filters.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/middleware.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/openapi/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/access_policy.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/actions.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/apps.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/authentication/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/cache/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/constants.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/content.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/download/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/exceptions.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/files.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/importexport.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/modelresources.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/models/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/models/role.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/publication_utils.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/pulp_hashlib.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/replica.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/repo_version_utils.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/responses.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/serializers/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/serializers/content.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/stages/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/stages/api.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/stages/artifact_stages.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/stages/content_stages.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/stages/declarative_version.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/stages/models.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/storage.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/sync.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/tasking.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/util.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/viewsets/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/plugin/viewsets/content.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/responses.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tasking/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tasking/constants.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tasking/entrypoint.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tasking/pulpcore_worker.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tasking/storage.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tasking/tasks.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tasking/util.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_access_policy.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_api_docs.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_artifact_distribution.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_auth.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_correlation_id.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_crd_artifacts.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_crud_domains.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_filter.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_openapi_schema.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_replication.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_repos.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_role.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_root_endpoint.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_scoping.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_signing_service.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_status.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_tasking.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_upload.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_users_groups.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/test_workers.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/using_plugin/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/api/using_plugin/test_content_directory.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/content_with_coverage.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/utils.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/conftest.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/content/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/content/test_handler.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/content/test_heartbeat.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/download/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/download/test_downloader_base.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/download/test_downloader_factory.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/migration/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/migration/test_0077_move_remote_url_credentials.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/models/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/models/test_base.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/models/test_content.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/models/test_remote.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/models/test_repository.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/roles/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/roles/test_roles.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/serializers/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/serializers/test_base.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/serializers/test_domain.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/serializers/test_pulpexport.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/serializers/test_repository.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/stages/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/stages/test_artifactdownloader.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/test_cache.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/test_content_guard.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/test_files.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/test_import_checks.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/test_settings.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/test_util.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/viewsets/__init__.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/unit/viewsets/test_viewset_base.py +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore.egg-info/SOURCES.txt +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore.egg-info/dependency_links.txt +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore.egg-info/entry_points.txt +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore.egg-info/top_level.txt +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/pyproject.toml +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/setup.cfg +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/test_requirements.txt +0 -0
- {pulpcore-3.28.18 → pulpcore-3.28.20}/unittest_requirements.txt +0 -0
|
@@ -13,6 +13,52 @@ Changelog
|
|
|
13
13
|
|
|
14
14
|
.. towncrier release notes start
|
|
15
15
|
|
|
16
|
+
3.28.20 (2024-01-24)
|
|
17
|
+
====================
|
|
18
|
+
REST API
|
|
19
|
+
--------
|
|
20
|
+
|
|
21
|
+
Bugfixes
|
|
22
|
+
~~~~~~~~
|
|
23
|
+
|
|
24
|
+
- Fixed a regular expression used when listing directories.
|
|
25
|
+
:github:`3673`
|
|
26
|
+
- Taught repair task to be tolerant in the face of any artifact download failure.
|
|
27
|
+
:github:`4111`
|
|
28
|
+
- Removed a workaround to force close all tcp connections in sync leading to an exhaustion of port
|
|
29
|
+
numbers and their reuse while in time_wait state.
|
|
30
|
+
:github:`4452`
|
|
31
|
+
- Fix file:// syncs deleting the original files.
|
|
32
|
+
:github:`4681`
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
Plugin API
|
|
36
|
+
----------
|
|
37
|
+
|
|
38
|
+
No significant changes.
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
----
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
3.28.19 (2023-11-06)
|
|
45
|
+
====================
|
|
46
|
+
REST API
|
|
47
|
+
--------
|
|
48
|
+
|
|
49
|
+
Bugfixes
|
|
50
|
+
~~~~~~~~
|
|
51
|
+
|
|
52
|
+
- Resolved a sync-time performance regression.
|
|
53
|
+
:github:`4591`
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
Plugin API
|
|
57
|
+
----------
|
|
58
|
+
|
|
59
|
+
No significant changes.
|
|
60
|
+
|
|
61
|
+
|
|
16
62
|
3.28.18 (2023-10-16)
|
|
17
63
|
====================
|
|
18
64
|
REST API
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/handle-artifact-checksums.py
RENAMED
|
@@ -2,8 +2,6 @@ import os
|
|
|
2
2
|
|
|
3
3
|
from gettext import gettext as _
|
|
4
4
|
|
|
5
|
-
from aiohttp.client_exceptions import ClientResponseError
|
|
6
|
-
|
|
7
5
|
from django.conf import settings
|
|
8
6
|
from django.core.management import BaseCommand, CommandError
|
|
9
7
|
from django.db.models import Q, Sum
|
|
@@ -126,7 +124,7 @@ class Command(BaseCommand):
|
|
|
126
124
|
downloader = remote.get_downloader(ra)
|
|
127
125
|
try:
|
|
128
126
|
dl_result = downloader.fetch()
|
|
129
|
-
except
|
|
127
|
+
except Exception as e:
|
|
130
128
|
self.stdout.write(
|
|
131
129
|
_("Redownload failed from '{}': {}.").format(ra.url, str(e))
|
|
132
130
|
)
|
|
@@ -139,8 +137,9 @@ class Command(BaseCommand):
|
|
|
139
137
|
setattr(artifact, checksum, dl_result.artifact_attributes[checksum])
|
|
140
138
|
restored = True
|
|
141
139
|
break
|
|
142
|
-
|
|
143
|
-
|
|
140
|
+
if not restored:
|
|
141
|
+
self.stdout.write(_("Deleting unrepairable file {}".format(file_path)))
|
|
142
|
+
artifact.file.delete(save=False)
|
|
144
143
|
else:
|
|
145
144
|
break
|
|
146
145
|
return restored
|
|
@@ -835,7 +835,9 @@ class RepositoryVersion(BaseModel):
|
|
|
835
835
|
raise ResourceImmutableError(self)
|
|
836
836
|
|
|
837
837
|
repo_content = []
|
|
838
|
-
to_add = set(content.
|
|
838
|
+
to_add = set(content.values_list("pk", flat=True)) - set(
|
|
839
|
+
self.content.values_list("pk", flat=True)
|
|
840
|
+
)
|
|
839
841
|
|
|
840
842
|
# Normalize representation if content has already been removed in this version and
|
|
841
843
|
# is re-added: Undo removal by setting version_removed to None.
|
|
@@ -4,7 +4,6 @@ from logging import getLogger
|
|
|
4
4
|
import asyncio
|
|
5
5
|
import hashlib
|
|
6
6
|
|
|
7
|
-
from aiohttp.client_exceptions import ClientResponseError
|
|
8
7
|
from asgiref.sync import sync_to_async
|
|
9
8
|
from django.db import transaction
|
|
10
9
|
from rest_framework.serializers import ValidationError
|
|
@@ -68,7 +67,7 @@ async def _repair_ca(content_artifact, repaired=None):
|
|
|
68
67
|
"Artifact {} is unrepairable - no remote source".format(content_artifact.artifact)
|
|
69
68
|
)
|
|
70
69
|
log.warning(
|
|
71
|
-
"Deleting file for the
|
|
70
|
+
"Deleting file for the unrepairable artifact {}".format(content_artifact.artifact)
|
|
72
71
|
)
|
|
73
72
|
await sync_to_async(content_artifact.artifact.file.delete)(save=False)
|
|
74
73
|
return False
|
|
@@ -78,7 +77,7 @@ async def _repair_ca(content_artifact, repaired=None):
|
|
|
78
77
|
downloader = detail_remote.get_downloader(remote_artifact)
|
|
79
78
|
try:
|
|
80
79
|
dl_result = await downloader.run()
|
|
81
|
-
except
|
|
80
|
+
except Exception as e:
|
|
82
81
|
log.warn(_("Redownload failed from '{}': {}.").format(remote_artifact.url, str(e)))
|
|
83
82
|
else:
|
|
84
83
|
if dl_result.artifact_attributes["sha256"] == content_artifact.artifact.sha256:
|
|
@@ -91,7 +90,7 @@ async def _repair_ca(content_artifact, repaired=None):
|
|
|
91
90
|
if repaired is not None:
|
|
92
91
|
await repaired.aincrement()
|
|
93
92
|
return True
|
|
94
|
-
log.warning("Deleting file for the
|
|
93
|
+
log.warning("Deleting file for the unrepairable artifact {}".format(content_artifact.artifact))
|
|
95
94
|
await sync_to_async(content_artifact.artifact.file.delete)(save=False)
|
|
96
95
|
return False
|
|
97
96
|
|
|
@@ -48,10 +48,6 @@ class DownloaderFactory:
|
|
|
48
48
|
http://aiohttp.readthedocs.io/en/stable/client_quickstart.html#timeouts Behaviorally, it should
|
|
49
49
|
allow for an active download to be arbitrarily long, while still detecting dead or closed
|
|
50
50
|
sessions even when TCPKeepAlive is disabled.
|
|
51
|
-
|
|
52
|
-
Also for http and https urls, even though HTTP 1.1 is used, the TCP connection is setup and
|
|
53
|
-
closed with each request. This is done for compatibility reasons due to various issues related
|
|
54
|
-
to session continuation implementation in various servers.
|
|
55
51
|
"""
|
|
56
52
|
|
|
57
53
|
def __init__(self, remote, downloader_overrides=None):
|
|
@@ -102,7 +98,7 @@ class DownloaderFactory:
|
|
|
102
98
|
Returns:
|
|
103
99
|
:class:`aiohttp.ClientSession`
|
|
104
100
|
"""
|
|
105
|
-
tcp_conn_opts = {
|
|
101
|
+
tcp_conn_opts = {}
|
|
106
102
|
|
|
107
103
|
sslcontext = None
|
|
108
104
|
if self._remote.ca_cert:
|
|
@@ -133,17 +129,17 @@ class DownloaderFactory:
|
|
|
133
129
|
headers["User-Agent"] = f"{headers['User-Agent']}, {user_agent_header}"
|
|
134
130
|
headers.extend(header_dict)
|
|
135
131
|
|
|
136
|
-
conn = aiohttp.TCPConnector(**tcp_conn_opts)
|
|
137
|
-
total = self._remote.total_timeout
|
|
138
|
-
sock_connect = self._remote.sock_connect_timeout
|
|
139
|
-
sock_read = self._remote.sock_read_timeout
|
|
140
|
-
connect = self._remote.connect_timeout
|
|
141
|
-
|
|
142
132
|
timeout = aiohttp.ClientTimeout(
|
|
143
|
-
total=
|
|
133
|
+
total=self._remote.total_timeout,
|
|
134
|
+
sock_connect=self._remote.sock_connect_timeout,
|
|
135
|
+
sock_read=self._remote.sock_read_timeout,
|
|
136
|
+
connect=self._remote.connect_timeout,
|
|
144
137
|
)
|
|
145
138
|
return aiohttp.ClientSession(
|
|
146
|
-
connector=
|
|
139
|
+
connector=aiohttp.TCPConnector(**tcp_conn_opts),
|
|
140
|
+
timeout=timeout,
|
|
141
|
+
headers=headers,
|
|
142
|
+
requote_redirect_url=False,
|
|
147
143
|
)
|
|
148
144
|
|
|
149
145
|
def build(self, url, **kwargs):
|
|
@@ -71,10 +71,6 @@ class HttpDownloader(BaseDownloader):
|
|
|
71
71
|
allow for an active download to be arbitrarily long, while still detecting dead or closed
|
|
72
72
|
sessions even when TCPKeepAlive is disabled.
|
|
73
73
|
|
|
74
|
-
If a session is not provided, the one created will force TCP connection closure after each
|
|
75
|
-
request. This is done for compatibility reasons due to various issues related to session
|
|
76
|
-
continuation implementation in various servers.
|
|
77
|
-
|
|
78
74
|
`aiohttp.ClientSession` objects allows you to configure options that will apply to all
|
|
79
75
|
downloaders using that session such as auth, timeouts, headers, etc. For more info on these
|
|
80
76
|
options see the `aiohttp.ClientSession` docs for more information:
|
|
@@ -165,7 +161,7 @@ class HttpDownloader(BaseDownloader):
|
|
|
165
161
|
self._close_session_on_finalize = False
|
|
166
162
|
else:
|
|
167
163
|
timeout = aiohttp.ClientTimeout(total=None, sock_connect=600, sock_read=600)
|
|
168
|
-
conn = aiohttp.TCPConnector(
|
|
164
|
+
conn = aiohttp.TCPConnector()
|
|
169
165
|
self.session = aiohttp.ClientSession(
|
|
170
166
|
connector=conn, timeout=timeout, headers=headers, requote_redirect_url=False
|
|
171
167
|
)
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/tests/functional/gpg_ascii_armor_signing_service.py
RENAMED
|
@@ -15,7 +15,7 @@ signing_script_string = r"""#!/usr/bin/env bash
|
|
|
15
15
|
FILE_PATH=$1
|
|
16
16
|
SIGNATURE_PATH="$1.asc"
|
|
17
17
|
|
|
18
|
-
GPG_KEY_ID="
|
|
18
|
+
GPG_KEY_ID="pulp-fixture-signing-key"
|
|
19
19
|
|
|
20
20
|
# Create a detached signature
|
|
21
21
|
gpg --quiet --batch --homedir HOMEDIRHERE --detach-sign --local-user "${GPG_KEY_ID}" \
|
|
@@ -87,9 +87,7 @@ def sign_with_ascii_armored_detached_signing_service(signing_script_path, signin
|
|
|
87
87
|
@pytest.fixture(scope="session")
|
|
88
88
|
def signing_gpg_metadata(signing_gpg_homedir_path):
|
|
89
89
|
"""A fixture that returns a GPG instance and related metadata (i.e., fingerprint, keyid)."""
|
|
90
|
-
private_key_url =
|
|
91
|
-
"https://raw.githubusercontent.com/pulp/pulp-fixtures/master/common/GPG-PRIVATE-KEY-pulp-qe"
|
|
92
|
-
)
|
|
90
|
+
private_key_url = "https://raw.githubusercontent.com/pulp/pulp-fixtures/master/common/GPG-PRIVATE-KEY-fixture-signing" # noqa: E501
|
|
93
91
|
|
|
94
92
|
async def download_key():
|
|
95
93
|
async with aiohttp.ClientSession() as session:
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
import pytest
|
|
3
|
+
import pytest_asyncio
|
|
3
4
|
|
|
4
5
|
import mock
|
|
5
6
|
|
|
@@ -9,13 +10,13 @@ from pulpcore.plugin.stages import Stage, EndStage, DeclarativeContent
|
|
|
9
10
|
pytestmark = pytest.mark.usefixtures("fake_domain")
|
|
10
11
|
|
|
11
12
|
|
|
12
|
-
@
|
|
13
|
-
def in_q():
|
|
13
|
+
@pytest_asyncio.fixture
|
|
14
|
+
async def in_q():
|
|
14
15
|
return asyncio.Queue()
|
|
15
16
|
|
|
16
17
|
|
|
17
|
-
@
|
|
18
|
-
def stage(in_q):
|
|
18
|
+
@pytest_asyncio.fixture
|
|
19
|
+
async def stage(in_q):
|
|
19
20
|
stage = Stage()
|
|
20
21
|
stage._connect(in_q, None)
|
|
21
22
|
return stage
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
asyncio-throttle<=1.0.2,>=1.0
|
|
2
|
-
aiohttp<3.
|
|
2
|
+
aiohttp<3.9.2,>=3.8.1
|
|
3
3
|
aiodns<=3.0.0,>=3.0
|
|
4
4
|
aiofiles<23.2.0,>=22.1
|
|
5
5
|
backoff<2.2.2,>=2.1.2
|
|
6
6
|
click<=8.1.3,>=8.1.0
|
|
7
|
-
cryptography<41.0.
|
|
7
|
+
cryptography<41.0.8,>=38.0.1
|
|
8
8
|
Django~=4.2.0
|
|
9
9
|
django-filter<=23.2,>=23.1
|
|
10
10
|
django-guid<=3.3.0,>=3.3
|
|
@@ -15,7 +15,7 @@ djangorestframework-queryfields<=1.0.0,>=1.0
|
|
|
15
15
|
drf-access-policy<1.5.1,>=1.1.2
|
|
16
16
|
drf-nested-routers<=0.93.4,>=0.93.4
|
|
17
17
|
drf-spectacular==0.26.2
|
|
18
|
-
dynaconf<3.
|
|
18
|
+
dynaconf<3.3,>=3.1.12
|
|
19
19
|
gunicorn<=20.1.0,>=20.1
|
|
20
20
|
jinja2<=3.1.2,>=3.1
|
|
21
21
|
naya<=1.1.1,>=1.1.1
|
|
@@ -38,16 +38,16 @@ whitenoise<6.5.0,>=5.0
|
|
|
38
38
|
yarl<1.9.3,>=1.8
|
|
39
39
|
|
|
40
40
|
[azure]
|
|
41
|
-
django-storages[azure]
|
|
41
|
+
django-storages[azure]<=1.13.2,>=1.12.2
|
|
42
42
|
|
|
43
43
|
[google]
|
|
44
|
-
django-storages[google]
|
|
44
|
+
django-storages[google]<=1.13.2,>=1.13.2
|
|
45
45
|
|
|
46
46
|
[prometheus]
|
|
47
47
|
django-prometheus
|
|
48
48
|
|
|
49
49
|
[s3]
|
|
50
|
-
django-storages[boto3]
|
|
50
|
+
django-storages[boto3]<=1.13.2
|
|
51
51
|
|
|
52
52
|
[sftp]
|
|
53
|
-
django-storages[sftp]
|
|
53
|
+
django-storages[sftp]<=1.13.2
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
asyncio-throttle>=1.0,<=1.0.2
|
|
2
|
-
aiohttp>=3.8.1,<3.
|
|
2
|
+
aiohttp>=3.8.1,<3.9.2
|
|
3
3
|
aiodns>=3.0,<=3.0.0
|
|
4
4
|
aiofiles>=22.1,<23.2.0
|
|
5
5
|
backoff>=2.1.2,<2.2.2
|
|
6
6
|
click>=8.1.0,<=8.1.3
|
|
7
|
-
cryptography>=38.0.1,<41.0.
|
|
7
|
+
cryptography>=38.0.1,<41.0.8
|
|
8
8
|
Django~=4.2.0 # LTS version, switch only if we have a compelling reason to
|
|
9
9
|
django-filter>=23.1,<=23.2
|
|
10
10
|
django-guid>=3.3,<=3.3.0
|
|
@@ -15,15 +15,15 @@ djangorestframework-queryfields>=1.0,<=1.0.0
|
|
|
15
15
|
drf-access-policy>=1.1.2,<1.5.1
|
|
16
16
|
drf-nested-routers>=0.93.4,<=0.93.4
|
|
17
17
|
drf-spectacular==0.26.2 # We monkeypatch this so we need a very narrow requirement string
|
|
18
|
-
dynaconf>=3.1.12,<3.
|
|
18
|
+
dynaconf>=3.1.12,<3.3
|
|
19
19
|
gunicorn>=20.1,<=20.1.0
|
|
20
20
|
jinja2>=3.1,<=3.1.2
|
|
21
21
|
naya>=1.1.1,<=1.1.1
|
|
22
|
-
importlib-metadata>=6.0.1,<=6.0.1 # Pinned to fix opentelemetry dependency solving issues with pip
|
|
22
|
+
importlib-metadata>=6.0.1,<=6.0.1 # Pinned to fix opentelemetry dependency solving issues with pip
|
|
23
23
|
opentelemetry-distro[otlp]>=0.38b0,<=0.39b0
|
|
24
24
|
opentelemetry-exporter-otlp-proto-http>=1.17.0,<=1.18.0
|
|
25
|
-
opentelemetry-instrumentation-django>=0.38b0,<=0.39b0
|
|
26
|
-
opentelemetry-instrumentation-wsgi>=0.38b0,<=0.39b0
|
|
25
|
+
opentelemetry-instrumentation-django>=0.38b0,<=0.39b0
|
|
26
|
+
opentelemetry-instrumentation-wsgi>=0.38b0,<=0.39b0
|
|
27
27
|
pulp-glue>=0.18.0,<0.22
|
|
28
28
|
protobuf>=4.21.1,<4.23.3
|
|
29
29
|
pygtrie>=2.5,<=2.5.0
|
|
@@ -8,7 +8,7 @@ with open("requirements.txt") as requirements:
|
|
|
8
8
|
|
|
9
9
|
setup(
|
|
10
10
|
name="pulpcore",
|
|
11
|
-
version="3.28.
|
|
11
|
+
version="3.28.20",
|
|
12
12
|
description="Pulp Django Application and Related Modules",
|
|
13
13
|
long_description=long_description,
|
|
14
14
|
long_description_content_type="text/markdown",
|
|
@@ -20,10 +20,10 @@ setup(
|
|
|
20
20
|
python_requires=">=3.8",
|
|
21
21
|
install_requires=requirements,
|
|
22
22
|
extras_require={
|
|
23
|
-
"sftp": ["django-storages[sftp]"],
|
|
24
|
-
"s3": ["django-storages[boto3]"],
|
|
25
|
-
"google": ["django-storages[google]>=1.13.2"],
|
|
26
|
-
"azure": ["django-storages[azure]>=1.12.2"],
|
|
23
|
+
"sftp": ["django-storages[sftp]<=1.13.2"],
|
|
24
|
+
"s3": ["django-storages[boto3]<=1.13.2"],
|
|
25
|
+
"google": ["django-storages[google]>=1.13.2,<=1.13.2"],
|
|
26
|
+
"azure": ["django-storages[azure]>=1.12.2,<=1.13.2"],
|
|
27
27
|
"prometheus": ["django-prometheus"],
|
|
28
28
|
},
|
|
29
29
|
include_package_data=True,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/add-signing-service.py
RENAMED
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/analyze-publication.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/dump-publications-to-fs.py
RENAMED
|
File without changes
|
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/remove-signing-service.py
RENAMED
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/management/commands/reset-admin-password.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0002_increase_artifact_size_field.py
RENAMED
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0003_remove_upload_completed.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0006_repository_plugin_managed.py
RENAMED
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0007_delete_progress_proxies.py
RENAMED
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0008_published_metadata_as_content.py
RENAMED
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0009_remove_task_non_fatal_errors.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0016_charfield_to_textfield.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0019_add_signing_service_model.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0023_change_exporter_models.py
RENAMED
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0024_use_local_storage_for_uploads.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0030_taskgroup_all_tasks_dispatched.py
RENAMED
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0031_import_export_validate_params.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0039_change_download_concurrency.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0044_temp_file_artifact_field.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0047_improve_orphan_cleanup.py
RENAMED
|
File without changes
|
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0049_add_file_field_to_uploadchunk.py
RENAMED
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0050_namespace_access_policies.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0058_accesspolicy_customized.py
RENAMED
|
File without changes
|
|
File without changes
|
{pulpcore-3.28.18 → pulpcore-3.28.20}/pulpcore/app/migrations/0060_data_migration_proxy_creds.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|