pulpcore 3.49.53__tar.gz → 3.49.55__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.49.53 → pulpcore-3.49.55}/CHANGES.md +44 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/PKG-INFO +2 -2
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/app/__init__.py +1 -1
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/__init__.py +1 -1
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/apps.py +1 -1
- pulpcore-3.49.55/pulpcore/app/checks.py +119 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/settings.py +6 -65
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/openapi/__init__.py +64 -110
- pulpcore-3.49.55/pulpcore/openapi/hooks.py +36 -0
- pulpcore-3.49.55/pulpcore/tests/functional/api/test_openapi_schema.py +121 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore.egg-info/PKG-INFO +2 -2
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore.egg-info/SOURCES.txt +1 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore.egg-info/requires.txt +1 -1
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pyproject.toml +3 -1
- {pulpcore-3.49.53 → pulpcore-3.49.55}/requirements.txt +1 -1
- {pulpcore-3.49.53 → pulpcore-3.49.55}/setup.py +1 -1
- pulpcore-3.49.53/pulpcore/app/checks.py +0 -58
- pulpcore-3.49.53/pulpcore/tests/functional/api/test_openapi_schema.py +0 -88
- {pulpcore-3.49.53 → pulpcore-3.49.55}/CODE_OF_CONDUCT.md +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/COMMITMENT +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/CONTRIBUTING.md +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/COPYRIGHT +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/LICENSE +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/MANIFEST.in +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/README.md +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/ci_requirements.txt +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/functest_requirements.txt +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/manage.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/app/migrations/0001_initial.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/app/migrations/0002_alter_rhsmcertguard_contentguard_ptr_and_more.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/app/migrations/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/app/models.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/app/serializers.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/app/utils.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/app/viewsets.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/pytest_plugin.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/api/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/api/test_rhsm_certguard.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/api/test_x509_certguard.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/rhsm/katello-default-ca.crt +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/rhsm/katello-default-ca.key +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/rhsm/trusted_but_expired.pem +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/rhsm/uber.cert +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/rhsm/untrusted_cert-key.pem +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/rhsm/untrusted_cert.pem +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/rhsm/v1/1514454871848760713-key.pem +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/rhsm/v1/1514454871848760713.pem +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/rhsm/v1/159442575569388840-key.pem +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/rhsm/v1/159442575569388840.pem +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/rhsm/v3/4260035510644027985-key.pem +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/rhsm/v3/4260035510644027985.pem +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/rhsm/v3/5527980418107729172-key.pem +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/rhsm/v3/5527980418107729172.pem +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/certificates/ca.pem +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/genca.sh +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/thirdparty_ca/keys/ca.pem +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/x509/certificates/ca.pem +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/x509/certificates/client.pem +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/x509/certificates/server.pem +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/x509/certificates/un_urlencoded_cert.txt +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/x509/certificates/untrusted_client.pem +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/x509/genall.sh +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/x509/genca.sh +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/x509/genclient.sh +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/x509/gensrv.sh +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/x509/keys/ca.pem +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/x509/keys/client.pem +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/artifacts/x509/keys/server.pem +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/conftest.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/functional/constants.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/unit/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_certguard/tests/unit/test_models.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/migrations/0001_initial.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/migrations/0002_file_related_names.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/migrations/0003_auto_20191014_1721.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/migrations/0004_filefilesystemexporter.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/migrations/0005_filerepository.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/migrations/0006_delete_filefilesystemexporter.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/migrations/0007_filefilesystemexporter.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/migrations/0008_add_manifest_field.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/migrations/0009_move_data_to_new_master_distribution_model.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/migrations/0010_auto_publish.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/migrations/0011_fix_auto_publish.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/migrations/0012_delete_filefilesystemexporter.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/migrations/0013_file_acs.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/migrations/0014_new_rbac_permissions.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/migrations/0015_allow_null_manifest.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/migrations/0016_add_domain.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/migrations/0017_alter_filealternatecontentsource_alternatecontentsource_ptr_and_more.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/migrations/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/modelresource.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/models.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/replica.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/serializers.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/tasks/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/tasks/publishing.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/tasks/synchronizing.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/app/viewsets.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/manifest.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/pytest_plugin.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/tests/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/tests/functional/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/tests/functional/api/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/tests/functional/api/test_acs.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/tests/functional/api/test_auto_publish.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/tests/functional/api/test_bad_sync.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/tests/functional/api/test_crud_content_unit.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/tests/functional/api/test_crud_remotes.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/tests/functional/api/test_domains.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/tests/functional/api/test_download_policies.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/tests/functional/api/test_generic_list.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/tests/functional/api/test_labels.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/tests/functional/api/test_mime_types.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/tests/functional/api/test_publish.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/tests/functional/api/test_pulp_export.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/tests/functional/api/test_rbac.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/tests/functional/api/test_remote_settings.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/tests/functional/api/test_sync.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/tests/unit/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulp_file/tests/unit/test_serializers.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/access_policy.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/authentication.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/entrypoint.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/files.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/global_access_conditions.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/importexport.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/loggers.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/manage.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/management/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/management/commands/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/management/commands/add-signing-service.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/management/commands/analyze-publication.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/management/commands/datarepair-2327.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/management/commands/dump-permissions.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/management/commands/dump-publications-to-fs.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/management/commands/handle-artifact-checksums.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/management/commands/openapi.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/management/commands/remove-plugin.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/management/commands/remove-signing-service.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/management/commands/repository-size.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/management/commands/reset-admin-password.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/management/commands/rotate-db-key.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/management/commands/shell.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0001_initial.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0002_increase_artifact_size_field.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0003_remove_upload_completed.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0004_add_duplicated_reserved_resources.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0005_progressreport_code.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0006_repository_plugin_managed.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0007_delete_progress_proxies.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0008_published_metadata_as_content.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0009_remove_task_non_fatal_errors.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0010_pulp_fields.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0011_relative_path.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0012_auto_20191104_2000.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0013_repository_pulp_type.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0014_remove_repository_plugin_managed.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0015_auto_20191112_1426.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0016_charfield_to_textfield.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0017_remove_task_parent.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0018_auto_20191127_2350.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0019_add_signing_service_model.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0020_change_publishedartifact_constraints.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0021_add_signing_service_foreign_key.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0022_rename_last_version.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0023_change_exporter_models.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0024_use_local_storage_for_uploads.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0025_task_parent_task.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0026_task_group.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0027_export_backend.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0028_import_importer_pulpimporter_pulpimporterrepository.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0029_export_delete.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0030_taskgroup_all_tasks_dispatched.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0031_import_export_validate_params.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0032_export_to_chunks.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0033_increase_remote_artifact_size_field.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0034_groupprogressreport.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0035_content_upstream_id.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0036_unprotect_last_export.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0037_pulptemporaryfile.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0038_repository_remote.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0039_change_download_concurrency.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0040_set_admin_is_staff.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0041_accesspolicy.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0042_rbac_for_tasks.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0043_toc_attribute.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0044_temp_file_artifact_field.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0045_accesspolicy_permissions_allow_null.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0046_task__resource_job_id.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0047_improve_orphan_cleanup.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0048_fips_checksums.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0049_add_file_field_to_uploadchunk.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0050_namespace_access_policies.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0051_timeoutfields.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0052_tasking_logging_cid.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0053_remote_headers.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0054_add_public_key.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0055_label.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0056_remote_rate_limit.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0057_add_label_indexes.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0058_accesspolicy_customized.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0059_proxy_creds.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0060_data_migration_proxy_creds.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0061_call_handle_artifact_checksums_command.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0062_add_new_distribution_mastermodel.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0063_repository_retained_versions.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0064_add_new_style_task_columns.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0064_repository_user_hidden.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0065_merge_20210615_1211.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0066_download_concurrency_and_retry_changes.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0067_add_protect_to_task_reservation.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0068_add_timestamp_of_interest.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0069_update_json_fields.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0070_rename_retained_versions.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0071_filesystemexport_filesystemexporter.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0072_add_method_to_filesystem_exporter.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0073_encrypt_remote_fields.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0074_acs.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0075_rbaccontentguard.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0076_remove_reserved_resource.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0077_move_remote_url_credentials.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0078_grouprole_role_userrole.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0079_rename_permissions_assignment_accesspolicy_creation_hooks.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0080_proxy_group_model.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0081_reapplabel_group_permissions.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0082_add_manage_roles_permissions.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0083_alter_group_options.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0084_alter_rbaccontentguard_options.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0085_contentredirectcontentguard.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0086_task_json_fields.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0087_taskschedule.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0088_accesspolicy_queryset_scoping.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0089_alter_contentredirectcontentguard_options.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0090_char_to_text_field.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0091_systemid.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0092_alter_upload_options.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0093_add_info_field_repositoryversion.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0094_protect_repository_content.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0095_artifactdistribution.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0096_alter_task_logging_cid.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0097_remove_telemetry_task_schedule.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0098_pulp_labels.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0099_versions_field.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0100_upstreampulp.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0101_add_domain.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0102_add_domain_relations.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0103_alter_export_task.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0104_delete_label.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0105_abstract_uuid_gen.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0106_alter_artifactdistribution_distribution_ptr_and_more.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0107_distribution_hidden.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0108_task_versions.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0109_contentartifact_relative_path_index.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0110_apiappstatus.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0111_task_enc_args_task_enc_kwargs.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0112_alter_upstreampulp_options.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0113_headercontentguard.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0114_remove_task_args_remove_task_kwargs.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0115_compositecontentguard.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0116_alter_remoteartifact_md5_alter_remoteartifact_sha1_and_more.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/0117_task_unblocked_at.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/migrations/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/mime_types.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/modelresource.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/models/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/models/access_policy.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/models/acs.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/models/analytics.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/models/base.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/models/content.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/models/domain.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/models/exporter.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/models/fields.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/models/generic.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/models/importer.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/models/progress.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/models/publication.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/models/replica.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/models/repository.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/models/role.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/models/status.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/models/storage.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/models/task.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/models/upload.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/protobuf/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/protobuf/analytics_pb2.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/pulp_hashlib.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/pulpcore_gunicorn_application.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/redis_connection.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/replica.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/response.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/role_util.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/serializers/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/serializers/access_policy.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/serializers/acs.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/serializers/base.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/serializers/content.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/serializers/domain.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/serializers/exporter.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/serializers/fields.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/serializers/importer.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/serializers/orphans.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/serializers/progress.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/serializers/publication.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/serializers/purge.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/serializers/reclaim.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/serializers/repair.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/serializers/replica.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/serializers/repository.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/serializers/status.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/serializers/task.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/serializers/upload.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/serializers/user.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/tasks/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/tasks/analytics.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/tasks/base.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/tasks/export.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/tasks/importer.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/tasks/orphan.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/tasks/purge.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/tasks/reclaim_space.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/tasks/replica.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/tasks/repository.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/tasks/test.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/tasks/upload.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/templates/rest_framework/api.html +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/templatetags/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/templatetags/pulp_urls.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/urls.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/util.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/views/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/views/importer.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/views/orphans.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/views/repair.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/views/status.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/viewsets/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/viewsets/access_policy.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/viewsets/acs.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/viewsets/base.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/viewsets/content.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/viewsets/custom_filters.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/viewsets/domain.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/viewsets/exporter.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/viewsets/importer.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/viewsets/orphans.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/viewsets/publication.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/viewsets/reclaim.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/viewsets/replica.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/viewsets/repository.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/viewsets/task.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/viewsets/upload.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/viewsets/user.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/app/wsgi.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/backends.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/cache/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/cache/cache.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/constants.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/content/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/content/authentication.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/content/entrypoint.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/content/handler.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/content/instrumentation.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/download/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/download/base.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/download/factory.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/download/file.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/download/http.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/exceptions/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/exceptions/base.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/exceptions/plugin.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/exceptions/validation.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/filters.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/middleware.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/migrations.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/access_policy.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/actions.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/apps.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/authentication/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/cache/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/constants.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/content.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/download/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/exceptions.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/files.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/importexport.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/migrations.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/modelresources.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/models/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/models/role.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/publication_utils.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/pulp_hashlib.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/replica.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/repo_version_utils.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/responses.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/serializers/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/serializers/content.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/stages/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/stages/api.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/stages/artifact_stages.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/stages/content_stages.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/stages/declarative_version.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/stages/models.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/storage.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/sync.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/tasking.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/util.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/viewsets/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/plugin/viewsets/content.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/responses.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tasking/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tasking/_util.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tasking/entrypoint.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tasking/storage.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tasking/tasks.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tasking/worker.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/test_access_policy.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/test_api_docs.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/test_artifact_distribution.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/test_auth.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/test_correlation_id.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/test_crd_artifacts.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/test_crud_domains.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/test_filter.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/test_replication.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/test_repos.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/test_role.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/test_root_endpoint.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/test_scoping.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/test_signing_service.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/test_status.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/test_tasking.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/test_upload.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/test_users_groups.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/test_workers.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/test_content_access.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/test_content_cache.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/test_content_delivery.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/test_content_directory.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/test_content_path.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/test_content_promotion.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/test_contentguard.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/test_crud_repos.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/test_distributions.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/test_filesystemexport.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/test_labels.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/test_orphans.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/test_pagination.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/test_proxy.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/test_pulpimport.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/test_purge.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/test_reclaim_disk_space.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/test_repair.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/test_repo_versions.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/test_tasks.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/api/using_plugin/test_unlinking_repo.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/assets/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/content_with_coverage.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/gpg_ascii_armor_signing_service.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/functional/utils.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/performance/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/performance/test_performance.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/conftest.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/content/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/content/test_handler.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/content/test_heartbeat.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/download/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/download/test_downloader_base.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/download/test_downloader_factory.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/migration/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/migration/test_0077_move_remote_url_credentials.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/models/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/models/test_base.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/models/test_content.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/models/test_remote.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/models/test_repository.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/roles/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/roles/test_roles.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/serializers/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/serializers/test_base.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/serializers/test_domain.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/serializers/test_pulpexport.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/serializers/test_repository.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/stages/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/stages/test_artifactdownloader.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/stages/test_stages.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/test_cache.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/test_chunked_file.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/test_content_guard.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/test_files.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/test_import_checks.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/test_pulp_urls.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/test_settings.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/test_util.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/test_viewsets.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/viewsets/__init__.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore/tests/unit/viewsets/test_viewset_base.py +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore.egg-info/dependency_links.txt +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore.egg-info/entry_points.txt +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/pulpcore.egg-info/top_level.txt +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/setup.cfg +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/test_requirements.txt +0 -0
- {pulpcore-3.49.53 → pulpcore-3.49.55}/unittest_requirements.txt +0 -0
|
@@ -8,6 +8,50 @@
|
|
|
8
8
|
|
|
9
9
|
[//]: # (towncrier release notes start)
|
|
10
10
|
|
|
11
|
+
## 3.49.55 (2026-03-10) {: #3.49.55 }
|
|
12
|
+
|
|
13
|
+
### REST API {: #3.49.55-rest-api }
|
|
14
|
+
|
|
15
|
+
#### Bugfixes {: #3.49.55-rest-api-bugfix }
|
|
16
|
+
|
|
17
|
+
- Moved artifact checksum validation from module-level settings code to a Django system check.
|
|
18
|
+
[#7380](https://github.com/pulp/pulpcore/issues/7380)
|
|
19
|
+
- Fixed the url of the generated openapi schemas when using `pulpcore-manager openapi`.
|
|
20
|
+
|
|
21
|
+
### Plugin API {: #3.49.55-plugin-api }
|
|
22
|
+
|
|
23
|
+
No significant changes.
|
|
24
|
+
|
|
25
|
+
### Pulp File {: #3.49.55-pulp-file }
|
|
26
|
+
|
|
27
|
+
No significant changes.
|
|
28
|
+
|
|
29
|
+
### Pulp Cert Guard {: #3.49.55-pulp-cert-guard }
|
|
30
|
+
|
|
31
|
+
No significant changes.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 3.49.54 (2026-03-06) {: #3.49.54 }
|
|
36
|
+
|
|
37
|
+
### REST API {: #3.49.54-rest-api }
|
|
38
|
+
|
|
39
|
+
No significant changes.
|
|
40
|
+
|
|
41
|
+
### Plugin API {: #3.49.54-plugin-api }
|
|
42
|
+
|
|
43
|
+
No significant changes.
|
|
44
|
+
|
|
45
|
+
### Pulp File {: #3.49.54-pulp-file }
|
|
46
|
+
|
|
47
|
+
No significant changes.
|
|
48
|
+
|
|
49
|
+
### Pulp Cert Guard {: #3.49.54-pulp-cert-guard }
|
|
50
|
+
|
|
51
|
+
No significant changes.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
11
55
|
## 3.49.53 (2026-03-03) {: #3.49.53 }
|
|
12
56
|
|
|
13
57
|
### REST API {: #3.49.53-rest-api }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pulpcore
|
|
3
|
-
Version: 3.49.
|
|
3
|
+
Version: 3.49.55
|
|
4
4
|
Summary: Pulp Django Application and Related Modules
|
|
5
5
|
Home-page: https://pulpproject.org
|
|
6
6
|
Author: Pulp Team
|
|
@@ -36,7 +36,7 @@ Requires-Dist: djangorestframework<=3.15.2,>=3.14.0
|
|
|
36
36
|
Requires-Dist: djangorestframework-queryfields<=1.1.0,>=1.0
|
|
37
37
|
Requires-Dist: drf-access-policy<1.5.1,>=1.1.2
|
|
38
38
|
Requires-Dist: drf-nested-routers<=0.93.5,>=0.93.4
|
|
39
|
-
Requires-Dist: drf-spectacular
|
|
39
|
+
Requires-Dist: drf-spectacular<0.30,>=0.26.5
|
|
40
40
|
Requires-Dist: dynaconf<3.3.0,>=3.1.12
|
|
41
41
|
Requires-Dist: gunicorn<23.1.0,>=20.1
|
|
42
42
|
Requires-Dist: importlib-metadata<=6.0.1,>=6.0.1
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
|
|
3
|
+
from django.conf import settings
|
|
4
|
+
from django.core.checks import (
|
|
5
|
+
Debug as CheckDebug,
|
|
6
|
+
Error as CheckError,
|
|
7
|
+
Warning as CheckWarning,
|
|
8
|
+
Tags,
|
|
9
|
+
register,
|
|
10
|
+
)
|
|
11
|
+
from django.db.models import Q
|
|
12
|
+
|
|
13
|
+
from pulpcore import constants
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@register(deploy=True)
|
|
17
|
+
def content_origin_check(app_configs, **kwargs):
|
|
18
|
+
messages = []
|
|
19
|
+
if getattr(settings, "CONTENT_ORIGIN", "UNREACHABLE") == "UNREACHABLE":
|
|
20
|
+
messages.append(
|
|
21
|
+
CheckError(
|
|
22
|
+
"CONTENT_ORIGIN is a required setting but it was not configured. This may be "
|
|
23
|
+
"caused by invalid read permissions of the settings file. Note that "
|
|
24
|
+
"CONTENT_ORIGIN is set by the installation automatically.",
|
|
25
|
+
id="pulpcore.E001",
|
|
26
|
+
)
|
|
27
|
+
)
|
|
28
|
+
return messages
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@register(deploy=True)
|
|
32
|
+
def storage_paths(app_configs, **kwargs):
|
|
33
|
+
warnings = []
|
|
34
|
+
|
|
35
|
+
if settings.STORAGES["default"]["BACKEND"] == "pulpcore.app.models.storage.FileSystem":
|
|
36
|
+
try:
|
|
37
|
+
media_root_dev = Path(settings.MEDIA_ROOT).stat().st_dev
|
|
38
|
+
except OSError:
|
|
39
|
+
media_root_dev = None
|
|
40
|
+
warnings.append(
|
|
41
|
+
CheckWarning(
|
|
42
|
+
"Your MEDIA_ROOT setting points to a path that does not exist.",
|
|
43
|
+
id="pulpcore.W001",
|
|
44
|
+
)
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
try:
|
|
48
|
+
working_dir_dev = Path(settings.WORKING_DIRECTORY).stat().st_dev
|
|
49
|
+
except OSError:
|
|
50
|
+
working_dir_dev = None
|
|
51
|
+
warnings.append(
|
|
52
|
+
CheckWarning(
|
|
53
|
+
"Your WORKING_DIRECTORY setting points to a path that does not exist.",
|
|
54
|
+
id="pulpcore.W002",
|
|
55
|
+
)
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
if media_root_dev and media_root_dev != working_dir_dev:
|
|
59
|
+
warnings.append(
|
|
60
|
+
CheckWarning(
|
|
61
|
+
"MEDIA_ROOT and WORKING_DIRECTORY are on different filesystems. "
|
|
62
|
+
"It is highly recommended that these live on the same filesystem",
|
|
63
|
+
id="pulpcore.W003",
|
|
64
|
+
)
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
return warnings
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
@register(Tags.database)
|
|
71
|
+
def check_artifact_checksums(app_configs, **kwargs):
|
|
72
|
+
from pulpcore.app.models import Artifact, RemoteArtifact
|
|
73
|
+
|
|
74
|
+
messages = []
|
|
75
|
+
allowed = set(settings.ALLOWED_CONTENT_CHECKSUMS)
|
|
76
|
+
forbidden = set(constants.ALL_KNOWN_CONTENT_CHECKSUMS).difference(allowed)
|
|
77
|
+
|
|
78
|
+
try:
|
|
79
|
+
for checksum in allowed:
|
|
80
|
+
if Artifact.objects.filter(**{checksum: None}).exists():
|
|
81
|
+
messages.append(
|
|
82
|
+
CheckError(
|
|
83
|
+
f"There have been identified artifacts missing checksum '{checksum}'. "
|
|
84
|
+
"Run 'pulpcore-manager handle-artifact-checksums' first to populate "
|
|
85
|
+
"missing artifact checksums.",
|
|
86
|
+
id="pulpcore.E002",
|
|
87
|
+
)
|
|
88
|
+
)
|
|
89
|
+
for checksum in forbidden:
|
|
90
|
+
if Artifact.objects.exclude(**{checksum: None}).exists():
|
|
91
|
+
messages.append(
|
|
92
|
+
CheckWarning(
|
|
93
|
+
f"There have been identified artifacts with forbidden checksum "
|
|
94
|
+
f"'{checksum}'. Run 'pulpcore-manager handle-artifact-checksums' "
|
|
95
|
+
"to unset forbidden checksums.",
|
|
96
|
+
id="pulpcore.W004",
|
|
97
|
+
)
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
has_any_checksum = ~Q(**{c: None for c in constants.ALL_KNOWN_CONTENT_CHECKSUMS})
|
|
101
|
+
missing_allowed = Q(**{c: None for c in allowed})
|
|
102
|
+
if RemoteArtifact.objects.filter(has_any_checksum & missing_allowed).exists():
|
|
103
|
+
messages.append(
|
|
104
|
+
CheckWarning(
|
|
105
|
+
"Detected remote content without allowed checksums. "
|
|
106
|
+
"Run 'pulpcore-manager handle-artifact-checksums --report' to "
|
|
107
|
+
"view this content.",
|
|
108
|
+
id="pulpcore.W005",
|
|
109
|
+
)
|
|
110
|
+
)
|
|
111
|
+
except Exception:
|
|
112
|
+
messages.append(
|
|
113
|
+
CheckDebug(
|
|
114
|
+
"Skipping artifact checksum checks (table may not exist yet).",
|
|
115
|
+
id="pulpcore.D001",
|
|
116
|
+
)
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
return messages
|
|
@@ -19,7 +19,6 @@ from cryptography.fernet import Fernet
|
|
|
19
19
|
from django.conf import global_settings
|
|
20
20
|
from django.core.files.storage import storages # noqa: F401
|
|
21
21
|
from django.core.exceptions import ImproperlyConfigured
|
|
22
|
-
from django.db import connection
|
|
23
22
|
|
|
24
23
|
from pulpcore import constants
|
|
25
24
|
|
|
@@ -307,6 +306,10 @@ SPECTACULAR_SETTINGS = {
|
|
|
307
306
|
"COMPONENT_NO_READ_ONLY_REQUIRED": True,
|
|
308
307
|
"GENERIC_ADDITIONAL_PROPERTIES": None,
|
|
309
308
|
"DISABLE_ERRORS_AND_WARNINGS": not DEBUG,
|
|
309
|
+
"POSTPROCESSING_HOOKS": [
|
|
310
|
+
"drf_spectacular.hooks.postprocess_schema_enums",
|
|
311
|
+
"pulpcore.openapi.hooks.add_info_hook",
|
|
312
|
+
],
|
|
310
313
|
"TITLE": "Pulp 3 API",
|
|
311
314
|
"DESCRIPTION": "Fetch, Upload, Organize, and Distribute Software Packages",
|
|
312
315
|
"VERSION": "v3",
|
|
@@ -316,8 +319,9 @@ SPECTACULAR_SETTINGS = {
|
|
|
316
319
|
"url": "https://pulpproject.org",
|
|
317
320
|
},
|
|
318
321
|
"LICENSE": {
|
|
319
|
-
"name": "GPLv2+",
|
|
320
322
|
"url": "https://raw.githubusercontent.com/pulp/pulpcore/master/LICENSE",
|
|
323
|
+
"name": "GNU General Public License v2.0 or later",
|
|
324
|
+
"identifier": "GPL-2.0-or-later",
|
|
321
325
|
},
|
|
322
326
|
}
|
|
323
327
|
|
|
@@ -471,69 +475,6 @@ FORBIDDEN_CHECKSUMS = set(constants.ALL_KNOWN_CONTENT_CHECKSUMS).difference(
|
|
|
471
475
|
ALLOWED_CONTENT_CHECKSUMS
|
|
472
476
|
)
|
|
473
477
|
|
|
474
|
-
_SKIPPED_COMMANDS_FOR_CONTENT_CHECKS = [
|
|
475
|
-
"handle-artifact-checksums",
|
|
476
|
-
"migrate",
|
|
477
|
-
"collectstatic",
|
|
478
|
-
"openapi",
|
|
479
|
-
]
|
|
480
|
-
|
|
481
|
-
if not (len(sys.argv) >= 2 and sys.argv[1] in _SKIPPED_COMMANDS_FOR_CONTENT_CHECKS):
|
|
482
|
-
try:
|
|
483
|
-
with connection.cursor() as cursor:
|
|
484
|
-
for checksum in ALLOWED_CONTENT_CHECKSUMS:
|
|
485
|
-
# can't import Artifact here so use a direct db connection
|
|
486
|
-
cursor.execute(f"SELECT count(pulp_id) FROM core_artifact WHERE {checksum} IS NULL")
|
|
487
|
-
row = cursor.fetchone()
|
|
488
|
-
if row[0] > 0:
|
|
489
|
-
raise ImproperlyConfigured(
|
|
490
|
-
(
|
|
491
|
-
"There have been identified artifacts missing checksum '{}'. "
|
|
492
|
-
"Run 'pulpcore-manager handle-artifact-checksums' first to populate "
|
|
493
|
-
"missing artifact checksums."
|
|
494
|
-
).format(checksum)
|
|
495
|
-
)
|
|
496
|
-
for checksum in FORBIDDEN_CHECKSUMS:
|
|
497
|
-
# can't import Artifact here so use a direct db connection
|
|
498
|
-
cursor.execute(
|
|
499
|
-
f"SELECT count(pulp_id) FROM core_artifact WHERE {checksum} IS NOT NULL"
|
|
500
|
-
)
|
|
501
|
-
row = cursor.fetchone()
|
|
502
|
-
if row[0] > 0:
|
|
503
|
-
raise ImproperlyConfigured(
|
|
504
|
-
(
|
|
505
|
-
"There have been identified artifacts with forbidden checksum '{}'. "
|
|
506
|
-
"Run 'pulpcore-manager handle-artifact-checksums' first to unset "
|
|
507
|
-
"forbidden checksums."
|
|
508
|
-
).format(checksum)
|
|
509
|
-
)
|
|
510
|
-
|
|
511
|
-
# warn if there are remote artifacts with checksums but no allowed checksums
|
|
512
|
-
cond = " AND ".join([f"{c} IS NULL" for c in constants.ALL_KNOWN_CONTENT_CHECKSUMS])
|
|
513
|
-
no_checksum_query = f"SELECT pulp_id FROM core_remoteartifact WHERE {cond}"
|
|
514
|
-
cond = " AND ".join([f"{c} IS NULL" for c in ALLOWED_CONTENT_CHECKSUMS])
|
|
515
|
-
cursor.execute(
|
|
516
|
-
f"SELECT count(pulp_id) FROM core_remoteartifact WHERE {cond} AND "
|
|
517
|
-
f"pulp_id NOT IN ({no_checksum_query})"
|
|
518
|
-
)
|
|
519
|
-
row = cursor.fetchone()
|
|
520
|
-
if row[0] > 0:
|
|
521
|
-
_logger.warning(
|
|
522
|
-
(
|
|
523
|
-
"Warning: detected remote content without allowed checksums. "
|
|
524
|
-
"Run 'pulpcore-manager handle-artifact-checksums --report' to "
|
|
525
|
-
"view this content."
|
|
526
|
-
)
|
|
527
|
-
)
|
|
528
|
-
|
|
529
|
-
except ImproperlyConfigured as e:
|
|
530
|
-
raise e
|
|
531
|
-
except Exception:
|
|
532
|
-
# our check could fail if the table hasn't been created yet or we can't get a db connection
|
|
533
|
-
pass
|
|
534
|
-
finally:
|
|
535
|
-
connection.close()
|
|
536
|
-
|
|
537
478
|
# Ensures the cached property storage.backends uses the right value after dynaconf init
|
|
538
479
|
storages._backends = settings.STORAGES.copy()
|
|
539
480
|
storages.backends
|
|
@@ -5,6 +5,7 @@ from urllib.parse import urljoin
|
|
|
5
5
|
|
|
6
6
|
from django.conf import settings
|
|
7
7
|
from django.core.exceptions import FieldDoesNotExist
|
|
8
|
+
from django.http import HttpRequest
|
|
8
9
|
from django.utils.html import strip_tags
|
|
9
10
|
from drf_spectacular.drainage import reset_generator_stats
|
|
10
11
|
from drf_spectacular.generators import SchemaGenerator
|
|
@@ -21,9 +22,11 @@ from drf_spectacular.plumbing import (
|
|
|
21
22
|
)
|
|
22
23
|
from drf_spectacular.settings import spectacular_settings
|
|
23
24
|
from drf_spectacular.types import OpenApiTypes
|
|
24
|
-
from drf_spectacular.utils import OpenApiParameter, extend_schema_field
|
|
25
|
+
from drf_spectacular.utils import OpenApiParameter, extend_schema, extend_schema_field
|
|
26
|
+
from drf_spectacular.extensions import OpenApiViewExtension, OpenApiAuthenticationExtension
|
|
25
27
|
from rest_framework import mixins, serializers
|
|
26
28
|
from rest_framework.exceptions import ParseError
|
|
29
|
+
from rest_framework.request import Request
|
|
27
30
|
from rest_framework.schemas.utils import get_pk_description
|
|
28
31
|
|
|
29
32
|
from pulpcore.app.apps import pulp_plugin_configs
|
|
@@ -36,11 +39,14 @@ else:
|
|
|
36
39
|
API_ROOT_NO_FRONT_SLASH = settings.V3_API_ROOT_NO_FRONT_SLASH
|
|
37
40
|
API_ROOT_NO_FRONT_SLASH = API_ROOT_NO_FRONT_SLASH.replace("<", "{").replace(">", "}")
|
|
38
41
|
|
|
39
|
-
|
|
40
42
|
# Python does not distinguish integer sizes. The safest assumption is that they are large.
|
|
41
43
|
extend_schema_field(OpenApiTypes.INT64)(serializers.IntegerField)
|
|
42
44
|
|
|
43
45
|
|
|
46
|
+
class InheritSerializer(serializers.Serializer):
|
|
47
|
+
"""This is a dummy tracer to allow mixins to refer to the natural serializer of a viewset."""
|
|
48
|
+
|
|
49
|
+
|
|
44
50
|
class PulpAutoSchema(AutoSchema):
|
|
45
51
|
"""Pulp Auto Schema."""
|
|
46
52
|
|
|
@@ -51,6 +57,7 @@ class PulpAutoSchema(AutoSchema):
|
|
|
51
57
|
"patch": "partial_update",
|
|
52
58
|
"delete": "delete",
|
|
53
59
|
}
|
|
60
|
+
V3_API = API_ROOT_NO_FRONT_SLASH.replace("{pulp_domain}/", "")
|
|
54
61
|
|
|
55
62
|
def _tokenize_path(self):
|
|
56
63
|
"""
|
|
@@ -78,7 +85,7 @@ class PulpAutoSchema(AutoSchema):
|
|
|
78
85
|
if not tokenized_path and getattr(self.view, "get_view_name", None):
|
|
79
86
|
tokenized_path.extend(self.view.get_view_name().split())
|
|
80
87
|
|
|
81
|
-
path = "/".join(tokenized_path).replace(
|
|
88
|
+
path = "/".join(tokenized_path).replace(self.V3_API, "")
|
|
82
89
|
tokenized_path = path.split("/")
|
|
83
90
|
|
|
84
91
|
return tokenized_path
|
|
@@ -193,6 +200,19 @@ class PulpAutoSchema(AutoSchema):
|
|
|
193
200
|
name = name + "Response"
|
|
194
201
|
return name
|
|
195
202
|
|
|
203
|
+
def get_override_parameters(self):
|
|
204
|
+
parameters = super().get_override_parameters()
|
|
205
|
+
parameters.append(
|
|
206
|
+
OpenApiParameter(
|
|
207
|
+
name="X-Task-Diagnostics",
|
|
208
|
+
location=OpenApiParameter.HEADER,
|
|
209
|
+
required=False,
|
|
210
|
+
type={"type": "array", "items": {"type": "string"}},
|
|
211
|
+
description="List of profilers to use on tasks.",
|
|
212
|
+
)
|
|
213
|
+
)
|
|
214
|
+
return parameters
|
|
215
|
+
|
|
196
216
|
def map_parsers(self):
|
|
197
217
|
"""
|
|
198
218
|
Get request parsers.
|
|
@@ -213,82 +233,11 @@ class PulpAutoSchema(AutoSchema):
|
|
|
213
233
|
request_body["required"] = True
|
|
214
234
|
return request_body
|
|
215
235
|
|
|
216
|
-
def _resolve_path_parameters(self, variables):
|
|
217
|
-
"""
|
|
218
|
-
Resolve path parameters.
|
|
219
|
-
|
|
220
|
-
Extended to omit undesired warns.
|
|
221
|
-
"""
|
|
222
|
-
model = getattr(getattr(self.view, "queryset", None), "model", None)
|
|
223
|
-
parameters = []
|
|
224
|
-
|
|
225
|
-
for variable in variables:
|
|
226
|
-
schema = build_basic_type(OpenApiTypes.STR)
|
|
227
|
-
description = ""
|
|
228
|
-
|
|
229
|
-
resolved_parameter = resolve_django_path_parameter(
|
|
230
|
-
self.path_regex,
|
|
231
|
-
variable,
|
|
232
|
-
self.map_renderers("format"),
|
|
233
|
-
)
|
|
234
|
-
if not resolved_parameter:
|
|
235
|
-
resolved_parameter = resolve_regex_path_parameter(self.path_regex, variable)
|
|
236
|
-
|
|
237
|
-
if resolved_parameter:
|
|
238
|
-
schema = resolved_parameter["schema"]
|
|
239
|
-
elif model:
|
|
240
|
-
try:
|
|
241
|
-
model_field = model._meta.get_field(variable)
|
|
242
|
-
schema = self._map_model_field(model_field, direction=None)
|
|
243
|
-
# strip irrelevant meta data
|
|
244
|
-
irrelevant_field_meta = ["readOnly", "writeOnly", "nullable", "default"]
|
|
245
|
-
schema = {k: v for k, v in schema.items() if k not in irrelevant_field_meta}
|
|
246
|
-
if "description" not in schema and model_field.primary_key:
|
|
247
|
-
description = get_pk_description(model, model_field)
|
|
248
|
-
except FieldDoesNotExist:
|
|
249
|
-
pass
|
|
250
|
-
|
|
251
|
-
# Used by the bindings to identify which param is the domain path
|
|
252
|
-
extensions = {}
|
|
253
|
-
if settings.DOMAIN_ENABLED and variable == "pulp_domain":
|
|
254
|
-
extensions["x-isDomain"] = True
|
|
255
|
-
|
|
256
|
-
parameters.append(
|
|
257
|
-
build_parameter_type(
|
|
258
|
-
name=variable,
|
|
259
|
-
location=OpenApiParameter.PATH,
|
|
260
|
-
description=description,
|
|
261
|
-
schema=schema,
|
|
262
|
-
extensions=extensions,
|
|
263
|
-
)
|
|
264
|
-
)
|
|
265
|
-
|
|
266
|
-
return parameters
|
|
267
|
-
|
|
268
|
-
def resolve_serializer(self, serializer, direction):
|
|
269
|
-
"""Serializer to component."""
|
|
270
|
-
component_schema = self._map_serializer(serializer, direction)
|
|
271
|
-
if not component_schema.get("properties", {}):
|
|
272
|
-
component = ResolvedComponent(
|
|
273
|
-
name=self._get_serializer_name(serializer, direction),
|
|
274
|
-
type=ResolvedComponent.SCHEMA,
|
|
275
|
-
object=serializer,
|
|
276
|
-
)
|
|
277
|
-
if component in self.registry:
|
|
278
|
-
return self.registry[component]
|
|
279
|
-
|
|
280
|
-
component.schema = component_schema
|
|
281
|
-
self.registry.register(component)
|
|
282
|
-
|
|
283
|
-
else:
|
|
284
|
-
component = super().resolve_serializer(serializer, direction)
|
|
285
|
-
|
|
286
|
-
return component
|
|
287
|
-
|
|
288
236
|
def _get_response_bodies(self):
|
|
289
237
|
"""
|
|
290
238
|
Handle response status code.
|
|
291
239
|
"""
|
|
240
|
+
# DRF handles this most of the time. But it seems set_label still needs it.
|
|
292
241
|
response = super()._get_response_bodies()
|
|
293
242
|
if (
|
|
294
243
|
self.method == "POST"
|
|
@@ -299,6 +248,15 @@ class PulpAutoSchema(AutoSchema):
|
|
|
299
248
|
|
|
300
249
|
return response
|
|
301
250
|
|
|
251
|
+
def _get_response_for_code(
|
|
252
|
+
self, serializer, status_code, media_types=None, direction="response"
|
|
253
|
+
):
|
|
254
|
+
"""Hack to replace the InheritSerializer with the real deal."""
|
|
255
|
+
if serializer == InheritSerializer:
|
|
256
|
+
serializer = self._get_serializer()
|
|
257
|
+
|
|
258
|
+
return super()._get_response_for_code(serializer, status_code, media_types, direction)
|
|
259
|
+
|
|
302
260
|
|
|
303
261
|
class PulpSchemaGenerator(SchemaGenerator):
|
|
304
262
|
"""Pulp Schema Generator."""
|
|
@@ -311,7 +269,7 @@ class PulpSchemaGenerator(SchemaGenerator):
|
|
|
311
269
|
prefix (str): Optional prefix to add to the slug
|
|
312
270
|
pulp_model_alias (str): Optional model name to use instead of model.__name__
|
|
313
271
|
Returns:
|
|
314
|
-
str:
|
|
272
|
+
str: '{model_name_snake_case}_href'
|
|
315
273
|
"""
|
|
316
274
|
app_label = model._meta.app_label
|
|
317
275
|
model_name = pulp_model_alias or model.__name__
|
|
@@ -377,7 +335,7 @@ class PulpSchemaGenerator(SchemaGenerator):
|
|
|
377
335
|
resource_path = "%s}/" % path.rsplit(sep="}", maxsplit=1)[0]
|
|
378
336
|
# This check prevents /pulp/{pulp_domain}/ from being converted for non-detail endpoints
|
|
379
337
|
# Possibly affects plugin-specific urls, depends on their url structure
|
|
380
|
-
if resource_path.
|
|
338
|
+
if not resource_path.endswith("/{pulp_domain}/"):
|
|
381
339
|
path = path.replace(resource_path, "{%s}" % param_name)
|
|
382
340
|
return path
|
|
383
341
|
|
|
@@ -470,51 +428,47 @@ class PulpSchemaGenerator(SchemaGenerator):
|
|
|
470
428
|
|
|
471
429
|
def get_schema(self, request=None, public=False):
|
|
472
430
|
"""Generate a OpenAPI schema."""
|
|
473
|
-
|
|
431
|
+
if request is None:
|
|
432
|
+
request = Request(HttpRequest())
|
|
433
|
+
request.META["SERVER_NAME"] = "localhost"
|
|
434
|
+
request.META["SERVER_PORT"] = "24817"
|
|
474
435
|
|
|
475
436
|
apps = list(pulp_plugin_configs())
|
|
437
|
+
if request and "plugin" in request.query_params:
|
|
438
|
+
raise ParseError("'plugin' has been removed. Use 'component' instead.")
|
|
476
439
|
if request and "component" in request.query_params:
|
|
477
440
|
# /pulp/api/v3/docs/api.json?component=core,file
|
|
478
|
-
if "plugin" in request.query_params:
|
|
479
|
-
raise ParseError("'component' and 'plugin' cannot be combined.")
|
|
480
441
|
app_labels = request.query_params["component"].split(",")
|
|
442
|
+
if "core" not in app_labels:
|
|
443
|
+
core_app = [app for app in apps if app.label == "core"]
|
|
444
|
+
else:
|
|
445
|
+
core_app = []
|
|
481
446
|
apps = [app for app in apps if app.label in app_labels]
|
|
482
447
|
if len(apps) != len(app_labels):
|
|
483
448
|
raise ParseError("Invalid component specified.")
|
|
484
449
|
request.plugins = [app.name.split(".")[0] for app in apps]
|
|
450
|
+
# Adding core back because we want to report it's version too.
|
|
451
|
+
apps.extend(core_app)
|
|
452
|
+
request.apps = apps
|
|
485
453
|
|
|
486
|
-
|
|
487
|
-
# /pulp/api/v3/docs/api.json?plugin=pulp_file
|
|
488
|
-
deprecation_logger.warn(
|
|
489
|
-
_(
|
|
490
|
-
"The query parameter `plugin` has been deprecated and "
|
|
491
|
-
"will be removed with pulpcore>=3.55. "
|
|
492
|
-
"Please use `component` with a list of app labels instead."
|
|
493
|
-
)
|
|
494
|
-
)
|
|
495
|
-
request.plugins = request.query_params["plugin"].split(",")
|
|
454
|
+
request.bindings = "bindings" in request.query_params
|
|
496
455
|
|
|
497
|
-
result =
|
|
498
|
-
paths=self.parse(request, public),
|
|
499
|
-
components=self.registry.build(spectacular_settings.APPEND_COMPONENTS),
|
|
500
|
-
version=self.api_version or getattr(request, "version", None),
|
|
501
|
-
)
|
|
502
|
-
for hook in spectacular_settings.POSTPROCESSING_HOOKS:
|
|
503
|
-
result = hook(result=result, generator=self, request=request, public=public)
|
|
456
|
+
result = super().get_schema(request, public)
|
|
504
457
|
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
"
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
result["info"]["x-pulp-app-versions"] = {app.label: app.version for app in apps}
|
|
458
|
+
if request.bindings:
|
|
459
|
+
# Undo the spectacular sanitization of operation ids
|
|
460
|
+
for path, path_spec in result["paths"].items():
|
|
461
|
+
for operation, operation_spec in path_spec.items():
|
|
462
|
+
operation_spec["operationId"] = operation_spec.pop("x-copy-operationId")
|
|
463
|
+
return result
|
|
512
464
|
|
|
513
|
-
# Add domain-settings value
|
|
514
|
-
result["info"]["x-pulp-domain-enabled"] = settings.DOMAIN_ENABLED
|
|
515
465
|
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
466
|
+
class BasicAuthenticationScheme(OpenApiAuthenticationExtension):
|
|
467
|
+
target_class = "pulpcore.app.authentication.BasicAuthentication"
|
|
468
|
+
name = "basicAuth"
|
|
519
469
|
|
|
520
|
-
|
|
470
|
+
def get_security_definition(self, auto_schema):
|
|
471
|
+
return {
|
|
472
|
+
"type": "http",
|
|
473
|
+
"scheme": "basic",
|
|
474
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
from django.conf import settings
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def add_info_hook(result, generator, request, **kwargs):
|
|
5
|
+
# Basically I'm doing it to get pulp logo at redoc page
|
|
6
|
+
result["info"]["x-logo"] = {"url": "https://pulpproject.org/assets/pulp_logo_icon.svg"}
|
|
7
|
+
|
|
8
|
+
if result["openapi"].split(".", maxsplit=2)[:-1] == ["3", "0"]:
|
|
9
|
+
result["info"]["license"].pop("identifier", None)
|
|
10
|
+
else:
|
|
11
|
+
result["info"]["license"].pop("url", None)
|
|
12
|
+
|
|
13
|
+
# Adding plugin version config
|
|
14
|
+
result["info"]["x-pulp-app-versions"] = {app.label: app.version for app in request.apps}
|
|
15
|
+
|
|
16
|
+
# Add domain-settings value
|
|
17
|
+
result["info"]["x-pulp-domain-enabled"] = settings.DOMAIN_ENABLED
|
|
18
|
+
|
|
19
|
+
# Add x-isDomain flag to domain path parameters
|
|
20
|
+
# Save a copy of the bad operationId in case we generate bindings
|
|
21
|
+
for path, path_spec in result["paths"].items():
|
|
22
|
+
for operation, operation_spec in path_spec.items():
|
|
23
|
+
if request.bindings:
|
|
24
|
+
# Keep the operation id before sanitization
|
|
25
|
+
operation_spec["x-copy-operationId"] = operation_spec["operationId"]
|
|
26
|
+
if settings.DOMAIN_ENABLED:
|
|
27
|
+
parameters = operation_spec.get("parameters")
|
|
28
|
+
if parameters:
|
|
29
|
+
for parameter in parameters:
|
|
30
|
+
if parameter["name"] == "pulp_domain" and parameter["in"] == "path":
|
|
31
|
+
parameter["x-isDomain"] = True
|
|
32
|
+
|
|
33
|
+
# Adding current host as server (it will provide a default value for the bindings)
|
|
34
|
+
result["servers"] = [{"url": request.build_absolute_uri("/")}]
|
|
35
|
+
|
|
36
|
+
return result
|