pulpcore 3.41.1__tar.gz → 3.43.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pulpcore-3.41.1 → pulpcore-3.43.0}/CHANGES.rst +277 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/PKG-INFO +1 -1
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/__init__.py +1 -1
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/apps.py +1 -1
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/entrypoint.py +1 -1
- pulpcore-3.43.0/pulpcore/app/migrations/0115_compositecontentguard.py +27 -0
- pulpcore-3.43.0/pulpcore/app/migrations/0116_alter_remoteartifact_md5_alter_remoteartifact_sha1_and_more.py +43 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/__init__.py +1 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/base.py +6 -2
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/content.py +6 -6
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/publication.py +50 -1
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/__init__.py +1 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/publication.py +15 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/__init__.py +1 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/custom_filters.py +3 -3
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/publication.py +72 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/content/__init__.py +3 -1
- pulpcore-3.43.0/pulpcore/content/instrumentation.py +267 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/__init__.py +11 -0
- pulpcore-3.43.0/pulpcore/tests/functional/api/pulp_file/test_telemetry_collection.py +92 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_status.py +0 -6
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_contentguard.py +160 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/stages/test_stages.py +5 -4
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore.egg-info/PKG-INFO +1 -1
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore.egg-info/SOURCES.txt +4 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore.egg-info/requires.txt +9 -9
- {pulpcore-3.41.1 → pulpcore-3.43.0}/requirements.txt +9 -9
- {pulpcore-3.41.1 → pulpcore-3.43.0}/setup.py +1 -1
- {pulpcore-3.41.1 → pulpcore-3.43.0}/CODE_OF_CONDUCT.md +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/COMMITMENT +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/CONTRIBUTING.md +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/COPYRIGHT +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/LICENSE +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/MANIFEST.in +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/README.md +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/functest_requirements.txt +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/manage.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0001_initial.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0002_file_related_names.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0003_auto_20191014_1721.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0004_filefilesystemexporter.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0005_filerepository.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0006_delete_filefilesystemexporter.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0007_filefilesystemexporter.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0008_add_manifest_field.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0009_move_data_to_new_master_distribution_model.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0010_auto_publish.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0011_fix_auto_publish.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0012_delete_filefilesystemexporter.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0013_file_acs.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0014_new_rbac_permissions.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0015_allow_null_manifest.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0016_add_domain.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/0017_alter_filealternatecontentsource_alternatecontentsource_ptr_and_more.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/migrations/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/modelresource.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/models.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/replica.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/serializers.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/tasks/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/tasks/publishing.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/tasks/synchronizing.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/app/viewsets.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/manifest.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulp_file/pytest_plugin.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/access_policy.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/authentication.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/checks.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/files.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/global_access_conditions.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/importexport.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/loggers.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/manage.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/add-signing-service.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/analyze-publication.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/datarepair-2327.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/dump-permissions.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/dump-publications-to-fs.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/handle-artifact-checksums.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/remove-plugin.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/remove-signing-service.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/repository-size.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/reset-admin-password.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/management/commands/rotate-db-key.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0001_initial.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0002_increase_artifact_size_field.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0003_remove_upload_completed.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0004_add_duplicated_reserved_resources.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0005_progressreport_code.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0006_repository_plugin_managed.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0007_delete_progress_proxies.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0008_published_metadata_as_content.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0009_remove_task_non_fatal_errors.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0010_pulp_fields.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0011_relative_path.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0012_auto_20191104_2000.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0013_repository_pulp_type.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0014_remove_repository_plugin_managed.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0015_auto_20191112_1426.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0016_charfield_to_textfield.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0017_remove_task_parent.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0018_auto_20191127_2350.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0019_add_signing_service_model.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0020_change_publishedartifact_constraints.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0021_add_signing_service_foreign_key.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0022_rename_last_version.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0023_change_exporter_models.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0024_use_local_storage_for_uploads.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0025_task_parent_task.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0026_task_group.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0027_export_backend.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0028_import_importer_pulpimporter_pulpimporterrepository.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0029_export_delete.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0030_taskgroup_all_tasks_dispatched.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0031_import_export_validate_params.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0032_export_to_chunks.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0033_increase_remote_artifact_size_field.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0034_groupprogressreport.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0035_content_upstream_id.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0036_unprotect_last_export.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0037_pulptemporaryfile.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0038_repository_remote.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0039_change_download_concurrency.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0040_set_admin_is_staff.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0041_accesspolicy.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0042_rbac_for_tasks.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0043_toc_attribute.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0044_temp_file_artifact_field.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0045_accesspolicy_permissions_allow_null.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0046_task__resource_job_id.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0047_improve_orphan_cleanup.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0048_fips_checksums.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0049_add_file_field_to_uploadchunk.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0050_namespace_access_policies.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0051_timeoutfields.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0052_tasking_logging_cid.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0053_remote_headers.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0054_add_public_key.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0055_label.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0056_remote_rate_limit.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0057_add_label_indexes.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0058_accesspolicy_customized.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0059_proxy_creds.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0060_data_migration_proxy_creds.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0061_call_handle_artifact_checksums_command.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0062_add_new_distribution_mastermodel.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0063_repository_retained_versions.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0064_add_new_style_task_columns.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0064_repository_user_hidden.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0065_merge_20210615_1211.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0066_download_concurrency_and_retry_changes.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0067_add_protect_to_task_reservation.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0068_add_timestamp_of_interest.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0069_update_json_fields.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0070_rename_retained_versions.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0071_filesystemexport_filesystemexporter.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0072_add_method_to_filesystem_exporter.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0073_encrypt_remote_fields.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0074_acs.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0075_rbaccontentguard.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0076_remove_reserved_resource.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0077_move_remote_url_credentials.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0078_grouprole_role_userrole.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0079_rename_permissions_assignment_accesspolicy_creation_hooks.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0080_proxy_group_model.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0081_reapplabel_group_permissions.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0082_add_manage_roles_permissions.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0083_alter_group_options.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0084_alter_rbaccontentguard_options.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0085_contentredirectcontentguard.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0086_task_json_fields.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0087_taskschedule.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0088_accesspolicy_queryset_scoping.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0089_alter_contentredirectcontentguard_options.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0090_char_to_text_field.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0091_systemid.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0092_alter_upload_options.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0093_add_info_field_repositoryversion.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0094_protect_repository_content.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0095_artifactdistribution.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0096_alter_task_logging_cid.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0097_remove_telemetry_task_schedule.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0098_pulp_labels.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0099_versions_field.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0100_upstreampulp.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0101_add_domain.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0102_add_domain_relations.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0103_alter_export_task.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0104_delete_label.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0105_abstract_uuid_gen.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0106_alter_artifactdistribution_distribution_ptr_and_more.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0107_distribution_hidden.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0108_task_versions.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0109_contentartifact_relative_path_index.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0110_apiappstatus.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0111_task_enc_args_task_enc_kwargs.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0112_alter_upstreampulp_options.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0113_headercontentguard.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/0114_remove_task_args_remove_task_kwargs.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/migrations/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/mime_types.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/modelresource.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/access_policy.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/acs.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/analytics.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/domain.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/exporter.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/fields.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/generic.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/importer.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/progress.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/replica.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/repository.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/role.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/status.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/storage.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/task.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/models/upload.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/protobuf/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/protobuf/analytics_pb2.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/pulp_hashlib.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/redis_connection.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/replica.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/response.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/role_util.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/access_policy.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/acs.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/base.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/content.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/domain.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/exporter.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/fields.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/importer.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/orphans.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/progress.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/purge.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/reclaim.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/repair.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/replica.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/repository.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/status.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/task.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/upload.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/serializers/user.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/settings.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/analytics.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/base.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/export.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/importer.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/orphan.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/purge.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/reclaim_space.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/replica.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/repository.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/test.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/tasks/upload.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/templates/rest_framework/api.html +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/templatetags/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/templatetags/pulp_urls.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/urls.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/util.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/views/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/views/importer.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/views/orphans.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/views/repair.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/views/status.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/access_policy.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/acs.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/base.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/content.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/domain.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/exporter.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/importer.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/orphans.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/reclaim.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/replica.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/repository.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/task.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/upload.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/viewsets/user.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/app/wsgi.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/backends.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/cache/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/cache/cache.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/constants.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/content/authentication.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/content/entrypoint.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/content/handler.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/download/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/download/base.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/download/factory.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/download/file.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/download/http.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/exceptions/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/exceptions/base.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/exceptions/plugin.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/exceptions/validation.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/filters.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/middleware.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/migrations.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/openapi/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/access_policy.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/actions.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/apps.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/authentication/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/cache/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/constants.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/content.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/download/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/exceptions.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/files.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/importexport.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/migrations.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/modelresources.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/models/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/models/role.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/publication_utils.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/pulp_hashlib.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/replica.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/repo_version_utils.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/responses.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/serializers/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/serializers/content.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/stages/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/stages/api.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/stages/artifact_stages.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/stages/content_stages.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/stages/declarative_version.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/stages/models.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/storage.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/sync.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/tasking.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/util.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/viewsets/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/plugin/viewsets/content.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/responses.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tasking/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tasking/_util.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tasking/constants.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tasking/entrypoint.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tasking/storage.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tasking/tasks.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tasking/worker.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_acs.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_auto_publish.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_bad_sync.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_crud_content_unit.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_crud_remotes.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_domains.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_download_policies.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_generic_list.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_labels.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_mime_types.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_publish.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_pulp_export.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_rbac.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_remote_settings.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/pulp_file/test_sync.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_access_policy.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_api_docs.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_artifact_distribution.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_auth.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_correlation_id.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_crd_artifacts.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_crud_domains.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_filter.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_openapi_schema.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_replication.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_repos.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_role.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_root_endpoint.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_scoping.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_signing_service.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_tasking.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_upload.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_users_groups.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/test_workers.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_content_access.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_content_cache.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_content_delivery.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_content_directory.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_content_path.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_content_promotion.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_crud_repos.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_distributions.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_filesystemexport.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_labels.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_orphans.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_pagination.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_proxy.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_pulpimport.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_purge.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_reclaim_disk_space.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_repair.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_repo_versions.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_tasks.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/api/using_plugin/test_unlinking_repo.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/assets/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/assets/otel_server.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/content_with_coverage.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/gpg_ascii_armor_signing_service.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/functional/utils.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/performance/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/performance/test_performance.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/conftest.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/content/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/content/test_handler.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/content/test_heartbeat.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/download/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/download/test_downloader_base.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/download/test_downloader_factory.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/migration/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/migration/test_0077_move_remote_url_credentials.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/models/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/models/test_base.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/models/test_content.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/models/test_remote.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/models/test_repository.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/pulp_file/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/pulp_file/test_serializers.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/roles/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/roles/test_roles.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/serializers/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/serializers/test_base.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/serializers/test_domain.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/serializers/test_pulpexport.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/serializers/test_repository.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/stages/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/stages/test_artifactdownloader.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/test_cache.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/test_content_guard.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/test_files.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/test_import_checks.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/test_settings.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/test_util.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/test_viewsets.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/viewsets/__init__.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore/tests/unit/viewsets/test_viewset_base.py +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore.egg-info/dependency_links.txt +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore.egg-info/entry_points.txt +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pulpcore.egg-info/top_level.txt +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/pyproject.toml +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/setup.cfg +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/test_requirements.txt +0 -0
- {pulpcore-3.41.1 → pulpcore-3.43.0}/unittest_requirements.txt +0 -0
|
@@ -13,6 +13,78 @@ Changelog
|
|
|
13
13
|
|
|
14
14
|
.. towncrier release notes start
|
|
15
15
|
|
|
16
|
+
3.43.0 (2023-12-05)
|
|
17
|
+
===================
|
|
18
|
+
REST API
|
|
19
|
+
--------
|
|
20
|
+
|
|
21
|
+
Features
|
|
22
|
+
~~~~~~~~
|
|
23
|
+
|
|
24
|
+
- Added a CompositeContentGuard, that manages a list-of ContentGuards and permits
|
|
25
|
+
access to content if *ANY* guard permits.
|
|
26
|
+
:github:`4583`
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
Bugfixes
|
|
30
|
+
~~~~~~~~
|
|
31
|
+
|
|
32
|
+
- Removed a race condition leading to 500 error in distribution filtering.
|
|
33
|
+
:github:`4766`
|
|
34
|
+
- Added missing database indices to the ``RemoteArtifact`` model.
|
|
35
|
+
:github:`4835`
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
Plugin API
|
|
39
|
+
----------
|
|
40
|
+
|
|
41
|
+
Features
|
|
42
|
+
~~~~~~~~
|
|
43
|
+
|
|
44
|
+
- Added the async safe `detail_model` property to master detail models.
|
|
45
|
+
:github:`4766`
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
Pulp File
|
|
49
|
+
---------
|
|
50
|
+
|
|
51
|
+
No significant changes.
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
----
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
3.42.0 (2023-11-28)
|
|
58
|
+
===================
|
|
59
|
+
REST API
|
|
60
|
+
--------
|
|
61
|
+
|
|
62
|
+
Features
|
|
63
|
+
~~~~~~~~
|
|
64
|
+
|
|
65
|
+
- Added instrumentation to content-app to track telemetry data.
|
|
66
|
+
:github:`3829`
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
Bugfixes
|
|
70
|
+
~~~~~~~~
|
|
71
|
+
|
|
72
|
+
- Fixed that `pulp_file` presented its `python_package` as `pulp_file` instead of `pulp-file`.
|
|
73
|
+
:github:`4724`
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
Plugin API
|
|
77
|
+
----------
|
|
78
|
+
|
|
79
|
+
No significant changes.
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
Pulp File
|
|
83
|
+
---------
|
|
84
|
+
|
|
85
|
+
No significant changes.
|
|
86
|
+
|
|
87
|
+
|
|
16
88
|
3.41.1 (2023-11-21)
|
|
17
89
|
===================
|
|
18
90
|
REST API
|
|
@@ -269,6 +341,24 @@ Features
|
|
|
269
341
|
:github:`4550`
|
|
270
342
|
|
|
271
343
|
|
|
344
|
+
3.39.3 (2023-11-15)
|
|
345
|
+
===================
|
|
346
|
+
REST API
|
|
347
|
+
--------
|
|
348
|
+
|
|
349
|
+
Bugfixes
|
|
350
|
+
~~~~~~~~
|
|
351
|
+
|
|
352
|
+
- Fix file:// syncs deleting the original files.
|
|
353
|
+
:github:`4681`
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
Plugin API
|
|
357
|
+
----------
|
|
358
|
+
|
|
359
|
+
No significant changes.
|
|
360
|
+
|
|
361
|
+
|
|
272
362
|
3.39.2 (2023-11-08)
|
|
273
363
|
===================
|
|
274
364
|
REST API
|
|
@@ -1747,6 +1837,61 @@ Features
|
|
|
1747
1837
|
:github:`3661`
|
|
1748
1838
|
|
|
1749
1839
|
|
|
1840
|
+
3.23.23 (2023-11-29)
|
|
1841
|
+
====================
|
|
1842
|
+
REST API
|
|
1843
|
+
--------
|
|
1844
|
+
|
|
1845
|
+
Bugfixes
|
|
1846
|
+
~~~~~~~~
|
|
1847
|
+
|
|
1848
|
+
- Removed a workaround to force close all tcp connections in sync leading to an exhaustion of port
|
|
1849
|
+
numbers and their reuse while in time_wait state.
|
|
1850
|
+
:github:`4452`
|
|
1851
|
+
|
|
1852
|
+
|
|
1853
|
+
Plugin API
|
|
1854
|
+
----------
|
|
1855
|
+
|
|
1856
|
+
No significant changes.
|
|
1857
|
+
|
|
1858
|
+
|
|
1859
|
+
3.23.22 (2023-11-23)
|
|
1860
|
+
====================
|
|
1861
|
+
REST API
|
|
1862
|
+
--------
|
|
1863
|
+
|
|
1864
|
+
Bugfixes
|
|
1865
|
+
~~~~~~~~
|
|
1866
|
+
|
|
1867
|
+
- Fix file:// syncs deleting the original files.
|
|
1868
|
+
:github:`4681`
|
|
1869
|
+
|
|
1870
|
+
|
|
1871
|
+
Plugin API
|
|
1872
|
+
----------
|
|
1873
|
+
|
|
1874
|
+
No significant changes.
|
|
1875
|
+
|
|
1876
|
+
|
|
1877
|
+
3.23.21 (2023-11-14)
|
|
1878
|
+
====================
|
|
1879
|
+
REST API
|
|
1880
|
+
--------
|
|
1881
|
+
|
|
1882
|
+
Bugfixes
|
|
1883
|
+
~~~~~~~~
|
|
1884
|
+
|
|
1885
|
+
- Resolved a sync-time performance regression.
|
|
1886
|
+
:github:`4591`
|
|
1887
|
+
|
|
1888
|
+
|
|
1889
|
+
Plugin API
|
|
1890
|
+
----------
|
|
1891
|
+
|
|
1892
|
+
No significant changes.
|
|
1893
|
+
|
|
1894
|
+
|
|
1750
1895
|
3.23.20 (2023-10-16)
|
|
1751
1896
|
====================
|
|
1752
1897
|
REST API
|
|
@@ -2304,6 +2449,43 @@ Deprecations
|
|
|
2304
2449
|
:github:`3604`
|
|
2305
2450
|
|
|
2306
2451
|
|
|
2452
|
+
3.22.20 (2023-11-30)
|
|
2453
|
+
====================
|
|
2454
|
+
REST API
|
|
2455
|
+
--------
|
|
2456
|
+
|
|
2457
|
+
Bugfixes
|
|
2458
|
+
~~~~~~~~
|
|
2459
|
+
|
|
2460
|
+
- Removed a workaround to force close all tcp connections in sync leading to an exhaustion of port
|
|
2461
|
+
numbers and their reuse while in time_wait state.
|
|
2462
|
+
:github:`4452`
|
|
2463
|
+
|
|
2464
|
+
|
|
2465
|
+
Plugin API
|
|
2466
|
+
----------
|
|
2467
|
+
|
|
2468
|
+
No significant changes.
|
|
2469
|
+
|
|
2470
|
+
|
|
2471
|
+
3.22.19 (2023-11-15)
|
|
2472
|
+
====================
|
|
2473
|
+
REST API
|
|
2474
|
+
--------
|
|
2475
|
+
|
|
2476
|
+
Bugfixes
|
|
2477
|
+
~~~~~~~~
|
|
2478
|
+
|
|
2479
|
+
- Fix file:// syncs deleting the original files.
|
|
2480
|
+
:github:`4681`
|
|
2481
|
+
|
|
2482
|
+
|
|
2483
|
+
Plugin API
|
|
2484
|
+
----------
|
|
2485
|
+
|
|
2486
|
+
No significant changes.
|
|
2487
|
+
|
|
2488
|
+
|
|
2307
2489
|
3.22.18 (2023-11-03)
|
|
2308
2490
|
====================
|
|
2309
2491
|
REST API
|
|
@@ -2817,6 +2999,61 @@ Removals
|
|
|
2817
2999
|
:github:`3400`
|
|
2818
3000
|
|
|
2819
3001
|
|
|
3002
|
+
3.21.24 (2023-11-30)
|
|
3003
|
+
====================
|
|
3004
|
+
REST API
|
|
3005
|
+
--------
|
|
3006
|
+
|
|
3007
|
+
Bugfixes
|
|
3008
|
+
~~~~~~~~
|
|
3009
|
+
|
|
3010
|
+
- Removed a workaround to force close all tcp connections in sync leading to an exhaustion of port
|
|
3011
|
+
numbers and their reuse while in time_wait state.
|
|
3012
|
+
:github:`4452`
|
|
3013
|
+
|
|
3014
|
+
|
|
3015
|
+
Plugin API
|
|
3016
|
+
----------
|
|
3017
|
+
|
|
3018
|
+
No significant changes.
|
|
3019
|
+
|
|
3020
|
+
|
|
3021
|
+
3.21.23 (2023-11-23)
|
|
3022
|
+
====================
|
|
3023
|
+
REST API
|
|
3024
|
+
--------
|
|
3025
|
+
|
|
3026
|
+
Bugfixes
|
|
3027
|
+
~~~~~~~~
|
|
3028
|
+
|
|
3029
|
+
- Fix file:// syncs deleting the original files.
|
|
3030
|
+
:github:`4681`
|
|
3031
|
+
|
|
3032
|
+
|
|
3033
|
+
Plugin API
|
|
3034
|
+
----------
|
|
3035
|
+
|
|
3036
|
+
No significant changes.
|
|
3037
|
+
|
|
3038
|
+
|
|
3039
|
+
3.21.22 (2023-11-14)
|
|
3040
|
+
====================
|
|
3041
|
+
REST API
|
|
3042
|
+
--------
|
|
3043
|
+
|
|
3044
|
+
Bugfixes
|
|
3045
|
+
~~~~~~~~
|
|
3046
|
+
|
|
3047
|
+
- Resolved a sync-time performance regression.
|
|
3048
|
+
:github:`4591`
|
|
3049
|
+
|
|
3050
|
+
|
|
3051
|
+
Plugin API
|
|
3052
|
+
----------
|
|
3053
|
+
|
|
3054
|
+
No significant changes.
|
|
3055
|
+
|
|
3056
|
+
|
|
2820
3057
|
3.21.21 (2023-10-16)
|
|
2821
3058
|
====================
|
|
2822
3059
|
REST API
|
|
@@ -3789,6 +4026,46 @@ Bugfixes
|
|
|
3789
4026
|
:github:`2069`
|
|
3790
4027
|
|
|
3791
4028
|
|
|
4029
|
+
3.18.33 (2023-12-01)
|
|
4030
|
+
====================
|
|
4031
|
+
REST API
|
|
4032
|
+
--------
|
|
4033
|
+
|
|
4034
|
+
Bugfixes
|
|
4035
|
+
~~~~~~~~
|
|
4036
|
+
|
|
4037
|
+
- Removed a workaround to force close all tcp connections in sync leading to an exhaustion of port
|
|
4038
|
+
numbers and their reuse while in time_wait state.
|
|
4039
|
+
:github:`4452`
|
|
4040
|
+
|
|
4041
|
+
|
|
4042
|
+
Plugin API
|
|
4043
|
+
----------
|
|
4044
|
+
|
|
4045
|
+
No significant changes.
|
|
4046
|
+
|
|
4047
|
+
|
|
4048
|
+
----
|
|
4049
|
+
|
|
4050
|
+
|
|
4051
|
+
3.18.32 (2023-11-14)
|
|
4052
|
+
====================
|
|
4053
|
+
REST API
|
|
4054
|
+
--------
|
|
4055
|
+
|
|
4056
|
+
Bugfixes
|
|
4057
|
+
~~~~~~~~
|
|
4058
|
+
|
|
4059
|
+
- Resolved a sync-time performance regression.
|
|
4060
|
+
:github:`4591`
|
|
4061
|
+
|
|
4062
|
+
|
|
4063
|
+
Plugin API
|
|
4064
|
+
----------
|
|
4065
|
+
|
|
4066
|
+
No significant changes.
|
|
4067
|
+
|
|
4068
|
+
|
|
3792
4069
|
3.18.31 (2023-10-16)
|
|
3793
4070
|
====================
|
|
3794
4071
|
REST API
|
|
@@ -49,7 +49,7 @@ class PulpApiWorker(SyncWorker):
|
|
|
49
49
|
|
|
50
50
|
if settings.API_APP_TTL < 2 * self.timeout:
|
|
51
51
|
logger.warn(
|
|
52
|
-
"API_APP_TTL (%s) is smaller than
|
|
52
|
+
"API_APP_TTL (%s) is smaller than double the gunicorn timeout (%s). "
|
|
53
53
|
"You may experience workers wrongly reporting as missing",
|
|
54
54
|
settings.API_APP_TTL,
|
|
55
55
|
self.timeout,
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Generated by Django 4.2.6 on 2023-10-19 14:20
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
import django.db.models.deletion
|
|
5
|
+
import pulpcore.app.models.access_policy
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Migration(migrations.Migration):
|
|
9
|
+
|
|
10
|
+
dependencies = [
|
|
11
|
+
('core', '0114_remove_task_args_remove_task_kwargs'),
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
operations = [
|
|
15
|
+
migrations.CreateModel(
|
|
16
|
+
name='CompositeContentGuard',
|
|
17
|
+
fields=[
|
|
18
|
+
('contentguard_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.contentguard')),
|
|
19
|
+
('guards', models.ManyToManyField(related_name='+', to='core.contentguard')),
|
|
20
|
+
],
|
|
21
|
+
options={
|
|
22
|
+
'permissions': (('manage_roles_compositecontentguard', 'Can manage role assignments on Composite content guard'),),
|
|
23
|
+
'default_related_name': '%(app_label)s_%(model_name)s',
|
|
24
|
+
},
|
|
25
|
+
bases=('core.contentguard', pulpcore.app.models.access_policy.AutoAddObjPermsMixin),
|
|
26
|
+
),
|
|
27
|
+
]
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Generated by Django 4.2.7 on 2023-12-04 15:58
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
('core', '0115_compositecontentguard'),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.AlterField(
|
|
14
|
+
model_name='remoteartifact',
|
|
15
|
+
name='md5',
|
|
16
|
+
field=models.CharField(db_index=True, max_length=32, null=True),
|
|
17
|
+
),
|
|
18
|
+
migrations.AlterField(
|
|
19
|
+
model_name='remoteartifact',
|
|
20
|
+
name='sha1',
|
|
21
|
+
field=models.CharField(db_index=True, max_length=40, null=True),
|
|
22
|
+
),
|
|
23
|
+
migrations.AlterField(
|
|
24
|
+
model_name='remoteartifact',
|
|
25
|
+
name='sha224',
|
|
26
|
+
field=models.CharField(db_index=True, max_length=56, null=True),
|
|
27
|
+
),
|
|
28
|
+
migrations.AlterField(
|
|
29
|
+
model_name='remoteartifact',
|
|
30
|
+
name='sha256',
|
|
31
|
+
field=models.CharField(db_index=True, max_length=64, null=True),
|
|
32
|
+
),
|
|
33
|
+
migrations.AlterField(
|
|
34
|
+
model_name='remoteartifact',
|
|
35
|
+
name='sha384',
|
|
36
|
+
field=models.CharField(db_index=True, max_length=96, null=True),
|
|
37
|
+
),
|
|
38
|
+
migrations.AlterField(
|
|
39
|
+
model_name='remoteartifact',
|
|
40
|
+
name='sha512',
|
|
41
|
+
field=models.CharField(db_index=True, max_length=128, null=True),
|
|
42
|
+
),
|
|
43
|
+
]
|
|
@@ -148,16 +148,20 @@ class MasterModel(BaseModel, metaclass=MasterModelMeta):
|
|
|
148
148
|
def get_model_for_pulp_type(cls, pulp_type):
|
|
149
149
|
return cls._pulp_model_map[pulp_type]
|
|
150
150
|
|
|
151
|
-
|
|
151
|
+
@property
|
|
152
|
+
def detail_model(self):
|
|
153
|
+
return self._pulp_model_map[self.pulp_type]
|
|
154
|
+
|
|
155
|
+
def __init__(self, *args, **kwargs):
|
|
152
156
|
# instances of "detail" models that subclass MasterModel are exposed
|
|
153
157
|
# on instances of MasterModel by the string stored in that model's TYPE attr.
|
|
154
158
|
# Storing this pulp_type in a column on the MasterModel next to makes it trivial
|
|
155
159
|
# to filter for specific detail model types across master's relations.
|
|
156
160
|
# Prepend the TYPE defined on a detail model with a django app label.
|
|
157
161
|
# If a plugin sets the type field themselves, it's used as-is.
|
|
162
|
+
super().__init__(*args, **kwargs)
|
|
158
163
|
if not self.pulp_type:
|
|
159
164
|
self.pulp_type = self.get_pulp_type()
|
|
160
|
-
return super().save(*args, **kwargs)
|
|
161
165
|
|
|
162
166
|
def cast(self):
|
|
163
167
|
"""Return the "Detail" model instance of this master-detail object.
|
|
@@ -713,12 +713,12 @@ class RemoteArtifact(BaseModel, QueryMixin):
|
|
|
713
713
|
|
|
714
714
|
url = models.TextField(validators=[validators.URLValidator])
|
|
715
715
|
size = models.BigIntegerField(null=True)
|
|
716
|
-
md5 = models.CharField(max_length=32, null=True)
|
|
717
|
-
sha1 = models.CharField(max_length=40, null=True)
|
|
718
|
-
sha224 = models.CharField(max_length=56, null=True)
|
|
719
|
-
sha256 = models.CharField(max_length=64, null=True)
|
|
720
|
-
sha384 = models.CharField(max_length=96, null=True)
|
|
721
|
-
sha512 = models.CharField(max_length=128, null=True)
|
|
716
|
+
md5 = models.CharField(max_length=32, null=True, db_index=True)
|
|
717
|
+
sha1 = models.CharField(max_length=40, null=True, db_index=True)
|
|
718
|
+
sha224 = models.CharField(max_length=56, null=True, db_index=True)
|
|
719
|
+
sha256 = models.CharField(max_length=64, null=True, db_index=True)
|
|
720
|
+
sha384 = models.CharField(max_length=96, null=True, db_index=True)
|
|
721
|
+
sha512 = models.CharField(max_length=128, null=True, db_index=True)
|
|
722
722
|
|
|
723
723
|
content_artifact = models.ForeignKey(ContentArtifact, on_delete=models.CASCADE)
|
|
724
724
|
remote = models.ForeignKey("Remote", on_delete=models.CASCADE)
|
|
@@ -29,7 +29,7 @@ from pulpcore.cache import Cache
|
|
|
29
29
|
from rest_framework.exceptions import APIException
|
|
30
30
|
from pulpcore.app.models import AutoAddObjPermsMixin
|
|
31
31
|
from pulpcore.responses import ArtifactResponse
|
|
32
|
-
from pulpcore.app.util import get_domain_pk, cache_key
|
|
32
|
+
from pulpcore.app.util import get_domain_pk, cache_key, get_url
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
_logger = logging.getLogger(__name__)
|
|
@@ -522,6 +522,55 @@ class HeaderContentGuard(ContentGuard, AutoAddObjPermsMixin):
|
|
|
522
522
|
)
|
|
523
523
|
|
|
524
524
|
|
|
525
|
+
class CompositeContentGuard(ContentGuard, AutoAddObjPermsMixin):
|
|
526
|
+
"""
|
|
527
|
+
Content guard to allow a list of contentguards to be evaluated on access.
|
|
528
|
+
|
|
529
|
+
Content-guards in the `guards` list have their permit() calls issued in order. At the
|
|
530
|
+
first "pass" result, access is permitted. Only if ALL guards in the list forbid access,
|
|
531
|
+
is access forbidden.
|
|
532
|
+
|
|
533
|
+
guards (django.db.models.ManyToManyField): ContentGuards to invoke.
|
|
534
|
+
"""
|
|
535
|
+
|
|
536
|
+
TYPE = "composite"
|
|
537
|
+
|
|
538
|
+
guards = models.ManyToManyField(ContentGuard, related_name="+", symmetrical=False)
|
|
539
|
+
|
|
540
|
+
def permit(self, request):
|
|
541
|
+
"""
|
|
542
|
+
Permit if ANY content-guard allows (OR permissions).
|
|
543
|
+
"""
|
|
544
|
+
errors = []
|
|
545
|
+
if not self.guards.all():
|
|
546
|
+
# No guards specified? PASS
|
|
547
|
+
return
|
|
548
|
+
|
|
549
|
+
for guard in self.guards.all():
|
|
550
|
+
detail_guard = guard.cast()
|
|
551
|
+
try:
|
|
552
|
+
detail_guard.permit(request)
|
|
553
|
+
return # success on first-pass
|
|
554
|
+
except PermissionError as pe:
|
|
555
|
+
guard_error = _("Guard: '{}', HREF: '{}', class: '{}', denial: [{}].").format(
|
|
556
|
+
detail_guard.name, get_url(detail_guard), type(detail_guard), str(pe)
|
|
557
|
+
)
|
|
558
|
+
errors.append(guard_error)
|
|
559
|
+
|
|
560
|
+
# If we get here - FAIL
|
|
561
|
+
msg = _("Access forbidden. Refusals: {}").format(errors)
|
|
562
|
+
raise PermissionError(msg)
|
|
563
|
+
|
|
564
|
+
class Meta:
|
|
565
|
+
default_related_name = "%(app_label)s_%(model_name)s"
|
|
566
|
+
permissions = (
|
|
567
|
+
(
|
|
568
|
+
"manage_roles_compositecontentguard",
|
|
569
|
+
"Can manage role assignments on Composite content guard",
|
|
570
|
+
),
|
|
571
|
+
)
|
|
572
|
+
|
|
573
|
+
|
|
525
574
|
class BaseDistribution(MasterModel):
|
|
526
575
|
"""
|
|
527
576
|
A distribution defines how a publication is distributed by the Content App.
|
|
@@ -77,6 +77,7 @@ from .publication import (
|
|
|
77
77
|
PublicationSerializer,
|
|
78
78
|
RBACContentGuardSerializer,
|
|
79
79
|
RBACContentGuardPermissionSerializer,
|
|
80
|
+
CompositeContentGuardSerializer,
|
|
80
81
|
ContentRedirectContentGuardSerializer,
|
|
81
82
|
HeaderContentGuardSerializer,
|
|
82
83
|
ArtifactDistributionSerializer,
|
|
@@ -108,6 +108,21 @@ class RBACContentGuardSerializer(ContentGuardSerializer):
|
|
|
108
108
|
fields = ContentGuardSerializer.Meta.fields + ("users", "groups")
|
|
109
109
|
|
|
110
110
|
|
|
111
|
+
class CompositeContentGuardSerializer(ContentGuardSerializer, GetOrCreateSerializerMixin):
|
|
112
|
+
guards = DetailRelatedField(
|
|
113
|
+
many=True,
|
|
114
|
+
required=False,
|
|
115
|
+
help_text=_("List of ContentGuards to ask for access-permission."),
|
|
116
|
+
view_name_pattern=r"contentguards(-.*/.*)?-detail",
|
|
117
|
+
queryset=models.ContentGuard.objects.all(),
|
|
118
|
+
allow_null=True,
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
class Meta:
|
|
122
|
+
model = models.CompositeContentGuard
|
|
123
|
+
fields = ContentGuardSerializer.Meta.fields + ("guards",)
|
|
124
|
+
|
|
125
|
+
|
|
111
126
|
class RBACContentGuardPermissionSerializer(serializers.Serializer):
|
|
112
127
|
usernames = serializers.ListField(default=[])
|
|
113
128
|
groupnames = serializers.ListField(default=[])
|
|
@@ -355,12 +355,12 @@ class DistributionWithContentFilter(Filter):
|
|
|
355
355
|
for dist in qs.exclude(publication=None).values("publication__repository_version", "pk"):
|
|
356
356
|
versions_distributions[dist["publication__repository_version"]].append(dist["pk"])
|
|
357
357
|
|
|
358
|
-
for dist in qs.exclude(repository_version=None).values("repository_version", "
|
|
359
|
-
if not dist.
|
|
358
|
+
for dist in qs.exclude(repository_version=None).values("repository_version", "pulp_type"):
|
|
359
|
+
if not dist.detail_model.SERVE_FROM_PUBLICATION:
|
|
360
360
|
versions_distributions[dist["repository_version"]].append(dist["pk"])
|
|
361
361
|
|
|
362
362
|
for dist in qs.exclude(repository=None).prefetch_related("repository__versions"):
|
|
363
|
-
if dist.
|
|
363
|
+
if dist.detail_model.SERVE_FROM_PUBLICATION:
|
|
364
364
|
versions = dist.repository.versions.values_list("pk", flat=True)
|
|
365
365
|
publications = Publication.objects.filter(
|
|
366
366
|
repository_version__in=versions, complete=True
|
|
@@ -4,6 +4,8 @@ from django.db.models import Prefetch
|
|
|
4
4
|
from django_filters import Filter
|
|
5
5
|
from rest_framework import mixins, serializers
|
|
6
6
|
|
|
7
|
+
from pulpcore.app.models.publication import CompositeContentGuard
|
|
8
|
+
from pulpcore.app.serializers.publication import CompositeContentGuardSerializer
|
|
7
9
|
from pulpcore.filters import BaseFilterSet
|
|
8
10
|
from pulpcore.app.models import (
|
|
9
11
|
ContentGuard,
|
|
@@ -427,6 +429,76 @@ class HeaderContentGuardViewSet(ContentGuardViewSet, RolesMixin):
|
|
|
427
429
|
}
|
|
428
430
|
|
|
429
431
|
|
|
432
|
+
class CompositeContentGuardViewSet(ContentGuardViewSet, RolesMixin):
|
|
433
|
+
"""
|
|
434
|
+
Content guard that queries a list-of content-guards for access permissions.
|
|
435
|
+
"""
|
|
436
|
+
|
|
437
|
+
endpoint_name = "composite"
|
|
438
|
+
queryset = CompositeContentGuard.objects.all()
|
|
439
|
+
serializer_class = CompositeContentGuardSerializer
|
|
440
|
+
queryset_filtering_required_permission = "core.view_compositecontentguard"
|
|
441
|
+
|
|
442
|
+
DEFAULT_ACCESS_POLICY = {
|
|
443
|
+
"statements": [
|
|
444
|
+
{
|
|
445
|
+
"action": ["list"],
|
|
446
|
+
"principal": "authenticated",
|
|
447
|
+
"effect": "allow",
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
"action": ["create"],
|
|
451
|
+
"principal": "authenticated",
|
|
452
|
+
"effect": "allow",
|
|
453
|
+
"condition": "has_model_or_domain_perms:core.add_compositecontentguard",
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
"action": ["retrieve", "my_permissions"],
|
|
457
|
+
"principal": "authenticated",
|
|
458
|
+
"effect": "allow",
|
|
459
|
+
"condition": "has_model_or_domain_or_obj_perms:core." "view_compositecontentguard",
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
"action": ["update", "partial_update"],
|
|
463
|
+
"principal": "authenticated",
|
|
464
|
+
"effect": "allow",
|
|
465
|
+
"condition": ("has_model_or_domain_or_obj_perms:core.change_compositecontentguard"),
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
"action": ["destroy"],
|
|
469
|
+
"principal": "authenticated",
|
|
470
|
+
"effect": "allow",
|
|
471
|
+
"condition": ("has_model_or_domain_or_obj_perms:core.delete_compositecontentguard"),
|
|
472
|
+
},
|
|
473
|
+
{
|
|
474
|
+
"action": ["list_roles", "add_role", "remove_role"],
|
|
475
|
+
"principal": "authenticated",
|
|
476
|
+
"effect": "allow",
|
|
477
|
+
"condition": (
|
|
478
|
+
"has_model_or_domain_or_obj_perms:core.manage_roles_compositecontentguard"
|
|
479
|
+
),
|
|
480
|
+
},
|
|
481
|
+
],
|
|
482
|
+
"creation_hooks": [
|
|
483
|
+
{
|
|
484
|
+
"function": "add_roles_for_object_creator",
|
|
485
|
+
"parameters": {"roles": ["core.compositecontentguard_owner"]},
|
|
486
|
+
},
|
|
487
|
+
],
|
|
488
|
+
"queryset_scoping": {"function": "scope_queryset"},
|
|
489
|
+
}
|
|
490
|
+
LOCKED_ROLES = {
|
|
491
|
+
"core.compositecontentguard_creator": ["core.add_compositecontentguard"],
|
|
492
|
+
"core.compositecontentguard_owner": [
|
|
493
|
+
"core.view_compositecontentguard",
|
|
494
|
+
"core.change_compositecontentguard",
|
|
495
|
+
"core.delete_compositecontentguard",
|
|
496
|
+
"core.manage_roles_compositecontentguard",
|
|
497
|
+
],
|
|
498
|
+
"core.compositecontentguard_viewer": ["core.view_compositecontentguard"],
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
|
|
430
502
|
class DistributionFilter(BaseFilterSet):
|
|
431
503
|
# e.g.
|
|
432
504
|
# /?name=foo
|